comparison variant_effect_predictor/Bio/Ontology/InterProTerm.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: InterProTerm.pm,v 1.4.2.2 2003/03/25 12:32:16 heikki Exp $
2 #
3 # BioPerl module for Bio::Ontology::InterProTerm
4 #
5 # Cared for by Peter Dimitrov <dimitrov@gnf.org>
6 #
7 # Copyright Peter Dimitrov
8 # (c) Peter Dimitrov, dimitrov@gnf.org, 2002.
9 # (c) GNF, Genomics Institute of the Novartis Research Foundation, 2002.
10 #
11 # You may distribute this module under the same terms as perl itself.
12 # Refer to the Perl Artistic License (see the license accompanying this
13 # software package, or see http://www.perl.com/language/misc/Artistic.html)
14 # for the terms under which you may use, modify, and redistribute this module.
15 #
16 # THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
17 # WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
18 # MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
19 #
20 # POD documentation - main docs before the code
21
22 =head1 NAME
23
24 InterProTerm - Implementation of InterProI term interface
25
26 =head1 SYNOPSIS
27
28 my $term = Bio::Ontology::InterProTerm->new( -interpro_id => "IPR000001",
29 -name => "Kringle",
30 -definition => "Kringles are autonomous structural domains ...",
31 -ontology => "Domain"
32 );
33 print $term->interpro_id(), "\n";
34 print $term->name(), "\n";
35 print $term->definition(), "\n";
36 print $term->is_obsolete(), "\n";
37 print $term->ontology->name(), "\n";
38
39 =head1 DESCRIPTION
40
41 This is a simple extension of L<Bio::Ontology::Term> for InterPro terms.
42
43 =head1 FEEDBACK
44
45 =head2 Mailing Lists
46
47 User feedback is an integral part of the evolution of this and other
48 Bioperl modules. Send your comments and suggestions preferably to
49 the Bioperl mailing list. Your participation is much appreciated.
50
51 bioperl-l@bioperl.org - General discussion
52 http://bioperl.org/MailList.shtml - About the mailing lists
53
54 =head2 Reporting Bugs
55
56 Report bugs to the Bioperl bug tracking system to help us keep track
57 of the bugs and their resolution. Bug reports can be submitted via
58 email or the web:
59
60 bioperl-bugs@bioperl.org
61 http://bugzilla.bioperl.org/
62
63 =head1 AUTHOR - Peter Dimitrov
64
65 Email dimitrov@gnf.org
66
67 =head1 CONTRIBUTORS
68
69 Additional contributors names and emails here
70
71 =head1 APPENDIX
72
73 The rest of the documentation details each of the object methods.
74 Internal methods are usually preceded with a _
75
76 =cut
77
78
79 # Let the code begin...
80
81
82 package Bio::Ontology::InterProTerm;
83 use vars qw(@ISA);
84 use strict;
85
86 use Bio::Ontology::Term;
87 use Bio::Annotation::Reference;
88
89 use constant INTERPRO_ID_DEFAULT => "IPR000000";
90
91 @ISA = qw( Bio::Ontology::Term );
92
93 =head2 new
94
95 Title : new
96 Usage : $term = Bio::Ontology::InterProTerm->new( -interpro_id => "IPR000002",
97 -name => "Cdc20/Fizzy",
98 -definition => "The Cdc20/Fizzy region is almost always ...",
99 -ontology => "Domain"
100 );
101
102 Function: Creates a new Bio::Ontology::InterProTerm.
103 Example :
104 Returns : A new Bio::Ontology::InterProTerm object.
105 Args :
106 -interpro_id => the InterPro ID of the term. Has the form IPRdddddd, where dddddd is a zero-padded six digit number
107 -name => the name of this InterPro term [scalar]
108 -definition => the definition/abstract of this InterPro term [scalar]
109 -ontology => ontology of InterPro terms [Bio::Ontology::OntologyI]
110 -comment => a comment [scalar]
111
112 =cut
113
114 sub new{
115 my ($class, @args) = @_;
116 my $self = $class->SUPER::new(@args);
117
118 my ( $interpro_id,
119 $short_name)
120 = $self->_rearrange( [qw( INTERPRO_ID
121 SHORT_NAME
122 )
123 ], @args );
124
125 $interpro_id && $self->interpro_id( $interpro_id );
126 $short_name && $self->short_name( $short_name );
127
128 return $self;
129 }
130
131 =head2 init
132
133 Title : init
134 Usage : $term->init();
135 Function: Initializes this InterProTerm to all "" and empty lists.
136 Example :
137 Returns :
138 Args :
139
140
141 =cut
142
143 sub init{
144 my $self = shift;
145
146 # first call the inherited version to properly chain up the hierarchy
147 $self->SUPER::init(@_);
148
149 # then only initialize what we implement ourselves here
150 $self->interpro_id( INTERPRO_ID_DEFAULT );
151 $self->short_name("");
152
153 }
154
155 =head2 _check_interpro_id
156
157 Title : _check_interpro_id
158 Usage :
159 Function: Performs simple check in order to validate that its argument has the form IPRdddddd, where dddddd is a zero-padded six digit number.
160 Example :
161 Returns : Returns its argument if valid, otherwise throws exception.
162 Args : String
163
164
165 =cut
166
167 sub _check_interpro_id{
168 my ($self, $value) = @_;
169
170 $self->throw( "InterPro ID ".$value." is incorrect\n" )
171 unless ( $value =~ /^IPR\d{6}$/ ||
172 $value eq INTERPRO_ID_DEFAULT );
173
174 return $value;
175 }
176
177 =head2 interpro_id
178
179 Title : interpro_id
180 Usage : $obj->interpro_id($newval)
181 Function: Set/get for the interpro_id of this InterProTerm
182 Example :
183 Returns : value of interpro_id (a scalar)
184 Args : new value (a scalar, optional)
185
186
187 =cut
188
189 sub interpro_id{
190 my ($self, $value) = @_;
191
192 if( defined $value) {
193 $value = $self->_check_interpro_id($value);
194 }
195
196 return $self->identifier($value);
197 }
198
199 =head2 short_name
200
201 Title : short_name
202 Usage : $obj->short_name($newval)
203 Function: Set/get for the short name of this InterProTerm.
204 Example :
205 Returns : value of short_name (a scalar)
206 Args : new value (a scalar, optional)
207
208
209 =cut
210
211 sub short_name{
212 my ($self, $value) = @_;
213
214 if( defined $value) {
215 $self->{'short_name'} = $value ? $value : undef;
216 }
217
218 return $self->{'short_name'};
219 }
220
221 =head2 protein_count
222
223 Title : protein_count
224 Usage : $obj->protein_count($newval)
225 Function: Set/get for the protein count of this InterProTerm.
226 Example :
227 Returns : value of protein_count (a scalar)
228 Args : new value (a scalar, optional)
229
230
231 =cut
232
233 sub protein_count{
234 my ($self,$value) = @_;
235
236 if( defined $value) {
237 $self->{'protein_count'} = $value ? $value : undef;
238 }
239
240 return $self->{'protein_count'};
241 }
242
243 =head2 get_references
244
245 Title : get_references
246 Usage :
247 Function: Get the references for this InterPro term.
248 Example :
249 Returns : An array of L<Bio::Annotation::Reference> objects
250 Args :
251
252
253 =cut
254
255 sub get_references{
256 my $self = shift;
257
258 return @{$self->{"_references"}} if exists($self->{"_references"});
259 return ();
260 }
261
262 =head2 add_reference
263
264 Title : add_reference
265 Usage :
266 Function: Add one or more references to this InterPro term.
267 Example :
268 Returns :
269 Args : One or more L<Bio::Annotation::Reference> objects.
270
271
272 =cut
273
274 sub add_reference{
275 my $self = shift;
276
277 $self->{"_references"} = [] unless exists($self->{"_references"});
278 push(@{$self->{"_references"}}, @_);
279 }
280
281 =head2 remove_references
282
283 Title : remove_references
284 Usage :
285 Function: Remove all references for this InterPro term.
286 Example :
287 Returns : The list of previous references as an array of
288 L<Bio::Annotation::Reference> objects.
289 Args :
290
291
292 =cut
293
294 sub remove_references{
295 my $self = shift;
296
297 my @arr = $self->get_references();
298 $self->{"_references"} = [];
299 return @arr;
300 }
301
302 =head2 get_members
303
304 Title : get_members
305 Usage : @arr = get_members()
306 Function: Get the list of member(s) for this object.
307 Example :
308 Returns : An array of Bio::Annotation::DBLink objects
309 Args :
310
311
312 =cut
313
314 sub get_members{
315 my $self = shift;
316
317 return @{$self->{'_members'}} if exists($self->{'_members'});
318 return ();
319 }
320
321 =head2 add_member
322
323 Title : add_member
324 Usage :
325 Function: Add one or more member(s) to this object.
326 Example :
327 Returns :
328 Args : One or more Bio::Annotation::DBLink objects.
329
330
331 =cut
332
333 sub add_member{
334 my $self = shift;
335
336 $self->{'_members'} = [] unless exists($self->{'_members'});
337 push(@{$self->{'_members'}}, @_);
338 }
339
340 =head2 remove_members
341
342 Title : remove_members
343 Usage :
344 Function: Remove all members for this class.
345 Example :
346 Returns : The list of previous members as an array of
347 Bio::Annotation::DBLink objects.
348 Args :
349
350
351 =cut
352
353 sub remove_members{
354 my $self = shift;
355
356 my @arr = $self->get_members();
357 $self->{'_members'} = [];
358 return @arr;
359 }
360
361 =head2 get_examples
362
363 Title : get_examples
364 Usage : @arr = get_examples()
365 Function: Get the list of example(s) for this object.
366
367 This is an element of the InterPro xml schema.
368
369 Example :
370 Returns : An array of Bio::Annotation::DBLink objects
371 Args :
372
373
374 =cut
375
376 sub get_examples{
377 my $self = shift;
378
379 return @{$self->{'_examples'}} if exists($self->{'_examples'});
380 return ();
381 }
382
383 =head2 add_example
384
385 Title : add_example
386 Usage :
387 Function: Add one or more example(s) to this object.
388
389 This is an element of the InterPro xml schema.
390
391 Example :
392 Returns :
393 Args : One or more Bio::Annotation::DBLink objects.
394
395
396 =cut
397
398 sub add_example{
399 my $self = shift;
400
401 $self->{'_examples'} = [] unless exists($self->{'_examples'});
402 push(@{$self->{'_examples'}}, @_);
403 }
404
405 =head2 remove_examples
406
407 Title : remove_examples
408 Usage :
409 Function: Remove all examples for this class.
410
411 This is an element of the InterPro xml schema.
412
413 Example :
414 Returns : The list of previous examples as an array of
415 Bio::Annotation::DBLink objects.
416 Args :
417
418
419 =cut
420
421 sub remove_examples{
422 my $self = shift;
423
424 my @arr = $self->get_examples();
425 $self->{'_examples'} = [];
426 return @arr;
427 }
428
429 =head2 get_external_documents
430
431 Title : get_external_documents
432 Usage : @arr = get_external_documents()
433 Function: Get the list of external_document(s) for this object.
434
435 This is an element of the InterPro xml schema.
436
437 Example :
438 Returns : An array of Bio::Annotation::DBLink objects
439 Args :
440
441
442 =cut
443
444 sub get_external_documents{
445 my $self = shift;
446
447 return @{$self->{'_external_documents'}} if exists($self->{'_external_documents'});
448 return ();
449 }
450
451 =head2 add_external_document
452
453 Title : add_external_document
454 Usage :
455 Function: Add one or more external_document(s) to this object.
456
457 This is an element of the InterPro xml schema.
458
459 Example :
460 Returns :
461 Args : One or more Bio::Annotation::DBLink objects.
462
463
464 =cut
465
466 sub add_external_document{
467 my $self = shift;
468
469 $self->{'_external_documents'} = [] unless exists($self->{'_external_documents'});
470 push(@{$self->{'_external_documents'}}, @_);
471 }
472
473 =head2 remove_external_documents
474
475 Title : remove_external_documents
476 Usage :
477 Function: Remove all external_documents for this class.
478
479 This is an element of the InterPro xml schema.
480
481 Example :
482 Returns : The list of previous external_documents as an array of
483 Bio::Annotation::DBLink objects.
484 Args :
485
486
487 =cut
488
489 sub remove_external_documents{
490 my $self = shift;
491
492 my @arr = $self->get_external_documents();
493 $self->{'_external_documents'} = [];
494 return @arr;
495 }
496
497 =head2 class_list
498
499 Title : class_list
500 Usage : $obj->class_list($newval)
501 Function: Set/get for class list element of the InterPro xml schema
502 Example :
503 Returns : reference to an array of Bio::Annotation::DBLink objects
504 Args : reference to an array of Bio::Annotation::DBLink objects
505
506
507 =cut
508
509 sub class_list{
510 my ($self, $value) = @_;
511
512 if( defined $value) {
513 $self->{'class_list'} = $value;
514 }
515
516 return $self->{'class_list'};
517 }
518
519 =head2 to_string
520
521 Title : to_string()
522 Usage : print $term->to_string();
523 Function: to_string method for InterPro terms.
524 Returns : A string representation of this InterPro term.
525 Args :
526
527 =cut
528
529 sub to_string {
530 my($self) = @_;
531 my $s = "";
532
533 $s .= "-- InterPro id:\n";
534 $s .= $self->interpro_id()."\n";
535 if (defined $self->name) {
536 $s .= "-- Name:\n";
537 $s .= $self->name()."\n";
538 $s .= "-- Definition:\n";
539 $s .= $self->definition()."\n";
540 $s .= "-- Category:\n";
541 if ( defined( $self->ontology() ) ) {
542 $s .= $self->ontology()->name()."\n";
543 } else {
544 $s .= "\n";
545 }
546 $s .= "-- Version:\n";
547 $s .= $self->version()."\n";
548 $s .= "-- Is obsolete:\n";
549 $s .= $self->is_obsolete()."\n";
550 $s .= "-- Comment:\n";
551 $s .= $self->comment()."\n";
552 if (defined $self->references) {
553 $s .= "-- References:\n";
554 foreach my $ref ( @{$self->references} ) {
555 $s .= $ref->authors."\n".$ref->title."\n".$ref->location."\n\n";
556 };
557 $s .= "\n";
558 }
559 if (defined $self->member_list) {
560 $s .= "-- Member List:\n";
561 foreach my $ref ( @{$self->member_list} ) {
562 $s .= $ref->database."\t".$ref->primary_id."\n";
563 };
564 $s .= "\n";
565 }
566 if (defined $self->external_doc_list) {
567 $s .= "-- External Document List:\n";
568 foreach my $ref ( @{$self->external_doc_list} ) {
569 $s .= $ref->database."\t".$ref->primary_id."\n";
570 };
571 $s .= "\n";
572 }
573 if (defined $self->examples) {
574 $s .= "-- Examples:\n";
575 foreach my $ref ( @{$self->examples} ) {
576 $s .= $ref->database."\t".$ref->primary_id."\t".$ref->comment."\n";
577 };
578 $s .= "\n";
579 }
580 if (defined $self->class_list) {
581 $s .= "-- Class List:\n";
582 foreach my $ref ( @{$self->class_list} ) {
583 $s .= $ref->primary_id."\n";
584 };
585 $s .= "\n";
586 }
587 if ($self->get_secondary_ids) {
588 $s .= "-- Secondary IDs:\n";
589 foreach my $ref ( $self->get_secondary_ids() ) {
590 $s .= $ref."\n";
591 };
592 $s .= "\n";
593 }
594 }
595 else {
596 $s .= "InterPro term not fully instantiated\n";
597 }
598 return $s;
599 }
600
601 =head1 Deprecated methods
602
603 These are here for backwards compatibility.
604
605 =cut
606
607 =head2 secondary_ids
608
609 Title : secondary_ids
610 Usage : $obj->secondary_ids($newval)
611 Function: This is deprecated. Use get_secondary_ids() or
612 add_secondary_id() instead.
613 Example :
614 Returns : reference to an array of strings
615 Args : reference to an array of strings
616
617
618 =cut
619
620 sub secondary_ids{
621 my $self = shift;
622 my @ids;
623
624 $self->warn("secondary_ids is deprecated. Use ".
625 "get_secondary_ids/add_secondary_id instead.");
626
627 # set mode?
628 if(@_) {
629 my $sids = shift;
630 if($sids) {
631 $self->add_secondary_id(@$sids);
632 @ids = @$sids;
633 } else {
634 # we interpret setting to undef as removing the array
635 $self->remove_secondary_ids();
636 }
637 } else {
638 # no; get mode
639 @ids = $self->get_secondary_ids();
640 }
641 return \@ids;
642 }
643
644 1;