[Bioperl-l] Is it possible to parse BLAST output using IO:String?
Sendu Bala
bix at sendu.me.uk
Mon Oct 30 21:27:58 UTC 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