[Bioperl-l] StandAloneBlast

Chris Fields cjfields at uiuc.edu
Mon Jun 5 15:43:50 EDT 2006

> Well at the moment StandAloneBlast runs the blast program and stores its
> output to a temp file, then gives the temp file name as an arg to
> SearchIO. I (not using bioperl) would use IPC::Open3 to send the output
> of the blast program directly to my parser. The question is, why wasn't
> this done in StandAloneBlast? 

Probably for the reasons you outlined before:

'I use IPC::Open3 for blasts and have never run into problems, but it 
pretty much falls into the 'apt to cause deadlock' camp. It may pass 
tests on one machine but fail on others... '

Why would we take a chance on using something that works on one OS/machine
and fails to work on another?  

> I would get the blast program output handle and pass it directly to 
> SearchIO with the -fh option of new().
> The only difference here is it's faster and more efficient with the
> direct pipe, but you can't subsequently seek the SearchIO's internal
> filehandle (as we discussing in this thread). There are no (additional)
> issues with memory.

Like I said before, you can make changes and submit a patch.  The code here
is over five years old, and many many things have changed since then, so you
might find something works now which wasn't available or didn't work then.
It hasn't really been a priority (it certainly hasn't been mine).  Most
people don't care b/c it just works and a vast majority don't worry/care
about the internals.  

The issue at hand is whether any code changes will work on all OS's, not
just yours.  BioPerl is used the world over on just about every OS, so ANY
code changes need to take that into consideration.  I can guarantee that if
you made changes that break or reduce performance on 50% of the OS's, it'll
likely get rolled back.  You need the best cross-platform compatibility

We've now veered WAY off topic here.  If we intend on continuing this, we
need to switch the thread topic.


> If it isn't done using IPC::Open3 (or similar) because the original
> author already knew it wouldn't be reliable enough, or for some other
> reason(s), fine. Does anyone know the reasons?

More information about the Bioperl-l mailing list