annotate variant_effect_predictor/Bio/Ontology/Relationship.pm @ 1:d6778b5d8382 draft default tip

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