[Bioperl-l] Bio::Index::Abstract & bug #860

Ewan Birney birney@ebi.ac.uk
Fri, 19 Jan 2001 16:51:12 +0000 (GMT)


On Fri, 19 Jan 2001, Jason Stajich wrote:

> Looking through this bug - I had 'fixed' it by adding 
> use DB_File; at the top, but now I realize that may not be the best 
> since it still causes an error when -type is specified as 'SDBM_File'.
> Could just add both in the 'use' but what if DB_File is not present... 
> 
> The code for the method dbm_package assumes that if you specify a package
> it will have been already 'included'.  What to do...  Try and require both
> in the BEGIN block so they are explictly loaded no matter what?  Trap
> errors if DB_file is not present and user asks for it?

Go for a require run-time load....

check out pSW.pm for an example or the SeqIO.pm for another run-time load.



> 
> >From Bio::Index::Abstract
> 
> sub dbm_package {
>     my( $self, $value ) = @_;
>     
>     if ($value) {
>         $self->{'_dbm_package'} = $value;
>     }
>     elsif (! $self->{'_dbm_package'}) {
>         if ($USE_DBM_TYPE) {
>             $self->{'_dbm_package'} = $USE_DBM_TYPE;
>         } else {
>             my( $type );
>             # DB_File isn't available on all systems
>             eval {
>                 require DB_File;
>                 DB_File->import("$DB_HASH");
>             };
>             if ($@) {
>                 require SDBM_File;
>                 $type = 'SDBM_File';
>             } else {
>                 $type = 'DB_File';
>             }
>             $USE_DBM_TYPE = $self->{'_dbm_package'} = $type;
>         }
>     }
>     return $self->{'_dbm_package'};
> }
> 
> 
> 
> Jason Stajich
> jason@chg.mc.duke.edu
> Center for Human Genetics
> Duke University Medical Center 
> http://www.chg.duke.edu/ 
> 
> 
> ---------- Forwarded message ----------
> Date: Fri, 19 Jan 2001 09:55:29 +0000 (GMT)
> From: K Howe <klh@sanger.ac.uk>
> To: Jason Stajich <jason@chg.mc.duke.edu>
> Subject: Re: biperl bug #860
> 
> 
> Hi Jason,
> 
> We use the following command:
> 
> bpindex.pl -fmt EMBL -dir /nfs/disk92/Pfam/index -type DB_File
> pfamseq.index <embl flat file>
> 
> where /nfs/disk92/Pfam/index is the intended location of the index file,
> and pfamseq.index is the name of it. The key thing is that we explicitly
> give the type as DB_File, and when this happens, it dies (when you don't
> specify type, and it has to make a guess as to which dbm type to use, it
> works, but this is not scalalble for us, since the default dmb file in
> bioperl may change from DB_File in the future).
> 
> Hope this is enough information.
> 
> Best,
> 
> Kevin
> 
> On Thu, 18 Jan 2001, Jason Stajich wrote:
> 
> > Kevin - I'm trying to track down a bug you submitted for
> > Bio::Index::Abstract - I may have fixed it, but I want to be sure.  Can
> > you give me an example of how to invoke bpfetch/bpindex so to throw an
> > error due to a potentially missing require.
> > 
> > Thanks.
> > -Jason
> 
> 
> 
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l@bioperl.org
> http://bioperl.org/mailman/listinfo/bioperl-l
> 

-----------------------------------------------------------------
Ewan Birney. Mobile: +44 (0)7970 151230, Work: +44 1223 494420
<birney@ebi.ac.uk>. 
-----------------------------------------------------------------