0
|
1 =head1 LICENSE
|
|
2
|
|
3 Copyright (c) 1999-2012 The European Bioinformatics Institute and
|
|
4 Genome Research Limited. All rights reserved.
|
|
5
|
|
6 This software is distributed under a modified Apache license.
|
|
7 For license details, please see
|
|
8
|
|
9 http://www.ensembl.org/info/about/code_licence.html
|
|
10
|
|
11 =head1 CONTACT
|
|
12
|
|
13 Please email comments or questions to the public Ensembl
|
|
14 developers list at <dev@ensembl.org>.
|
|
15
|
|
16 Questions may also be sent to the Ensembl help desk at
|
|
17 <helpdesk@ensembl.org>.
|
|
18
|
|
19 =cut
|
|
20
|
|
21 =head1 NAME
|
|
22
|
|
23 Bio::EnsEMBL::DBSQL::MetaContainer - Encapsulates all access to core
|
|
24 database meta information
|
|
25
|
|
26 =head1 SYNOPSIS
|
|
27
|
|
28 my $meta_container =
|
|
29 $registry->get_adaptor( 'Human', 'Core', 'MetaContainer' );
|
|
30
|
|
31 my @mapping_info =
|
|
32 @{ $meta_container->list_value_by_key('assembly.mapping') };
|
|
33
|
|
34 my $scientific_name = $meta_container->get_scientific_name();
|
|
35
|
|
36 =head1 DESCRIPTION
|
|
37
|
|
38 An object that encapsulates specific access to core db meta data
|
|
39
|
|
40 =head1 METHODS
|
|
41
|
|
42 =cut
|
|
43
|
|
44 package Bio::EnsEMBL::DBSQL::MetaContainer;
|
|
45
|
|
46 use strict;
|
|
47 use warnings;
|
|
48
|
|
49 use Bio::EnsEMBL::Utils::Exception qw/deprecate/;
|
|
50 use Bio::Species;
|
|
51
|
|
52
|
|
53 use base qw/Bio::EnsEMBL::DBSQL::BaseMetaContainer/;
|
|
54
|
|
55 # add well known meta info get-functions below
|
|
56
|
|
57 =head2 get_production_name
|
|
58
|
|
59 Args : none
|
|
60 Example : $species = $meta_container->get_production_name();
|
|
61 Description : Obtains the name of the species in a form usable as, for
|
|
62 example, a table name, file name etc.
|
|
63 Returntype : string
|
|
64 Exceptions : none
|
|
65 Status : Stable
|
|
66
|
|
67 =cut
|
|
68
|
|
69 sub get_production_name {
|
|
70 my ($self) = @_;
|
|
71 return $self->single_value_by_key('species.production_name');
|
|
72 }
|
|
73
|
|
74 =head2 get_short_name
|
|
75
|
|
76 Args : none
|
|
77 Example : $species = $meta_container->get_short_name();
|
|
78 Description : Obtains the name of the species in a form usable as, for
|
|
79 example, a short label in a GUI.
|
|
80 Returntype : string
|
|
81 Exceptions : none
|
|
82 Status : Stable
|
|
83
|
|
84 =cut
|
|
85
|
|
86 sub get_short_name {
|
|
87 my ($self) = @_;
|
|
88 return $self->single_value_by_key('species.short_name');
|
|
89 }
|
|
90
|
|
91 =head2 get_common_name
|
|
92
|
|
93 Args : none
|
|
94 Example : $species = $meta_container->get_common_name();
|
|
95 Description : Obtains the common name of the species.
|
|
96 Returntype : string
|
|
97 Exceptions : none
|
|
98 Status : Stable
|
|
99
|
|
100 =cut
|
|
101
|
|
102 sub get_common_name {
|
|
103 my ($self) = @_;
|
|
104 return $self->single_value_by_key('species.common_name');
|
|
105 }
|
|
106
|
|
107 =head2 get_scientific_name
|
|
108
|
|
109 Args : none
|
|
110 Example : $species = $meta_container->get_scientific_name();
|
|
111 Description : Obtains the full scientific name of the species.
|
|
112 Returntype : string
|
|
113 Exceptions : none
|
|
114 Status : Stable
|
|
115
|
|
116 =cut
|
|
117 sub get_scientific_name {
|
|
118 my ($self) = @_;
|
|
119 return $self->single_value_by_key('species.scientific_name');
|
|
120 }
|
|
121
|
|
122 =head2 get_division
|
|
123
|
|
124 Args : none
|
|
125 Example : $div = $meta_container->get_division();
|
|
126 Description : Obtains the Ensembl Genomes division to which the species belongs.
|
|
127 Returntype : string
|
|
128 Exceptions : none
|
|
129 Status : Stable
|
|
130
|
|
131 =cut
|
|
132 sub get_division {
|
|
133 my ($self) = @_;
|
|
134 return $self->single_value_by_key('species.division');
|
|
135 }
|
|
136
|
|
137 =head2 get_Species
|
|
138
|
|
139 Arg [1] : none
|
|
140 Example : $species = $meta_container->get_Species();
|
|
141 Description: Obtains the species from this databases meta table. Call is
|
|
142 deprecated; please use other subroutines in this package
|
|
143 Returntype : Bio::Species
|
|
144 Exceptions : none
|
|
145 Caller : ?
|
|
146 Status : Deprecated
|
|
147
|
|
148 =cut
|
|
149
|
|
150 sub get_Species {
|
|
151 my ($self) = @_;
|
|
152
|
|
153 deprecate('Call is deprecated. Use $self->get_common_name() / $self->get_classification() / $self->get_scientific_name() instead');
|
|
154
|
|
155 my $common_name = $self->get_common_name();
|
|
156 my $classification =
|
|
157 $self->list_value_by_key('species.classification');
|
|
158 if ( !@$classification ) {
|
|
159 return undef;
|
|
160 }
|
|
161
|
|
162 #Re-create the old classification data structure by adding the scientific
|
|
163 #name back onto the classification but with species before genus e.g.
|
|
164 # sapiens -> Homo -> Hominade
|
|
165 my $scientific_name = $self->get_scientific_name();
|
|
166 my ($genus, @sp) = split(/ /, $scientific_name);
|
|
167 unshift(@{$classification}, join(q{ }, @sp), $genus);
|
|
168
|
|
169 my $species = Bio::Species->new();
|
|
170 $species->common_name($common_name);
|
|
171
|
|
172 $species->classification($classification, 1); #always force it
|
|
173
|
|
174 return $species;
|
|
175 }
|
|
176
|
|
177
|
|
178 =head2 get_taxonomy_id
|
|
179
|
|
180 Arg [1] : none
|
|
181 Example : $tax_id = $meta_container->get_taxonomy_id();
|
|
182 Description: Retrieves the taxonomy id from the database meta table
|
|
183 Returntype : string
|
|
184 Exceptions : none
|
|
185 Caller : ?
|
|
186 Status : Stable
|
|
187
|
|
188 =cut
|
|
189
|
|
190 sub get_taxonomy_id {
|
|
191 my ($self) = @_;
|
|
192 return $self->single_value_by_key('species.taxonomy_id', 1);
|
|
193 }
|
|
194
|
|
195
|
|
196
|
|
197 =head2 get_default_assembly
|
|
198
|
|
199 Description: DEPRECATED. Use the version of the coordinate system you are
|
|
200 interested in instead.
|
|
201
|
|
202 Example: #use this instead
|
|
203 my ($highest_cs) = @{$db->get_CoordSystemAdaptor->fetch_all()};
|
|
204 my $assembly = $highest_cs->version();
|
|
205
|
|
206 =cut
|
|
207
|
|
208 sub get_default_assembly {
|
|
209 my $self = shift;
|
|
210
|
|
211 deprecate("Use version of coordinate system you are interested in instead.\n".
|
|
212 "Example:\n".
|
|
213 ' ($cs) = @{$coord_system_adaptor->fetch_all()};'."\n" .
|
|
214 ' $assembly = $cs->version();');
|
|
215
|
|
216 my ($cs) = @{$self->db->get_CoordSystemAdaptor->fetch_all()};
|
|
217
|
|
218 return $cs->version();
|
|
219 }
|
|
220
|
|
221
|
|
222 #
|
|
223 # TBD This method should be removed/deprecated
|
|
224 #
|
|
225 sub get_max_assembly_contig {
|
|
226 my $self = shift;
|
|
227 deprecate('This method should either be fixed or removed');
|
|
228 return $self->single_value_by_key('assembly.maxcontig');
|
|
229 }
|
|
230
|
|
231 =head2 get_genebuild
|
|
232
|
|
233 Arg [1] : none
|
|
234 Example : $tax_id = $meta_container->get_genebuild();
|
|
235 Description: Retrieves the genebuild from the database meta table
|
|
236 Returntype : string
|
|
237 Exceptions : none
|
|
238 Caller : ?
|
|
239 Status : Stable
|
|
240
|
|
241 =cut
|
|
242
|
|
243 sub get_genebuild {
|
|
244 my ($self) = @_;
|
|
245 return $self->single_value_by_key('genebuild.start_date', 1);
|
|
246 }
|
|
247
|
|
248 =head2 get_genebuild
|
|
249
|
|
250 Example : $classification = $meta_container->get_classification();
|
|
251 Description: Retrieves the classification held in the backing database minus
|
|
252 any species specific levels. This means that the first element
|
|
253 in the array will be subfamily/family level ascending to
|
|
254 superkingdom
|
|
255 Returntype : ArrayRef[String]
|
|
256 Exceptions : none
|
|
257 Caller : ?
|
|
258 Status : Stable
|
|
259
|
|
260 =cut
|
|
261
|
|
262 sub get_classification {
|
|
263 my ($self) = @_;
|
|
264 my $classification = $self->list_value_by_key('species.classification');
|
|
265 my $copy = [@{$classification}];
|
|
266 splice(@{$copy}, 0, 1); # remove the Homo sapiens
|
|
267 return $copy;
|
|
268 }
|
|
269
|
|
270
|
|
271 1;
|
|
272
|