annotate variant_effect_predictor/Bio/Ontology/Ontology.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: Ontology.pm,v 1.2.2.4 2003/03/27 10:07:56 lapp Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module for Bio::Ontology::Ontology
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 # Cared for by Hilmar Lapp <hlapp at gmx.net>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 # Copyright Hilmar Lapp
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 # You may distribute this module under the same terms as perl itself
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12 # (c) Hilmar Lapp, hlapp at gmx.net, 2003.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 # (c) GNF, Genomics Institute of the Novartis Research Foundation, 2003.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 # You may distribute this module under the same terms as perl itself.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 # Refer to the Perl Artistic License (see the license accompanying this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 # software package, or see http://www.perl.com/language/misc/Artistic.html)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18 # for the terms under which you may use, modify, and redistribute this module.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 # THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 # WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 # MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 # POD documentation - main docs before the code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 Bio::Ontology::Ontology - standard implementation of an Ontology
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 use Bio::Ontology::Ontology;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 # create ontology object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 my $ont = Bio::Ontology::Ontology->new(-name => "OBF");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 # add terms, relationships ...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 my $bp = Bio::Ontology::Term->new(-name => "Bioperl");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 my $obf = Bio::Ontology::Term->new(-name => "OBF");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 my $partof = Bio::Ontology::RelationshipType->get_instance("PART_OF");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 $ont->add_term($bp);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 $ont->add_term($obf);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 $ont->add_relationship($bp, $obf, $partof);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 # then query
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 my @terms = $ont->get_root_terms(); # "OBF"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 my @desc = $ont->get_descendant_terms($terms[0], $partof); # "Bioperl"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 # ... see methods for other ways to query
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 # for advanced users, you can re-use the query engine outside of an
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 # ontology to let one instance manage multiple ontologies
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 my $ont2 = Bio::Ontology::Ontology->new(-name => "Foundations",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 -engine => $ont->engine());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 This is a no-frills implementation of L<Bio::Ontology::OntologyI>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 The query functions are implemented by delegation to an
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 OntologyEngineI implementation.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 User feedback is an integral part of the evolution of this and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 Bioperl modules. Send your comments and suggestions preferably to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 the Bioperl mailing list. Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 http://bioperl.org/MailList.shtml - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 Report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 of the bugs and their resolution. Bug reports can be submitted via
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 =head1 AUTHOR - Hilmar Lapp
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 Email hlapp at gmx.net
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 =head1 CONTRIBUTORS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 Additional contributors names and emails here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 The rest of the documentation details each of the object methods.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 Internal methods are usually preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 # Let the code begin...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 package Bio::Ontology::Ontology;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 # Object preamble - inherits from Bio::Root::Root
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 use Bio::Root::Root;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 use Bio::Ontology::OntologyI;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 use Bio::Ontology::SimpleOntologyEngine;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 @ISA = qw(Bio::Root::Root Bio::Ontology::OntologyI);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 Title : new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 Usage : my $obj = new Bio::Ontology::Ontology();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 Function: Builds a new Bio::Ontology::Ontology object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 Returns : an instance of Bio::Ontology::Ontology
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 my($class,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 my $self = $class->SUPER::new(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 my ($name,$auth,$def,$id,$engine) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 $self->_rearrange([qw(NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 AUTHORITY
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 DEFINITION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 IDENTIFIER
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 ENGINE)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 ],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 @args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 defined($name) && $self->name($name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 defined($auth) && $self->authority($auth);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 defined($def) && $self->definition($def);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 defined($id) && $self->identifier($id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 $engine = Bio::Ontology::SimpleOntologyEngine->new() unless $engine;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 $self->engine($engine);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 =head1 Methods from L<Bio::Ontology::OntologyI>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 =head2 name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 Title : name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 Usage : $obj->name($newval)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 Function: Get/set the name of the ontology.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 Returns : value of name (a scalar)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 Args : on set, new value (a scalar or undef, optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 sub name{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 return $self->{'name'} = shift if @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 return $self->{'name'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 =head2 authority
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 Title : authority
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 Usage : $obj->authority($newval)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 Function: Get/set the authority for this ontology, for instance the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 DNS base for the organization granting the name of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 ontology and identifiers for the terms.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 This attribute is optional and should not generally
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 expected by applications to have been set. It is here to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 follow the rules for namespaces, which ontologies serve as
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 for terms.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 Returns : value of authority (a scalar)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 Args : on set, new value (a scalar or undef, optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 sub authority{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 return $self->{'authority'} = shift if @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 return $self->{'authority'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 =head2 definition
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 Title : definition
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 Usage : $obj->definition($newval)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 Function: Get/set a descriptive definition of the ontology.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 Returns : value of definition (a scalar)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 Args : on set, new value (a scalar or undef, optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 sub definition{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 return $self->{'definition'} = shift if @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 return $self->{'definition'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 =head2 identifier
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 Title : identifier
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 Usage : $id = $obj->identifier()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 Function: Get an identifier for this ontology.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 This is primarily intended for look-up purposes. The value
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 is not modifiable and is determined automatically by the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 implementation. Also, the identifier's uniqueness will only
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 hold within the scope of a particular application's run
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 time since it is derived from a memory location.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 Returns : value of identifier (a scalar)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 sub identifier{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 if(@_) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 $self->throw("cannot modify identifier for ".ref($self))
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 if exists($self->{'identifier'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 my $id = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 $self->{'identifier'} = $id if $id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 if(! exists($self->{'identifier'})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 ($self->{'identifier'}) = "$self" =~ /(0x[0-9a-fA-F]+)/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 return $self->{'identifier'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 =head2 close
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 Title : close
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 Usage :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 Function: Release any resources this ontology may occupy. In order
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 to efficiently release unused memory or file handles, you
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 should call this method once you are finished with an
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 ontology.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 Returns : TRUE on success and FALSE otherwise
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 sub close{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 # if it is in the ontology store, remove it from there
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 my $store = Bio::Ontology::OntologyStore->get_instance();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 $store->remove_ontology($self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 # essentially we need to dis-associate from the engine here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 $self->engine(undef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 =head1 Implementation-specific public methods
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 =head2 engine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 Title : engine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 Usage : $engine = $obj->engine()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 Function: Get/set the ontology engine to which all the query methods
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 delegate.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 Returns : an object implementing L<Bio::Ontology::OntologyEngineI>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 Args : on set, new value (an object implementing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 L<Bio::Ontology::OntologyEngineI>, or undef)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 sub engine{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 if(@_) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 my $engine = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 if($engine && (! (ref($engine) &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 $engine->isa("Bio::Ontology::OntologyEngineI")))) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 $self->throw("object of class ".ref($engine)." does not implement".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 " Bio::Ontology::OntologyEngineI. Bummer!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 $self->{'engine'} = $engine;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 return $self->{'engine'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 =head1 Methods defined in L<Bio::Ontology::OntologyEngineI>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 =head2 add_term
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 Title : add_term
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 Usage : add_term(TermI term): TermI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 Function: Adds TermI object to the ontology engine term store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 If the ontology property of the term object was not set,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 this implementation will set it to itself upon adding the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 term.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 Example : $oe->add_term($term)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 Returns : its argument.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 Args : object of class TermI.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 sub add_term{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 my $term = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 # set ontology if not set already
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 $term->ontology($self) if $term && (! $term->ontology());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 return $self->engine->add_term($term,@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 =head2 add_relationship
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 Title : add_relationship
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 Usage : add_relationship(RelationshipI relationship): RelationshipI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 add_relatioship(TermI subject, TermI predicate, TermI object)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 Function: Adds a relationship object to the ontology engine.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 Returns : Its argument.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 Args : A RelationshipI object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 sub add_relationship{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 my $rel = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 if($rel && $rel->isa("Bio::Ontology::TermI")) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 # we need to construct the relationship object on the fly
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 my ($predicate,$object) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 $rel = Bio::Ontology::Relationship->new(-subject_term => $rel,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 -object_term => $object,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 -predicate_term => $predicate,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 -ontology => $self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 # set ontology if not set already
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 $rel->ontology($self) unless $rel->ontology();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 return $self->engine->add_relationship($rel);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 =head2 get_relationships
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 Title : get_relationships
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 Usage : get_relationships(TermI term): RelationshipI[]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 Function: Retrieves all relationship objects in the ontology, or all
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 relationships of a given term.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 Returns : Array of Bio::Ontology::RelationshipI objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 Args : Optionally, a Bio::Ontology::TermI compliant object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 sub get_relationships{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 my $term = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 if($term) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 # we don't need to filter in this case
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 return $self->engine->get_relationships($term);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 # else we need to filter by ontology
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 return grep { my $ont = $_->ontology;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 # the first condition is a superset of the second, but
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 # we add it here for efficiency reasons, as many times
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 # it will short-cut to true and is supposedly faster than
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 # string comparison
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 ($ont == $self) || ($ont->name eq $self->name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 } $self->engine->get_relationships(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 =head2 get_predicate_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 Title : get_predicate_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 Usage : get_predicate_terms(): TermI[]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 Function: Retrieves all relationship types.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 Returns : Array of TermI objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 sub get_predicate_terms{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 return grep { $_->ontology->name eq $self->name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 } $self->engine->get_predicate_terms(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 =head2 get_child_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 Title : get_child_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 Usage : get_child_terms(TermI term, TermI[] predicate_terms): TermI[]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 Function: Retrieves all child terms of a given term, that satisfy a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 relationship among those that are specified in the second
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 argument or undef otherwise. get_child_terms is a special
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 case of get_descendant_terms, limiting the search to the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 direct descendants.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 Note that a returned term may possibly be in another
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 ontology than this one, because the underlying engine may
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 manage multiple ontologies and the relationships of terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 between them. If you only want descendants within this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 ontology, you need to filter the returned array.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 Returns : Array of TermI objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 Args : First argument is the term of interest, second is the list
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 of relationship type terms.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 sub get_child_terms{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 return shift->engine->get_child_terms(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 =head2 get_descendant_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 Title : get_descendant_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 Usage : get_descendant_terms(TermI term, TermI[] rel_types): TermI[]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 Function: Retrieves all descendant terms of a given term, that
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 satisfy a relationship among those that are specified in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 the second argument or undef otherwise.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454 Note that a returned term may possibly be in another
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455 ontology than this one, because the underlying engine may
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 manage multiple ontologies and the relationships of terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 between them. If you only want descendants within this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458 ontology, you need to filter the returned array.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 Returns : Array of TermI objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 Args : First argument is the term of interest, second is the list
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 of relationship type terms.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468 sub get_descendant_terms{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 return shift->engine->get_descendant_terms(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 =head2 get_parent_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 Title : get_parent_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 Usage : get_parent_terms(TermI term, TermI[] predicate_terms): TermI[]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 Function: Retrieves all parent terms of a given term, that satisfy a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 relationship among those that are specified in the second
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 argument or undef otherwise. get_parent_terms is a special
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 case of get_ancestor_terms, limiting the search to the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 direct ancestors.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 Note that a returned term may possibly be in another
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 ontology than this one, because the underlying engine may
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 manage multiple ontologies and the relationships of terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 between them. If you only want descendants within this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486 ontology, you need to filter the returned array.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 Returns : Array of TermI objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 Args : First argument is the term of interest, second is the list
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 of relationship type terms.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 sub get_parent_terms{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 return shift->engine->get_parent_terms(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500 =head2 get_ancestor_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 Title : get_ancestor_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 Usage : get_ancestor_terms(TermI term, TermI[] predicate_terms): TermI[]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504 Function: Retrieves all ancestor terms of a given term, that satisfy
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 a relationship among those that are specified in the second
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 argument or undef otherwise.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 Note that a returned term may possibly be in another
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 ontology than this one, because the underlying engine may
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 manage multiple ontologies and the relationships of terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 between them. If you only want descendants within this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 ontology, you need to filter the returned array.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 Returns : Array of TermI objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516 Args : First argument is the term of interest, second is the list
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 of relationship type terms.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 sub get_ancestor_terms{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523 return shift->engine->get_ancestor_terms(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526 =head2 get_leaf_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528 Title : get_leaf_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529 Usage : get_leaf_terms(): TermI[]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530 Function: Retrieves all leaf terms from the ontology. Leaf term is a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 term w/o descendants.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533 Example : @leaf_terms = $obj->get_leaf_terms()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534 Returns : Array of TermI objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540 sub get_leaf_terms{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542 return grep { my $ont = $_->ontology;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543 # the first condition is a superset of the second, but
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544 # we add it here for efficiency reasons, as many times
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545 # it will short-cut to true and is supposedly faster than
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546 # string comparison
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547 ($ont == $self) || ($ont->name eq $self->name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 } $self->engine->get_leaf_terms(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551 =head2 get_root_terms()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 Title : get_root_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554 Usage : get_root_terms(): TermI[]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 Function: Retrieves all root terms from the ontology. Root term is a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556 term w/o descendants.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558 Example : @root_terms = $obj->get_root_terms()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559 Returns : Array of TermI objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565 sub get_root_terms{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567 return grep { my $ont = $_->ontology;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568 # the first condition is a superset of the second, but
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569 # we add it here for efficiency reasons, as many times
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570 # it will short-cut to true and is supposedly faster than
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571 # string comparison
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572 ($ont == $self) || ($ont->name eq $self->name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573 } $self->engine->get_root_terms(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576 =head2 get_all_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578 Title : get_all_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579 Usage : get_all_terms: TermI[]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580 Function: Retrieves all terms from the ontology.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582 We do not mandate an order here in which the terms are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583 returned. In fact, the default implementation will return
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584 them in unpredictable order.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586 Example : @terms = $obj->get_all_terms()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587 Returns : Array of TermI objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593 sub get_all_terms{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595 return grep { my $ont = $_->ontology;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596 # the first condition is a superset of the second, but
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597 # we add it here for efficiency reasons, as many times
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598 # it will short-cut to true and is supposedly faster than
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599 # string comparison
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600 ($ont == $self) || ($ont->name eq $self->name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601 } $self->engine->get_all_terms(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604 =head2 find_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606 Title : find_terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607 Usage : ($term) = $oe->find_terms(-identifier => "SO:0000263");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608 Function: Find term instances matching queries for their attributes.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
610 An implementation may not support querying for arbitrary
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
611 attributes, but can generally be expected to accept
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
612 -identifier and -name as queries. If both are provided,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
613 they are implicitly intersected.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616 Returns : an array of zero or more Bio::Ontology::TermI objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617 Args : Named parameters. The following parameters should be recognized
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618 by any implementations:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620 -identifier query by the given identifier
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621 -name query by the given name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626 sub find_terms{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628 return grep { $_->ontology->name eq $self->name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629 } $self->engine->find_terms(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632 =head1 Factory for relationships and terms
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636 =head2 relationship_factory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638 Title : relationship_factory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639 Usage : $fact = $obj->relationship_factory()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640 Function: Get (and set, if the engine supports it) the object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641 factory to be used when relationship objects are created by
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642 the implementation on-the-fly.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645 Returns : value of relationship_factory (a Bio::Factory::ObjectFactoryI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646 compliant object)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
647 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
648
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
649
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
650 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
651
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
652 sub relationship_factory{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
653 return shift->engine->relationship_factory(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
654 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
655
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
656 =head2 term_factory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
657
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
658 Title : term_factory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
659 Usage : $fact = $obj->term_factory()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
660 Function: Get (and set, if the engine supports it) the object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
661 factory to be used when term objects are created by
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
662 the implementation on-the-fly.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
663
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
664 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
665 Returns : value of term_factory (a Bio::Factory::ObjectFactoryI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
666 compliant object)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
667 Args :
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 term_factory{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
673 return shift->engine->term_factory(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
674 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
675
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
676
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
677 #################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
678 # aliases
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
679 #################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
680
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
681 *get_relationship_types = \&get_predicate_terms;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
682
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
683 1;