[Bioperl-l] Loading Blast Report in a minimal way

Sendu Bala bix at sendu.me.uk
Mon Oct 8 09:54:15 UTC 2007


zhihuali wrote:
> Hi netters,
> 
> I'm using SearchIO to parse my blast reports. They are extremely 
> huge, and not surprisingly, it's extremely slow and sometimes the 
> system crashed due to memmory problem. As I can handle small reports 
> quickly, it seems like a problem related to the way SearchIO works: 
> it slurps the whole report into the memory and builds millions of 
> objects.
> 
> I've checked old posts and some people used FastHitEventBuilder to 
> build hit objects without any hsp objects. And some people suggested 
> using tabular output of blast. But in my case I need to go to each of
>  the hsps of each hit, parse the alignment, and gather the
> information needed if that hsp fits certain criteria, and then move
> on to the next hsp/or jump over to the next hit/ or exit the
> processing, according to the information I have already got. An ideal
> way would be to read one hsp at a time from the report to the memory.
> Is there some way to modify SearchIO (or build another Search Event)
> to do this?

Use Bio::SearchIO::blast_pull

(ie.
use Bio::SearchIO;
my $in = Bio::SearchIO->new(-format => 'blast_pull',
                                             -file =>
't/data/new_blastn.txt');
)

It doesn't yet support all kinds of Blast report, however. Let me know
how you get on.

Cheers,
Sendu.



More information about the Bioperl-l mailing list