[Bioperl-l] bioperl-live Bio::DB::Registry.pm bug finding
 "/etc/bioinformatics/seqdatabase.ini" and suggestion for discovery of
 new database adaptors
   
    Malcolm Cook
     
    malcolm.cook@genxy.com
       
    Fri, 14 Jun 2002 10:51:00 -0700
    
    
  
This module loads the user's registry in his $HOME directory after testing for
one in /etc/bioinformatics...
Oh, the woes of cut and paste...
the 2nd instance of the line
 open(F,"$home/.bioinformatics/seqdatabase.ini");
should read
 open(F,"/etc/bioinformatics/seqdatabase.ini");
Can fix?
On the subject, elsewhere in the module, the approach of hardwiring the
implementations in the hash %implements can be usefully extended to 'discover'
new BioDatabaseAdaptor modules (a borrowed naming convention) allowing their
dynamic loading from sub-directory of Bio::DB named identically after the
protocol as it appears in seqdatabase.ini.
As follows...
put this in the modules header:
use UNIVERSAL::require;
and apply the following patch to  _load_registry
     if (defined $implement{$hash->{'protocol'}}) {
  $class = $implement{$hash->{'protocol'}};
  } elsif (($class =
"Bio::DB::".$hash->{'protocol'}."::BioDatabaseAdaptor")[0]->require) {
  $class->import;
  } elsif ($UNIVERSAL::require::ERROR !~ m/Can\'t locate .* in \@INC/) {
  die "Error while requiring $class: $UNIVERSAL::require::ERROR";
  }
     else {
  $self->warn("Registry does not support protocol ".$hash->{'protocol'});
  next;
Why the trouble?  I'm considering the approach creating/registering/using an
adaptor for SRS/getz.
Comments?  Criticism?
Thanks & Regards,
--
Malcolm Cook – Software Engineer
Genset, Inc – San Diego, USA
Tel: 858-597-2664
(Some day I'll request a CVS account and also start to use patch / diff...)