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