Perl Bio :: DB :: Sam在调用get_features_by_id()时崩溃

时间:2017-06-14 00:29:32

标签: perl bioinformatics bioperl

我在Centos7环境中使用Bio :: DB :: Sam,使用版本0.1.17的samtools。我正在使用此过程来执行我的安装:

wget http://sourceforge.net/projects/samtools/files/samtools/0.1.17/samtools-0.1.17.tar.bz2
tar xjf samtools-0.1.17.tar.bz2 && cd samtools-0.1.17
make CFLAGS=-fPIC
export SAMTOOLS=`pwd`
cpanm Bio::DB::Sam

我发现here(注意我改变了samtools的版本)

崩溃间歇性地发生,有时在相同的输入文件上。我的一般程序如下:

  1. 使用bowtie从.fastq文件生成.sam文件,使用自定义领结索引
  2. 使用samtools将.sam转换为.bam,沿途对文件进行排序和索引
  3. 发出以下Perl命令:
  4. 的Perl:

    my $sortbam = align_and_sort_and_index($reads_file);   # steps 1 and 2
    my @all_gene_ids = qw(gene_id1 gene_id2 gene_id3);   # really lots more
    for (my $worker=0; $worker <= $n_threads; $worker++) {
        my $pid = fork;
        die "fork error: $!" unless defined $pid;
        next if $pid;     # parent
        my @gene_ids = get_unique_subset(@all_gene_ids, $worker);
        my $sam = Bio::DB::Sam->new(-bam=>$sortbam, -fasta=>$ampl_seqfile, -autoindex=>0);
        foreach my $gene_id (@gene_ids) {
            # THIS NEXT LINE IS THE ONE THAT SEGFAULTS (SOMETIMES):
            my @alignments = $sam->get_features_by_location(-seq_id => $gene_id);
            # do something interesting with @alignments...
        }
        exit;
    }
    
    while ((my $pid=wait()) != -1) {
        print "reaped $pid\n";
    }
    

    迄今为止,我尝试过以下方法:

    1. 增加允许打开的文件数(ulimit -n)
    2. 增加允许的子进程数
    3. 增加管道缓冲区的限制
    4. 增加交换空间
    5. 任何和所有建议都将不胜感激。谢谢!

0 个答案:

没有答案