annotate variant_effect_predictor/Bio/EnsEMBL/Registry.pm @ 0:1f6dce3d34e0

Uploaded
author mahtabm
date Thu, 11 Apr 2013 02:01:53 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 =head1 LICENSE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 Copyright (c) 1999-2012 The European Bioinformatics Institute and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 Genome Research Limited. All rights reserved.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 This software is distributed under a modified Apache license.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 For license details, please see
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 http://www.ensembl.org/info/about/code_licence.html
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 =head1 CONTACT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 Please email comments or questions to the public Ensembl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 developers list at <dev@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 Questions may also be sent to the Ensembl help desk at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 <helpdesk@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 Bio::EnsEMBL::Registry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 use Bio::EnsEMBL::Registry;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 my $registry = 'Bio::EnsEMBL::Registry';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 $registry->load_all("configuration_file");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 $gene_adaptor = $registry->get_adaptor( 'Human', 'Core', 'Gene' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 All Adaptors are stored/registered using this module. This module should
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 then be used to get the adaptors needed.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 The registry can be loaded from a configuration file using the load_all
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 If a filename is passed to load_all then this is used. Else if the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 environment variable ENSEMBL_REGISTRY is set to the name on an existing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 configuration file, then this is used. Else if the file .ensembl_init
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 in your home directory exist, it is used.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 For the Web server ENSEMBL_REGISTRY should be set in SiteDefs.pm. This
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 will then be passed on to load_all.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 The registry can also be loaded via the method load_registry_from_db
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 which given a database host will load the latest versions of the Ensembl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 databases from it.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 The four types of registries are for db adaptors, dba adaptors, dna
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 adaptors and the standard type.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 =head2 db
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 These are registries for backwards compatibility and enable the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 subroutines to add other adaptors to connections.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 e.g. get_all_db_adaptors, get_db_adaptor, add_db_adaptor,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 remove_db_adaptor are the old DBAdaptor subroutines which are now
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 redirected to the Registry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 So if before we had
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 my $sfa = $self->adaptor()->db()->get_db_adaptor('blast');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 We now want to change this to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 my $sfa =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 Bio::EnsEMBL::Registry->get_adaptor( "human", "core", "blast" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 =head2 DBA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 These are the stores for the DBAdaptors
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 The Registry will create all the DBConnections needed now if you set up
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 the configuration correctly. So instead of the old commands like
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 my $db = Bio::EnsEMBL::DBSQL::DBAdaptor->new(...);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 my $exon_adaptor = $db->get_ExonAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 we should now have just
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 my $exon_adaptor =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 Bio::EnsEMBL::Registry->get_adaptor( "human", "core", "exon" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 =head2 DNA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 This is an internal Registry and allows the configuration of a dnadb.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 An example here is to set the est database to get its dna data from the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 core database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 ## set the est db to use the core for getting dna data.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 # Bio::EnsEMBL::Utils::ConfigRegistry->dnadb_add( "Homo Sapiens",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 # "core", "Homo Sapiens", "est" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 =head2 adaptors
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 This is the registry for all the general types of adaptors like
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 GeneAdaptor, ExonAdaptor, Slice Adaptor etc.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 These are accessed by the get_adaptor subroutine i.e.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 my $exon_adaptor =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 Bio::EnsEMBL::Registry->get_adaptor( "human", "core", "exon" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 =head1 METHODS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 package Bio::EnsEMBL::Registry;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 use warnings;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 our $NEW_EVAL = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 use Bio::EnsEMBL::DBSQL::DBAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 use Bio::EnsEMBL::DBSQL::BaseFeatureAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 use Bio::EnsEMBL::Utils::Exception qw( deprecate throw warning );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 use Bio::EnsEMBL::Utils::Argument qw(rearrange);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 use Bio::EnsEMBL::Utils::ConfigRegistry;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 use Bio::EnsEMBL::ApiVersion;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 use Bio::EnsEMBL::Utils::URI qw/parse_uri/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 use DBI qw(:sql_types);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 use vars qw(%registry_register);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 # This is a map from group names to Ensembl DB adaptors. Used by
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 # load_all() and reset_DBAdaptor().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 my %group2adaptor = (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 'blast' => 'Bio::EnsEMBL::External::BlastAdaptor',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 'compara' => 'Bio::EnsEMBL::Compara::DBSQL::DBAdaptor',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 'core' => 'Bio::EnsEMBL::DBSQL::DBAdaptor',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 'estgene' => 'Bio::EnsEMBL::DBSQL::DBAdaptor',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 'funcgen' => 'Bio::EnsEMBL::Funcgen::DBSQL::DBAdaptor',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 'regulation' => 'Bio::EnsEMBL::Funcgen::DBSQL::DBAdaptor',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 'haplotype' => 'Bio::EnsEMBL::ExternalData::Haplotype::DBAdaptor',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 'hive' => 'Bio::EnsEMBL::Hive::DBSQL::DBAdaptor',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 'ontology' => 'Bio::EnsEMBL::DBSQL::OntologyDBAdaptor',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 'otherfeatures' => 'Bio::EnsEMBL::DBSQL::DBAdaptor',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 'pipeline' => 'Bio::EnsEMBL::Pipeline::DBSQL::DBAdaptor',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 'snp' => 'Bio::EnsEMBL::ExternalData::SNPSQL::DBAdaptor',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 'stable_ids' => 'Bio::EnsEMBL::DBSQL::DBAdaptor',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 'variation' => 'Bio::EnsEMBL::Variation::DBSQL::DBAdaptor',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 'vega' => 'Bio::EnsEMBL::DBSQL::DBAdaptor',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 'vega_update' => 'Bio::EnsEMBL::DBSQL::DBAdaptor',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 =head2 load_all
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 Will load the registry with the configuration file which is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 obtained from the first in the following and in that order.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 1) If an argument is passed to this method, this is used as the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 name of the configuration file to read.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 2) If the environment variable ENSEMBL_REGISTRY is set, this is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 used as the name of the configuration file to read.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 3) If the file .ensembl_init exist in the home directory, it is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 used as the configuration file.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 Arg [1] : (optional) string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 Name of file to load the registry from.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 Arg [2] : (optional) integer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 If not 0, will print out all information.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 Arg [3] : (optional) integer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 If not 0, the database connection will not be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 cleared, if 0 or if not set the database connections
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 will be cleared (this is the default).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 Arg [4]: (optional) boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 This option will turn off caching for slice features,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 so, every time a set of features is retrieved,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 they will come from the database instead of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 cache. This option is only recommended for advanced
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 users, specially if you need to store and retrieve
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 features. It might reduce performance when querying
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 the database if not used properly. If in doubt, do
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 not use it or ask in the developer mailing list.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 Example : Bio::EnsEMBL::Registry->load_all();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 Returntype : Int count of the DBAdaptor instances which can be found in the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 registry due to this method being called. Will never be negative
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 sub load_all {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 my ($class, $config_file, $verbose, $no_clear, $no_cache ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 if ( !defined($config_file) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 if ( defined( $ENV{ENSEMBL_REGISTRY} ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 $config_file = $ENV{ENSEMBL_REGISTRY};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 } elsif ( defined( $ENV{HOME} ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 $config_file = $ENV{HOME} . "/.ensembl_init";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 $verbose ||= 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 $no_clear ||= 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 $no_cache ||= 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 my $original_count = $class->get_DBAdaptor_count();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 if ( !defined($config_file) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 if ($verbose) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 print( STDERR
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 "No default registry configuration to load.\n" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 } elsif ( !-e $config_file ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 if ($verbose) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 printf( STDERR "Configuration file '%s' does not exist. "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 . "Registry configuration not loaded.\n",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 $config_file );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 if ( defined( $registry_register{'seen'} ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 if ( !$no_clear ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 if ($verbose) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 print( STDERR "Clearing previously loaded "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 . "registry configuration\n" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 $class->clear();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 $registry_register{'seen'} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 if ($verbose) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 printf( STDERR
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 "Loading registry configuration from '%s'.\n",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 $config_file );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 my $cfg;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 my $test_eval = eval { require Config::IniFiles };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 if ($@ or (!$test_eval)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 # The user does not have the 'Config::IniFiles' module.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 if ($verbose) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 print( STDERR "No Config::IniFiles module found, "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 . "assuming this is not an ini-file\n" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 # If the configuration file *is* an ini-file, we can expect a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 # load of compilation errors from the next eval...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 # The user has the 'Config::IniFiles' module installed. See
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 # if this is an ini-file or not...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 $cfg = Config::IniFiles->new( -file => $config_file );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 if ( defined $cfg ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 my %default_adaptor_args = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 if ( $cfg->SectionExists('default') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 # The 'default' section is special. It contain default
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 # values that should be implicit to all other section in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 # this configuration file. Aliases are added if there
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 # is also a 'species' setting.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 my $alias = $cfg->val( 'default', 'alias' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 $cfg->delval( 'default', 'alias' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 my $species = $cfg->val( 'default', 'species' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 if ( defined($alias) && defined($species) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 Bio::EnsEMBL::Utils::ConfigRegistry->add_alias(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 -species => $species,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 -alias => [ split( /\n/, $alias ) ]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 %default_adaptor_args =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 map { '-' . $_ => $cfg->val( 'default', $_ ) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 $cfg->Parameters('default');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 foreach my $section ( $cfg->Sections() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 if ( $section eq 'default' )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 { # We have already done the 'default' section.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 my $group = $cfg->val( $section, 'group' )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 || $cfg->val( 'default', 'group' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 if ( !defined($group) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 printf( STDERR "Key 'group' is undefined "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 . "for configuration section '%s', "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 . "skipping this section.\n",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 $section );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 my $adaptor = $group2adaptor{ lc($group) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 if ( !defined($adaptor) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 printf( STDERR "Unknown group '%s' "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 . "for configuration section '%s', "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 . "skipping this section.\n",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 $group, $section );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 # Handle aliases. A section must have both an 'alias'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 # setting and a 'species' setting for aliases to be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 # added. The 'species' setting might be inherited from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 # the 'default' section.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 my $alias = $cfg->val( $section, 'alias' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 $cfg->delval( $section, 'alias' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 my $species = $cfg->val( $section, 'species' )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 || $cfg->val( 'default', 'species' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 if ( defined($alias) && defined($species) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 Bio::EnsEMBL::Utils::ConfigRegistry->add_alias(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 -species => $species,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 -alias => [ split( /\n/, $alias ) ]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 # Fill in the adaptor initialization arguments.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 # We trust the user to provide sensible key-value pairs.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 my %adaptor_args = %default_adaptor_args;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 foreach my $parameter ( $cfg->Parameters($section) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 $adaptor_args{ '-' . $parameter } =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 $cfg->val( $section, $parameter );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 # when set, do not use the feature cache in the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 # different adaptors
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 if ($no_cache) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 $adaptor_args{'-no_cache'} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 if ($verbose) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 printf( "Configuring adaptor '%s' "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 . "for configuration section '%s'...\n",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 $adaptor, $section );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 my $test_eval = eval "require $adaptor";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 if ($@ or (!$test_eval)) { die($@) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 $adaptor->new(%adaptor_args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 } ## end foreach my $section ( $cfg->Sections...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 # This is probably no ini-file but an old style piece
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 # of configuration written in Perl. We need to try to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 # require() it.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 my $test_eval;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 if($NEW_EVAL) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 require Bio::EnsEMBL::Utils::IO;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 my $contents = Bio::EnsEMBL::Utils::IO::slurp($config_file);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 $test_eval = eval $contents;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 $test_eval = eval { require($config_file) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 # To make the web code avoid doing this again we delete first
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 delete $INC{$config_file};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 #Now raise the exception just in case something above is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 #catching this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 if ($@ or (!$test_eval)) { die($@) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 } ## end else [ if ( !defined($config_file...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 my $count = $class->get_DBAdaptor_count() - $original_count;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 return $count >= 0 ? $count : 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 } ## end sub load_all
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 =head2 clear
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 Will clear the registry and disconnect from all databases.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 Example : Bio::EnsEMBL::Registry->clear();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 sub clear{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 my ($self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 foreach my $dba (@{$registry_register{'_DBA'}}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 if($dba->dbc->connected){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 $dba->dbc->db_handle->disconnect();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 %registry_register = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 # db adaptors. (for backwards compatibility)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 =head2 add_db
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 Arg [1] : db (DBAdaptor) to add adaptor to.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 Arg [2] : name of the name to add the adaptor to in the registry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 Arg [3] : The adaptor to be added to the registry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 Example : Bio::EnsEMBL::Registry->add_db($db, "lite", $dba);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 Status : At Risk.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 : This is here for backwards compatibility only and may
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 : be removed eventually. Solution is to make sure the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 : db and the adaptor have the same species and the call
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 : is then no longer needed.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 sub add_db {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 my ( $class, $db, $name, $adap ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 if ( lc( $db->species() ) ne lc( $adap->species ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 $registry_register{_SPECIES}{ lc( $db->species() ) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440 { lc( $db->group() ) }{'_special'}{ lc($name) } = $adap;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 =head2 remove_db
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 Arg [1] : db (DBAdaptor) to remove adaptor from.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 Arg [2] : name to remove the adaptor from in the registry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 Example : my $db = Bio::EnsEMBL::Registry->remove_db($db, "lite");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 Returntype : adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 Status : At Risk.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 : This is here for backwards compatibility only and may
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454 : be removed eventually. Solution is to make sure the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455 : db and the adaptor have the same species and the call
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 : is then no longer needed.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460 sub remove_db {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 my ( $class, $db, $name ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 my $ret =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 $registry_register{_SPECIES}{ lc( $db->species() ) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 { lc( $db->group() ) }{'_special'}{ lc($name) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 $registry_register{_SPECIES}{ lc( $db->species() ) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468 { lc( $db->group() ) }{'_special'}{ lc($name) } = undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470 return $ret;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 =head2 get_db
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 Arg [1] : db (DBAdaptor) to get adaptor from.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 Arg [2] : name to get the adaptor for in the registry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 Example : my $db = Bio::EnsEMBL::Registry->get_db("Human", "core", "lite");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 Returntype : adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 Exceptions : See get_DBAdaptor()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 Status : At Risk.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 : This is here for backwards compatibility only and may
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 : be removed eventually. Solution is to make sure the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 : db and the adaptor have the same species then call
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 : get_DBAdaptor instead.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 sub get_db {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 my ( $class, $db, $name ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 my $ret = Bio::EnsEMBL::Registry->get_DBAdaptor( lc( $db->species ),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 lc($name) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 if ( defined($ret) ) { return $ret }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 return $registry_register{_SPECIES}{ lc( $db->species() ) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 { lc( $db->group() ) }{'_special'}{ lc($name) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500 =head2 get_all_db_adaptors
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 Arg [1] : db (DBAdaptor) to get all the adaptors from.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 Example : my $db = Bio::EnsEMBL::Registry->get_all_db_adaptors($db);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504 Returntype : adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 Status : At Risk.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507 : This is here for backwards compatibility only and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 : may be removed eventually. Solution is to make
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 : sure the dbs all have the same species then call
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 : get_all_DBAdaptors(-species => "human");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 sub get_all_db_adaptors {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516 my ( $class, $db ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 my %ret = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 # we now also want to add all the DBAdaptors for the same species.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520 # as add_db_adaptor does not add if it is from the same species.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 foreach my $dba ( @{ $registry_register{'_DBA'} } ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523 if ( lc( $dba->species() ) eq lc( $db->species() ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524 $ret{ $dba->group() } = $dba;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528 foreach my $key (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529 keys %{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530 $registry_register{_SPECIES}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 { $class->get_alias( $db->species() ) }{ lc( $db->group() ) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 {'_special'} } )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534 $ret{$key} =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535 $registry_register{_SPECIES}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536 { $class->get_alias( $db->species() ) }{ lc( $db->group() ) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537 {'_special'}{$key};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540 return \%ret;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541 } ## end sub get_all_db_adaptors
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545 # DBAdaptors
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 =head2 add_DBAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550 Arg [1] : name of the species to add the adaptor to in the registry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551 Arg [2] : name of the group to add the adaptor to in the registry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552 Arg [3] : DBAdaptor to be added to the registry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 Example : Bio::EnsEMBL::Registry->add_DBAdaptor("Human", "core", $dba);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556 caller : internal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561 sub add_DBAdaptor {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562 my ( $class, $species, $group, $adap ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564 if ( !( $class->alias_exists($species) ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565 $class->add_alias( $species, $species );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568 $species = $class->get_alias($species);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570 $registry_register{_SPECIES}{$species}{ lc($group) }{'_DB'} = $adap;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572 if ( !defined( $registry_register{'_DBA'} ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573 $registry_register{'_DBA'} = [$adap];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575 push( @{ $registry_register{'_DBA'} }, $adap );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582 =head2 get_DBAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584 Arg [1] : name of the species to get the adaptor for in the registry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585 Arg [2] : name of the group to get the adaptor for in the registry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586 Arg [3] : if set will not give warnings when looking for alias.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587 Example : $dba = Bio::EnsEMBL::Registry->get_DBAdaptor("Human", "core");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588 Returntype : DBAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589 Exceptions : If $species is not defined and if no valid internal name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590 could be found for $species. If thrown check your API and DB
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591 version
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596 sub get_DBAdaptor {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597 my ( $class, $species, $group, $no_alias_check ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599 if ( !defined($species) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600 throw('Species not defined.');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603 my $ispecies = $class->get_alias( $species, $no_alias_check );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605 if ( !defined($ispecies) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606 if(! $no_alias_check) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607 throw("Can not find internal name for species '$species'");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
610 else { $species = $ispecies }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
611
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
612 return $registry_register{_SPECIES}{$species}{ lc($group) }{'_DB'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
613 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615 =head2 get_all_DBAdaptors
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617 Arg [SPECIES]: (optional) string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618 species name to get adaptors for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619 Arg [GROUP] : (optional) string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620 group name to get adaptors for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622 @dba =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623 @{ Bio::EnsEMBL::Registry->get_all_DBAdaptors() };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625 @human_dbas =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626 @{ Bio::EnsEMBL::Registry->get_all_DBAdaptors(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627 -species => 'human'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628 ) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630 Returntype : list of DBAdaptors
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636 sub get_all_DBAdaptors {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637 my ( $class, @args ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639 my ( $species, $group ) = rearrange( [qw(SPECIES GROUP)], @args );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641 if ( defined($species) ) { $species = $class->get_alias($species) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643 my @ret;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644 foreach my $dba ( @{ $registry_register{'_DBA'} } ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645 if ( ( !defined($species) || lc($species) eq lc( $dba->species() ) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646 && ( !defined($group) || lc($group) eq lc( $dba->group() ) ) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
647 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
648 push( @ret, $dba );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
649 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
650 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
651
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
652 return \@ret;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
653 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
654
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
655 =head2 get_all_DBAdaptors_by_connection
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
656
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
657 Arg [1] : DBConnection used to find DBAdaptors
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
658 Returntype : reference to list of DBAdaptors
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
659 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
660 Example : @dba = @{ Bio::EnsEMBL::Registry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
661 ->get_all_DBAdaptors_by_connection($dbc) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
662 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
663
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
664 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
665
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
666 sub get_all_DBAdaptors_by_connection {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
667 my ( $self, $dbc_orig ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
668
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
669 my @return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
670
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
671 foreach my $dba ( @{ $registry_register{'_DBA'} } ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
672 my $dbc = $dba->dbc();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
673
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
674 if ( defined($dbc)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
675 && $dbc->can('equals')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
676 && $dbc->equals($dbc_orig) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
677 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
678 push( @return, $dba );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
679 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
680 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
681
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
682 return \@return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
683 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
684
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
685 =head2 get_all_DBAdaptors_by_dbname
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
686
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
687 Arg [1] : string, name of database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
688 Returntype : reference to list of DBAdaptors
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
689 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
690 Example : @dba = @{ Bio::EnsEMBL::Registry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
691 ->get_all_DBAdaptors_by_dbname($dbname) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
692 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
693
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
694 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
695
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
696 sub get_all_DBAdaptors_by_dbname {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
697 my ( $self, $dbname ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
698
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
699 my @return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
700
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
701 foreach my $dba ( @{ $registry_register{'_DBA'} } ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
702 my $dbc = $dba->dbc();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
703
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
704 if ( defined($dbc) && $dbc->dbname() eq $dbname ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
705 push( @return, $dba );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
706 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
707 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
708
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
709 return \@return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
710 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
711
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
712 =head2 remove_DBAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
713
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
714 Arg [1] : name of the species to get the adaptor for in the registry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
715 Arg [2] : name of the group to get the adaptor for in the registry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
716 Example : $dba = Bio::EnsEMBL::Registry->remove_DBAdaptor("Human", "core");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
717 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
718 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
719 Status : At risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
720
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
721 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
722
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
723 sub remove_DBAdaptor {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
724 my ( $class, $species, $group ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
725
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
726 $species = $class->get_alias($species);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
727
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
728 delete $registry_register{_SPECIES}{$species}{$group};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
729 # This will remove the DBAdaptor and all the other adaptors
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
730
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
731 # Now remove if from the _DBA array
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
732 my $index;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
733
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
734 foreach my $i ( 0 .. $#{ $registry_register{'_DBA'} } ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
735 my $dba = $registry_register{'_DBA'}->[$i];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
736
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
737 if ( ( $dba->species eq $species )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
738 && $dba->group eq $group )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
739 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
740 $index = $i;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
741 last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
742 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
743 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
744
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
745 # Now remove from _DBA cache
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
746 if ( defined($index) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
747 splice( @{ $registry_register{'_DBA'} }, $index, 1 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
748 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
749
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
750 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
751 } ## end sub remove_DBAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
752
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
753
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
754
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
755 =head2 reset_DBAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
756
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
757 Arg [1]: string - species e.g. homo_sapiens
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
758 Arg [2]: string - DB group e.g. core
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
759 Arg [3]: string - new dbname
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
760 Args [4-7]: string - optional DB parameters, defaults to current db params if omitted
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
761 Arg [8]: hashref - Hash ref of additional parameters e.g. eFG dnadb params for auto selecting dnadb
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
762 Usage : $reg->reset_registry_db( 'homo_sapiens', 'core',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
763 'homo_sapiens_core_37_35j' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
764 Description: Resets a DB within the registry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
765 Exceptions: Throws if mandatory params not supplied
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
766 Throws if species name is not already seen by the registry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
767 Throws if no current DB for species/group available
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
768 Status : At risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
769
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
770 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
771
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
772 sub reset_DBAdaptor {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
773 my (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
774 $self, $species, $group, $dbname, $host,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
775 $port, $user, $pass, $params
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
776 ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
777
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
778 # Check mandatory params
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
779 if ( !( defined $species && defined $group && defined $dbname ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
780 throw(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
781 'Must provide at least a species, group, and dbname parameter '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
782 . 'to redefine a DB in the registry' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
783 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
784
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
785 # Validate species here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
786 my $alias = $self->get_alias($species);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
787 throw("Could not find registry alias for species:\t$species")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
788 if ( !defined $alias );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
789
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
790 # Get all current defaults if not defined
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
791
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
792 my $db = $self->get_DBAdaptor( $alias, $group );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
793 my $class;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
794
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
795 if ($db) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
796 $class = ref($db);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
797 $host ||= $db->dbc->host;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
798 $port ||= $db->dbc->port;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
799 $user ||= $db->dbc->username;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
800 $pass ||= $db->dbc->password;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
801 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
802 #Now we need to test mandatory params
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
803 $class = $group2adaptor{ lc($group) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
804
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
805 if ( !( $host && $user ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
806 throw("No comparable $alias $group DB present in Registry. "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
807 . "You must pass at least a dbhost and dbuser" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
808 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
809 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
810
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
811 $self->remove_DBAdaptor( $alias, $group );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
812
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
813 # ConfigRegistry should automatically add this to the Registry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
814 $db = $class->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
815 -user => $user,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
816 -host => $host,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
817 -port => $port,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
818 -pass => $pass,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
819 -dbname => $dbname,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
820 -species => $alias,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
821 -group => $group,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
822 %{$params} );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
823
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
824 return $db;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
825 } ## end sub reset_DBAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
826
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
827
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
828 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
829 # DNA Adaptors
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
830 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
831
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
832 =head2 add_DNAAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
833
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
834 Arg [1] : name of the species to add the adaptor to in the registry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
835 Arg [2] : name of the group to add the adaptor to in the registry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
836 Arg [3] : name of the species to get the dna from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
837 Arg [4] : name of the group to get the dna from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
838 Example : Bio::EnsEMBL::Registry->add_DNAAdaptor("Human", "estgene", "Human", "core");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
839 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
840 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
841 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
842
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
843 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
844
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
845 sub add_DNAAdaptor {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
846 my ( $class, $species, $group, $dnadb_species, $dnadb_group ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
847
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
848 $species = $class->get_alias($species);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
849 $dnadb_species = $class->get_alias($dnadb_species);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
850 if ( $dnadb_group->isa('Bio::EnsEMBL::DBSQL::DBAdaptor') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
851 deprecated("");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
852 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
853 $registry_register{_SPECIES}{$species}{ lc($group) }{'_DNA'} =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
854 $dnadb_group;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
855 $registry_register{_SPECIES}{$species}{ lc($group) }{'_DNA2'} =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
856 $dnadb_species;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
857 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
858 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
859 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
860
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
861 =head2 get_DNAAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
862
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
863 Arg [1] : name of the species to get the adaptor for in the registry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
864 Arg [2] : name of the group to get the adaptor for in the registry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
865 Example : $dnaAdap = Bio::EnsEMBL::Registry->get_DNAAdaptor("Human", "core");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
866 Returntype : adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
867 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
868 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
869
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
870 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
871
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
872 sub get_DNAAdaptor {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
873 my ( $class, $species, $group ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
874
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
875 $species = $class->get_alias($species);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
876 my $new_group =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
877 $registry_register{_SPECIES}{$species}{ lc($group) }{'_DNA'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
878 my $new_species =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
879 $registry_register{_SPECIES}{$species}{ lc($group) }{'_DNA2'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
880
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
881 if ( defined $new_group ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
882 return $class->get_DBAdaptor( $new_species, $new_group );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
883 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
884
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
885 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
886 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
887
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
888 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
889 # General Adaptors
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
890 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
891
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
892 =head2 add_adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
893
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
894 Arg [1] : name of the species to add the adaptor to in the registry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
895 Arg [2] : name of the group to add the adaptor to in the registry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
896 Arg [3] : name of the type to add the adaptor to in the registry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
897 Arg [4] : The DBAdaptor to be added to the registry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
898 Arg [5] : (optional) Set to allow overwrites of existing adaptors.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
899 Example : Bio::EnsEMBL::Registry->add_adaptor("Human", "core", "Gene", $adap);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
900 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
901 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
902 Caller : internal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
903 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
904
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
905 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
906
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
907 sub add_adaptor {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
908 my ( $class, $species, $group, $type, $adap, $reset ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
909
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
910 $species = $class->get_alias($species);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
911
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
912 # Since the adaptors are not stored initially, only their class paths
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
913 # when the adaptors are obtained, we need to store these instead. It
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
914 # is not necessarily an error if the registry is overwritten without
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
915 # the reset set but it is an indication that we are overwriting a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
916 # database which should be a warning for now
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
917
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
918 if ( defined($reset) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
919 { # JUST RESET THE HASH VALUE NO MORE PROCESSING NEEDED
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
920 $registry_register{_SPECIES}{$species}{ lc($group) }{ lc($type) } =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
921 $adap;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
922 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
923 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
924
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
925 if (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
926 defined(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
927 $registry_register{_SPECIES}{$species}{ lc($group) }{ lc($type) }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
928 ) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
929 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
930 # print STDERR (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
931 # "Overwriting Adaptor in Registry for $species $group $type\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
932 $registry_register{_SPECIES}{$species}{ lc($group) }{ lc($type) } =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
933 $adap;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
934 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
935 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
936 $registry_register{_SPECIES}{$species}{ lc($group) }{ lc($type) } =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
937 $adap;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
938
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
939 if ( !defined( $registry_register{_SPECIES}{$species}{'list'} ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
940 $registry_register{_SPECIES}{$species}{'list'} = [$type];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
941 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
942 push( @{ $registry_register{_SPECIES}{$species}{'list'} }, $type );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
943 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
944
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
945 if ( !defined( $registry_register{_TYPE}{ lc($type) }{$species} ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
946 $registry_register{_TYPE}{ lc($type) }{$species} = [$type];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
947 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
948 push( @{ $registry_register{_TYPE}{ lc($type) }{$species} },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
949 $adap );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
950 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
951 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
952 } ## end sub add_adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
953
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
954
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
955 =head2 get_adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
956
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
957 Arg [1] : name of the species to add the adaptor to in the registry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
958 Arg [2] : name of the group to add the adaptor to in the registry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
959 Arg [3] : name of the type to add the adaptor to in the registry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
960 Example : $adap = Bio::EnsEMBL::Registry->get_adaptor("Human", "core", "Gene");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
961 Returntype : adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
962 Exceptions : Thrown if a valid internal name cannot be found for the given
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
963 name. If thrown check your API and DB version. Also thrown if
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
964 no type or group was given
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
965 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
966
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
967 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
968
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
969 sub get_adaptor {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
970 my ( $class, $species, $group, $type ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
971
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
972 my $ispecies = $class->get_alias($species);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
973
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
974 if ( !defined($ispecies) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
975 throw("Can not find internal name for species '$species'");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
976 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
977 else { $species = $ispecies }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
978
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
979 throw 'No adaptor group given' if ! defined $group;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
980 throw 'No adaptor type given' if ! defined $type;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
981
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
982
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
983 if($type =~ /Adaptor$/i) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
984 warning("Detected additional Adaptor string in given the type '$type'. Removing it to avoid possible issues. Alter your type to stop this message");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
985 $type =~ s/Adaptor$//i;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
986 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
987
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
988 my %dnadb_adaptors = (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
989 'sequence' => 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
990 'assemblymapper' => 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
991 'karyotypeband' => 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
992 'repeatfeature' => 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
993 'coordsystem' => 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
994 'assemblyexceptionfeature' => 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
995 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
996
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
997 # warn "$species, $group, $type";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
998
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
999 $type = lc($type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1000
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1001 # For historical reasons, allow use of group 'regulation' to refer to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1002 # group 'funcgen'.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1003 if ( lc($group) eq 'regulation' ) { $group = 'funcgen' }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1004
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1005 my $dnadb_group =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1006 $registry_register{_SPECIES}{$species}{ lc($group) }{'_DNA'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1007
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1008 if ( defined($dnadb_group)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1009 && defined( $dnadb_adaptors{ lc($type) } ) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1010 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1011 $species =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1012 $registry_register{_SPECIES}{$species}{ lc($group) }{'_DNA2'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1013 $group = $dnadb_group;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1014 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1015
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1016 my $ret =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1017 $registry_register{_SPECIES}{$species}{ lc($group) }{ lc($type) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1018
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1019 if ( !defined($ret) ) { return }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1020 if ( ref($ret) ) { return $ret }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1021
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1022 # Not instantiated yet
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1023
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1024 my $dba = $registry_register{_SPECIES}{$species}{ lc($group) }{'_DB'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1025 my $module = $ret;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1026
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1027 my $test_eval = eval "require $module";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1028 if ($@ or (!$test_eval)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1029 warning("'$module' cannot be found.\nException $@\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1030 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1031 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1032
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1033 if (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1034 !defined(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1035 $registry_register{_SPECIES}{$species}{ lc($group) }{'CHECKED'} )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1036 )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1037 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1038 $registry_register{_SPECIES}{$species}{ lc($group) }{'CHECKED'} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1039 $class->version_check($dba);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1040 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1041
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1042 my $adap = "$module"->new($dba);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1043 Bio::EnsEMBL::Registry->add_adaptor( $species, $group, $type, $adap,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1044 'reset' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1045 $ret = $adap;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1046
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1047 return $ret;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1048 } ## end sub get_adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1049
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1050 =head2 get_all_adaptors
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1051
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1052 Arg [SPECIES] : (optional) string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1053 species name to get adaptors for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1054 Arg [GROUP] : (optional) string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1055 group name to get adaptors for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1056 Arg [TYPE] : (optional) string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1057 type to get adaptors for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1058 Example : @adaps = @{Bio::EnsEMBL::Registry->get_all_adaptors()};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1059 Returntype : ref to list of adaptors
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1060 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1061 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1062
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1063 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1064
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1065 sub get_all_adaptors{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1066 my ($class,@args)= @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1067 my ($species, $group, $type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1068 my @ret=();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1069 my (%species_hash, %group_hash, %type_hash);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1070
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1071
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1072 if(@args == 1){ # Old species only one parameter
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1073 warn("-SPECIES argument should now be used to get species adaptors");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1074 $species = $args[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1075 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1076 else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1077 # new style -SPECIES, -GROUP, -TYPE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1078 ($species, $group, $type) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1079 rearrange([qw(SPECIES GROUP TYPE)], @args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1080 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1081
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1082 if(defined($species)){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1083 $species_hash{$species} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1084 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1085 else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1086 # get list of species
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1087 foreach my $dba (@{$registry_register{'_DBA'}}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1088 $species_hash{lc($dba->species())} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1089 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1090 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1091 if(defined($group)){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1092 $group_hash{$group} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1093 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1094 else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1095 foreach my $dba (@{$registry_register{'_DBA'}}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1096 $group_hash{lc($dba->group())} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1097 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1098 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1099
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1100 if ( defined($type) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1101 $type_hash{$type} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1102 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1103 foreach my $dba ( @{ $registry_register{'_DBA'} } ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1104 foreach my $ty (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1105 @{ $registry_register{_SPECIES}{ lc( $dba->species ) }{'list'} }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1106 )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1107 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1108 $type_hash{ lc($ty) } = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1109 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1110 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1111 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1112
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1113 ### NOW NEED TO INSTANTIATE BY CALLING get_adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1114 foreach my $sp ( keys %species_hash ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1115 foreach my $gr ( keys %group_hash ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1116 foreach my $ty ( keys %type_hash ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1117 my $temp = $class->get_adaptor( $sp, $gr, $ty );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1118 if ( defined($temp) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1119 push @ret, $temp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1120 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1121 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1122 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1123 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1124
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1125 return (\@ret);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1126 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1127
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1128
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1129 =head2 add_alias
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1130
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1131 Arg [1] : name of the species to add alias for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1132 Arg [2] : name of the alias
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1133 Example : Bio::EnsEMBL::Registry->add_alias("Homo Sapiens","Human");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1134 Description: add alternative name for the species.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1135 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1136 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1137 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1138
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1139 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1140
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1141 sub add_alias{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1142 my ($class, $species,$key) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1143
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1144 $registry_register{'_ALIAS'}{lc($key)} = lc($species);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1145 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1146 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1147
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1148 =head2 remove_alias
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1149
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1150 Arg [1] : name of the species to remove alias for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1151 Arg [2] : name of the alias
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1152 Example : Bio::EnsEMBL::Registry->remove_alias("Homo Sapiens","Human");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1153 Description: remove alternative name for the species.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1154 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1155 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1156 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1157
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1158 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1159
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1160 sub remove_alias{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1161 my ($class, $species,$key) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1162
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1163 delete $registry_register{'_ALIAS'}{lc($key)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1164 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1165 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1166
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1167
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1168
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1169 =head2 get_alias
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1170
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1171 Arg [1] : name of the possible alias to get species for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1172 Example : Bio::EnsEMBL::Registry->get_alias("Human");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1173 Description: get proper species name.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1174 Returntype : species name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1175 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1176 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1177
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1178 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1179
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1180 sub get_alias {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1181 my ( $class, $key, $no_warn ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1182
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1183 if ( !defined( $registry_register{'_ALIAS'}{ lc($key) } ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1184 if ( ( !defined( $registry_register{_SPECIES}{ lc($key) } ) ) and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1185 ( !defined( $registry_register{_ALIAS}{ lc($key) } ) ) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1186 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1187 if ( ( !defined($no_warn) ) or ( !$no_warn ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1188 warning( "$key is not a valid species name " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1189 "(check DB and API version)" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1190 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1191 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1192 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1193 else { return $key }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1194 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1195
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1196 return $registry_register{'_ALIAS'}{ lc($key) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1197 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1198
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1199 =head2 get_all_aliases
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1200
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1201 Arg [1] : Species name to retrieve aliases for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1202 (may be an alias as well).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1203 Example : Bio::EnsEMBL::Registry->get_all_aliases('Homo sapiens');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1204 Description: Returns all known aliases for a given species (but not the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1205 species name/alias that was given).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1206 Returntype : ArrayRef of all known aliases
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1207 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1208 Status : Development
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1209
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1210 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1211
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1212 sub get_all_aliases {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1213 my ( $class, $key ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1214
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1215 my $species = $registry_register{_ALIAS}{ lc($key) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1216
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1217 my @aliases;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1218 if ( defined($species) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1219 foreach my $alias ( keys( %{ $registry_register{_ALIAS} } ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1220 if ( $species ne $alias
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1221 && $species eq $registry_register{_ALIAS}{ lc($alias) } )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1222 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1223 push( @aliases, $alias );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1224 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1225 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1226 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1227
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1228 return \@aliases;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1229 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1230
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1231 =head2 alias_exists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1232
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1233 Arg [1] : name of the possible alias to get species for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1234 Example : Bio::EnsEMBL::Registry->alias_exists("Human");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1235 Description: does the species name exist.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1236 Returntype : 1 if exists else 0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1237 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1238 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1239
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1240 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1241
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1242 sub alias_exists {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1243 my ( $class, $key ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1244
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1245 return defined( $registry_register{'_ALIAS'}{ lc($key) } );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1246 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1247
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1248 =head2 set_disconnect_when_inactive
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1249
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1250 Example : Bio::EnsEMBL::Registry->set_disconnect_when_inactive();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1251 Description: Set the flag to make sure that the database connection is dropped if
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1252 not being used on each database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1253 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1254 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1255 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1256
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1257 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1258
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1259 sub set_disconnect_when_inactive{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1260 foreach my $dba ( @{get_all_DBAdaptors()}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1261 my $dbc = $dba->dbc;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1262 # Disconnect if connected
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1263 $dbc->disconnect_if_idle() if $dbc->connected();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1264 $dbc->disconnect_when_inactive(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1265 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1266 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1267 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1268
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1269 =head2 set_reconnect_when_lost
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1270
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1271 Example : Bio::EnsEMBL::Registry->set_reconnect_when_lost();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1272 Description: Set the flag to make sure that the database connection is not lost before it's used.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1273 This is useful for long running jobs (over 8hrs).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1274 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1275 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1276 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1277
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1278 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1279
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1280 sub set_reconnect_when_lost{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1281 foreach my $dba ( @{get_all_DBAdaptors()}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1282 my $dbc = $dba->dbc;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1283 $dbc->reconnect_when_lost(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1284 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1285 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1286 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1287
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1288 =head2 disconnect_all
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1289
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1290 Example : Bio::EnsEMBL::Registry->disconnect_all();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1291 Description: disconnect from all the databases.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1292 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1293 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1294 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1295
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1296 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1297
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1298 sub disconnect_all {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1299 foreach my $dba ( @{get_all_DBAdaptors()||[]} ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1300 my $dbc = $dba->dbc;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1301 next unless $dbc;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1302 # Disconnect if connected
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1303 $dbc->disconnect_if_idle() if $dbc->connected();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1304 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1305 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1306 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1307
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1308 =head get_DBAdaptor_count
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1309
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1310 Example : Bio::EnsEMBL::Registry->get_DBAdaptor_count();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1311 Description : Returns the count of database adaptors currently held by
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1312 the registry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1313 Returntype : Int count of database adaptors currently known
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1314 Exceptions : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1315
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1316 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1317
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1318 sub get_DBAdaptor_count {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1319 return scalar(@{$registry_register{'_DBA'}}) if(defined $registry_register{'_DBA'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1320 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1321 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1322
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1323 =head2 change_access
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1324
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1325 Will change the username and password for a set of databases.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1326 if host,user or database names are missing then these are not checked.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1327 So for example if you do not specify a database then ALL databases on
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1328 the specified host and port will be changed.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1329
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1330 Arg [1] : name of the host to change access on
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1331 Arg [2] : port number to change access on
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1332 Arg [3] : name of the user to change access on
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1333 Arg [4] : name of the database to change access on
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1334 Arg [5] : name of the new user
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1335 Arg [6] : new password
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1336
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1337 Example : Bio::EnsEMBL::Registry->get_alias("Human");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1338 Description: change username and password on one or more databases
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1339 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1340 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1341 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1342
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1343 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1344
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1345 sub change_access{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1346 my ($self, $host,$port,$user,$dbname,$new_user,$new_pass) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1347 foreach my $dba ( @{$registry_register{'_DBA'}}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1348 my $dbc = $dba->dbc;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1349 if((((!defined($host)) or ($host eq $dbc->host))) and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1350 (((!defined($port)) or ($port eq $dbc->port))) and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1351 (((!defined($user)) or ($user eq $dbc->username))) and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1352 ((!defined($dbname)) or ($dbname eq $dbc->dbname))){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1353 if($dbc->connected()){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1354 $dbc->db_handle->disconnect();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1355 $dbc->connected(undef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1356 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1357 # over write the username and password
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1358 $dbc->username($new_user);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1359 $dbc->password($new_pass);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1360 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1361 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1362 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1363 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1364
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1365
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1366
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1367 =head2 load_registry_from_url
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1368
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1369 Arg [1] : string $url
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1370 Arg [2] : (optional) integer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1371 If not 0, will print out all information.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1372 Arg [3] : (optional) integer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1373 This option will turn off caching for slice features, so,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1374 every time a set of features is retrieved, they will come
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1375 from the database instead of the cache. This option is only
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1376 recommended for advanced users, specially if you need to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1377 store and retrieve features. It might reduce performance when
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1378 querying the database if not used properly. If in doubt, do
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1379 not use it or ask in the developer mailing list.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1380
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1381 Example : load_registry_from_url(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1382 'mysql://anonymous@ensembldb.ensembl.org:3306');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1383
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1384 load_registry_from_url(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1385 'mysql://anonymous@ensembldb.ensembl.org:3306/homo_sapiens_core_65_37?group=core&species=homo_sapiens'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1386 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1387
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1388 load_registry_from_url(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1389 'mysql://anonymous@ensembldb.ensembl.org:3306/homo_sapiens_core_65_37?group=core'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1390 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1391
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1392
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1393 Description: Will load the correct versions of the ensembl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1394 databases for the software release it can find on
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1395 a database instance into the registry. Also adds
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1396 a set of standard aliases. The url format is:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1397 mysql://[[username][:password]@]hostname[:port]. You
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1398 can also request a specific version for the databases
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1399 by adding a slash and the version number but your
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1400 script may crash as the API version won't match the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1401 DB version.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1402
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1403 You can also specify a database name which will cause the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1404 loading of a single DBAdaptor instance. Parameters are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1405 mapped from a normal URL parameter set to their DBAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1406 equivalent. Group must be defined.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1407
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1408 Returntype : Int count of the DBAdaptor instances which can be found in the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1409 registry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1410
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1411 Exceptions : Thrown if the given URL does not parse according to the above
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1412 scheme and if the specified database cannot be connected to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1413 (see L<load_registry_from_db> for more information)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1414 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1415
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1416 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1417
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1418 sub load_registry_from_url {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1419 my ( $self, $url, $verbose, $no_cache ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1420
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1421 if ( $url =~ /^mysql\:\/\/([^\@]+\@)?([^\:\/]+)(\:\d+)?(\/\d+)?\/?$/x ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1422 my $user_pass = $1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1423 my $host = $2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1424 my $port = $3;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1425 my $version = $4;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1426
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1427 $user_pass =~ s/\@$//;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1428 my ( $user, $pass ) = $user_pass =~ m/([^\:]+)(\:.+)?/x;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1429 $pass =~ s/^\://x if ($pass);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1430 $port =~ s/^\://x if ($port);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1431 $version =~ s/^\///x if ($version);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1432
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1433 return $self->load_registry_from_db(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1434 -host => $host,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1435 -user => $user,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1436 -pass => $pass,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1437 -port => $port,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1438 -db_version => $version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1439 -verbose => $verbose,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1440 -no_cache => $no_cache
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1441 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1442 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1443 my $uri = parse_uri($url);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1444 if($uri) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1445 if($uri->scheme() eq 'mysql') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1446 my %params = $uri->generate_dbsql_params();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1447 if($params{-DBNAME}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1448 $params{-SPECIES} = $params{-DBNAME} unless $params{-SPECIES};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1449 $params{-NO_CACHE} = 1 if $no_cache;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1450 my $group = $params{-GROUP};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1451 my $class = $self->_group_to_adaptor_class($group);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1452 if($verbose) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1453 printf("Loading database '%s' from group '%s' with DBAdaptor class '%s' from url %s\n", $params{-DBNAME}, $group, $class, $url);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1454 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1455 $class->new(%params);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1456 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1457 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1458 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1459 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1460 throw("Only MySQL URLs are accepted. Given URL was '${url}'");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1461 } ## end sub load_registry_from_url
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1462
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1463
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1464 =head2 load_registry_from_db
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1465
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1466 Arg [HOST] : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1467 The domain name of the database host to connect to.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1468
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1469 Arg [USER] : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1470 The name of the database user to connect with.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1471
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1472 Arg [PASS] : (optional) string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1473 The password to be used to connect to the database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1474
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1475 Arg [PORT] : (optional) integer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1476 The port to use when connecting to the database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1477
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1478 Arg [VERBOSE]: (optional) boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1479 Whether to print database messages.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1480
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1481 Arg [SPECIES]: (optional) string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1482 By default, all databases that are found on the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1483 server and that corresponds to the correct release
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1484 are probed for aliases etc. For some people,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1485 depending on where they are in the world, this might
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1486 be a slow operation. With the '-species' argument,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1487 one may reduce the startup time by restricting the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1488 set of databases that are probed to those of a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1489 particular species.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1490
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1491 Note that the latin name of the species is required,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1492 e.g., 'homo sapiens', 'gallus gallus', 'callithrix
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1493 jacchus' etc. It may be the whole species name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1494 or only the first part of the name, e.g. 'homo',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1495 'gallus', or 'callithrix'. This will be used in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1496 matching against the name of the databases.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1497
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1498 Arg [DB_VERSION]: (optional) integer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1499 By default, only databases corresponding to the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1500 current API version are loaded. This argument
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1501 allows the script to use databases from another
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1502 version although it might not work properly. This
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1503 argument should only be used for production or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1504 testing purposes and if you really know what you are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1505 doing.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1506
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1507 Arg [WAIT_TIMEOUT]: (optional) integer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1508 Time in seconds for the wait timeout to happen.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1509 Time after which the connection is deleted if not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1510 used. By default this is 28800 (8 hours), so set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1511 this to greater than this if your connection are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1512 getting deleted. Only set this if you are having
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1513 problems and know what you are doing.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1514
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1515 Arg [-NO_CACHE]: (optional) boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1516 This option will turn off caching for slice features,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1517 so, every time a set of features is retrieved, they
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1518 will come from the database instead of the cache. This
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1519 option is only recommended for advanced users, specially
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1520 if you need to store and retrieve features. It might
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1521 reduce performance when querying the database if not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1522 used properly. If in doubt, do not use it or ask in the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1523 developer mailing list.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1524
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1525 Arg [SPECIES_SUFFIX]: (optional) string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1526 This option will append the string to the species name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1527 in the registry for all databases found on this server.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1528
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1529 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1530
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1531 $registry->load_registry_from_db(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1532 -host => 'ensembldb.ensembl.org',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1533 -user => 'anonymous',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1534 -verbose => '1'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1535 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1536
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1537 Description: Will load the correct versions of the Ensembl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1538 databases for the software release it can find on a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1539 database instance into the registry. Also adds a set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1540 of standard aliases.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1541
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1542 Returntype : Int count of the DBAdaptor instances which can be found in the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1543 registry due to this method call.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1544
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1545 Exceptions : Thrown if the given MySQL database cannot be connected to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1546 or there is any error whilst querying the database.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1547 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1548
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1549 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1550
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1551 sub load_registry_from_db {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1552 my ( $self, @args ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1553
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1554 my ( $host, $port, $user,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1555 $pass, $verbose, $db_version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1556 $wait_timeout, $no_cache, $species, $species_suffix )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1557 = rearrange( [ 'HOST', 'PORT',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1558 'USER', 'PASS',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1559 'VERBOSE', 'DB_VERSION',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1560 'WAIT_TIMEOUT', 'NO_CACHE',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1561 'SPECIES', 'SPECIES_SUFFIX' ],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1562 @args );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1563
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1564 if ( defined($species) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1565 $species = lc($species);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1566 $species =~ tr/ -/__/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1567 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1568 if (!defined($species_suffix)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1569 $species_suffix = "";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1570 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1571
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1572 my $ontology_db;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1573 my $ontology_version;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1574
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1575 my $stable_ids_db;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1576 my $stable_ids_version;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1577
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1578 $user ||= "ensro";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1579 if ( !defined($port) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1580 $port = 3306;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1581 if ( $host eq "ensembldb.ensembl.org" ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1582 if ( (!defined($db_version)) or ($db_version >= 48) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1583 $port = 5306;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1584 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1585 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1586 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1587
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1588 $wait_timeout ||= 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1589
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1590 my $original_count = $self->get_DBAdaptor_count();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1591
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1592 my $err_pattern = 'Cannot %s to the Ensembl MySQL server at %s:%d; check your settings & DBI error message: %s';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1593
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1594 my $dbh = DBI->connect( "DBI:mysql:host=$host;port=$port", $user, $pass ) or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1595 throw(sprintf($err_pattern, 'connect', $host, $port, $DBI::errstr));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1596 $dbh->ping() or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1597 throw(sprintf($err_pattern, 'ping', $host, $port, $DBI::errstr));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1598
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1599 my $res = $dbh->selectall_arrayref('SHOW DATABASES');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1600 my @dbnames = map { $_->[0] } @$res;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1601
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1602 my %temp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1603 my $software_version = software_version();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1604
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1605 if ( defined($db_version) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1606 $software_version = $db_version;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1607 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1608
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1609 if ($verbose) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1610 printf( "Will only load v%d databases\n", $software_version );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1611 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1612
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1613 # From the list of all the databses create a tempory hash of those we
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1614 # are interested in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1615
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1616 for my $db (@dbnames) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1617 if ( $db =~ /^(\w+_collection_\w+(?:_\d+)?)_((\d+)_\w+)/ )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1618 { # NEEDS TO BE FIRST TO PICK UP COLLECTION DBS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1619 if ( $3 eq $software_version ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1620 $temp{$1} = $2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1621 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1622 } elsif ( $db =~ /^(.+)_(userdata)$/x ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1623 $temp{$1} = $2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1624 } elsif (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1625 $db =~ /^(ensembl_compara # compara database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1626 (?:_\w+)*?) # optional ensembl genomes bit
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1627 _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1628 (\d+)$/x )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1629 { # db version
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1630 if ( $2 eq $software_version ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1631 $temp{$1} = $2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1632 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1633 } elsif ( $db =~ /^(ensembl_ancestral(?:_\w+?)*?)_(\d+)$/x ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1634 if ( $2 eq $software_version ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1635 $temp{$1} = $2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1636 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1637 } elsif ( $db =~ /^ensembl(?:genomes)?_ontology_(?:\d+_)?(\d+)/x ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1638 if ( $1 eq $software_version ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1639 $ontology_db = $db;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1640 $ontology_version = $1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1641 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1642 } elsif ( $db =~ /^ensembl(?:genomes)?_stable_ids_(?:\d+_)?(\d+)/x ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1643 if ( $1 eq $software_version ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1644 $stable_ids_db = $db;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1645 $stable_ids_version = $1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1646 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1647
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1648 } elsif (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1649 $db =~ /^([a-z]+_[a-z0-9]+(?:_[a-z0-9]+)? # species name e.g. homo_sapiens or canis_lupus_familiaris
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1650 _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1651 [a-z]+ # db type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1652 (?:_\d+)?) # optional end bit for ensembl genomes databases
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1653 _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1654 (\d+) # database release
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1655 _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1656 (\w+)$ # assembly number can have letters too e.g 37c
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1657 /x
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1658 )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1659 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1660
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1661 # Species specific databases (core, cdna, vega etc.)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1662
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1663 my ( $sp_name, $db_rel, $assem ) = ( $1, $2, $3 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1664
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1665 if ( !defined($species) || $sp_name =~ /^$species/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1666 if ( $db_rel eq $software_version ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1667 $temp{$sp_name} = $db_rel . "_" . $assem;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1668 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1669 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1670
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1671 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1672 # warn( sprintf( "Skipping database '%s'\n", $db ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1673 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1674 } ## end for my $db (@dbnames)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1675
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1676 @dbnames = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1677
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1678 foreach my $key ( keys %temp ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1679 push @dbnames, $key . "_" . $temp{$key};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1680 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1681
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1682 # Register Core like databases
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1683 my $core_like_dbs_found = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1684 foreach my $type (qw(core cdna vega vega_update otherfeatures rnaseq)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1685
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1686 my @dbs = grep { /^[a-z]+_[a-z0-9]+(?:_[a-z0-9]+)? # species name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1687 _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1688 $type # the database type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1689 _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1690 (?:\d+_)? # optional end bit for ensembl genomes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1691 \d+ # database release
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1692 _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1693 /x } @dbnames;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1694
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1695 if(@dbs) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1696 $core_like_dbs_found = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1697 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1698
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1699 foreach my $database (@dbs) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1700 if ( index( $database, 'collection' ) != -1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1701 # Skip multi-species databases.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1702 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1703 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1704
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1705
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1706 my ( $species, $num ) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1707 ( $database =~ /(^[a-z]+_[a-z0-9]+(?:_[a-z0-9]+)?) # species name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1708 _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1709 $type # type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1710 _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1711 (?:\d+_)? # optional endbit for ensembl genomes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1712 (\d+) # databases release
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1713 _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1714 /x );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1715
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1716 if(!defined($species)){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1717 warn "Cannot extract species name from database '$database'";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1718 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1719
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1720 my $dba =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1721 Bio::EnsEMBL::DBSQL::DBAdaptor->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1722 -group => $type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1723 -species => $species.$species_suffix,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1724 -host => $host,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1725 -user => $user,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1726 -pass => $pass,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1727 -port => $port,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1728 -dbname => $database,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1729 -wait_timeout => $wait_timeout,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1730 -no_cache => $no_cache );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1731
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1732 if ($verbose) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1733 printf( "Species '%s' loaded from database '%s'\n",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1734 $species, $database );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1735 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1736 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1737 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1738
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1739 # Register multi-species databases
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1740
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1741 my @multi_dbs = grep { /^\w+_collection_core_\w+$/ } @dbnames;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1742
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1743 foreach my $multidb (@multi_dbs) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1744 my $sth = $dbh->prepare(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1745 sprintf(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1746 "SELECT species_id, meta_value FROM %s.meta "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1747 . "WHERE meta_key = 'species.db_name'",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1748 $dbh->quote_identifier($multidb) ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1749
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1750 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1751
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1752 my ( $species_id, $species );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1753 $sth->bind_columns( \( $species_id, $species ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1754
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1755 while ( $sth->fetch() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1756 my $dba = Bio::EnsEMBL::DBSQL::DBAdaptor->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1757 -group => "core",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1758 -species => $species.$species_suffix,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1759 -species_id => $species_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1760 -multispecies_db => 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1761 -host => $host,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1762 -user => $user,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1763 -pass => $pass,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1764 -port => $port,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1765 -dbname => $multidb,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1766 -wait_timeout => $wait_timeout,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1767 -no_cache => $no_cache
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1768 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1769
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1770 if ($verbose) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1771 printf( "Species '%s' (id:%d) loaded from database '%s'\n",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1772 $species, $species_id, $multidb );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1773 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1774 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1775 } ## end foreach my $multidb (@multi_dbs)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1776
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1777 if(!$core_like_dbs_found && $verbose) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1778 print("No core-like databases found. Check your DB_VERSION (used '$software_version')\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1779 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1780
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1781 # User upload DBs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1782
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1783 my @userupload_dbs = grep { /_userdata$/ } @dbnames;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1784 for my $userupload_db (@userupload_dbs) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1785 if ( index( $userupload_db, 'collection' ) != -1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1786 # Skip multi-species databases.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1787 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1788 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1789
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1790 my ($species) = ( $userupload_db =~ /(^.+)_userdata$/ );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1791 my $dba =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1792 Bio::EnsEMBL::DBSQL::DBAdaptor->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1793 -group => "userupload",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1794 -species => $species.$species_suffix,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1795 -host => $host,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1796 -user => $user,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1797 -pass => $pass,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1798 -port => $port,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1799 -wait_timeout => $wait_timeout,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1800 -dbname => $userupload_db,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1801 -no_cache => $no_cache );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1802
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1803 if ($verbose) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1804 printf( "%s loaded\n", $userupload_db );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1805 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1806 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1807
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1808 # Register multi-species userupload databases.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1809 my @userdata_multidbs = grep { /^.+_collection_userdata$/ } @dbnames;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1810
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1811 foreach my $multidb (@userdata_multidbs) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1812 my $sth = $dbh->prepare(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1813 sprintf(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1814 "SELECT species_id, meta_value FROM %s.meta "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1815 . "WHERE meta_key = 'species.db_name'",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1816 $dbh->quote_identifier($multidb) ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1817
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1818 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1819
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1820 my ( $species_id, $species );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1821 $sth->bind_columns( \( $species_id, $species ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1822
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1823 while ( $sth->fetch() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1824 my $dba = Bio::EnsEMBL::DBSQL::DBAdaptor->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1825 -group => "userupload",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1826 -species => $species.$species_suffix,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1827 -species_id => $species_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1828 -multispecies_db => 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1829 -host => $host,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1830 -user => $user,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1831 -pass => $pass,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1832 -port => $port,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1833 -dbname => $multidb,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1834 -wait_timeout => $wait_timeout,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1835 -no_cache => $no_cache
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1836 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1837
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1838 if ($verbose) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1839 printf( "Species '%s' (id:%d) loaded from database '%s'\n",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1840 $species, $species_id, $multidb );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1841 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1842 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1843 } ## end foreach my $multidb (@userdata_multidbs)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1844
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1845 # Variation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1846
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1847 my $test_eval = eval "require Bio::EnsEMBL::Variation::DBSQL::DBAdaptor";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1848 if ($@or (!$test_eval)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1849 # Ignore variations as code required not there for this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1850 if ($verbose) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1851 print(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1852 "Bio::EnsEMBL::Variation::DBSQL::DBAdaptor module not found "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1853 . "so variation databases will be ignored if found\n" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1854 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1855 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1856 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1857 my @variation_dbs =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1858 grep { /^[a-z]+_[a-z0-9]+(?:_[a-z0-9]+)?_variation_(?:\d+_)?\d+_/ } @dbnames;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1859
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1860 if(! @variation_dbs && $verbose) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1861 print("No variation databases found\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1862 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1863
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1864 for my $variation_db (@variation_dbs) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1865
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1866 if ( index( $variation_db, 'collection' ) != -1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1867 # Skip multi-species databases.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1868 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1869 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1870
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1871 my ( $species, $num ) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1872 ( $variation_db =~ /(^[a-z]+_[a-z0-9]+(?:_[a-z0-9]+)?)_variation_(?:\d+_)?(\d+)_/ );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1873 my $dba =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1874 Bio::EnsEMBL::Variation::DBSQL::DBAdaptor->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1875 -group => "variation",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1876 -species => $species.$species_suffix,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1877 -host => $host,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1878 -user => $user,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1879 -pass => $pass,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1880 -port => $port,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1881 -wait_timeout => $wait_timeout,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1882 -dbname => $variation_db,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1883 -no_cache => $no_cache );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1884
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1885 if ($verbose) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1886 printf( "%s loaded\n", $variation_db );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1887 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1888 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1889
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1890 # Register variation multispecies databases
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1891 my @variation_multidbs =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1892 grep { /^\w+_collection_variation_\w+$/ } @dbnames;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1893
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1894 foreach my $multidb (@variation_multidbs) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1895 my $sth = $dbh->prepare(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1896 sprintf( 'SELECT species_id, meta_value FROM %s.meta ',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1897 $dbh->quote_identifier($multidb) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1898 . "WHERE meta_key = 'species.db_name'"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1899 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1900
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1901 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1902
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1903 my ( $species_id, $species );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1904 $sth->bind_columns( \( $species_id, $species ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1905
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1906 while ( $sth->fetch() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1907 my $dba = Bio::EnsEMBL::Variation::DBSQL::DBAdaptor->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1908 -group => 'variation',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1909 -species => $species.$species_suffix,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1910 -species_id => $species_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1911 -multispecies_db => 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1912 -host => $host,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1913 -user => $user,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1914 -pass => $pass,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1915 -port => $port,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1916 -dbname => $multidb,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1917 -wait_timeout => $wait_timeout,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1918 -no_cache => $no_cache
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1919 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1920
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1921 if ($verbose) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1922 printf( "Species '%s' (id:%d) loaded from database '%s'\n",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1923 $species, $species_id, $multidb );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1924 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1925 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1926 } ## end foreach my $multidb (@variation_multidbs)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1927 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1928
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1929 my $func_eval = eval "require Bio::EnsEMBL::Funcgen::DBSQL::DBAdaptor";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1930 if ($@ or (!$func_eval)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1931 if ($verbose) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1932 # Ignore funcgen DBs as code required not there for this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1933 print("Bio::EnsEMBL::Funcgen::DBSQL::DBAdaptor module not found "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1934 . "so functional genomics databases will be ignored if found\n"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1935 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1936 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1937 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1938 my @funcgen_dbs =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1939 grep { /^[a-z]+_[a-z0-9]+(?:_[a-z0-9]+)?_funcgen_(?:\d+_)?\d+_/ } @dbnames;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1940
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1941 if(! @funcgen_dbs && $verbose) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1942 print("No funcgen databases found\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1943 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1944
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1945 for my $funcgen_db (@funcgen_dbs) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1946 if ( index( $funcgen_db, 'collection' ) != -1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1947 # Skip multi-species databases.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1948 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1949 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1950
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1951 my ( $species, $num ) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1952 ( $funcgen_db =~ /(^[a-z]+_[a-z0-9]+(?:_[a-z0-9]+)?)_funcgen_(?:\d+_)?(\d+)_/ );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1953 my $dba = Bio::EnsEMBL::Funcgen::DBSQL::DBAdaptor->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1954 -group => "funcgen",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1955 -species => $species.$species_suffix,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1956 -host => $host,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1957 -user => $user,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1958 -pass => $pass,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1959 -port => $port,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1960 -wait_timeout => $wait_timeout,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1961 -dbname => $funcgen_db,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1962 -no_cache => $no_cache
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1963 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1964
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1965 if ($verbose) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1966 printf( "%s loaded\n", $funcgen_db );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1967 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1968 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1969
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1970 # Register functional genomics multispecies databases
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1971 my @funcgen_multidbs =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1972 grep { /^\w+_collection_funcgen_\w+$/ } @dbnames;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1973
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1974 foreach my $multidb (@funcgen_multidbs) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1975 my $sth = $dbh->prepare(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1976 sprintf( 'SELECT species_id, meta_value FROM %s.meta ',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1977 $dbh->quote_identifier($multidb) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1978 . "WHERE meta_key = 'species.db_name'"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1979 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1980
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1981 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1982
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1983 my ( $species_id, $species );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1984 $sth->bind_columns( \( $species_id, $species ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1985
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1986 while ( $sth->fetch() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1987 my $dba = Bio::EnsEMBL::Funcgen::DBSQL::DBAdaptor->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1988 -group => 'funcgen',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1989 -species => $species.$species_suffix,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1990 -species_id => $species_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1991 -multispecies_db => 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1992 -host => $host,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1993 -user => $user,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1994 -pass => $pass,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1995 -port => $port,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1996 -dbname => $multidb,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1997 -wait_timeout => $wait_timeout,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1998 -no_cache => $no_cache
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1999 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2000
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2001 if ($verbose) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2002 printf( "Species '%s' (id:%d) loaded from database '%s'\n",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2003 $species, $species_id, $multidb );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2004 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2005 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2006 } ## end foreach my $multidb (@funcgen_multidbs)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2007 } ## end else [ if ($@) ]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2008
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2009 # Compara
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2010
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2011 my @compara_dbs = grep { /^ensembl_compara/ } @dbnames;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2012
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2013 if (@compara_dbs) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2014 my $comp_eval = eval "require Bio::EnsEMBL::Compara::DBSQL::DBAdaptor";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2015 if ($@ or (!$comp_eval)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2016 # Ignore Compara as code required not there for this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2017 if ($verbose) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2018 printf(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2019 "Bio::EnsEMBL::Compara::DBSQL::DBAdaptor "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2020 . "not found so the following compara "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2021 . "databases will be ignored: %s\n",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2022 join( ', ', @compara_dbs ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2023 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2024 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2025 foreach my $compara_db (@compara_dbs) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2026 # Looking for EnsEMBL Genomes Comparas.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2027 # ensembl_compara_bacteria_2_53 is registered as
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2028 # 'bacteria', ensembl_compara_pan_homology_2_53 is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2029 # registered as 'pan_homology', ensembl_compara_53 is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2030 # registered as 'multi', and the alias 'compara' still
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2031 # operates.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2032
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2033 my ($species) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2034 $compara_db =~ /^ensembl_compara_(\w+)(?:_\d+){2}$/xm;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2035
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2036 $species ||= 'multi';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2037
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2038 my $dba = Bio::EnsEMBL::Compara::DBSQL::DBAdaptor->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2039 -group => 'compara',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2040 -species => $species.$species_suffix,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2041 -host => $host,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2042 -user => $user,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2043 -pass => $pass,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2044 -port => $port,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2045 -wait_timeout => $wait_timeout,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2046 -dbname => $compara_db,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2047 -no_cache => $no_cache
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2048 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2049
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2050 if ($verbose) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2051 printf( "%s loaded\n", $compara_db );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2052 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2053 } ## end foreach my $compara_db (@compara_dbs)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2054 } ## end else [ if ($@)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2055 } elsif ($verbose) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2056 print("No Compara databases found\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2057 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2058
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2059 # Ancestral sequences
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2060
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2061 my @ancestral_dbs =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2062 sort grep { /^ensembl_ancestral/ } @dbnames;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2063
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2064 if (@ancestral_dbs) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2065 my $ancestral_db = shift @ancestral_dbs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2066
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2067 my $dba = Bio::EnsEMBL::DBSQL::DBAdaptor->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2068 -group => 'core',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2069 -species => 'Ancestral sequences'.$species_suffix,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2070 -host => $host,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2071 -user => $user,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2072 -pass => $pass,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2073 -port => $port,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2074 -wait_timeout => $wait_timeout,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2075 -dbname => $ancestral_db,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2076 -no_cache => $no_cache
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2077 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2078
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2079 if ($verbose) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2080 printf( "%s loaded\n", $ancestral_db );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2081
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2082 if (@ancestral_dbs) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2083 # If we still had some more then report the problem.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2084 printf(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2085 "Multiple ancestral databases found.\n"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2086 . "Ignoring the following: %s\n",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2087 join( ', ', @ancestral_dbs ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2088 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2089 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2090 } elsif ($verbose) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2091 print("No ancestral database found\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2092 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2093
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2094 # Ontology
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2095
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2096 if ( defined($ontology_version) && $ontology_version != 0 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2097 require Bio::EnsEMBL::DBSQL::OntologyDBAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2098
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2099 my $dba =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2100 Bio::EnsEMBL::DBSQL::OntologyDBAdaptor->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2101 '-species' => 'multi' . $species_suffix,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2102 '-group' => 'ontology',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2103 '-host' => $host,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2104 '-port' => $port,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2105 '-user' => $user,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2106 '-pass' => $pass,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2107 '-dbname' => $ontology_db, );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2108
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2109 if ($verbose) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2110 printf( "%s loaded\n", $ontology_db );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2111 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2112 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2113 elsif ($verbose) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2114 print("No ontology database found\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2115 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2116
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2117
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2118 if ( defined($stable_ids_db) && $stable_ids_version != 0 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2119
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2120 my $dba =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2121 Bio::EnsEMBL::DBSQL::DBAdaptor->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2122 '-species' => 'multi' . $species_suffix,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2123 '-group' => 'stable_ids',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2124 '-host' => $host,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2125 '-port' => $port,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2126 '-user' => $user,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2127 '-pass' => $pass,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2128 '-dbname' => $stable_ids_db, );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2129
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2130 if ($verbose) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2131 printf( "%s loaded\n", $stable_ids_db );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2132 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2133
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2134 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2135
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2136
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2137 Bio::EnsEMBL::Utils::ConfigRegistry->add_alias(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2138 -species => 'multi'.$species_suffix,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2139 -alias => ['compara'.$species_suffix] );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2140
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2141 Bio::EnsEMBL::Utils::ConfigRegistry->add_alias(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2142 -species => 'multi'.$species_suffix,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2143 -alias => ['ontology'.$species_suffix] );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2144
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2145
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2146 Bio::EnsEMBL::Utils::ConfigRegistry->add_alias(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2147 -species => 'multi'.$species_suffix,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2148 -alias => ['stable_ids'.$species_suffix] );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2149
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2150 Bio::EnsEMBL::Utils::ConfigRegistry->add_alias(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2151 -species => 'Ancestral sequences'.$species_suffix,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2152 -alias => ['ancestral_sequences'.$species_suffix] );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2153
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2154 # Register aliases as found in adaptor meta tables.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2155
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2156 $self->find_and_add_aliases( '-handle' => $dbh,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2157 '-species_suffix' => $species_suffix );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2158
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2159 $self->_additional_aliases($species_suffix);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2160
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2161 $dbh->disconnect();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2162
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2163 my $count = $self->get_DBAdaptor_count() - $original_count;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2164 return $count >= 0 ? $count : 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2165
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2166 } ## end sub load_registry_from_db
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2167
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2168
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2169 # Used as a place to push "hack" aliases
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2170 sub _additional_aliases {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2171 my ($self, $species_suffix) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2172
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2173 #Adding branch-68 thirteen-lined ground squirrel "old" aliases
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2174 Bio::EnsEMBL::Utils::ConfigRegistry->add_alias(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2175 -species => 'ictidomys_tridecemlineatus'.$species_suffix,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2176 -alias => ['spermophilus_tridecemlineatus'.$species_suffix] );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2177 Bio::EnsEMBL::Utils::ConfigRegistry->add_alias(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2178 -species => 'ictidomys_tridecemlineatus'.$species_suffix,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2179 -alias => ['spermophilus tridecemlineatus'.$species_suffix] );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2180
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2181 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2182 } # end sub _additional_aliases
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2183
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2184 =head2 _group_to_adaptor_class
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2185
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2186 Arg [1] : The group you wish to decode to an adaptor class
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2187 Example : Bio::EnsEMBL::Registry->_group_to_adaptor_class('core');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2188 Description : Has an internal lookup of groups to their adaptor classes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2189 Returntype : String
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2190 Exceptions : Thrown if the group is unknown
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2191 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2192
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2193 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2194
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2195 sub _group_to_adaptor_class {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2196 my ($self, $group) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2197 my $class = {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2198 core => 'Bio::EnsEMBL::DBSQL::DBAdaptor',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2199 cdna => 'Bio::EnsEMBL::DBSQL::DBAdaptor',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2200 otherfeatures => 'Bio::EnsEMBL::DBSQL::DBAdaptor',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2201 rnaseq => 'Bio::EnsEMBL::DBSQL::DBAdaptor',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2202 vega => 'Bio::EnsEMBL::DBSQL::DBAdaptor',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2203 variation => 'Bio::EnsEMBL::Variation::DBSQL::DBAdaptor',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2204 funcgen => 'Bio::EnsEMBL::Funcgen::DBSQL::DBAdaptor',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2205 compara => 'Bio::EnsEMBL::Compara::DBSQL::DBAdaptor',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2206 }->{$group};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2207 throw "Group '${group}' is unknown" if ! $class;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2208 return $class;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2209 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2210
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2211
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2212 =head2 find_and_add_aliases
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2213
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2214 Arg [ADAPTOR] : (optional) Bio::EnsEMBL::DBSQL::DBAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2215 The adaptor to use to retrieve aliases from.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2216
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2217 Arg [GROUP] : (optional) string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2218 The group you want to find aliases for. If not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2219 given assumes all types.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2220
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2221 Arg [HANDLE] : (optional) DBI database handle
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2222 A connected database handle to use instead of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2223 the database handles stored in the DBAdaptors.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2224 Bypasses the use of MetaContainer.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2225
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2226 Arg [SPECIES_SUFFIX]: (optional) string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2227 This option will append the string to the species
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2228 name in the registry for all databases.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2229
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2230 Example : Bio::EnsEMBL::Registry->find_and_add_aliases(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2231 -ADAPTOR => $dba,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2232 -GROUP => 'core'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2233 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2234
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2235 Description : Looks in the meta container for each database for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2236 an entry called "species.alias". If any are found
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2237 then the species adaptor is registered to that
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2238 set of aliases. This can work across any adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2239 which has a MetaContainer. If no MetaContainer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2240 can be returned from a given adaptor then no alias
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2241 searching is performed.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2242
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2243 Return type : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2244 Exceptions : Throws if an alias is found in more than one species.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2245 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2246
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2247 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2248
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2249 sub find_and_add_aliases {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2250 my $class = shift ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2251
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2252 my ($adaptor, $group, $dbh, $species_suffix ) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2253 rearrange( [ 'ADAPTOR', 'GROUP', 'HANDLE', 'SPECIES_SUFFIX' ], @_ );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2254
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2255 #Can be undef; needs to be something to avoid warnings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2256 $species_suffix ||= q{};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2257
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2258 my @dbas;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2259 if ( defined($adaptor) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2260 @dbas = ($adaptor);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2261 } elsif ( defined($dbh) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2262
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2263 if ( length($species_suffix) > 0 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2264 my @full = @{ $class->get_all_DBAdaptors( '-GROUP' => $group ) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2265
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2266 foreach my $db (@full) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2267 if ( $db->species =~ /$species_suffix/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2268 push( @dbas, $db );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2269 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2270 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2271
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2272 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2273 @dbas = @{ $class->get_all_DBAdaptors( '-GROUP' => $group ) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2274 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2275
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2276 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2277 @dbas = @{ $class->get_all_DBAdaptors( '-GROUP' => $group ) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2278 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2279
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2280 foreach my $dba (@dbas) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2281 my @aliases;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2282 my $species = $dba->species();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2283
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2284 if ( defined($dbh) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2285 my $dbname = $dba->dbc()->dbname();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2286 my $sth = $dbh->prepare( sprintf(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2287 "SELECT meta_value FROM %s.meta "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2288 . "WHERE meta_key = 'species.alias' "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2289 . "AND species_id = ?",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2290 $dbh->quote_identifier($dbname) ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2291
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2292 # Execute, and don't care about errors (there will be errors for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2293 # databases without a 'meta' table.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2294 $sth->{'PrintError'} = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2295 $sth->{'RaiseError'} = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2296 if ( !$sth->execute( $dba->species_id() ) ) { next }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2297 $sth->{'PrintError'} = $dbh->{'PrintError'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2298 $sth->{'RaiseError'} = $dbh->{'RaiseError'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2299
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2300 my $alias;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2301 $sth->bind_columns( \$alias );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2302 while ( $sth->fetch() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2303 push( @aliases, $alias );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2304 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2305 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2306 my $meta_container = eval { $dba->get_MetaContainer() };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2307
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2308 if ( defined($meta_container) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2309 push( @aliases,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2310 @{ $meta_container->list_value_by_key('species.alias') }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2311 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2312 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2313
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2314 # Need to disconnect so we do not spam the MySQL servers trying to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2315 # get aliases. Can only call disonnect if dbc was defined.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2316 if ( defined( $dba->dbc() ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2317 $dba->dbc()->disconnect_if_idle();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2318 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2319 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2320
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2321 foreach my $alias (@aliases) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2322 my $alias_suffix = $alias.$species_suffix;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2323 #Lowercase because stored aliases are lowercased
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2324 my $lc_species = lc($species);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2325 my $lc_alias_suffix = lc($alias_suffix);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2326 if ( !$class->alias_exists( $alias_suffix )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2327 && $lc_species ne $lc_alias_suffix )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2328 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2329 $class->add_alias( $species, $alias_suffix );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2330 } elsif (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2331 $lc_species ne $class->get_alias( $alias_suffix ) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2332 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2333 $class->remove_alias( $species, $alias_suffix );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2334 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2335 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2336
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2337 } ## end foreach my $dba (@dbas)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2338 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2339 } ## end sub find_and_add_aliases
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2340
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2341
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2342 =head2 load_registry_from_multiple_dbs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2343
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2344 Arg [1] : Array of hashes, each hash being a set of arguments to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2345 load_registry_from_db() (see above).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2346
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2347 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2348
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2349 $registry->load_registry_from_multiple_dbs( {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2350 '-host' => 'ensembldb.ensembl.org',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2351 '-user' => 'anonymous',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2352 '-verbose' => '1'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2353 },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2354 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2355 '-host' => 'server.example.com',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2356 '-user' => 'anonymouse',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2357 '-password' => 'cheese',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2358 '-verbose' => '1'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2359 } );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2360
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2361 Description: Will call load_registry_from_db() (see above)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2362 multiple times and merge the resulting registries
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2363 into one, effectively allowing a user to connect to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2364 databases on multiple database servers from within
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2365 one program.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2366
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2367 If a database is found on more than one server, the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2368 first found instance of that database will be used.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2369
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2370 Returntype : Int count of the DBAdaptor instances which can be found in the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2371 registry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2372
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2373 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2374
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2375 sub load_registry_from_multiple_dbs {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2376 my ( $self, @args ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2377
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2378 my $original_count = $self->get_DBAdaptor_count();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2379
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2380 my %merged_register = %registry_register;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2381
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2382 foreach my $arg (@args) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2383 local %registry_register = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2384
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2385 my $verbose;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2386
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2387 ($verbose) = rearrange( ['VERBOSE'], %{$arg} );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2388
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2389 $self->load_registry_from_db( %{$arg} );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2390
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2391 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2392 # Merge the localized %registry_register into %merged_register.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2393 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2394
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2395 # Merge the _SPECIES and _ALIAS sections of %registry_register.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2396 foreach my $section ( 'Species', 'Alias' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2397 my $section_key = '_' . uc($section);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2398
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2399 while ( my ( $key, $value ) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2400 each( %{ $registry_register{$section_key} } ) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2401 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2402 if ( !exists( $merged_register{$section_key}{$key} ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2403 $merged_register{$section_key}{$key} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2404 } elsif ($verbose) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2405 printf( "%s '%s' found on multiple servers, "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2406 . "using first found\n",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2407 $section, $key );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2408 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2409 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2410 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2411 } ## end foreach my $arg (@args)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2412
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2413 # Add the DBAs from the _SPECIES section into the _DBA section.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2414 foreach my $species_hash ( values( %{ $merged_register{_SPECIES} } ) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2415 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2416 foreach my $group_hash ( values( %{$species_hash} ) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2417 if ( ref($group_hash) eq 'HASH' && exists( $group_hash->{_DB} ) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2418 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2419 push( @{ $merged_register{_DBA} }, $group_hash->{_DB} );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2420 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2421 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2422 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2423
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2424 %registry_register = %merged_register;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2425
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2426 my $count = $self->get_DBAdaptor_count() - $original_count;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2427 return $count >= 0 ? $count : 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2428 } ## end sub load_registry_from_multiple_dbs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2429
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2430 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2431 # Web specific routines
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2432 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2433
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2434 =head2 DEPRECATED load_registry_with_web_adaptors
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2435
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2436 DEPRECATED: Use load_registry_from_db instead.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2437
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2438 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2439
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2440 sub load_registry_with_web_adaptors{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2441 my $class = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2442
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2443 deprecate('Use the load_registry_from_db instead');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2444 my $site_eval = eval{ require SiteDefs };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2445 if ($@ or (!defined($site_eval))){ die "Can't use SiteDefs.pm - $@\n"; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2446 SiteDefs->import(qw(:ALL));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2447
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2448 my $species_eval = eval{ require SpeciesDefs };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2449 if ($@ or (!defined($species_eval))){ die "Can't use SpeciesDefs.pm - $@\n"; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2450 my $conf = new SpeciesDefs();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2451
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2452 my %species_alias = %{$SiteDefs::ENSEMBL_SPECIES_ALIASES};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2453
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2454 foreach my $spec (keys %species_alias){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2455 Bio::EnsEMBL::Registry->add_alias($species_alias{$spec},$spec);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2456 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2457 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2458 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2459
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2460 =head2 set_default_track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2461
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2462 Sets a flag to say that that this species/group are a default track and do not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2463 need to be added as another web track.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2464
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2465 Arg [1] : name of the species to get the adaptors for in the registry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2466 Arg [2] : name of the type to get the adaptors for in the registry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2467 Example : $merged = Bio::EnsEMBL::Registry->set_default_track("Human","core");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2468 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2469 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2470 Status : At Risk.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2471
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2472 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2473
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2474 sub set_default_track {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2475 my ( $class, $species, $group ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2476
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2477 $species = get_alias($species);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2478 $registry_register{'def_track'}{$species}{ lc($group) } = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2479 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2480 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2481
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2482 =head2 default_track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2483
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2484 Check flag to see if this is a default track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2485
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2486 Arg [1] : name of the species to get the adaptors for in the registry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2487 Arg [2] : name of the type to get the adaptors for in the registry.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2488 Example : $merged = Bio::EnsEMBL::Registry->set_default_track("Human","core");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2489 Returntype : int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2490 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2491 Status : At Risk.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2492
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2493 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2494
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2495 sub default_track {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2496 my ( $class, $species, $group ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2497
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2498 $species = get_alias($species);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2499 if (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2500 defined( $registry_register{'def_track'}{$species}{ lc($group) } ) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2501 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2502 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2503 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2504
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2505 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2506 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2507
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2508
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2509 =head2 add_new_tracks
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2510
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2511 Will add new gene tracks to the configuration of the WEB server if they are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2512 not of the type default and the configuration already has genes in the display.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2513
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2514 Arg [1] : hash of the default configuration of the web page
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2515 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2516 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2517 Called by : UserConfig.pm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2518 Status : At Risk.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2519
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2520 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2521
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2522 sub add_new_tracks{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2523 my($class, $conf, $pos) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2524
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2525 my $start = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2526 my $reg = $class;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2527 my $species_reg = $reg->get_alias($conf->{'species'},"nothrow");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2528 my %pars;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2529 # print STDERR "Species $species_reg check for default tracks\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2530 if(defined($species_reg)){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2531 foreach my $dba (@{$reg->get_all_DBAdaptors()}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2532 if(!$reg->default_track($dba->species,$dba->group)){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2533 $pars{'available'} = "species ".$reg->get_alias($dba->species());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2534 $pars{'db_alias'} = $dba->group();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2535 # print STDERR "Adding new track for ".$dba->species."\t".$dba->group."\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2536 $conf->add_new_track_generictranscript('',$dba->group(), "black",$pos,%pars);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2537 $pos++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2538 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2539 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2540 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2541 return $pos;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2542
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2543 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2544
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2545 =head2 no_version_check
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2546
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2547 getter/setter for whether to run the version checking
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2548
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2549 Arg[0] : (optional) int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2550 Returntype : int or undef if not set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2551 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2552 Status : At Risk.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2553
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2554 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2555
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2556 sub no_version_check {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2557 my ( $self, $arg ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2558 ( defined $arg )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2559 && ( $registry_register{'_no_version_check'} = $arg );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2560
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2561 return $registry_register{'_no_version_check'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2562 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2563
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2564 =head2 no_cache_warnings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2565
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2566 Arg[0] : boolean for turning the flag on and off
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2567 Description : Turns off any warnings about not using caching in all available
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2568 adaptors.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2569 Returntype : boolean Current status
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2570 Exceptions : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2571
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2572 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2573
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2574 sub no_cache_warnings {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2575 my ($self, $arg) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2576 if(defined $arg) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2577 $Bio::EnsEMBL::DBSQL::BaseFeatureAdaptor::SILENCE_CACHE_WARNINGS = $arg;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2578 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2579 return $Bio::EnsEMBL::DBSQL::BaseFeatureAdaptor::SILENCE_CACHE_WARNINGS;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2580 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2581
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2582
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2583 =head2 version_check
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2584
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2585 run the database/API code version check for a DBAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2586
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2587 Arg[0] : DBAdaptor to check
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2588 Returntype : int 1 if okay, 0 if not the same
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2589 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2590 Status : At Risk.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2591
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2592 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2593
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2594
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2595 sub version_check {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2596 my ( $self, $dba ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2597
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2598 # Check the datbase and versions match
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2599 # give warning if they do not.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2600 my $check = no_version_check();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2601
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2602 if ( (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2603 defined( $ENV{HOME} )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2604 and ( -e $ENV{HOME} . "/.ensemblapi_no_version_check" ) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2605 or ( defined($check) and ( $check != 0 ) ) )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2606 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2607 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2608 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2609
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2610 my $mca =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2611 $self->get_adaptor( $dba->species(), $dba->group(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2612 "MetaContainer" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2613
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2614 my $database_version = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2615 if ( defined($mca) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2616 $database_version = $mca->get_schema_version();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2617 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2618
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2619 if ( $database_version == 0 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2620 # Try to work out the version
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2621 if ( $dba->dbc()->dbname() =~ /^_test_db_/x ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2622 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2623 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2624 if ( $dba->dbc()->dbname() =~ /(\d+)_\S+$/x ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2625 $database_version = $1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2626 } elsif ( $dba->dbc()->dbname() =~ /ensembl_compara_(\d+)/x ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2627 $database_version = $1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2628 } elsif ( $dba->dbc()->dbname() =~ /ensembl_help_(\d+)/x ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2629 $database_version = $1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2630 } elsif ( $dba->dbc()->dbname() =~ /ensembl_ontology_(\d+)/x ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2631 $database_version = $1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2632 } elsif ( $dba->dbc()->dbname() =~ /ensembl_stable_ids_(\d+)/x ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2633 $database_version = $1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2634 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2635 warn(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2636 sprintf(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2637 "No database version for database %s "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2638 . ". You must be using a post version 34 database "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2639 . "with version 34 or later code.\n"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2640 . "You need to update your database "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2641 . "or use the appropriate Ensembl software release "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2642 . "to ensure your script does not crash\n",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2643 $dba->dbc()->dbname() ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2644 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2645 } ## end if ( $database_version...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2646
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2647 if ( $database_version != software_version() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2648 warn(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2649 sprintf(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2650 "For %s there is a difference in the software release (%s) "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2651 . "and the database release (%s). "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2652 . "You should update one of these to ensure that your script "
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2653 . "does not crash.\n",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2654 $dba->dbc()->dbname(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2655 software_version(), $database_version
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2656 ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2657 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2658 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2659
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2660 return 1; # Ok
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2661 } ## end sub version_check
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2662
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2663
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2664 =head2 get_species_and_object_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2665
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2666 Description: Get the species name, object type (gene, transcript,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2667 translation, or exon etc.), and database type for a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2668 stable ID.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2669
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2670 Arg [1] : String stable_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2671 The stable ID to find species and object type for.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2672
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2673 Arg [2] : String known_type (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2674 The type of the stable ID, if it is known.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2675
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2676 Arg [3] : String known_species (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2677 The species, if known
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2678
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2679 Arg [4] : String known_db_type (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2680 The database type, if known
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2681
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2682 Example : my $stable_id = 'ENST00000326632';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2683
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2684 my ( $species, $object_type, $db_type ) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2685 $registry->get_species_and_object_type($stable_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2686
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2687 my $adaptor =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2688 $registry->get_adaptor( $species, $db_type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2689 $object_type );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2690
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2691 my $object = $adaptor->fetch_by_stable_id($stable_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2692
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2693 Return type: Array consisting of the species name, object type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2694 and database type. The array may be empty if no
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2695 match is found.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2696
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2697 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2698 Status : At Risk.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2699
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2700 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2701
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2702 my %stable_id_stmts = (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2703 gene => 'SELECT m.meta_value '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2704 . 'FROM %1$s.gene '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2705 . 'JOIN %1$s.seq_region USING (seq_region_id) '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2706 . 'JOIN %1$s.coord_system USING (coord_system_id) '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2707 . 'JOIN %1$s.meta m USING (species_id) '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2708 . 'WHERE stable_id = ? '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2709 . 'AND m.meta_key = "species.production_name"',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2710 transcript => 'SELECT m.meta_value '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2711 . 'FROM %1$s.transcript '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2712 . 'JOIN %1$s.seq_region USING (seq_region_id) '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2713 . 'JOIN %1$s.coord_system USING (coord_system_id) '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2714 . 'JOIN %1$s.meta m USING (species_id) '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2715 . 'WHERE stable_id = ? '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2716 . 'AND m.meta_key = "species.production_name"',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2717 exon => 'SELECT m.meta_value '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2718 . 'FROM %1$s.exon '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2719 . 'JOIN %1$s.seq_region USING (seq_region_id) '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2720 . 'JOIN %1$s.coord_system USING (coord_system_id) '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2721 . 'JOIN %1$s.meta m USING (species_id) '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2722 . 'WHERE stable_id = ? '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2723 . 'AND m.meta_key = "species.production_name"',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2724 translation => 'SELECT m.meta_value '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2725 . 'FROM %1$s.translation tl '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2726 . 'JOIN %1$s.transcript USING (transcript_id) '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2727 . 'JOIN %1$s.seq_region USING (seq_region_id) '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2728 . 'JOIN %1$s.coord_system USING (coord_system_id) '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2729 . 'JOIN %1$s.meta m USING (species_id) '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2730 . 'WHERE tl.stable_id = ? '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2731 . 'AND m.meta_key = "species.production_name"',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2732 operon => 'SELECT m.meta_value '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2733 . 'FROM %1$s.operon '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2734 . 'JOIN %1$s.seq_region USING (seq_region_id) '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2735 . 'JOIN %1$s.coord_system USING (coord_system_id) '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2736 . 'JOIN %1$s.meta m USING (species_id) '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2737 . 'WHERE stable_id = ? '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2738 . 'AND m.meta_key = "species.production_name"',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2739 operontranscript => 'SELECT m.meta_value '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2740 . 'FROM %1$s.operon_transcript '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2741 . 'JOIN %1$s.seq_region USING (seq_region_id) '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2742 . 'JOIN %1$s.coord_system USING (coord_system_id) '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2743 . 'JOIN %1$s.meta m USING (species_id) '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2744 . 'WHERE stable_id = ? '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2745 . 'AND m.meta_key = "species.production_name"',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2746
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2747 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2748
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2749
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2750 sub get_species_and_object_type {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2751 my ($self, $stable_id, $known_type, $known_species, $known_db_type, $force_long_lookup) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2752
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2753 #get the stable_id lookup database adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2754 my $stable_ids_dba = $self->get_DBAdaptor("multi", "stable_ids", 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2755
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2756 if ($stable_ids_dba && ! $force_long_lookup) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2757 my $statement = 'SELECT name, object_type, db_type FROM stable_id_lookup join species using(species_id) WHERE stable_id = ?';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2758
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2759 if ($known_species) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2760 $statement .= ' AND name = ?';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2761 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2762 if ($known_db_type) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2763 $statement .= ' AND db_type = ?';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2764 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2765 if ($known_type) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2766 $statement .= ' AND object_type = ?';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2767 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2768
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2769 my $sth = $stable_ids_dba->dbc()->prepare($statement);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2770 $sth->bind_param(1, $stable_id, SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2771 my $param_count = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2772 if ($known_species) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2773 $known_species = $self->get_alias($known_species);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2774 $param_count++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2775 $sth->bind_param($param_count, $known_species, SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2776 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2777 if ($known_db_type) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2778 $param_count++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2779 $sth->bind_param($param_count, $known_db_type, SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2780 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2781 if ($known_type) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2782 $param_count++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2783 $sth->bind_param($param_count, $known_type, SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2784 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2785 $sth->execute();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2786 my ($species, $type, $db_type) = $sth->fetchrow_array();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2787 $sth->finish();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2788 return ($species ,$type, $db_type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2789
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2790 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2791 if (defined $known_type && !exists $stable_id_stmts{lc $known_type}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2792 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2793 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2794
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2795 my @types = defined $known_type ? ($known_type) : ('Gene', 'Transcript', 'Translation', 'Exon', 'Operon', 'OperonTranscript');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2796
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2797 if(! $known_db_type) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2798 $known_db_type = 'core';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2799 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2800
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2801 my %get_adaptors_args;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2802 $get_adaptors_args{'-group'} = $known_db_type;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2803 if ($known_species) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2804 $get_adaptors_args{'-species'} = $known_species;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2805 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2806
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2807 my @dbas = sort { $a->dbc->host cmp $b->dbc->host || $a->dbc->port <=> $b->dbc->port }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2808 @{$self->get_all_DBAdaptors(%get_adaptors_args)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2809 foreach my $dba (@dbas) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2810
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2811 foreach my $type (@types) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2812 my $statement = sprintf $stable_id_stmts{lc $type}, $dba->dbc->dbname;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2813
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2814 my $sth = $dba->dbc()->prepare($statement);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2815 $sth->bind_param(1, $stable_id, SQL_VARCHAR);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2816 $sth->execute;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2817
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2818 my $species = $sth->fetchall_arrayref->[0][0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2819
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2820 $sth->finish;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2821
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2822 return ($species, $type, $known_db_type) if defined $species;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2823 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2824
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2825 } ## end foreach my $dba ( sort { $a...})
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2826
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2827 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2828
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2829 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2830 } ## end sub get_species_and_object_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2831
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2832 1;