Bio-EnsEMBL
view release on metacpan or search on metacpan
lib/Bio/EnsEMBL/Registry.pm view on Meta::CPAN
# This is a map from group names to Ensembl DB adaptors. Used by
# load_all() and reset_DBAdaptor().
my %group2adaptor = (
'compara' => 'Bio::EnsEMBL::Compara::DBSQL::DBAdaptor',
'core' => 'Bio::EnsEMBL::DBSQL::DBAdaptor',
'estgene' => 'Bio::EnsEMBL::DBSQL::DBAdaptor',
'funcgen' => 'Bio::EnsEMBL::Funcgen::DBSQL::DBAdaptor',
'gene2phenotype' => 'Bio::EnsEMBL::G2P::DBSQL::DBAdaptor',
'regulation' => 'Bio::EnsEMBL::Funcgen::DBSQL::DBAdaptor',
'hive' => 'Bio::EnsEMBL::Hive::DBSQL::DBAdaptor',
'metadata' => 'Bio::EnsEMBL::MetaData::DBSQL::MetaDataDBAdaptor',
'ontology' => 'Bio::EnsEMBL::DBSQL::OntologyDBAdaptor',
'otherfeatures' => 'Bio::EnsEMBL::DBSQL::DBAdaptor',
'pipeline' => 'Bio::EnsEMBL::Pipeline::DBSQL::DBAdaptor',
'production' => 'Bio::EnsEMBL::Production::DBSQL::DBAdaptor',
'stable_ids' => 'Bio::EnsEMBL::DBSQL::DBAdaptor',
'taxonomy' => 'Bio::EnsEMBL::Taxonomy::DBSQL::TaxonomyDBAdaptor',
'variation' => 'Bio::EnsEMBL::Variation::DBSQL::DBAdaptor',
'vega' => 'Bio::EnsEMBL::DBSQL::DBAdaptor',
'vega_update' => 'Bio::EnsEMBL::DBSQL::DBAdaptor',
);
=head2 load_all
Will load the registry with the configuration file which is
obtained from the first in the following and in that order.
1) If an argument is passed to this method, this is used as the
name of the configuration file to read.
2) If the environment variable ENSEMBL_REGISTRY is set, this is
used as the name of the configuration file to read.
3) If the file .ensembl_init exist in the home directory, it is
used as the configuration file.
Arg [1] : (optional) string
Name of file to load the registry from.
Arg [2] : (optional) integer
If not 0, will print out all information.
Arg [3] : (optional) integer
If not 0, the database connection will not be
cleared, if 0 or if not set the database connections
will be cleared (this is the default).
Arg [4]: (optional) boolean
This option will turn off caching for slice features,
so, every time a set of features is retrieved,
they will come from the database instead of the
cache. This option is only recommended for advanced
users, specially if you need to store and retrieve
features. It might reduce performance when querying
the database if not used properly. If in doubt, do
not use it or ask in the developer mailing list.
Arg [5]: (optional) boolean
This option will make load_all() throw if the configuration file
is missing and cannot be guessed from the environment
Example : Bio::EnsEMBL::Registry->load_all();
Returntype : Int count of the DBAdaptor instances which can be found in the
registry due to this method being called. Will never be negative
Exceptions : Throws if $throw_if_missing is set and ($config_file is missing
and cannot be guessed from the environment
Status : Stable
=cut
sub load_all {
my ($class, $config_file, $verbose, $no_clear, $no_cache, $throw_if_missing ) = @_;
if ( !defined($config_file) ) {
if ( defined( $ENV{ENSEMBL_REGISTRY} ) ) {
if (-e $ENV{ENSEMBL_REGISTRY}) {
$config_file = $ENV{ENSEMBL_REGISTRY};
} else {
warning("\$ENV{ENSEMBL_REGISTRY} points to a file ('$ENV{ENSEMBL_REGISTRY}') that does not exist.\n");
}
} elsif ( defined( $ENV{HOME} ) ) {
if (-e ($ENV{HOME} . "/.ensembl_init")) {
$config_file = $ENV{HOME} . "/.ensembl_init";
}
}
if ($throw_if_missing and !defined($config_file) ) {
throw("No registry configuration to load, and no default could be guessed.\n");
}
} elsif ($throw_if_missing and !(-e $config_file)) {
throw(sprintf("Configuration file '%s' does not exist. Registry configuration not loaded.\n", $config_file ));
}
$verbose ||= 0;
$no_clear ||= 0;
$no_cache ||= 0;
my $original_count = $class->get_DBAdaptor_count();
if ( !defined($config_file) ) {
if ($verbose) {
print( STDERR
"No default registry configuration to load.\n" );
}
} elsif ( !-e $config_file ) {
if ($verbose) {
printf( STDERR "Configuration file '%s' does not exist. "
. "Registry configuration not loaded.\n",
$config_file );
}
} else {
if ( defined( $registry_register{'seen'} ) ) {
if ( !$no_clear ) {
if ($verbose) {
print( STDERR "Clearing previously loaded "
. "registry configuration\n" );
}
$class->clear();
}
}
$registry_register{'seen'} = 1;
if ($verbose) {
printf( STDERR
"Loading registry configuration from '%s'.\n",
$config_file );
}
my $cfg;
my $test_eval = eval { require Config::IniFiles };
if ($@ or (!$test_eval)) {
# The user does not have the 'Config::IniFiles' module.
if ($verbose) {
print( STDERR "No Config::IniFiles module found, "
. "assuming this is not an ini-file\n" );
}
# If the configuration file *is* an ini-file, we can expect a
# load of compilation errors from the next eval...
} else {
# The user has the 'Config::IniFiles' module installed. See
# if this is an ini-file or not...
$cfg = Config::IniFiles->new( -file => $config_file );
}
if ( defined $cfg ) {
my %default_adaptor_args = ();
( run in 0.679 second using v1.01-cache-2.11-cpan-5a3173703d6 )