Filename | /Users/ap13/perl5/lib/perl5/Bio/Annotation/TypeManager.pm |
Statements | Executed 5 statements in 304µs |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
1 | 1 | 1 | 15µs | 28µs | BEGIN@80 | Bio::Annotation::TypeManager::
1 | 1 | 1 | 9µs | 82µs | BEGIN@86 | Bio::Annotation::TypeManager::
0 | 0 | 0 | 0s | 0s | _add_type_map | Bio::Annotation::TypeManager::
0 | 0 | 0 | 0s | 0s | is_valid | Bio::Annotation::TypeManager::
0 | 0 | 0 | 0s | 0s | new | Bio::Annotation::TypeManager::
0 | 0 | 0 | 0s | 0s | type_for_key | Bio::Annotation::TypeManager::
Line | State ments |
Time on line |
Calls | Time in subs |
Code |
---|---|---|---|---|---|
1 | # | ||||
2 | # BioPerl module for Bio::Annotation::TypeManager | ||||
3 | # | ||||
4 | # Please direct questions and support issues to <bioperl-l@bioperl.org> | ||||
5 | # | ||||
6 | # Cared for by Ewan Birney <birney@ebi.ac.uk> | ||||
7 | # | ||||
8 | # Copyright Ewan Birney | ||||
9 | # | ||||
10 | # You may distribute this module under the same terms as perl itself | ||||
11 | |||||
12 | # POD documentation - main docs before the code | ||||
13 | |||||
14 | =head1 NAME | ||||
15 | |||||
16 | Bio::Annotation::TypeManager - Manages types for annotation collections | ||||
17 | |||||
18 | =head1 SYNOPSIS | ||||
19 | |||||
20 | # default type manager | ||||
21 | |||||
22 | $tm = Bio::Annotation::TypeManager->new(); | ||||
23 | |||||
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"; | ||||
26 | |||||
27 | if( !$tm->is_valid($key,$object) ) { | ||||
28 | $self->throw("Invalid object for key $key"); | ||||
29 | } | ||||
30 | |||||
31 | =head1 DESCRIPTION | ||||
32 | |||||
33 | Manages types for annotation collections. | ||||
34 | |||||
35 | =head1 FEEDBACK | ||||
36 | |||||
37 | =head2 Mailing Lists | ||||
38 | |||||
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. | ||||
43 | |||||
44 | bioperl-l@bioperl.org | ||||
45 | |||||
46 | =head2 Support | ||||
47 | |||||
48 | Please direct usage questions or support issues to the mailing list: | ||||
49 | |||||
50 | I<bioperl-l@bioperl.org> | ||||
51 | |||||
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. | ||||
56 | |||||
57 | =head2 Reporting Bugs | ||||
58 | |||||
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: | ||||
62 | |||||
63 | https://github.com/bioperl/bioperl-live/issues | ||||
64 | |||||
65 | =head1 AUTHOR - Ewan Birney | ||||
66 | |||||
67 | Email birney@ebi.ac.uk | ||||
68 | |||||
69 | =head1 APPENDIX | ||||
70 | |||||
71 | The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _ | ||||
72 | |||||
73 | =cut | ||||
74 | |||||
75 | |||||
76 | # Let the code begin... | ||||
77 | |||||
78 | |||||
79 | package Bio::Annotation::TypeManager; | ||||
80 | 2 | 28µs | 2 | 41µs | # spent 28µs (15+13) within Bio::Annotation::TypeManager::BEGIN@80 which was called:
# once (15µs+13µs) by Bio::Annotation::Collection::BEGIN@92 at line 80 # spent 28µs making 1 call to Bio::Annotation::TypeManager::BEGIN@80
# spent 13µs making 1 call to strict::import |
81 | |||||
82 | # Object preamble - inherits from Bio::Root::Root | ||||
83 | |||||
- - | |||||
86 | 2 | 273µs | 2 | 154µs | # spent 82µs (9+72) within Bio::Annotation::TypeManager::BEGIN@86 which was called:
# once (9µs+72µs) by Bio::Annotation::Collection::BEGIN@92 at line 86 # spent 82µs making 1 call to Bio::Annotation::TypeManager::BEGIN@86
# spent 72µs making 1 call to base::import |
87 | # new() can be inherited from Bio::Root::Root | ||||
88 | |||||
89 | =head2 new | ||||
90 | |||||
91 | Title : new | ||||
92 | Usage : | ||||
93 | Function: | ||||
94 | Example : | ||||
95 | Returns : | ||||
96 | Args : | ||||
97 | |||||
98 | |||||
99 | =cut | ||||
100 | |||||
101 | sub new{ | ||||
102 | my ($class,@args) = @_; | ||||
103 | |||||
104 | my $self = $class->SUPER::new(@args); | ||||
105 | |||||
106 | $self->{'_type'} = {}; | ||||
107 | |||||
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"); | ||||
111 | |||||
112 | return $self; | ||||
113 | } | ||||
114 | |||||
115 | |||||
116 | =head2 type_for_key | ||||
117 | |||||
118 | Title : type_for_key | ||||
119 | Usage : | ||||
120 | Function: | ||||
121 | Example : | ||||
122 | Returns : | ||||
123 | Args : | ||||
124 | |||||
125 | |||||
126 | =cut | ||||
127 | |||||
128 | sub type_for_key{ | ||||
129 | my ($self,$key) = @_; | ||||
130 | |||||
131 | $key = $key->name() if ref($key) && $key->isa("Bio::Ontology::TermI"); | ||||
132 | return $self->{'_type'}->{$key}; | ||||
133 | } | ||||
134 | |||||
135 | |||||
136 | =head2 is_valid | ||||
137 | |||||
138 | Title : is_valid | ||||
139 | Usage : | ||||
140 | Function: | ||||
141 | Example : | ||||
142 | Returns : | ||||
143 | Args : | ||||
144 | |||||
145 | |||||
146 | =cut | ||||
147 | |||||
148 | sub is_valid{ | ||||
149 | my ($self,$key,$object) = @_; | ||||
150 | |||||
151 | if( !defined $object || !ref $object ) { | ||||
152 | $self->throw("Cannot type an object [$object]!"); | ||||
153 | } | ||||
154 | |||||
155 | if( !$object->isa($self->type_for_key($key)) ) { | ||||
156 | return 0; | ||||
157 | } else { | ||||
158 | return 1; | ||||
159 | } | ||||
160 | } | ||||
161 | |||||
162 | |||||
163 | =head2 _add_type_map | ||||
164 | |||||
165 | Title : _add_type_map | ||||
166 | Usage : | ||||
167 | Function: | ||||
168 | Example : | ||||
169 | Returns : | ||||
170 | Args : | ||||
171 | |||||
172 | |||||
173 | =cut | ||||
174 | |||||
175 | sub _add_type_map{ | ||||
176 | my ($self,$key,$type) = @_; | ||||
177 | |||||
178 | $key = $key->name() if ref($key) && $key->isa("Bio::Ontology::TermI"); | ||||
179 | $self->{'_type'}->{$key} = $type; | ||||
180 | } | ||||
181 | |||||
182 | 1 | 3µs | 1; |