首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMG biotools -一个基于Perl的工具

CMG biotools -一个基于Perl的工具
EN

Stack Overflow用户
提问于 2016-05-10 14:11:44
回答 1查看 99关注 0票数 0
代码语言:javascript
复制
sub runBlast {
    # order is preserved !
    for ( my $subject_counter = 0 ; $subject_counter < scalar ( @{$xmlcfg->{sources}[0]->{entry}} ) ; $subject_counter++ ) {
        my $subjectTitle = $INFO{$subject_counter}{title};
        my $subjectSubtitle = $INFO{$subject_counter}{subtitle};
        for ( my $query_counter = 0 ; $query_counter < scalar ( @{$xmlcfg->{sources}[0]->{entry}} ) ; $query_counter++ ) {
            my $queryTitle = $INFO{$query_counter}{title};
            my $querySubtitle = $INFO{$query_counter}{subtitle};
            $tab_h{"$query_counter-$subject_counter"} = $cm->start();
            unless ( $tab_h{"$query_counter-$subject_counter"} ) {
                my $blastreport_scratch = "$scratch/$query_counter-$subject_counter.blastout.gz";
                my $jobid = md5 ( "$scratch/$query_counter.fsa" , "$scratch/$subject_counter.fsa" ) ;
                system "$perl /usr/biotools/indirect/cacher --id='$jobid' --source='$cache_source' -action get > $blastreport_scratch";
                if ( $? != 0 or $clean or -s $blastreport_scratch == 0) {
                    print STDERR "# jobid $jobid not in cache - redoing\n";
                    my $cmd = "$BLASTALL -F 0 -p blastp -d $scratch/$subject_counter.fsa -e 1e-5 -m 7 < $scratch/$query_counter.fsa | $TIGRCUT | gawk '{print \$1\"\\t\"\$2}' | $gzip > $blastreport_scratch";
                    system $cmd;
                    die "# failed at '$cmd'\n" if $? != 0;
                    system "$perl /usr/biotools/indirect/cacher --id=$jobid --source=$cache_source -action put -expire 100 < $blastreport_scratch";
                } else {
                        my $s = -s $blastreport_scratch;
                        print STDERR "# fetched jobid $jobid from cache ( $s bytes)\n";
                }
                exit;
            }
        }
    }
    $cm->wait_all_children; 
}

我对Perl编程一窍不通。我必须运行这个名为CMG Biotools的工具,它是用Perl语言编写的。

我在这里附加了它的部分代码。谁能告诉我什么时候会显示jobid not in cache...redoing消息。code for CMG biotools

EN

回答 1

Stack Overflow用户

发布于 2016-05-10 14:41:30

您的脚本blastmatrix尝试使用名为"cacher“的外部perl工具- /usr/biotools/indirect/cacher -传递参数

  • -action get
  • --source='$cache_source';和
  • --id='$jobid'

因此,该脚本试图从缓存实用程序中检索ID为$jobid的作业,但失败了。失败后,对“重做”的引用似乎是试图运行BLASTALL,即/usr/biotools/blast/bin/blastall,然后重试相同的缓存命令。

因此,如果您看到的只是消息,但脚本正在工作,那么我猜--这就是我能做的所有事情-- BLASTALL正在清理一些问题--一个意外的文件,一个丢失的文件--谁知道呢--第二次尝试缓存是有效的。

如果它根本不工作,我只能说当它尝试使用缓存时,它最终失败了-这与说“根本原因是...”是不同的。

注-以上所有内容都是投机性的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37130523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档