[Bioperl-l] Is it possible to parse BLAST output using IO:String?

Sendu Bala bix at sendu.me.uk
Mon Oct 30 16:27:58 EST 2006


Ryan Golhar wrote:
> I'm trying to parse some blast output w/o actually creating the output
> file.  Instead, I'm capturing the output in a variable and would like to
> use IO::String to represent the file:
> 
> 	$_ = `megablast -d somedatabase -i somesequence -D 2`;
> 	my $blast_file = new IO::String($_);
> 	my $searchio = new Bio::SearchIO(-format => 'blast', -fh =>
> $blast_file);
> 	my $results = $searchio->next_result;
> 	my $hit = $results->next_hit;
> 	if (! defined($hit)) {
> 		warn "No BLAST hit for $accession on chr $chr for
> Seq/$orth_id/$organism\n\n";
> 		return;
> 	}
> 
> Now, when Bio::SearchIO tries to read the output line by line, instead
> it reads the entire output as 1 line.
> 
> If I provide the output in a file and use:
> 
> 	my $searchio = new Bio::SearchIO(-format => 'blast', -file =>
> '/tmp/somefile.blast');
> 
> This works...so is it possible to use IO::String to provide
> Bio::SearchIO with BLAST output?

Why must it be IO::String? Why not just open() your megablast and 
provide $searchio the real filehandle? It would be faster that way as well.

Read the docs for `. Your usage above is inappropriate.




More information about the Bioperl-l mailing list