← Index
NYTProf Performance Profile   « block view • line view • sub view »
For bin/pan_genome_post_analysis
  Run on Fri Mar 27 11:43:32 2015
Reported on Fri Mar 27 11:45:27 2015

Filename/Users/ap13/perl5/lib/perl5/Bio/Annotation/TypeManager.pm
StatementsExecuted 5 statements in 304µs
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
11115µs28µsBio::Annotation::TypeManager::::BEGIN@80Bio::Annotation::TypeManager::BEGIN@80
1119µs82µsBio::Annotation::TypeManager::::BEGIN@86Bio::Annotation::TypeManager::BEGIN@86
0000s0sBio::Annotation::TypeManager::::_add_type_mapBio::Annotation::TypeManager::_add_type_map
0000s0sBio::Annotation::TypeManager::::is_validBio::Annotation::TypeManager::is_valid
0000s0sBio::Annotation::TypeManager::::newBio::Annotation::TypeManager::new
0000s0sBio::Annotation::TypeManager::::type_for_keyBio::Annotation::TypeManager::type_for_key
Call graph for these subroutines as a Graphviz dot language file.
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
16Bio::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
33Manages types for annotation collections.
34
35=head1 FEEDBACK
36
37=head2 Mailing Lists
38
39User feedback is an integral part of the evolution of this
40and other Bioperl modules. Send your comments and suggestions preferably
41 to one of the Bioperl mailing lists.
42Your participation is much appreciated.
43
44 bioperl-l@bioperl.org
45
46=head2 Support
47
48Please direct usage questions or support issues to the mailing list:
49
50I<bioperl-l@bioperl.org>
51
52rather than to the module maintainer directly. Many experienced and
53reponsive experts will be able look at the problem and quickly
54address it. Please include a thorough description of the problem
55with code and data examples if at all possible.
56
57=head2 Reporting Bugs
58
59Report bugs to the Bioperl bug tracking system to help us keep track
60the bugs and their resolution.
61Bug reports can be submitted via the web:
62
63 https://github.com/bioperl/bioperl-live/issues
64
65=head1 AUTHOR - Ewan Birney
66
67Email birney@ebi.ac.uk
68
69=head1 APPENDIX
70
71The 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
79package Bio::Annotation::TypeManager;
80228µs241µ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
use strict;
# 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
- -
862273µs2154µ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
use base qw(Bio::Root::Root);
# 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
101sub 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
128sub 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
148sub 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
175sub _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
18213µs1;