[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