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;