[Bioperl-l] ATTN: Matthew Laird & Elia----blastall call crashed from StandAloneBlast

Guojun Yang gyang at plantbio.uga.edu
Fri Aug 10 11:23:36 EDT 2007


Hi, Chris,  
Interestingly, I found the message in bioperl-l from Matthew Laird 2005 "Blastall & StandAloneBlast". "...the Odd thing is, Blast DOES run.  If one comments out this line in StandAloneBlast.pm, the execution succeeds perfectly fine". It seemed to be mysterious when I uncommented the " $self->throw("$executable call crashed: $? $! $commandstring\n") unless ($status==0) ;" line, the blastall runs. The only difference from what Matthew saw is that, when I did not uncomment the line, blastall DID NOT run.
Thanks,  
Guojun  
       _____  

  From: Guojun Yang [mailto:gyang at plantbio.uga.edu]
To: Chris Fields [mailto:cjfields at uiuc.edu]
Cc: bioperl-l at lists.open-bio.org
Sent: Thu, 09 Aug 2007 15:03:21 -0400
Subject: standalone blastall call crashed, please help

  
Hi, Chris,  
Thanks a lot for your efforts. With your help, I am gaining more confidence to fix the cgi code. While the remoteblast problem is fixed now, I am caught in a local blast problem (see the error message and subroutine). The line starting with * is line 593 in the error message. I tried command line blastall, it works fine. I set the permission to all the blast folders and files, it did not help much. The same sequence and database works OK if I use command line blastall. I used the seq object ref $query as query, the error message gives "-i /tmp/...", does this look like an input problem? The subroutine was working before early 2006 (on a different machine), I am wondering whether this is due to changes in the StandAloneBlast.pm?  Best, Guojun  
   
I set the blast env variables:  
   
BEGIN {$ENV{BLASTDIR} = '/usr/blast-2.2.10/bin'; }
BEGIN {$ENV{BLASTDB}='/usr/blast-2.2.10/data';}
BEGIN {$ENV{BLASTMAT}='/usr/blast-2.2.10/data';}
$PROGRAMDIR = $ENV{'BLASTDIR'} || '';
......  
   
------------- EXCEPTION: Bio::Root::Exception -------------
MSG: blastall call crashed: -1 /usr/blast-2.2.10/bin/blastall -d  "/usr/blast-2.2.10/data/swissprot"  -e  0.001  -i  /tmp/3cjvQyodxg  -o  /tmp/4qSSO16EZP  -p  blastx   
STACK: Error::throw
STACK: Bio::Root::Root::throw /usr/lib/perl5/site_perl/5.8.3/Bio/Root/Root.pm:359
STACK: Bio::Tools::Run::StandAloneBlast::_runblast /usr/lib/perl5/site_perl/5.8.3/Bio/Tools/Run/StandAloneBlast.pm:813
STACK: Bio::Tools::Run::StandAloneBlast::_generic_local_blast /usr/lib/perl5/site_perl/5.8.3/Bio/Tools/Run/StandAloneBlast.pm:760
STACK: Bio::Tools::Run::StandAloneBlast::blastall /usr/lib/perl5/site_perl/5.8.3/Bio/Tools/Run/StandAloneBlast.pm:570
STACK: main::ancestor makcgi07.txt:593
STACK: makcgi07.txt:208
  

sub ancestor {
    use Bio::Tools::Run::StandAloneBlast;
    use Bio::SearchIO::blast;  

my $query = Bio::Seq -> new ( -seq=>"$_[0]",
                              -id=>"test");
print $query->seq();
my $len=$query->length();
my $long_name=$_[1];
my $long_start=$_[2];
my $long_end=$_[3];
@db=('swissprot');
foreach my $db (@db) {
    my $factory = Bio::Tools::Run::StandAloneBlast->new(-program => "blastx",
                                                        -database => "$db",
                                                        -e => 1e-3,
                                                        );
*    my $blast_report = $factory->blastall($query);
    while (my $result = $blast_report->next_result) {
            while( my $hit = $result->next_hit()) {
                $hit_name=$hit->name;
                $hit_name =~ /\S+[|](\S+)[.]\d+[|].*/;
                $name=$1;
                $desc = $hit->description();
                if ($desc =~ /.*{|\btransposon\b|\btransposase\b|}.*/i){
                     $AN=0;
                     $replica=0;
                     while ($ancestor_name[$AN]) {
                        $replica=1 if (($ancestor_name[$AN] eq $long_name) && ($hitname[$AN] eq $name));
                         $AN+=1;
                     }
                        if ($replica==0) {
                        push @ancestor_name, $long_name;
                        push @ancestor_start, $long_start;
                        push @ancestor_end, $long_end;
                        push @desc, $desc;
                        push @hitname,$name;
                        }
                }
               }
              }}
return @ancestor_name, at ancestor_start, at ancestor_end, at desc;
}


      
   
 


More information about the Bioperl-l mailing list