2 # BioPerl module for Bio::Annotation::TypeManager
4 # Please direct questions and support issues to <bioperl-l@bioperl.org>
6 # Cared for by Ewan Birney <birney@ebi.ac.uk>
8 # Copyright Ewan Birney
10 # You may distribute this module under the same terms as perl itself
12 # POD documentation - main docs before the code
16 Bio::Annotation::TypeManager - Manages types for annotation collections
20 # default type manager
22 $tm = Bio::Annotation::TypeManager->new();
24 # $key is a string or a Bio::Ontology::TermI compliant object
25 print "The type for $key is ",$tm->type_for_key($key),"\n";
27 if( !$tm->is_valid($key,$object) ) {
28 $self->throw("Invalid object for key $key");
33 Manages types for annotation collections.
39 User feedback is an integral part of the evolution of this
40 and other Bioperl modules. Send your comments and suggestions preferably
41 to one of the Bioperl mailing lists.
42 Your participation is much appreciated.
48 Please direct usage questions or support issues to the mailing list:
50 I<bioperl-l@bioperl.org>
52 rather than to the module maintainer directly. Many experienced and
53 reponsive experts will be able look at the problem and quickly
54 address it. Please include a thorough description of the problem
55 with code and data examples if at all possible.
59 Report bugs to the Bioperl bug tracking system to help us keep track
60 the bugs and their resolution.
61 Bug reports can be submitted via the web:
63 https://github.com/bioperl/bioperl-live/issues
65 =head1 AUTHOR - Ewan Birney
67 Email birney@ebi.ac.uk
71 The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _
76 # Let the code begin...
79 package Bio
::Annotation
::TypeManager
;
82 # Object preamble - inherits from Bio::Root::Root
86 use base
qw(Bio::Root::Root);
87 # new() can be inherited from Bio::Root::Root
102 my ($class,@args) = @_;
104 my $self = $class->SUPER::new
(@args);
106 $self->{'_type'} = {};
108 $self->_add_type_map('reference',"Bio::Annotation::Reference");
109 $self->_add_type_map('comment',"Bio::Annotation::Comment");
110 $self->_add_type_map('dblink',"Bio::Annotation::DBLink");
129 my ($self,$key) = @_;
131 $key = $key->name() if ref($key) && $key->isa("Bio::Ontology::TermI");
132 return $self->{'_type'}->{$key};
149 my ($self,$key,$object) = @_;
151 if( !defined $object || !ref $object ) {
152 $self->throw("Cannot type an object [$object]!");
155 if( !$object->isa($self->type_for_key($key)) ) {
165 Title : _add_type_map
176 my ($self,$key,$type) = @_;
178 $key = $key->name() if ref($key) && $key->isa("Bio::Ontology::TermI");
179 $self->{'_type'}->{$key} = $type;