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

Jason Stajich jason at bioperl.org
Mon Oct 30 21:44:18 UTC 2006


right - can't you just do:

my $fh;
open($fh, "megablast -d ... | ") || die $!;
my $searchIO = Bio::SearchIO->new(-format => 'blast', -fh => $fh);

On Oct 30, 2006, at 1:27 PM, Sendu Bala wrote:

> 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.
>
>
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l at lists.open-bio.org
> http://lists.open-bio.org/mailman/listinfo/bioperl-l

--
Jason Stajich, PhD
Miller Research Fellow
University of California
Dept of Plant and Microbial Biology
321 Koshland Hall #3102
Berkeley, CA 94720-3102
lab: 510.642.8441
http://pmb.berkeley.edu/~taylor/people/js.html





More information about the Bioperl-l mailing list