[Bioperl-l] error running load_seqdatabase.pl

Hilmar Lapp hlapp at gmx.net
Fri Jan 13 14:52:11 EST 2006


On 1/13/06, Chris Fields <cjfields at uiuc.edu> wrote:
> [...]
> *  Running the example scripts (exceptions[1-4].pl) with or w/o Error.pm
> showed no difference (I checked with diff).

Given the below you probably failed to uninstall Error.pm, or not
installing it in the first place doesn't matter because it's there
already.

> *  Changing "throw $class" to "Error::throw $class" in Root.pm didn't do
> anything, which is strange (I did this with and w/o Error.pm installed).  I
> thought at this point, that Activestate may have Error.pm as part of their
> core modules, but it isn't included anywhere in the Perl directory tree or
> under PERL5LIB.  It also isn't listed as CORE in their modules list
> (http://ppm.activestate.com/BuildStatus/5.8-E.html); the core modules are
> usually under '/lib' instead of '/site/lib'.  So why would "Error::throw"
> even work?  I also tried 'perl -e "require Error" and didn't get errors, so
> it has to be around somewhere.

Right. I usually do

     $ perl -MYet::Another::Module

to convince myself that Yes::Another::Module really is not accessible
to the interpreter. And if I do that with Error on my OSX box I do
receive an error about perl not finding the Error module anywhere.

> *  Even stranger, when changing "throw $class" to "Error::throw $class" in
> Root.pm, load_seqdatabase.pl works fine, just like when "throw $class" is
> changed to "throw $class,".  Oi!!


Now, I can't imagine that using Error::throw $class <whatever> would
not die immediately if Error.pm is not installed. You can check that
quickly by mistyping the module name (like Errror::throw). So unless
there's some deep magic going on then using Error::throw instead of
just throw() is not an option I'm afraid.

I guess the solution needs to be adding the comma. I can't imagine why
this would break on non-Windows systems, but obviously some testing is
in order.

   -hilmar

> *  Changing load_seqdatabase.pl to include the line "INIT {
> $DONT_USE_ERROR=1; }" also didn't do anything; only changes to Root.pm made
> a difference.
>
> Lesson: Windows is flaky.  I think that much of this behavior is just
> ActivePerl-specific, which may be why it hasn't been seen elsewhere.  I
> don't know much about ActivePerl and exception handling, so I may delve into
> it a bit more to see if there is something else there.  I also dropped
> Activestate an email asking about Error.pm and their core distribution.
>
> So, the question is, should Root.pm be changed in bioperl-live?  Obviously
> this would need to be well tested out before committing any changes.  I
> could try it out on Mac OS X.
>
> Christopher Fields
> Postdoctoral Researcher - Switzer Lab
> Dept. of Biochemistry
> University of Illinois Urbana-Champaign
>
> > -----Original Message-----
> > From: bioperl-l-bounces at portal.open-bio.org [mailto:bioperl-l-
> > bounces at portal.open-bio.org] On Behalf Of Steve Chervitz
> > Sent: Friday, January 13, 2006 4:26 AM
> > To: Hilmar Lapp
> > Cc: Chris Fields; bioperl-l at portal.open-bio.org; Steve Chervitz
> > Subject: Re: [Bioperl-l] error running load_seqdatabase.pl
> >
> > looks like the trouble is when Bio::Root::Root::throw() tries to call
> > Error::throw(). Perhaps there is some windows-specific problem with
> > Error.pm? Can't say I've seen this before since I don't use perl on
> > windows.
> >
> > Some things to try, in this order:
> >
> > * Verify that Error.pm is installed for perl on your system.
> > * Try running t/Exception.t and
> > the examples/root/exceptions[1-4].pl scripts and see if they
> > produce the expected behavior.
> > * Try changing the 'throw $class ...' statements in Root.pm to
> > 'Error::throw $class ...'
> > * If Error.pm seems to be installed but isn't working right, either
> > uninstall it or get in the habit of putting this line in your main
> > scripts: INIT { $DONT_USE_ERROR=1; }
> >
> > Steve
> >
> > On Wed, 11 Jan 2006, Hilmar Lapp wrote:
> >
> > > Date: Wed, 11 Jan 2006 15:12:45 -0800
> > > From: Hilmar Lapp <hlapp at gmx.net>
> > > To: Chris Fields <cjfields at uiuc.edu>,
> > >      Steve Chervitz <Steve_Chervitz at affymetrix.com>
> > > Cc: bioperl-l at portal.open-bio.org
> > > Subject: Re: [Bioperl-l] error running load_seqdatabase.pl
> > >
> > > Interesting. That posting didn't receive much attention did it. So he
> > states:
> > >
> > > <quote>
> > > The script failed on throw() in loading Bio/Root/Root.pm on Windows.
> > > The problem lines are those "throw $class (...".   After I put comma
> > > after $class as "throw $class, (...", the BioSQL tests and load scripts
> > > are succeeded
> > > </quote>
> > >
> > > Can anyone of those who wrote the Root exception and warning code
> > > comment? Maybe Steve?
> > >
> > >    -hilmar
> > >
> > > On 1/11/06, Chris Fields <cjfields at uiuc.edu> wrote:
> > > > Hilmar,
> > > >
> > > > As an update on what's going on:
> > > >
> > > > I've run into a few problems with load_seqdatabase.pl and bioperl-db
> > on
> > > > cygwin which I'll try to hash through this week; I'll post if I can't
> > figure
> > > > it out soon.  It's not as buggy as trying to run it using the latest
> > > > ActivePerl on WinXP, but it still has issues.
> > > >
> > > > I'm also looking through the ActiveState documentation for the latest
> > > > version of perl they have (5.8.7), which I am running.  AFAIK, they
> > enable
> > > > dynamic loading when building.  I'll send them an email directly to
> > see what
> > > > they say.  There may be some Win32-specific way of configuring a
> > script for
> > > > dynamic loading of perl modules which isn't needed in other
> > environments.
> > > >
> > > > There was also this previous email on bioperl-l:
> > > >
> > > > http://portal.open-bio.org/pipermail/bioperl-l/2005-May/018937.html
> > > >
> > > > Baohua Wang seemed to narrow it down somewhat, but I'm not sure if
> > changing
> > > > the modules is a solution until I figure out why he made the changes.
> > They
> > > > seem mainly geared towards getting load_seqdatabase to work with
> > MsSQL, but
> > > > if he got it to work on Windows, then he may be onto something.  The
> > > > modified Bio* modules can be found at:
> > > >
> > > > ftp://ftp.tc.cornell.edu/Outgoing/bwang/BioSQL-On-Windows
> > > >
> > > > I'll check them out to see if they work out and see what specific
> > > > modifications he made (they're not detailed).
> > > >
> > > > Christopher Fields
> > > > Postdoctoral Researcher - Switzer Lab
> > > > Dept. of Biochemistry
> > > > University of Illinois Urbana-Champaign
> > > > -----Original Message-----
> > > > From: bioperl-l-bounces at portal.open-bio.org
> > > > [mailto:bioperl-l-bounces at portal.open-bio.org] On Behalf Of Chris
> > Fields
> > > > Sent: Friday, January 06, 2006 1:28 PM
> > > > To: 'Hilmar Lapp'
> > > > Cc: bioperl-l at portal.open-bio.org
> > > > Subject: RE: [Bioperl-l] error running load_seqdatabase.pl
> > > >
> > > > I'll try installing bioperl-db using Cygwin.  I know that I can
> > connect to
> > > > the native Windows mysql database from inside cygwin, so perhaps this
> > will
> > > > do as a short term workaround.  I'll also try using a different native
> > win32
> > > > Perl version (maybe 5.6) and look into the dynamic loading issue.  I
> > know
> > > > that the AS Perl has given errors like this before and not had
> > problems (I
> > > > think it was also cranky with older versions bioperl), but this one is
> > > > pretty serious.
> > > >
> > > > Christopher Fields
> > > > Postdoctoral Researcher - Switzer Lab
> > > > Dept. of Biochemistry
> > > > University of Illinois Urbana-Champaign
> > > > -----Original Message-----
> > > > From: Hilmar Lapp [mailto:hlapp at gmx.net]
> > > > Sent: Friday, January 06, 2006 12:02 PM
> > > > To: Chris Fields
> > > > Cc: bioperl-l at portal.open-bio.org
> > > > Subject: Re: [Bioperl-l] error running load_seqdatabase.pl
> > > >
> > > >
> > > > On Jan 6, 2006, at 9:20 AM, Chris Fields wrote:
> > > >
> > > > > Hilmar,
> > > > >
> > > > > Did this ever get resolved?  I tried to reinstall a biosql database
> > > > > using
> > > > > bioperl-db and got the same problems.  I'll list out everything I
> > ran
> > > > > into
> > > > > and what I pan on trying, as it's been a long time since I've tried
> > > > > this.
> > > > >
> > > > > Currently, I'm using ActiveState Perl 5.8.7.813 on WinXP and MySQL
> > > > > 4.1.14.
> > > > > Using nmake and installing worked fine.  Loading the biosql schema
> > and
> > > > > loading taxonomy info also worked fine, although I had to manually
> > > > > untar the
> > > > > taxonomy archive so load_ncbi_taxonomy.pl could find the files
> > (stupid
> > > > > windows).  However, this is what happens when using
> > > > > load_seqdatabase.pl:
> > > > >
> > > > > C:\Perl\Scripts>load_seqdatabase.pl -dbname dihydroorotase -dbuser
> > root
> > > > > NP_249092.gpt
> > > > > Loading NP_249092.gpt ...
> > > > > Undefined subroutine &Bio::Root::Root::debug called at
> > > > > C:/Perl/site/lib/Bio/DB/BioSQL/BasePersistenceAdaptor.pm line 1537,
> > > > > <GEN0>
> > > > > line 65.
> > > > >
> > > > > If I removed all args except the sequence file, it gives the same
> > > > > response,
> > > > > which means it happens before the connection is made to the
> > database:
> > > > >
> > > >
> > > > This happens indeed before a connection is made because it happens at
> > > > the point it tries to dynamically load the BioSQL driver for the
> > > > adaptor:
> > > >
> > > >         $self->debug("attempting to load driver for adaptor class
> > > > $class\n");
> > > >
> > > > The BioSQL driver is loaded before the DBD driver is loaded.
> > > >
> > > > The module in which this happens (i.e., the persistence adaptor) has
> > > > been loaded dynamically as well.
> > > >
> > > > Bio::Root::Root is in the 'use' statements, and the debug() method
> > > > clearly exists. I'm at a loss as to why perl complains on certain
> > > > Windows platforms. If somebody can tell me what, if anything, can be
> > > > done to make this work on those platforms too I'll be glad to
> > implement
> > > > it.
> > > >
> > > > > [...]
> > > > > Here's the error messages from that first test (warning it's very
> > > > > messy):
> > > > >
> > > > > C:\Perl\bin\perl.exe "-MExtUtils::Command::MM" "-e" "test_harness(0,
> > > > > 'bl
> > > > > ib\lib', 'blib\arch')" t\01dbadaptor.t t\02species.t t\03simpleseq.t
> > > > > t\04swiss.t t\05seqfeature.t t\06comment.t t\07dblink.t
> > t\08genbank.t
> > > > > t\09fuzzy2.t t\10ensembl.t t\11locuslink.t t\12ontology.t
> > t\13remove.t
> > > > > t\14query.t t\15cluster.t
> > > > > t\01dbadaptor.....ok 1/19Subroutine new redefined at
> > > > > [...]
> > > > > Subroutine debug redefined at C:/Perl/site/lib/Bio\Root\Root.pm line
> > > > > 356.
> > > >
> > > > So obviously it is there, right? So why doesn't perl see it a minute
> > > > later?
> > > >
> > > > > [...]
> > > > > I'll end with that.  At this moment, I can't see it working with the
> > > > > current
> > > > > setup.  I was using perl 5.8 with the old setup but I upgraded mysql
> > > > > at some
> > > > > point when working with gbrowse (I can't remember what the old
> > version
> > > > > was);
> > > > > I'll try upgrading to the newest ActiveState version to see what
> > > > > happens.
> > > > > Could it be the MySQL version?
> > > >
> > > > I don't think it has anything to do with the MySQL version, or the DBD
> > > > driver for that matter. Instead, it looks like on issue with dynamic
> > > > loading of perl modules on your particular platform.
> > > >
> > > >         -hilmar
> > > >
> > > > >
> > > > > Christopher Fields
> > > > > Postdoctoral Researcher - Switzer Lab
> > > > > Dept. of Biochemistry
> > > > > University of Illinois Urbana-Champaign
> > > > >
> > > > > _______________________________________________
> > > > > Bioperl-l mailing list
> > > > > Bioperl-l at portal.open-bio.org
> > > > > http://portal.open-bio.org/mailman/listinfo/bioperl-l
> > > > >
> > > > >
> > > > --
> > > > -------------------------------------------------------------
> > > > Hilmar Lapp                            email: lapp at gnf.org
> > > > GNF, San Diego, Ca. 92121              phone: +1-858-812-1757
> > > > -------------------------------------------------------------
> > > >
> > > >
> > > > _______________________________________________
> > > > Bioperl-l mailing list
> > > > Bioperl-l at portal.open-bio.org
> > > > http://portal.open-bio.org/mailman/listinfo/bioperl-l
> > > >
> > > >
> > >
> > >
> > > --
> > > ----------------------------------------------------------
> > > : Hilmar Lapp -:- San Diego, CA -:- hlapp at gmx dot net :
> > > ----------------------------------------------------------
> > >
> > > _______________________________________________
> > > Bioperl-l mailing list
> > > Bioperl-l at portal.open-bio.org
> > > http://portal.open-bio.org/mailman/listinfo/bioperl-l
> > >
> >
> > _______________________________________________
> > Bioperl-l mailing list
> > Bioperl-l at portal.open-bio.org
> > http://portal.open-bio.org/mailman/listinfo/bioperl-l
>
>


--
----------------------------------------------------------
: Hilmar Lapp -:- San Diego, CA -:- hlapp at gmx dot net :
----------------------------------------------------------



More information about the Bioperl-l mailing list