annotate variant_effect_predictor/Bio/Ontology/SimpleOntologyEngine.pm @ 3:d30fa12e4cc5 default tip

Merge heads 2:a5976b2dce6f and 1:09613ce8151e which were created as a result of a recently fixed bug.
author devteam <devteam@galaxyproject.org>
date Mon, 13 Jan 2014 10:38:30 -0500
parents 1f6dce3d34e0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 # $Id: SimpleOntologyEngine.pm,v 1.3.2.5 2003/07/03 00:41:40 lapp Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module for SimpleOntologyEngine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 # Cared for by Peter Dimitrov <dimitrov@gnf.org>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 # Copyright Peter Dimitrov
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 # (c) Peter Dimitrov, dimitrov@gnf.org, 2002.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 # (c) GNF, Genomics Institute of the Novartis Research Foundation, 2002.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 # You may distribute this module under the same terms as perl itself.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12 # Refer to the Perl Artistic License (see the license accompanying this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 # software package, or see http://www.perl.com/language/misc/Artistic.html)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 # for the terms under which you may use, modify, and redistribute this module.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 # THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 # WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18 # MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 # POD documentation - main docs before the code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 SimpleOntologyEngine - Implementation of OntologyEngineI interface
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 my $soe = Bio::Ontology::SimpleOntologyEngine->new;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 This is a "simple" implementation of Bio::Ontology::OntologyEngineI.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 User feedback is an integral part of the evolution of this and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 Bioperl modules. Send your comments and suggestions preferably to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 the Bioperl mailing list. Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 http://bioperl.org/MailList.shtml - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 Report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 of the bugs and their resolution. Bug reports can be submitted via
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 email or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 bioperl-bugs@bioperl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 http://bioperl.org/bioperl-bugs/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 =head1 AUTHOR - Peter Dimitrov
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 Email dimitrov@gnf.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 =head1 CONTRIBUTORS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 Hilmar Lapp, hlapp at gmx.net
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 The rest of the documentation details each of the object methods.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 Internal methods are usually preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 # Let the code begin...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 package Bio::Ontology::SimpleOntologyEngine;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 use Carp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 use Bio::Root::Root;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 use Bio::Ontology::RelationshipFactory;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 use Bio::Ontology::OntologyEngineI;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 use Data::Dumper;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 @ISA = qw( Bio::Root::Root Bio::Ontology::OntologyEngineI );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 Title : new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 Usage : $soe = Bio::Ontology::SimpleOntologyEngine->new;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 Function: Initializes the ontology engine.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 Example : $soe = Bio::Ontology::SimpleOntologyEngine->new;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 Returns : Object of class SimpleOntologyEngine.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 sub new{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 my ($class, @args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 my $self = $class->SUPER::new(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 # my %param = @args;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 $self->_term_store( {} );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 $self->_relationship_store( {} );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 $self->_inverted_relationship_store( {} );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 $self->_relationship_type_store( {} );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 $self->_instantiated_terms_store( {} );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 # set defaults for the factories
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 $self->relationship_factory(Bio::Ontology::RelationshipFactory->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 -type => "Bio::Ontology::Relationship"));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 =head2 _instantiated_terms_store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 Title : _instantiated_terms_store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 Usage : $obj->_instantiated_terms_store($newval)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 Returns : hash
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 Args : empty hash
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 sub _instantiated_terms_store{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 my ($self, $value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 if( defined $value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 $self->{'_instantiated_terms_store'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 return $self->{'_instantiated_terms_store'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 =head2 mark_instantiated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 Title : mark_instantiated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 Usage : $self->mark_instantiated(TermI[] terms): TermI[]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 Function: Marks TermI objects as fully instantiated,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 allowing for proper counting of the number of terms in the term store.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 The TermI objects has to be already stored in the term store in order to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 be marked.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 Example : $self->mark_instantiated($term);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 Returns : its argument or throws an exception if a term is not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 in the term store.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 Args : array of objects of class TermI.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 sub mark_instantiated{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 my ($self, @terms) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 foreach my $term (@terms) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 $self->throw( "term ".$term->identifier." not in the term store\n" )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 if !defined $self->_term_store->{$term->identifier};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 $self->_instantiated_terms_store->{$term->identifier} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 return @terms;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 =head2 mark_uninstantiated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 Title : mark_uninstantiated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 Usage : $self->mark_uninstantiated(TermI[] terms): TermI[]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 Function: Marks TermI objects as not fully instantiated,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 Example : $self->mark_uninstantiated($term);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 Returns : its argument or throws an exception if a term is not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 in the term store(if the term is not marked it does nothing).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 Args : array of objects of class TermI.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 sub mark_uninstantiated{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 my ($self, @terms) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 foreach my $term (@terms) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 $self->throw( "term ".$term->identifier." not in the term store\n" )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 if !defined $self->_term_store->{$term->identifier};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 delete $self->_instantiated_terms_store->{$term->identifier}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 if defined $self->_instantiated_terms_store->{$term->identifier};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 return @terms;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 =head2 _term_store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 Title : term_store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 Usage : $obj->_term_store($newval)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 Returns : reference to an array of Bio::Ontology::TermI objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 Args : reference to an array of Bio::Ontology::TermI objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 sub _term_store{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 my ($self, $value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 if( defined $value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 if ( defined $self->{'_term_store'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 $self->throw("_term_store already defined\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 $self->{'_term_store'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 return $self->{'_term_store'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 =head2 add_term
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 Title : add_term
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 Usage : add_term(TermI term): TermI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 Function: Adds TermI object to the ontology engine term store.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 Marks the term fully instantiated by default.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 Example : $soe->add_term($term)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 Returns : its argument.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 Args : object of class TermI.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 sub add_term{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 my ($self, $term) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 my $term_store = $self->_term_store;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 if ( defined $term_store -> {$term->identifier}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 $self->throw( "term ".$term->identifier." already defined\n" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 $term_store->{$term->identifier} = $term;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 $self->_instantiated_terms_store->{$term->identifier} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 return $term;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 =head2 get_term_by_identifier
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 Title : get_term_by_identifier
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 Usage : get_term_by_identifier(String[] id): TermI[]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 Function: Retrieves terms from the term store by their identifier
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 field, or undef if not there.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 Example : $term = $soe->get_term_by_identifier("IPR000001");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 Returns : An array of zero or more Bio::Ontology::TermI objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 Args : An array of identifier strings
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 sub get_term_by_identifier{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 my ($self, @ids) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 my @ans = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 foreach my $id (@ids) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 my $term = $self->_term_store->{$id};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 push @ans, $term if defined $term;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 return @ans;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 =head2 _get_number_rels
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 Title : get_number_rels
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 Usage :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 sub _get_number_rels{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 my $num_rels = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 foreach my $entry ($self->_relationship_store) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 $num_rels += scalar keys %$entry;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 return $num_rels;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 =head2 _get_number_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 Title : _get_number_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 Usage :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 sub _get_number_terms{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 return scalar $self->_filter_unmarked( values %{$self->_term_store} );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 =head2 _relationship_store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 Title : _storerelationship_store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 Usage : $obj->relationship_store($newval)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 Returns : reference to an array of Bio::Ontology::TermI objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 Args : reference to an array of Bio::Ontology::TermI objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 sub _relationship_store{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 my ($self, $value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 if( defined $value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 if ( defined $self->{'_relationship_store'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 $self->throw("_relationship_store already defined\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 $self->{'_relationship_store'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 return $self->{'_relationship_store'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 =head2 _inverted_relationship_store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 Title : _inverted_relationship_store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 Usage :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 Returns : reference to an array of Bio::Ontology::TermI objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 Args : reference to an array of Bio::Ontology::TermI objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 sub _inverted_relationship_store{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 my ($self, $value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 if( defined $value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 if ( defined $self->{'_inverted_relationship_store'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 $self->throw("_inverted_relationship_store already defined\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 $self->{'_inverted_relationship_store'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 return $self->{'_inverted_relationship_store'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 =head2 _relationship_type_store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 Title : _relationship_type_store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 Usage : $obj->_relationship_type_store($newval)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 Returns : reference to an array of Bio::Ontology::RelationshipType objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 Args : reference to an array of Bio::Ontology::RelationshipType objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 sub _relationship_type_store{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 my ($self, $value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 if( defined $value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 if ( defined $self->{'_relationship_type_store'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 $self->throw("_relationship_type_store already defined\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 $self->{'_relationship_type_store'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 return $self->{'_relationship_type_store'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 =head2 _add_relationship_simple
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 Title : _add_relationship_simple
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 Usage :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 sub _add_relationship_simple{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 my ($self, $store, $rel, $inverted) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 my $parent_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 my $child_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 if ($inverted) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 $parent_id = $rel->subject_term->identifier;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 $child_id = $rel->object_term->identifier;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 $parent_id = $rel->object_term->identifier;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 $child_id = $rel->subject_term->identifier;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 if((defined $store->{$parent_id}->{$child_id}) &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 ($store->{$parent_id}->{$child_id}->name != $rel->predicate_term->name)){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 $self->throw("relationship ".Dumper($rel->predicate_term).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 " between ".$parent_id." and ".$child_id.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 " already defined as ".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 Dumper($store->{$parent_id}->{$child_id})."\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 $store->{$parent_id}->{$child_id} = $rel->predicate_term;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 =head2 add_relationship
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 Title : add_relationship
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 Usage : add_relationship(RelationshipI relationship): RelationshipI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 Function: Adds a relationship object to the ontology engine.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 Returns : Its argument.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 Args : A RelationshipI object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 sub add_relationship{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 my ($self, $rel) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440 $self->_add_relationship_simple($self->_relationship_store,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 $rel, 0);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 $self->_add_relationship_simple($self->_inverted_relationship_store,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 $rel, 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 $self->_relationship_type_store->{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 $self->_unique_termid($rel->predicate_term)} = $rel->predicate_term;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 return $rel;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 =head2 get_relationships
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 Title : get_relationships
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 Usage : get_relationships(): RelationshipI[]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454 Function: Retrieves all relationship objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 Returns : Array of RelationshipI objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 sub get_relationships{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 my $term = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 my @rels;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 my $store = $self->_relationship_store;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 my $relfact = $self->relationship_factory();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 my @parent_ids = $term ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470 # if a term is supplied then only get the term's parents
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 (map { $_->identifier(); } $self->get_parent_terms($term)) :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 # otherwise use all parent ids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 (keys %{$store});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 # add the term as a parent too if one is supplied
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 push(@parent_ids,$term->identifier) if $term;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 foreach my $parent_id (@parent_ids) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 my $parent_entry = $store->{$parent_id};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 # if a term is supplied, add a relationship for the parent to the term
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 # except if the parent is the term itself (we added that one before)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 if($term && ($parent_id ne $term->identifier())) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 my $parent_term = $self->get_term_by_identifier($parent_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 push(@rels,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 $relfact->create_object(-object_term => $parent_term,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486 -subject_term => $term,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 -predicate_term =>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 $parent_entry->{$term->identifier},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 -ontology => $term->ontology()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 # otherwise, i.e., no term supplied, or the parent equals the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 # supplied term
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 my $parent_term = $term ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 $term : $self->get_term_by_identifier($parent_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 foreach my $child_id (keys %$parent_entry) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 my $rel_info = $parent_entry->{$child_id};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501 push(@rels,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 $relfact->create_object(-object_term => $parent_term,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 -subject_term =>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504 $self->get_term_by_identifier(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 $child_id),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 -predicate_term => $rel_info,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507 -ontology =>$parent_term->ontology
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 return @rels;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 =head2 get_all_relationships
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 Title : get_all_relationships
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520 Usage : get_all_relationships(): RelationshipI[]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521 Function: Retrieves all relationship objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523 Returns : Array of RelationshipI objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529 sub get_all_relationships{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530 return shift->get_relationships();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533 =head2 get_predicate_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535 Title : get_predicate_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536 Usage : get_predicate_terms(): TermI[]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537 Function: Retrives all relationship types stored in the engine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539 Returns : reference to an array of Bio::Ontology::RelationshipType objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545 sub get_predicate_terms{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 return values %{$self->_relationship_type_store};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551 =head2 _is_rel_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 Title : _is_rel_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554 Usage :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563 sub _is_rel_type{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564 my ($self, $term, @rel_types) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566 foreach my $rel_type (@rel_types) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567 if($rel_type->identifier || $term->identifier) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568 return 1 if $rel_type->identifier eq $term->identifier;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570 return 1 if $rel_type->name eq $term->name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577 =head2 _typed_traversal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579 Title : _typed_traversal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580 Usage :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589 sub _typed_traversal{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590 my ($self, $rel_store, $level, $term_id, @rel_types) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591 return undef if !defined($rel_store->{$term_id});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592 my %parent_entry = %{$rel_store->{$term_id}};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593 my @children = keys %parent_entry;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595 my @ans;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597 if (@rel_types > 0) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598 @ans = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600 foreach my $child_id (@children) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601 push @ans, $child_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602 if $self->_is_rel_type( $rel_store->{$term_id}->{$child_id},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603 @rel_types);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607 @ans = @children;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609 if ($level < 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
610 my @ans1 = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
611
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
612 foreach my $child_id (@ans) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
613 push @ans1, $self->_typed_traversal($rel_store,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614 $level - 1, $child_id, @rel_types)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615 if defined $rel_store->{$child_id};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617 push @ans, @ans1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620 return @ans;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623 =head2 get_child_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625 Title : get_child_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626 Usage : get_child_terms(TermI term, TermI[] predicate_terms): TermI[]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627 get_child_terms(TermI term, RelationshipType[] predicate_terms): TermI[]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628 Function: Retrieves all child terms of a given term, that satisfy a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629 relationship among those that are specified in the second
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630 argument or undef otherwise. get_child_terms is a special
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631 case of get_descendant_terms, limiting the search to the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632 direct descendants.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635 Returns : Array of TermI objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636 Args : First argument is the term of interest, second is the list of relationship type terms.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641 sub get_child_terms{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642 my ($self, $term, @relationship_types) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644 $self->throw("must provide TermI compliant object")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645 unless defined($term) && $term->isa("Bio::Ontology::TermI");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
647 return $self->_filter_unmarked(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
648 $self->get_term_by_identifier(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
649 $self->_typed_traversal($self->_relationship_store,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
650 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
651 $term->identifier,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
652 @relationship_types) ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
653 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
654
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
655 =head2 get_descendant_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
656
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
657 Title : get_descendant_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
658 Usage : get_descendant_terms(TermI term, TermI[] rel_types): TermI[]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
659 get_child_terms(TermI term, RelationshipType[] predicate_terms): TermI[]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
660 Function: Retrieves all descendant terms of a given term, that
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
661 satisfy a relationship among those that are specified in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
662 the second argument or undef otherwise. Uses
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
663 _typed_traversal to find all descendants.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
664
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
665 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
666 Returns : Array of TermI objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
667 Args : First argument is the term of interest, second is the list of relationship type terms.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
668
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
669
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
670 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
671
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
672 sub get_descendant_terms{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
673 my ($self, $term, @relationship_types) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
674
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
675 $self->throw("must provide TermI compliant object")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
676 unless defined($term) && $term->isa("Bio::Ontology::TermI");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
677
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
678 return $self->_filter_unmarked(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
679 $self->_filter_repeated(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
680 $self->get_term_by_identifier(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
681 $self->_typed_traversal($self->_relationship_store,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
682 0,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
683 $term->identifier,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
684 @relationship_types) ) ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
685 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
686
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
687 =head2 get_parent_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
688
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
689 Title : get_parent_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
690 Usage : get_parent_terms(TermI term, TermI[] predicate_terms): TermI[]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
691 get_child_terms(TermI term, RelationshipType[] predicate_terms): TermI[]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
692 Function: Retrieves all parent terms of a given term, that satisfy a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
693 relationship among those that are specified in the second
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
694 argument or undef otherwise. get_parent_terms is a special
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
695 case of get_ancestor_terms, limiting the search to the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
696 direct ancestors.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
697
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
698 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
699 Returns : Array of TermI objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
700 Args : First argument is the term of interest, second is the list of relationship type terms.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
701
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
702
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
703 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
704
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
705 sub get_parent_terms{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
706 my ($self, $term, @relationship_types) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
707 $self->throw("term must be a valid object, not undef") unless defined $term;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
708
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
709 return $self->_filter_unmarked(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
710 $self->get_term_by_identifier(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
711 $self->_typed_traversal($self->_inverted_relationship_store,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
712 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
713 $term->identifier,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
714 @relationship_types) ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
715 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
716
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
717 =head2 get_ancestor_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
718
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
719 Title : get_ancestor_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
720 Usage : get_ancestor_terms(TermI term, TermI[] predicate_terms): TermI[]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
721 get_child_terms(TermI term, RelationshipType[] predicate_terms): TermI[]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
722 Function: Retrieves all ancestor terms of a given term, that satisfy
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
723 a relationship among those that are specified in the second
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
724 argument or undef otherwise. Uses _typed_traversal to find
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
725 all ancestors.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
726
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
727 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
728 Returns : Array of TermI objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
729 Args : First argument is the term of interest, second is the list
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
730 of relationship type terms.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
731
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
732
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
733 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
734
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
735 sub get_ancestor_terms{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
736 my ($self, $term, @relationship_types) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
737 $self->throw("term must be a valid object, not undef") unless defined $term;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
738
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
739 return $self->_filter_unmarked(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
740 $self->_filter_repeated(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
741 $self->get_term_by_identifier(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
742 $self->_typed_traversal($self->_inverted_relationship_store,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
743 0,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
744 $term->identifier,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
745 @relationship_types) ) ) );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
746 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
747
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
748 =head2 get_leaf_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
749
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
750 Title : get_leaf_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
751 Usage : get_leaf_terms(): TermI[]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
752 Function: Retrieves all leaf terms from the ontology. Leaf term is a term w/o descendants.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
753 Example : @leaf_terms = $obj->get_leaf_terms()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
754 Returns : Array of TermI objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
755 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
756
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
757
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
758 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
759
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
760 sub get_leaf_terms{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
761 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
762 my @leaf_terms;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
763
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
764 foreach my $term (values %{$self->_term_store}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
765 push @leaf_terms, $term
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
766 if !defined $self->_relationship_store->{$term->identifier} &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
767 defined $self->_instantiated_terms_store->{$term->identifier};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
768 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
769
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
770 return @leaf_terms;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
771 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
772
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
773 =head2 get_root_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
774
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
775 Title : get_root_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
776 Usage : get_root_terms(): TermI[]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
777 Function: Retrieves all root terms from the ontology. Root term is a term w/o descendants.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
778 Example : @root_terms = $obj->get_root_terms()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
779 Returns : Array of TermI objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
780 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
781
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
782
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
783 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
784
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
785 sub get_root_terms{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
786 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
787 my @root_terms;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
788
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
789 foreach my $term (values %{$self->_term_store}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
790 push @root_terms, $term
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
791 if !defined $self->_inverted_relationship_store->{$term->identifier} &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
792 defined $self->_instantiated_terms_store->{$term->identifier};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
793 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
794
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
795 return @root_terms;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
796 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
797
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
798 =head2 _filter_repeated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
799
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
800 Title : _filter_repeated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
801 Usage : @lst = $self->_filter_repeated(@old_lst);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
802 Function: Removes repeated terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
803 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
804 Returns : List of unique TermI objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
805 Args : List of TermI objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
806
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
807
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
808 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
809
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
810 sub _filter_repeated{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
811 my ($self, @args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
812 my %h;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
813
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
814 foreach my $element (@args) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
815 $h{$element->identifier} = $element if !defined $h{$element->identifier};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
816 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
817
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
818 return values %h;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
819 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
820
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
821 =head2 get_all_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
822
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
823 Title : get_all_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
824 Usage : get_all_terms(): TermI[]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
825 Function: Retrieves all terms currently stored in the ontology.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
826 Example : @all_terms = $obj->get_all_terms()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
827 Returns : Array of TermI objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
828 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
829
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
830
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
831 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
832
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
833 sub get_all_terms{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
834 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
835
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
836 return $self->_filter_unmarked( values %{$self->_term_store} );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
837 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
838
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
839 =head2 find_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
840
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
841 Title : find_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
842 Usage : ($term) = $oe->find_terms(-identifier => "SO:0000263");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
843 Function: Find term instances matching queries for their attributes.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
844
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
845 This implementation can efficiently resolve queries by
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
846 identifier.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
847
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
848 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
849 Returns : an array of zero or more Bio::Ontology::TermI objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
850 Args : Named parameters. The following parameters should be recognized
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
851 by any implementations:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
852
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
853 -identifier query by the given identifier
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
854 -name query by the given name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
855
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
856
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
857 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
858
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
859 sub find_terms{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
860 my ($self,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
861 my @terms;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
862
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
863 my ($id,$name) = $self->_rearrange([qw(IDENTIFIER NAME)],@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
864
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
865 if(defined($id)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
866 @terms = $self->get_term_by_identifier($id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
867 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
868 @terms = $self->get_all_terms();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
869 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
870 if(defined($name)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
871 @terms = grep { $_->name() eq $name; } @terms;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
872 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
873 return @terms;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
874 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
875
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
876
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
877 =head2 relationship_factory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
878
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
879 Title : relationship_factory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
880 Usage : $fact = $obj->relationship_factory()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
881 Function: Get/set the object factory to be used when relationship
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
882 objects are created by the implementation on-the-fly.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
883
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
884 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
885 Returns : value of relationship_factory (a Bio::Factory::ObjectFactoryI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
886 compliant object)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
887 Args : on set, a Bio::Factory::ObjectFactoryI compliant object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
888
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
889
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
890 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
891
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
892 sub relationship_factory{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
893 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
894
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
895 return $self->{'relationship_factory'} = shift if @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
896 return $self->{'relationship_factory'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
897 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
898
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
899 =head2 term_factory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
900
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
901 Title : term_factory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
902 Usage : $fact = $obj->term_factory()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
903 Function: Get/set the object factory to be used when term objects are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
904 created by the implementation on-the-fly.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
905
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
906 Note that this ontology engine implementation does not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
907 create term objects on the fly, and therefore setting this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
908 attribute is meaningless.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
909
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
910 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
911 Returns : value of term_factory (a Bio::Factory::ObjectFactoryI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
912 compliant object)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
913 Args : on set, a Bio::Factory::ObjectFactoryI compliant object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
914
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
915
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
916 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
917
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
918 sub term_factory{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
919 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
920
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
921 if(@_) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
922 $self->warn("setting term factory, but ".ref($self).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
923 " does not create terms on-the-fly");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
924 return $self->{'term_factory'} = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
925 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
926 return $self->{'term_factory'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
927 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
928
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
929 =head2 _filter_unmarked
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
930
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
931 Title : _filter_unmarked
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
932 Usage : _filter_unmarked(TermI[] terms): TermI[]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
933 Function: Removes the uninstantiated terms from the list of terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
934 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
935 Returns : array of fully instantiated TermI objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
936 Args : array of TermI objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
937
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
938
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
939 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
940
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
941 sub _filter_unmarked{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
942 my ($self, @terms) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
943 my @filtered_terms = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
944
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
945 if ( scalar(@terms) >= 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
946 foreach my $term (@terms) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
947 push @filtered_terms, $term
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
948 if defined $self->_instantiated_terms_store->{$term->identifier};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
949 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
950 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
951
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
952 return @filtered_terms;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
953 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
954
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
955 =head2 remove_term_by_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
956
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
957 Title : remove_term_by_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
958 Usage : remove_term_by_id(String id): TermI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
959 Function: Removes TermI object from the ontology engine using the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
960 string id as an identifier. Current implementation does not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
961 enforce consistency of the relationships using that term.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
962 Example : $term = $soe->remove_term_by_id($id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
963 Returns : Object of class TermI or undef if not found.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
964 Args : The string identifier of a term.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
965
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
966
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
967 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
968
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
969 sub remove_term_by_id{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
970 my ($self, $id) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
971
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
972 if ( $self->get_term_by_identifier($id) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
973 my $term = $self->{_term_store}->{$id};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
974 delete $self->{_term_store}->{$id};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
975 return $term;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
976 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
977 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
978 $self->warn("Term with id '$id' is not in the term store");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
979 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
980 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
981 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
982
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
983 =head2 to_string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
984
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
985 Title : to_string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
986 Usage : print $sv->to_string();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
987 Function: Currently returns formatted string containing the number of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
988 terms and number of relationships from the ontology engine.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
989 Example : print $sv->to_string();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
990 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
991 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
992
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
993
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
994 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
995
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
996 sub to_string{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
997 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
998 my $s = "";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
999
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1000 $s .= "-- # Terms:\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1001 $s .= scalar($self->get_all_terms)."\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1002 $s .= "-- # Relationships:\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1003 $s .= $self->_get_number_rels."\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1004
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1005 return $s;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1006 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1007
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1008 =head2 _unique_termid
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1009
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1010 Title : _unique_termid
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1011 Usage :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1012 Function: Returns a string that can be used as ID using fail-over
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1013 approaches.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1014
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1015 If the identifier attribute is not set, it uses the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1016 combination of name and ontology name, provided both are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1017 set. If they aren't, it returns the name alone.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1018
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1019 Note that this is a private method. Call from inheriting
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1020 classes but not from outside.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1021
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1022 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1023 Returns : a string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1024 Args : a Bio::Ontology::TermI compliant object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1025
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1026
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1027 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1028
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1029 sub _unique_termid{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1030 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1031 my $term = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1032
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1033 return $term->identifier() if $term->identifier();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1034 my $id = $term->ontology->name() if $term->ontology();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1035 if($id) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1036 $id .= '|';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1037 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1038 $id = '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1039 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1040 $id .= $term->name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1041 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1042
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1043
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1044 #################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1045 # aliases
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1046 #################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1047
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1048 *get_relationship_types = \&get_predicate_terms;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1049
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1050 1;