Mercurial > repos > mahtabm > ensembl
comparison variant_effect_predictor/Bio/EnsEMBL/OntologyTerm.pm @ 0:1f6dce3d34e0
Uploaded
author | mahtabm |
---|---|
date | Thu, 11 Apr 2013 02:01:53 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:1f6dce3d34e0 |
---|---|
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::OntologyTerm | |
24 | |
25 =head1 DESCRIPTION | |
26 | |
27 An ontology term object, (most often) created by | |
28 Bio::EnsEMBL::DBSQL::GOTermAdaptor and used in querying for | |
29 transcripts, genes, and translations using the relevant adaptors and | |
30 methods. | |
31 | |
32 =head1 METHODS | |
33 | |
34 =cut | |
35 | |
36 package Bio::EnsEMBL::OntologyTerm; | |
37 | |
38 use strict; | |
39 use warnings; | |
40 | |
41 use Bio::EnsEMBL::Utils::Argument qw( rearrange ); | |
42 | |
43 use base qw( Bio::EnsEMBL::Storable ); | |
44 | |
45 =head2 new | |
46 | |
47 Arg [-ACCESSION] : String | |
48 The accession of the ontology term. | |
49 | |
50 Arg [-ONTOLOGY] : String | |
51 The ontology that the term belongs to. | |
52 | |
53 Arg [-NAMESPACE] : String | |
54 The namespace of the ontology term. | |
55 | |
56 Arg [-NAME] : String | |
57 The name of the ontology term. | |
58 | |
59 Arg [-SUBSETS] : (optional) Listref of strings | |
60 The subsets within the ontology to which this | |
61 term belongs. | |
62 | |
63 Arg [-DEFINITION] : (optional) String | |
64 The definition of the ontology term. | |
65 | |
66 Arg [-SYNONYMS] : (optional) Listref of strings | |
67 The synonyms of this term. | |
68 | |
69 Arg : Further arguments required for parent class | |
70 Bio::EnsEMBL::Storable. | |
71 | |
72 Description : Creates an ontology term object. | |
73 | |
74 Example : | |
75 | |
76 my $term = Bio::EnsEMBL::OntologyTerm->new( | |
77 '-accession' => 'GO:0021785', | |
78 '-ontology' => 'GO', | |
79 '-namespace' => 'biological_process', | |
80 '-name' => 'branchiomotor neuron axon guidance', | |
81 '-definition' => 'The process in which a branchiomotor ' | |
82 . 'neuron growth cone is directed to a specific target site. ' | |
83 . 'Branchiomotor neurons are located in the hindbrain and ' | |
84 . 'innervate branchial arch-derived muscles that control jaw ' | |
85 . 'movements, facial expression, the larynx, and the pharynx.', | |
86 '-synonyms' => [ 'BMN axon guidance', | |
87 'branchial motor axon guidance', | |
88 'special visceral motor neuron axon guidance' ] | |
89 | |
90 # ... other arguments required by Bio::EnsEMBL::Storable. | |
91 ); | |
92 | |
93 Return type : Bio::EnsEMBL::OntologyTerm | |
94 | |
95 =cut | |
96 | |
97 sub new { | |
98 my $proto = shift(@_); | |
99 | |
100 my $this = $proto->SUPER::new(@_); | |
101 | |
102 my ( $accession, $ontology, $namespace, $name, $definition, $subsets ) | |
103 = rearrange( [ 'ACCESSION', 'ONTOLOGY', 'NAMESPACE', 'NAME', | |
104 'DEFINITION', 'SUBSETS' ], | |
105 @_ ); | |
106 | |
107 $this->{'accession'} = $accession; | |
108 $this->{'ontology'} = $ontology; | |
109 $this->{'namespace'} = $namespace; | |
110 $this->{'name'} = $name; | |
111 $this->{'definition'} = $definition; | |
112 $this->{'subsets'} = [ @{$subsets} ]; | |
113 | |
114 $this->{'child_terms_fetched'} = 0; | |
115 $this->{'parent_terms_fetched'} = 0; | |
116 | |
117 return $this; | |
118 } | |
119 | |
120 =head2 accession | |
121 | |
122 Arg : None | |
123 | |
124 Description : Returns the accession for the ontology term in question. | |
125 | |
126 Example : my $accession = $term->accession(); | |
127 | |
128 Return type : String | |
129 | |
130 =cut | |
131 | |
132 sub accession { | |
133 my ($this) = @_; | |
134 return $this->{'accession'}; | |
135 } | |
136 | |
137 =head2 ontology | |
138 | |
139 Arg : None | |
140 | |
141 Description : Returns the ontology for the ontology term in question. | |
142 | |
143 Example : my $ontology = $term->ontology(); | |
144 | |
145 Return type : String | |
146 | |
147 =cut | |
148 | |
149 sub ontology { | |
150 my ($this) = @_; | |
151 return $this->{'ontology'}; | |
152 } | |
153 | |
154 =head2 namespace | |
155 | |
156 Arg : None | |
157 | |
158 Description : Returns the namespace for the ontology term in question. | |
159 | |
160 Example : my $acc = $term->namespace(); | |
161 | |
162 Return type : String | |
163 | |
164 =cut | |
165 | |
166 sub namespace { | |
167 my ($this) = @_; | |
168 return $this->{'namespace'}; | |
169 } | |
170 | |
171 =head2 name | |
172 | |
173 Arg : None | |
174 | |
175 Description : Returns the name for the ontology term in question. | |
176 | |
177 Example : my $name = $term->name(); | |
178 | |
179 Return type : String | |
180 | |
181 =cut | |
182 | |
183 sub name { | |
184 my ($this) = @_; | |
185 return $this->{'name'}; | |
186 } | |
187 | |
188 =head2 definition | |
189 | |
190 Arg : None | |
191 | |
192 Description : Returns the definition for the ontology term in question. | |
193 | |
194 Example : my $definition = $term->definition(); | |
195 | |
196 Return type : String | |
197 | |
198 =cut | |
199 | |
200 sub definition { | |
201 my ($this) = @_; | |
202 return $this->{'definition'}; | |
203 } | |
204 | |
205 =head2 synonyms | |
206 | |
207 Arg : None | |
208 | |
209 Description : Returns the list of synonyms defined for this term | |
210 (if any). | |
211 | |
212 Example : my @synonyms = @{ $term->synonyms() }; | |
213 | |
214 Return type : Listref of strings | |
215 | |
216 =cut | |
217 | |
218 sub synonyms { | |
219 my ($this) = @_; | |
220 | |
221 if ( !exists( $this->{'synonyms'} ) ) { | |
222 $this->{'synonyms'} = | |
223 $this->adaptor()->_fetch_synonyms_by_dbID( $this->dbID() ); | |
224 } | |
225 | |
226 return $this->{'synonyms'}; | |
227 } | |
228 | |
229 =head2 subsets | |
230 | |
231 Arg : None | |
232 | |
233 Description : Returns a list of subsets that this term is part | |
234 of. The list might be empty. | |
235 | |
236 Example : my @subsets = @{ $term->subsets() }; | |
237 | |
238 Return type : listref of strings | |
239 | |
240 =cut | |
241 | |
242 sub subsets { | |
243 my ($this) = @_; | |
244 return $this->{'subsets'}; | |
245 } | |
246 | |
247 =head2 children | |
248 | |
249 Arg : (optional) List of strings | |
250 The type of relations to retrieve children for. | |
251 | |
252 Description : Returns the children terms of this ontology term. | |
253 | |
254 Example : my @children = | |
255 @{ $term->children( 'is_a', 'part_of' ) }; | |
256 | |
257 Return type : listref of Bio::EnsEMBL::OntologyTerm | |
258 | |
259 =cut | |
260 | |
261 sub children { | |
262 my ( $this, @relations ) = @_; | |
263 | |
264 my @terms = @{ $this->adaptor()->fetch_all_by_parent_term($this) }; | |
265 | |
266 if (@relations) { | |
267 @terms = (); | |
268 foreach my $relation (@relations) { | |
269 if ( exists( $this->{'children'}{$relation} ) ) { | |
270 push( @terms, @{ $this->{'children'}{$relation} } ); | |
271 } | |
272 } | |
273 } | |
274 | |
275 return \@terms; | |
276 } | |
277 | |
278 =head2 descendants | |
279 | |
280 Arg : None | |
281 | |
282 Description : Returns the complete set of 'is_a' and 'part_of' | |
283 descendant terms of this ontology term, down to | |
284 and including any leaf terms. | |
285 | |
286 Example : my @descendants = @{ $term->descendants() }; | |
287 | |
288 Return type : listref of Bio::EnsEMBL::OntologyTerm | |
289 | |
290 =cut | |
291 | |
292 sub descendants { | |
293 my ($this) = @_; | |
294 return $this->adaptor()->fetch_all_by_ancestor_term($this); | |
295 } | |
296 | |
297 =head2 parents | |
298 | |
299 Arg : (optional) List of strings | |
300 The type of relations to retrieve parents for. | |
301 | |
302 Description : Returns the parent terms of this ontology term. | |
303 | |
304 Example : my @parents = | |
305 @{ $term->parents( 'is_a', 'part_of' ) }; | |
306 | |
307 Return type : listref of Bio::EnsEMBL::OntologyTerm | |
308 | |
309 =cut | |
310 | |
311 sub parents { | |
312 my ( $this, @relations ) = @_; | |
313 | |
314 my @terms = @{ $this->adaptor()->fetch_all_by_child_term($this) }; | |
315 | |
316 if (@relations) { | |
317 @terms = (); | |
318 foreach my $relation (@relations) { | |
319 if ( exists( $this->{'parents'}{$relation} ) ) { | |
320 push( @terms, @{ $this->{'parents'}{$relation} } ); | |
321 } | |
322 } | |
323 } | |
324 | |
325 return \@terms; | |
326 } | |
327 | |
328 =head2 ancestors | |
329 | |
330 Arg : None | |
331 | |
332 Description : Returns the complete set of 'is_a' and 'part_of' | |
333 ancestor terms of this ontology term, up to and | |
334 including the root term. | |
335 | |
336 Example : my @ancestors = @{ $term->ancestors() }; | |
337 | |
338 Return type : listref of Bio::EnsEMBL::OntologyTerm | |
339 | |
340 =cut | |
341 | |
342 sub ancestors { | |
343 my ($this) = @_; | |
344 return $this->adaptor()->fetch_all_by_descendant_term($this); | |
345 } | |
346 | |
347 1; |