[Bioperl-l] use threads to get seq file error.

Chris Fields cjfields at illinois.edu
Mon Mar 1 15:37:18 EST 2010


I get much nastier ones than that; a small taste:

--------------------- WARNING ---------------------
MSG: exception while parsing location line [1..680] in reading
EMBL/GenBank/SwissProt, ignoring feature source (seqid=AF031249):
Eval-group not allowed at runtime, use re 'eval' in regex
m/(.*?)\(((?x-ism:
                (?>
                [^()]+
                |
                \(
                (??{.../
at /home/cjfields/bioperl/live/Bio/Factory/FTLocationFactory.pm line
161, <GEN1> line 36.

---------------------------------------------------
Thread 2 terminated abnormally: Can't call method "primary_tag" on an
undefined value at /home/cjfields/bioperl/live/Bio/SeqIO/genbank.pm line
662, <GEN1> line 36.


Could you report this as a bug?

chris


On Mon, 2010-03-01 at 13:10 +0800, forrest wrote:
> Hi all,
> 
> When I use threads to get Genbank format file, show some error. It is
> shown as:
> 
> "Can't call method "get_taxon" on unblessed reference at
> /opt/local/lib/perl5/site_perl/5.8.9/Bio/Taxon.pm line 671."
> 
> =========================================
> #!/usr/bin/perl -w
> use strict;
> use Bio::SeqIO;
> use Bio::Seq;
> use Bio::DB::GenBank;
> use threads;
> 
> 
> my @id = ("AK287649","AF031249","EZ238383","BLYDHN5","AY895908","EF409493","AY895886","AF181455","AY895930","EF409498");
> 
> 
> my $seq_out = Bio::SeqIO->new(-format => "genbank",
>                               -file => ">dhn_all.gb");
> my @seq;
> 
> my $number = @id;
> 
> my $max_threads = 6;
> 
> for (my $thread_number=0;$thread_number<$number;){
>         my %threads_seq_hash;
>         
>         if ($number - $thread_number > $max_threads){
>             for (my $thread=0;$thread<$max_threads;){
>                 $threads_seq_hash{$thread} = threads->new(sub {
>                                         my $gb = Bio::DB::GenBank->new;
>                                         my $seq = $gb->get_Seq_by_acc($id[$thread_number]);
>                                     });
>                 $thread_number++;
>                 $thread++;
> 
>             }
>         }else{
>             my $else_number = $number % $max_threads;
>             for (my $thread=0;$thread<$else_number;){
>                 $threads_seq_hash{$thread} = threads->new(sub {
>                                         my $gb = Bio::DB::GenBank->new;
>                                         my $seq = $gb->get_Seq_by_acc($id[$thread_number]);
>                                     });
>                 $thread_number++;
>                 $thread++;
>                 
>             }
>             
>             
>         }
>     
>     foreach my $thread (sort keys %threads_seq_hash){
>         my ($seq) = $threads_seq_hash{$thread}->join;
>         push (@seq,$seq);
>     } 
> }
> 
> foreach (@seq){
>     $seq_out->write_seq($_);
> }
> =========================================
> 
> 
> How can I fix this error?
> Thanks.
> 
> 
> Zhang Tao
> 
> 
> 
> 
> 
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l at lists.open-bio.org
> http://lists.open-bio.org/mailman/listinfo/bioperl-l




More information about the Bioperl-l mailing list