[Bioperl-l] Windows BLAST problems under Cygwin

Paul Cantalupo lupey+ at pitt.edu
Fri Apr 29 09:25:00 EDT 2005


I am running BioPerl 1.4 on Windows 2000 under Cygwin (therefore, I use 
Perl that comes with Cygwin; not Windows Perl). I am trying to run a 
standalone blast. I installed the Windows version of BLAST as 
recommended by the BioPerl installation instructions. My script (see 
localblast.pl below) takes an input sequence file (see test.fa below) 
and performs a blastp. By running the script with the following command 
line, I get the this error:

$ localblast.pl test.fa
[NULL_Caption] FATAL ERROR: blast: Unable to open input file /tmp/4lkjmTjRio

------------- EXCEPTION  -------------
MSG: blastall call crashed: 256 /usr/local/blast/blastall -p  blastp  -d 
  "/ecoli.nt"  -i
/tmp/4lkjmTjRio  -o  /tmp/llctIvZlC6

STACK Bio::Tools::Run::StandAloneBlast::_runblast 
STACK Bio::Tools::Run::StandAloneBlast::_generic_local_blast 
STACK Bio::Tools::Run::StandAloneBlast::blastall 
STACK toplevel ./localblast.pl:17


Notice that blast is unable to open the input file /tmp/4lkjmTjRio 
(which the library StandAloneBlast created). Next, I tried to run 
blastall directly from the commandline, with a file in the /tmp 
directory but it gave me the same error: 'unable to open input file'. 
But blastall does execute properly I use an input file that is in the 
current directory (using a relative path name in the -i option). But if 
I set the -i option to any absolute reference for a file like 
/home/lupey/fasta.fa, it fails and the error is the same: 'Unable to 
open input file'.

So, why does BioPerl suggest using the Windows version of Blast if it 
can't open files using absolute references to files especially when the 
StandAloneBlast library places the inputfile in the /tmp directory? What 
solution can I employ to fix this?

Thank you,




use strict;
use Bio::SeqIO;
use Bio::Tools::Run::StandAloneBlast;

my $Seq_in = Bio::SeqIO->new (-file => $ARGV[0], -format => 'fasta');
my $query = $Seq_in->next_seq();

my $factory = Bio::Tools::Run::StandAloneBlast->new('program'  => 'blastp',
                                                  'database' => 'ecoli.nt',
                                                  _READMETHOD => "Blast"
my $blast_report = $factory->blastall($query);
my $result = $blast_report->next_result;

while( my $hit = $result->next_hit()) {
    print "\thit name: ", $hit->name(), " significance: ", 
$hit->significance(), "\n";}


More information about the Bioperl-l mailing list