Mercurial > repos > mahtabm > ensembl
comparison variant_effect_predictor/Bio/Annotation/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 # $Id: OntologyTerm.pm,v 1.4.2.2 2003/04/04 15:53:20 lapp Exp $ | |
2 # | |
3 # BioPerl module for Bio::Annotation::OntologyTerm | |
4 # | |
5 # Cared for by Hilmar Lapp <hlapp at gmx.net> | |
6 # | |
7 # Copyright Hilmar Lapp | |
8 # | |
9 # You may distribute this module under the same terms as perl itself | |
10 | |
11 # | |
12 # (c) Hilmar Lapp, hlapp at gmx.net, 2002. | |
13 # (c) GNF, Genomics Institute of the Novartis Research Foundation, 2002. | |
14 # | |
15 # You may distribute this module under the same terms as perl itself. | |
16 # Refer to the Perl Artistic License (see the license accompanying this | |
17 # software package, or see http://www.perl.com/language/misc/Artistic.html) | |
18 # for the terms under which you may use, modify, and redistribute this module. | |
19 # | |
20 # THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED | |
21 # WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF | |
22 # MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. | |
23 # | |
24 | |
25 # POD documentation - main docs before the code | |
26 | |
27 =head1 NAME | |
28 | |
29 Bio::Annotation::OntologyTerm - An ontology term adapted to AnnotationI | |
30 | |
31 =head1 SYNOPSIS | |
32 | |
33 use Bio::Annotation::OntologyTerm; | |
34 use Bio::Annotation::Collection; | |
35 use Bio::Ontology::Term; | |
36 | |
37 my $coll = new Bio::Annotation::Collection; | |
38 | |
39 # this also implements a tag/value pair, where tag _and_ value are treated | |
40 # as ontology terms | |
41 my $annterm = new Bio::Annotation::OntologyTerm(-label => 'ABC1', | |
42 -tagname => 'Gene Name'); | |
43 # ontology terms can be added directly - they implicitly have a tag | |
44 $coll->add_Annotation($annterm); | |
45 | |
46 # implementation is by composition - you can get/set the term object | |
47 # e.g. | |
48 my $term = $annterm->term(); # term is-a Bio::Ontology::TermI | |
49 print "ontology term ",$term->name()," (ID ",$term->identifier(), | |
50 "), ontology ",$term->ontology()->name(),"\n"; | |
51 $term = Bio::Ontology::Term->new(-name => 'ABC2', -ontology => 'Gene Name'); | |
52 $annterm->term($term); | |
53 | |
54 =head1 DESCRIPTION | |
55 | |
56 Ontology term annotation object | |
57 | |
58 =head1 FEEDBACK | |
59 | |
60 =head2 Mailing Lists | |
61 | |
62 User feedback is an integral part of the evolution of this and other | |
63 Bioperl modules. Send your comments and suggestions preferably to one | |
64 of the Bioperl mailing lists. Your participation is much appreciated. | |
65 | |
66 bioperl-l@bioperl.org - General discussion | |
67 http://bio.perl.org/MailList.html - About the mailing lists | |
68 | |
69 =head2 Reporting Bugs | |
70 | |
71 Report bugs to the Bioperl bug tracking system to help us keep track | |
72 the bugs and their resolution. Bug reports can be submitted via email | |
73 or the web: | |
74 | |
75 bioperl-bugs@bioperl.org | |
76 http://bugzilla.bioperl.org/ | |
77 | |
78 =head1 AUTHOR - Hilmar Lapp | |
79 | |
80 Email bioperl-l@bio.perl.org | |
81 Email hlapp at gmx.net | |
82 | |
83 | |
84 =head1 APPENDIX | |
85 | |
86 The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _ | |
87 | |
88 =cut | |
89 | |
90 | |
91 # Let the code begin... | |
92 | |
93 | |
94 package Bio::Annotation::OntologyTerm; | |
95 use vars qw(@ISA); | |
96 use strict; | |
97 | |
98 # Object preamble - inherits from Bio::Root::Root | |
99 | |
100 use Bio::AnnotationI; | |
101 use Bio::Ontology::TermI; | |
102 use Bio::Ontology::Term; | |
103 use Bio::Root::Root; | |
104 | |
105 @ISA = qw(Bio::Root::Root Bio::AnnotationI Bio::Ontology::TermI); | |
106 | |
107 =head2 new | |
108 | |
109 Title : new | |
110 Usage : my $sv = new Bio::Annotation::OntologyTerm; | |
111 Function: Instantiate a new OntologyTerm object | |
112 Returns : Bio::Annotation::OntologyTerm object | |
113 Args : -term => $term to initialize the term data field [optional] | |
114 Most named arguments that Bio::Ontology::Term accepts will work | |
115 here too. -label is a synonym for -name, -tagname is a synonym for | |
116 -ontology. | |
117 | |
118 =cut | |
119 | |
120 sub new{ | |
121 my ($class,@args) = @_; | |
122 | |
123 my $self = $class->SUPER::new(@args); | |
124 | |
125 my ($term,$name,$label,$identifier,$definition,$ont,$tag) = | |
126 $self->_rearrange([qw(TERM | |
127 NAME | |
128 LABEL | |
129 IDENTIFIER | |
130 DEFINITION | |
131 ONTOLOGY | |
132 TAGNAME)], | |
133 @args); | |
134 if($term) { | |
135 $self->term($term); | |
136 } else { | |
137 $self->name($name || $label) if $name || $label; | |
138 $self->identifier($identifier) if $identifier; | |
139 $self->definition($definition) if $definition; | |
140 } | |
141 $self->ontology($ont || $tag) if $ont || $tag; | |
142 | |
143 return $self; | |
144 } | |
145 | |
146 | |
147 =head1 AnnotationI implementing functions | |
148 | |
149 =cut | |
150 | |
151 =head2 as_text | |
152 | |
153 Title : as_text | |
154 Usage : my $text = $obj->as_text | |
155 Function: return the string "Name: $v" where $v is the name of the term | |
156 Returns : string | |
157 Args : none | |
158 | |
159 | |
160 =cut | |
161 | |
162 sub as_text{ | |
163 my ($self) = @_; | |
164 | |
165 return $self->tagname()."|".$self->name()."|".$self->identifier(); | |
166 } | |
167 | |
168 =head2 hash_tree | |
169 | |
170 Title : hash_tree | |
171 Usage : my $hashtree = $value->hash_tree | |
172 Function: For supporting the AnnotationI interface just returns the value | |
173 as a hashref with the key 'value' pointing to the value | |
174 Returns : hashrf | |
175 Args : none | |
176 | |
177 | |
178 =cut | |
179 | |
180 sub hash_tree{ | |
181 my ($self) = @_; | |
182 | |
183 my $h = {}; | |
184 $h->{'name'} = $self->name(); | |
185 $h->{'identifier'} = $self->identifier(); | |
186 $h->{'definition'} = $self->definition(); | |
187 $h->{'synonyms'} = [$self->each_synonym()]; | |
188 } | |
189 | |
190 | |
191 =head2 tagname | |
192 | |
193 Title : tagname | |
194 Usage : $obj->tagname($newval) | |
195 Function: Get/set the tagname for this annotation value. | |
196 | |
197 Setting this is optional. If set, it obviates the need to provide | |
198 a tag to AnnotationCollection when adding this object. | |
199 | |
200 This is aliased to ontology() here. | |
201 Example : | |
202 Returns : value of tagname (a scalar) | |
203 Args : new value (a scalar, optional) | |
204 | |
205 | |
206 =cut | |
207 | |
208 sub tagname{ | |
209 my $self = shift; | |
210 | |
211 return $self->ontology(@_) if @_; | |
212 # if in get mode we need to get the name from the ontology | |
213 my $ont = $self->ontology(); | |
214 return ref($ont) ? $ont->name() : $ont; | |
215 } | |
216 | |
217 =head1 Methods for Bio::Ontology::TermI compliance | |
218 | |
219 =cut | |
220 | |
221 =head2 term | |
222 | |
223 Title : term | |
224 Usage : $obj->term($newval) | |
225 Function: Get/set the Bio::Ontology::TermI implementing object. | |
226 | |
227 We implement TermI by composition, and this method sets/gets the | |
228 object we delegate to. | |
229 Example : | |
230 Returns : value of term (a Bio::Ontology::TermI compliant object) | |
231 Args : new value (a Bio::Ontology::TermI compliant object, optional) | |
232 | |
233 | |
234 =cut | |
235 | |
236 sub term{ | |
237 my ($self,$value) = @_; | |
238 if( defined $value) { | |
239 $self->{'term'} = $value; | |
240 } | |
241 if(! exists($self->{'term'})) { | |
242 $self->{'term'} = Bio::Ontology::Term->new(); | |
243 } | |
244 return $self->{'term'}; | |
245 } | |
246 | |
247 =head2 identifier | |
248 | |
249 Title : identifier | |
250 Usage : $term->identifier( "0003947" ); | |
251 or | |
252 print $term->identifier(); | |
253 Function: Set/get for the identifier of this Term. | |
254 Returns : The identifier [scalar]. | |
255 Args : The identifier [scalar] (optional). | |
256 | |
257 =cut | |
258 | |
259 sub identifier { | |
260 return shift->term()->identifier(@_); | |
261 } # identifier | |
262 | |
263 =head2 name | |
264 | |
265 Title : name | |
266 Usage : $term->name( "N-acetylgalactosaminyltransferase" ); | |
267 or | |
268 print $term->name(); | |
269 Function: Set/get for the name of this Term. | |
270 Returns : The name [scalar]. | |
271 Args : The name [scalar] (optional). | |
272 | |
273 =cut | |
274 | |
275 sub name { | |
276 return shift->term()->name(@_); | |
277 } # name | |
278 | |
279 | |
280 =head2 definition | |
281 | |
282 Title : definition | |
283 Usage : $term->definition( "Catalysis of ..." ); | |
284 or | |
285 print $term->definition(); | |
286 Function: Set/get for the definition of this Term. | |
287 Returns : The definition [scalar]. | |
288 Args : The definition [scalar] (optional). | |
289 | |
290 =cut | |
291 | |
292 sub definition { | |
293 return shift->term()->definition(@_); | |
294 } # definition | |
295 | |
296 =head2 ontology | |
297 | |
298 Title : ontology | |
299 Usage : $term->ontology( $top ); | |
300 or | |
301 $top = $term->ontology(); | |
302 Function: Set/get for a relationship between this Term and | |
303 another Term (e.g. the top level of the ontology). | |
304 Returns : The ontology of this Term [TermI]. | |
305 Args : The ontology of this Term [TermI or scalar -- which | |
306 becomes the name of the catagory term] (optional). | |
307 | |
308 =cut | |
309 | |
310 sub ontology { | |
311 return shift->term()->ontology(@_); | |
312 } | |
313 | |
314 =head2 is_obsolete | |
315 | |
316 Title : is_obsolete | |
317 Usage : $term->is_obsolete( 1 ); | |
318 or | |
319 if ( $term->is_obsolete() ) | |
320 Function: Set/get for the obsoleteness of this Term. | |
321 Returns : the obsoleteness [0 or 1]. | |
322 Args : the obsoleteness [0 or 1] (optional). | |
323 | |
324 =cut | |
325 | |
326 sub is_obsolete { | |
327 return shift->term()->is_obsolete(@_); | |
328 } # is_obsolete | |
329 | |
330 =head2 comment | |
331 | |
332 Title : comment | |
333 Usage : $term->comment( "Consider the term ..." ); | |
334 or | |
335 print $term->comment(); | |
336 Function: Set/get for an arbitrary comment about this Term. | |
337 Returns : A comment. | |
338 Args : A comment (optional). | |
339 | |
340 =cut | |
341 | |
342 sub comment { | |
343 return shift->term()->comment(@_); | |
344 } # comment | |
345 | |
346 =head2 get_synonyms | |
347 | |
348 Title : get_synonyms() | |
349 Usage : @aliases = $term->get_synonyms(); | |
350 Function: Returns a list of aliases of this Term. | |
351 Returns : A list of aliases [array of [scalar]]. | |
352 Args : | |
353 | |
354 =cut | |
355 | |
356 sub get_synonyms { | |
357 return shift->term()->get_synonyms(@_); | |
358 } # get_synonyms | |
359 | |
360 =head2 add_synonym | |
361 | |
362 Title : add_synonym | |
363 Usage : $term->add_synonym( @asynonyms ); | |
364 or | |
365 $term->add_synonym( $synonym ); | |
366 Function: Pushes one or more synonyms into the list of synonyms. | |
367 Returns : | |
368 Args : One synonym [scalar] or a list of synonyms [array of [scalar]]. | |
369 | |
370 =cut | |
371 | |
372 sub add_synonym { | |
373 return shift->term()->add_synonym(@_); | |
374 } # add_synonym | |
375 | |
376 | |
377 =head2 remove_synonyms | |
378 | |
379 Title : remove_synonyms() | |
380 Usage : $term->remove_synonyms(); | |
381 Function: Deletes (and returns) the synonyms of this Term. | |
382 Returns : A list of synonyms [array of [scalar]]. | |
383 Args : | |
384 | |
385 =cut | |
386 | |
387 sub remove_synonyms { | |
388 return shift->term()->remove_synonyms(@_); | |
389 } # remove_synonyms | |
390 | |
391 =head2 get_dblinks | |
392 | |
393 Title : get_dblinks() | |
394 Usage : @ds = $term->get_dblinks(); | |
395 Function: Returns a list of each dblinks of this GO term. | |
396 Returns : A list of dblinks [array of [scalars]]. | |
397 Args : | |
398 | |
399 =cut | |
400 | |
401 sub get_dblinks { | |
402 return shift->term->get_dblinks(@_); | |
403 } # get_dblinks | |
404 | |
405 | |
406 =head2 add_dblink | |
407 | |
408 Title : add_dblink | |
409 Usage : $term->add_dblink( @dbls ); | |
410 or | |
411 $term->add_dblink( $dbl ); | |
412 Function: Pushes one or more dblinks | |
413 into the list of dblinks. | |
414 Returns : | |
415 Args : One dblink [scalar] or a list of | |
416 dblinks [array of [scalars]]. | |
417 | |
418 =cut | |
419 | |
420 sub add_dblink { | |
421 return shift->term->add_dblink(@_); | |
422 } # add_dblink | |
423 | |
424 | |
425 =head2 remove_dblinks | |
426 | |
427 Title : remove_dblinks() | |
428 Usage : $term->remove_dblinks(); | |
429 Function: Deletes (and returns) the definition references of this GO term. | |
430 Returns : A list of definition references [array of [scalars]]. | |
431 Args : | |
432 | |
433 =cut | |
434 | |
435 sub remove_dblinks { | |
436 return shift->term->remove_dblinks(@_); | |
437 } # remove_dblinks | |
438 | |
439 =head2 get_secondary_ids | |
440 | |
441 Title : get_secondary_ids | |
442 Usage : @ids = $term->get_secondary_ids(); | |
443 Function: Returns a list of secondary identifiers of this Term. | |
444 | |
445 Secondary identifiers mostly originate from merging terms, | |
446 or possibly also from splitting terms. | |
447 | |
448 Returns : A list of secondary identifiers [array of [scalar]] | |
449 Args : | |
450 | |
451 =cut | |
452 | |
453 sub get_secondary_ids { | |
454 return shift->term->get_secondary_ids(@_); | |
455 } # get_secondary_ids | |
456 | |
457 | |
458 =head2 add_secondary_id | |
459 | |
460 Title : add_secondary_id | |
461 Usage : $term->add_secondary_id( @ids ); | |
462 or | |
463 $term->add_secondary_id( $id ); | |
464 Function: Adds one or more secondary identifiers to this term. | |
465 Returns : | |
466 Args : One or more secondary identifiers [scalars] | |
467 | |
468 =cut | |
469 | |
470 sub add_secondary_id { | |
471 return shift->term->add_secondary_id(@_); | |
472 } # add_secondary_id | |
473 | |
474 | |
475 =head2 remove_secondary_ids | |
476 | |
477 Title : remove_secondary_ids | |
478 Usage : $term->remove_secondary_ids(); | |
479 Function: Deletes (and returns) the secondary identifiers of this Term. | |
480 Returns : The previous list of secondary identifiers [array of [scalars]] | |
481 Args : | |
482 | |
483 =cut | |
484 | |
485 sub remove_secondary_ids { | |
486 return shift->term->remove_secondary_ids(@_); | |
487 } # remove_secondary_ids | |
488 | |
489 | |
490 1; |