annotate variant_effect_predictor/Bio/Ontology/Relationship.pm @ 0:2bc9b66ada89 draft default tip

Uploaded
author mahtabm
date Thu, 11 Apr 2013 06:29:17 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1 # $Id: Relationship.pm,v 1.4.2.3 2003/03/27 10:07:56 lapp Exp $
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module for Relationship
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
4 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
5 # Cared for by Christian M. Zmasek <czmasek@gnf.org> or <cmzmasek@yahoo.com>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
6 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
7 # (c) Christian M. Zmasek, czmasek@gnf.org, 2002.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
8 # (c) GNF, Genomics Institute of the Novartis Research Foundation, 2002.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
9 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
10 # You may distribute this module under the same terms as perl itself.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
11 # Refer to the Perl Artistic License (see the license accompanying this
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
12 # software package, or see http://www.perl.com/language/misc/Artistic.html)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
13 # for the terms under which you may use, modify, and redistribute this module.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
14 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
15 # THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
16 # WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
17 # MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
18 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
19 # You may distribute this module under the same terms as perl itself
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
20
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
21 # POD documentation - main docs before the code
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
22
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
23 =head1 NAME
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
24
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
25 Relationship - a relationship for an ontology
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
26
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
27 =head1 SYNOPSIS
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
28
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
29 $rel = Bio::Ontology::Relationship->new( -identifier => "16847",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
30 -subject_term => $subj,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
31 -object_term => $obj,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
32 -predicate_term => $pred );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
33
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
34 =head1 DESCRIPTION
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
35
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
36 This is a basic implementation of Bio::Ontology::RelationshipI.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
37
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
38 The terminology we use here is the one commonly used for ontologies,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
39 namely the triple of (subject, predicate, object), which in addition
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
40 is scoped in a namespace (ontology). It is called triple because it is
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
41 a tuple of three ontology terms.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
42
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
43 There are other terminologies in use for expressing relationships. For
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
44 those who it helps to better understand the concept, the triple of
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
45 (child, relationship type, parent) would be equivalent to the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
46 terminology chosen here, disregarding the question whether the notion
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
47 of parent and child is sensible in the context of the relationship
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
48 type or not. Especially in the case of ontologies with a wide variety
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
49 of predicates the parent/child terminology and similar ones can
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
50 quickly become ambiguous (e.g., A synthesises B), meaningless (e.g., A
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
51 binds B), or even conflicting (e.g., A is-parent-of B), and are
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
52 therefore strongly discouraged.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
53
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
54 =head1 FEEDBACK
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
55
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
56 =head2 Mailing Lists
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
57
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
58 User feedback is an integral part of the evolution of this and other
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
59 Bioperl modules. Send your comments and suggestions preferably to the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
60 Bioperl mailing lists Your participation is much appreciated.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
61
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
62 bioperl-l@bioperl.org - General discussion
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
63 http://bio.perl.org/MailList.html - About the mailing lists
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
64
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
65 =head2 Reporting Bugs
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
66
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
67 report bugs to the Bioperl bug tracking system to help us keep track
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
68 the bugs and their resolution. Bug reports can be submitted via
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
69 email or the web:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
70
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
71 bioperl-bugs@bio.perl.org
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
72 http://bugzilla.bioperl.org/
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
73
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
74 =head1 AUTHOR
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
75
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
76 Christian M. Zmasek
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
77
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
78 Email: czmasek@gnf.org or cmzmasek@yahoo.com
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
79
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
80 WWW: http://www.genetics.wustl.edu/eddy/people/zmasek/
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
81
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
82 Address:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
83
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
84 Genomics Institute of the Novartis Research Foundation
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
85 10675 John Jay Hopkins Drive
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
86 San Diego, CA 92121
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
87
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
88 =head1 CONTRIBUTORS
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
89
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
90 Hilmar Lapp, email: hlapp at gmx.net
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
91
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
92 =head1 APPENDIX
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
93
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
94 The rest of the documentation details each of the object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
95 methods. Internal methods are usually preceded with a _
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
96
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
97 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
98
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
99
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
100 # Let the code begin...
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
101
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
102
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
103 package Bio::Ontology::Relationship;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
104 use vars qw( @ISA );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
105 use strict;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
106 use Bio::Root::Root;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
107 use Bio::Ontology::TermI;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
108 use Bio::Ontology::RelationshipI;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
109
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
110 @ISA = qw( Bio::Root::Root
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
111 Bio::Ontology::RelationshipI );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
112
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
113
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
114
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
115
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
116 =head2 new
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
117
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
118 Title : new
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
119 Usage : $rel = Bio::Ontology::Relationship->new(-identifier => "16847",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
120 -subject_term => $subject,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
121 -object_term => $object,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
122 -predicate_term => $type );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
123 Function: Creates a new Bio::Ontology::Relationship.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
124 Returns : A new Bio::Ontology::Relationship object.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
125 Args : -identifier => the identifier of this relationship [scalar]
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
126 -subject_term => the subject term [Bio::Ontology::TermI]
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
127 -object_term => the object term [Bio::Ontology::TermI]
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
128 -predicate_term => the predicate term [Bio::Ontology::TermI]
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
129
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
130 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
131
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
132 sub new {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
133
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
134 my( $class, @args ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
135
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
136 my $self = $class->SUPER::new( @args );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
137
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
138 my ( $identifier,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
139 $subject_term,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
140 $child, # for backwards compatibility
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
141 $object_term,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
142 $parent, # for backwards compatibility
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
143 $predicate_term,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
144 $reltype, # for backwards compatibility
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
145 $ont)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
146 = $self->_rearrange( [qw( IDENTIFIER
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
147 SUBJECT_TERM
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
148 CHILD_TERM
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
149 OBJECT_TERM
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
150 PARENT_TERM
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
151 PREDICATE_TERM
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
152 RELATIONSHIP_TYPE
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
153 ONTOLOGY)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
154 ], @args );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
155
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
156 $self->init();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
157
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
158 $self->identifier( $identifier );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
159 $subject_term = $child unless $subject_term;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
160 $object_term = $parent unless $object_term;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
161 $predicate_term = $reltype unless $predicate_term;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
162 $self->subject_term( $subject_term) if $subject_term;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
163 $self->object_term( $object_term) if $object_term;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
164 $self->predicate_term( $predicate_term ) if $predicate_term;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
165 $self->ontology($ont) if $ont;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
166
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
167 return $self;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
168
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
169 } # new
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
170
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
171
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
172
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
173 =head2 init
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
174
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
175 Title : init()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
176 Usage : $rel->init();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
177 Function: Initializes this Relationship to all undef.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
178 Returns :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
179 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
180
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
181 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
182
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
183 sub init {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
184 my( $self ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
185
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
186 $self->{ "_identifier" } = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
187 $self->{ "_subject_term" } = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
188 $self->{ "_object_term" } = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
189 $self->{ "_predicate_term" } = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
190 $self->ontology(undef);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
191
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
192 } # init
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
193
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
194
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
195
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
196 =head2 identifier
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
197
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
198 Title : identifier
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
199 Usage : $rel->identifier( "100050" );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
200 or
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
201 print $rel->identifier();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
202 Function: Set/get for the identifier of this Relationship.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
203 Returns : The identifier [scalar].
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
204 Args : The identifier [scalar] (optional).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
205
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
206 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
207
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
208 sub identifier {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
209 my ( $self, $value ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
210
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
211 if ( defined $value ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
212 $self->{ "_identifier" } = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
213 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
214
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
215 return $self->{ "_identifier" };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
216 } # identifier
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
217
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
218
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
219
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
220
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
221 =head2 subject_term
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
222
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
223 Title : subject_term
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
224 Usage : $rel->subject_term( $subject );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
225 or
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
226 $subject = $rel->subject_term();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
227 Function: Set/get for the subject term of this Relationship.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
228
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
229 The common convention for ontologies is to express
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
230 relationships between terms as triples (subject, predicate,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
231 object).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
232
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
233 Returns : The subject term [Bio::Ontology::TermI].
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
234 Args : The subject term [Bio::Ontology::TermI] (optional).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
235
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
236 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
237
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
238 sub subject_term {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
239 my ( $self, $term ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
240
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
241 if ( defined $term ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
242 $self->_check_class( $term, "Bio::Ontology::TermI" );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
243 $self->{ "_subject_term" } = $term;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
244 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
245
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
246 return $self->{ "_subject_term" };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
247
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
248 } # subject_term
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
249
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
250
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
251
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
252 =head2 object_term
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
253
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
254 Title : object_term
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
255 Usage : $rel->object_term( $object );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
256 or
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
257 $object = $rel->object_term();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
258 Function: Set/get for the object term of this Relationship.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
259
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
260 The common convention for ontologies is to express
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
261 relationships between terms as triples (subject, predicate,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
262 object).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
263
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
264 Returns : The object term [Bio::Ontology::TermI].
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
265 Args : The object term [Bio::Ontology::TermI] (optional).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
266
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
267 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
268
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
269 sub object_term {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
270 my ( $self, $term ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
271
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
272 if ( defined $term ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
273 $self->_check_class( $term, "Bio::Ontology::TermI" );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
274 $self->{ "_object_term" } = $term;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
275 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
276
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
277 return $self->{ "_object_term" };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
278 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
279
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
280
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
281
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
282 =head2 predicate_term
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
283
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
284 Title : predicate_term
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
285 Usage : $rel->predicate_term( $type );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
286 or
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
287 $type = $rel->predicate_term();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
288 Function: Set/get for the predicate (relationship type) of this
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
289 relationship.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
290
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
291 The common convention for ontologies is to express
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
292 relationships between terms as triples (subject, predicate,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
293 object).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
294
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
295 Returns : The predicate term [Bio::Ontology::TermI].
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
296 Args : The predicate term [Bio::Ontology::TermI] (optional).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
297
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
298 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
299
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
300 sub predicate_term {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
301 my ( $self, $term ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
302
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
303 if ( defined $term ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
304 $self->_check_class( $term, "Bio::Ontology::TermI" );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
305 $self->{ "_predicate_term" } = $term;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
306 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
307
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
308 return $self->{ "_predicate_term" };
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
309 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
310
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
311
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
312 =head2 ontology
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
313
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
314 Title : ontology
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
315 Usage : $ont = $obj->ontology()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
316 Function: Get/set the ontology that defined this relationship.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
317 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
318 Returns : an object implementing L<Bio::Ontology::OntologyI>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
319 Args : on set, undef or an object implementing
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
320 L<Bio::Ontology::OntologyI> (optional)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
321
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
322
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
323 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
324
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
325 sub ontology{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
326 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
327 my $ont;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
328
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
329 if(@_) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
330 $ont = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
331 if($ont) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
332 $ont = Bio::Ontology::Ontology->new(-name => $ont) if ! ref($ont);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
333 if(! $ont->isa("Bio::Ontology::OntologyI")) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
334 $self->throw(ref($ont)." does not implement ".
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
335 "Bio::Ontology::OntologyI. Bummer.");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
336 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
337 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
338 return $self->{"_ontology"} = $ont;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
339 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
340 return $self->{"_ontology"};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
341 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
342
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
343 =head2 to_string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
344
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
345 Title : to_string()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
346 Usage : print $rel->to_string();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
347 Function: to_string method for Relationship.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
348 Returns : A string representation of this Relationship.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
349 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
350
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
351 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
352
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
353 sub to_string {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
354 my( $self ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
355
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
356 local $^W = 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
357
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
358 my $s = "";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
359
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
360 $s .= "-- Identifier:\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
361 $s .= $self->identifier()."\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
362 $s .= "-- Subject Term Identifier:\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
363 $s .= $self->subject_term()->identifier()."\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
364 $s .= "-- Object Term Identifier:\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
365 $s .= $self->object_term()->identifier()."\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
366 $s .= "-- Relationship Type Identifier:\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
367 $s .= $self->predicate_term()->identifier();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
368
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
369 return $s;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
370
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
371 } # to_string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
372
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
373
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
374
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
375 sub _check_class {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
376 my ( $self, $value, $expected_class ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
377
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
378 if ( ! defined( $value ) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
379 $self->throw( "Found [undef] where [$expected_class] expected" );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
380 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
381 elsif ( ! ref( $value ) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
382 $self->throw( "Found [scalar] where [$expected_class] expected" );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
383 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
384 elsif ( ! $value->isa( $expected_class ) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
385 $self->throw( "Found [" . ref( $value ) . "] where [$expected_class] expected" );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
386 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
387
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
388 } # _check_type
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
389
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
390 #################################################################
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
391 # aliases for backwards compatibility
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
392 #################################################################
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
393
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
394 =head1 Deprecated Methods
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
395
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
396 These methods are deprecated and defined here solely to preserve
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
397 backwards compatibility.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
398
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
399 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
400
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
401 *child_term = \&subject_term;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
402 *parent_term = \&object_term;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
403 *relationship_type = \&predicate_term;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
404
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
405 1;