[Bioperl-l] bioperl-db on Windows (update)

Chris Fields cjfields at uiuc.edu
Thu Jan 26 00:38:56 EST 2006


Hilmar, 

I checked load_seqdatabase.pl with all variables of Root.pm and checking
debugging output; basically, the only way that I could find to get
load_seqdatabase.pl to work on native Windows is by changing those Root.pm
lines by adding a comma (i.e. three lines, from 'throw $class ...' to 'throw
$class, ...').  I ran debugging on load_seqdatabase.pl using all versions of
Root.pm, with and without Error.pm.  Only those with a comma present worked
in both circumstances.  I don't know why this hasn't popped up before now,
but it seems to be a unique combination of Windows, load_seqdatabase.pl, and
bioperl-db.  It doesn't happen with any scripts of Bioperl on Windows that
I've run into, and debugging other modules (for instance,
Bio::SearchIO::blast, which I recently worked on) doesn't cause this
problem.  

Here's the debugging output for load_seqdatabase.pl, with and w/o Error.pm
and without modifying Root.pm.

____________________________________________________________

Without Error.pm:
____________________________________________________________
C:\Perl\Scripts>perl -MError
Can't locate Error.pm in @INC (@INC contains:
C:\Perl\src\bioperl\bioperl-live C:\Perl\src\bioperl\bioperl-db C:/Perl/lib
C:/P
erl/site/lib .).
BEGIN failed--compilation aborted.

C:\Perl\Scripts>load_seqdatabase.pl -dbname biotest -dbuser root -dbpass
****** -driver mysql -format genbank -namespace tes
t -testonly -safe -debug input.gpt
Loading input.gpt ...
attempting to load adaptor class for Bio::Seq::RichSeq
        attempting to load module Bio::DB::BioSQL::RichSeqAdaptor
attempting to load adaptor class for Bio::Seq
        attempting to load module Bio::DB::BioSQL::SeqAdaptor
instantiating adaptor class Bio::DB::BioSQL::SeqAdaptor
attempting to load adaptor class for Bio::Species
        attempting to load module Bio::DB::BioSQL::SpeciesAdaptor
instantiating adaptor class Bio::DB::BioSQL::SpeciesAdaptor
Undefined subroutine &Bio::Root::Root::debug called at
C:\Perl\src\bioperl\bioperl-db/Bio/DB/BioSQL/BasePersistenceAdaptor.pm
line 1537, <GEN0> line 63.
____________________________________________________________

With Error.pm:
____________________________________________________________

C:\Perl\Scripts>perl -MError -e ";"

C:\Perl\Scripts>load_seqdatabase.pl -dbname biotest -dbuser root -dbpass
****** -driver mysql -format genbank -namespace tes
t -testonly -safe -debug input.gpt
Loading input.gpt ...
attempting to load adaptor class for Bio::Seq::RichSeq
        attempting to load module Bio::DB::BioSQL::RichSeqAdaptor
  Calling Error::throw

  Calling Error::throw

attempting to load adaptor class for Bio::Seq
        attempting to load module Bio::DB::BioSQL::SeqAdaptor
instantiating adaptor class Bio::DB::BioSQL::SeqAdaptor
  Calling Error::throw

attempting to load adaptor class for Bio::Species
        attempting to load module Bio::DB::BioSQL::SpeciesAdaptor
instantiating adaptor class Bio::DB::BioSQL::SpeciesAdaptor
  Calling Error::throw

  Calling Error::throw

Undefined subroutine &Bio::Root::Root::debug called at
C:\Perl\src\bioperl\bioperl-db/Bio/DB/BioSQL/BasePersistenceAdaptor.pm
line 1537, <GEN0> line 63.

____________________________________________________________

Error::throw is called w/o a problem when Error.pm is present (which is what
should happen).  For some reason, that extra comma makes all the difference
in the world.

The line above in BasePersistenceAdaptor.pm is :
	
$self->debug("attempting to load driver for adaptor class $class\n");

which is found in many modules.  I don't really know why it decides to hang
up here.  I'll try running a few of the Root.pm modifications under Mac OS X
in the next day or so to see what happens.

I also reran a few of Steve Chervitz's recommendations from a previous post;
everything ran fine except in circumstances in which Error.pm was required
with a 'use' statement, and only when Error.pm wasn't present, which is
expected.  Previously, when I ran them, there was a bit of confusion b/c it
seemed that Error.pm was present somewhere.  It was; Steve included it in
bioperl-live/examples/root/lib.  When I deleted it, I got the expected
results.

Anyway, I don't know what else I can do at this point besides check out
everything on Mac OS X.  Any additional checks of the modified Root.pm need
to be made on other systems.  Will filing this as a bug in Bugzilla help?

Christopher Fields
Postdoctoral Researcher - Switzer Lab
Dept. of Biochemistry
University of Illinois Urbana-Champaign 



More information about the Bioperl-l mailing list