annotate variant_effect_predictor/Bio/DasI.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: DasI.pm,v 1.15 2002/11/11 18:16:29 lapp Exp $
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module for Bio::DasI
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
4 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
5 # Cared for by Lincoln Stein <lstein@cshl.org>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
6 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
7 # Copyright Lincoln Stein
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
8 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
9 # You may distribute this module under the same terms as perl itself
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
10
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
11 # POD documentation - main docs before the code
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
12
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
13 =head1 NAME
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
14
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
15 Bio::DasI - DAS-style access to a feature database
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
16
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
17 =head1 SYNOPSIS
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
18
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
19 # Open up a feature database somehow...
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
20 $db = Bio::DasI->new(@args);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
21
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
22 @segments = $db->segment(-name => 'NT_29921.4',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
23 -start => 1,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
24 -end => 1000000);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
25
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
26 # segments are Bio::Das::SegmentI - compliant objects
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
27
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
28 # fetch a list of features
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
29 @features = $db->features(-type=>['type1','type2','type3']);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
30
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
31 # invoke a callback over features
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
32 $db->features(-type=>['type1','type2','type3'],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
33 -callback => sub { ... }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
34 );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
35
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
36 $stream = $db->get_seq_stream(-type=>['type1','type2','type3']);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
37 while (my $feature = $stream->next_seq) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
38 # each feature is a Bio::SeqFeatureI-compliant object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
39 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
40
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
41 # get all feature types
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
42 @types = $db->types;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
43
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
44 # count types
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
45 %types = $db->types(-enumerate=>1);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
46
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
47 @feature = $db->get_feature_by_name($class=>$name);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
48 @feature = $db->get_feature_by_target($target_name);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
49 @feature = $db->get_feature_by_attribute($att1=>$value1,$att2=>$value2);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
50 $feature = $db->get_feature_by_id($id);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
51
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
52 $error = $db->error;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
53
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
54 =head1 DESCRIPTION
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
55
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
56 Bio::DasI is a simplified alternative interface to sequence annotation
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
57 databases used by the distributed annotation system (see
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
58 L<Bio::Das>). In this scheme, the genome is represented as a series of
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
59 features, a subset of which are named. Named features can be used as
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
60 reference points for retrieving "segments" (see L<Bio::Das::SegmentI>),
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
61 and these can, in turn, be used as the basis for exploring the genome
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
62 further.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
63
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
64 In addition to a name, each feature has a "class", which is
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
65 essentially a namespace qualifier and a "type", which describes what
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
66 type of feature it is. Das uses the GO consortium's ontology of
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
67 feature types, and so the type is actually an object of class
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
68 Bio::Das::FeatureTypeI (see L<Bio::Das::FeatureTypeI>). Bio::DasI
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
69 provides methods for interrogating the database for the types it
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
70 contains and the counts of each type.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
71
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
72 =head1 FEEDBACK
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
73
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
74 =head2 Mailing Lists
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
75
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
76 User feedback is an integral part of the evolution of this and other
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
77 Bioperl modules. Send your comments and suggestions preferably to one
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
78 of the Bioperl mailing lists. Your participation is much appreciated.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
79
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
80 bioperl-l@bio.perl.org
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
81
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
82 =head2 Reporting Bugs
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
83
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
84 Report bugs to the Bioperl bug tracking system to help us keep track
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
85 the bugs and their resolution. Bug reports can be submitted via email
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
86 or the web:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
87
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
88 bioperl-bugs@bio.perl.org
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
89 http://bugzilla.bioperl.org/
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
90
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
91 =head1 AUTHOR - Lincoln Stein
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
92
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
93 Email lstein@cshl.org
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
94
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
95 =head1 APPENDIX
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
96
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
97 The rest of the documentation details each of the object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
98 methods. Internal methods are usually preceded with a _
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
99
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
100 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
101
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
102 #'
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
103 # Let the code begin...
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
104
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
105 package Bio::DasI;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
106 use strict;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
107
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
108 use vars qw(@ISA);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
109 use Bio::Root::RootI;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
110 use Bio::Das::SegmentI;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
111 use Bio::SeqFeature::CollectionI;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
112 # Object preamble - inherits from Bio::Root::Root;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
113 @ISA = qw(Bio::Root::RootI Bio::SeqFeature::CollectionI);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
114
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
115 =head2 new
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
116
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
117 Title : new
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
118 Usage : Bio::DasI->new(@args)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
119 Function: Create new Bio::DasI object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
120 Returns : a Bio::DasI object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
121 Args : see below
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
122
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
123 The new() method creates a new object. The argument list is either a
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
124 single argument consisting of a connection string, or the following
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
125 list of -name=E<gt>value arguments:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
126
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
127 Argument Description
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
128 -------- -----------
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
129
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
130 -dsn Connection string for database
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
131 -adaptor Name of an adaptor class to use when connecting
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
132 -aggregator Array ref containing list of aggregators
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
133 "semantic mappers" to apply to database
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
134 -user Authentication username
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
135 -pass Authentication password
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
136
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
137 Implementors of DasI may add other arguments.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
138
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
139 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
140
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
141 sub new {shift->throw_not_implemented}
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
142
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
143 =head2 types
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
144
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
145 Title : types
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
146 Usage : $db->types(@args)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
147 Function: return list of feature types in database
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
148 Returns : a list of Bio::Das::FeatureTypeI objects
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
149 Args : see below
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
150
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
151 This routine returns a list of feature types known to the database. It
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
152 is also possible to find out how many times each feature occurs.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
153
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
154 Arguments are -option=E<gt>value pairs as follows:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
155
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
156 -enumerate if true, count the features
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
157
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
158 The returned value will be a list of Bio::Das::FeatureTypeI objects
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
159 (see L<Bio::Das::FeatureTypeI>.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
160
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
161 If -enumerate is true, then the function returns a hash (not a hash
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
162 reference) in which the keys are the stringified versions of
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
163 Bio::Das::FeatureTypeI and the values are the number of times each
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
164 feature appears in the database.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
165
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
166 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
167
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
168 sub types { shift->throw_not_implemented; }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
169
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
170 =head2 segment
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
171
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
172 Title : segment
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
173 Usage : $db->segment(@args);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
174 Function: create a segment object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
175 Returns : segment object(s)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
176 Args : see below
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
177
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
178 This method generates a Bio::Das::SegmentI object (see
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
179 L<Bio::Das::SegmentI>). The segment can be used to find overlapping
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
180 features and the raw sequence.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
181
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
182 When making the segment() call, you specify the ID of a sequence
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
183 landmark (e.g. an accession number, a clone or contig), and a
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
184 positional range relative to the landmark. If no range is specified,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
185 then the entire region spanned by the landmark is used to generate the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
186 segment.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
187
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
188 Arguments are -option=E<gt>value pairs as follows:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
189
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
190 -name ID of the landmark sequence.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
191
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
192 -class A namespace qualifier. It is not necessary for the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
193 database to honor namespace qualifiers, but if it
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
194 does, this is where the qualifier is indicated.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
195
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
196 -version Version number of the landmark. It is not necessary for
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
197 the database to honor versions, but if it does, this is
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
198 where the version is indicated.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
199
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
200 -start Start of the segment relative to landmark. Positions
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
201 follow standard 1-based sequence rules. If not specified,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
202 defaults to the beginning of the landmark.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
203
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
204 -end End of the segment relative to the landmark. If not specified,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
205 defaults to the end of the landmark.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
206
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
207 The return value is a list of Bio::Das::SegmentI objects. If the method
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
208 is called in a scalar context and there are no more than one segments
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
209 that satisfy the request, then it is allowed to return the segment.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
210 Otherwise, the method must throw a "multiple segment exception".
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
211
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
212 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
213
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
214 #'
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
215
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
216 sub segment { shift->throw_not_implemented }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
217
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
218 =head2 features
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
219
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
220 Title : features
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
221 Usage : $db->features(@args)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
222 Function: get all features, possibly filtered by type
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
223 Returns : a list of Bio::SeqFeatureI objects
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
224 Args : see below
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
225 Status : public
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
226
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
227 This routine will retrieve features in the database regardless of
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
228 position. It can be used to return all features, or a subset based on
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
229 their type
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
230
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
231 Arguments are -option=E<gt>value pairs as follows:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
232
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
233 -types List of feature types to return. Argument is an array
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
234 of Bio::Das::FeatureTypeI objects or a set of strings
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
235 that can be converted into FeatureTypeI objects.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
236
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
237 -callback A callback to invoke on each feature. The subroutine
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
238 will be passed each Bio::SeqFeatureI object in turn.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
239
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
240 -attributes A hash reference containing attributes to match.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
241
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
242 The -attributes argument is a hashref containing one or more attributes
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
243 to match against:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
244
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
245 -attributes => { Gene => 'abc-1',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
246 Note => 'confirmed' }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
247
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
248 Attribute matching is simple exact string matching, and multiple
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
249 attributes are ANDed together. See L<Bio::DB::ConstraintsI> for a
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
250 more sophisticated take on this.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
251
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
252 If one provides a callback, it will be invoked on each feature in
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
253 turn. If the callback returns a false value, iteration will be
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
254 interrupted. When a callback is provided, the method returns undef.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
255
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
256 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
257
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
258 sub features { shift->throw_not_implemented }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
259
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
260 =head2 get_feature_by_name
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
261
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
262 Title : get_feature_by_name
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
263 Usage : $db->get_feature_by_name(-class=>$class,-name=>$name)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
264 Function: fetch features by their name
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
265 Returns : a list of Bio::SeqFeatureI objects
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
266 Args : the class and name of the desired feature
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
267 Status : public
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
268
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
269 This method can be used to fetch named feature(s) from the database.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
270 The -class and -name arguments have the same meaning as in segment(),
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
271 and the method also accepts the following short-cut forms:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
272
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
273 1) one argument: the argument is treated as the feature name
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
274 2) two arguments: the arguments are treated as the class and name
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
275 (note: this uses _rearrange() so the first argument must not
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
276 begin with a hyphen or it will be interpreted as a named
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
277 argument).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
278
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
279 This method may return zero, one, or several Bio::SeqFeatureI objects.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
280 The implementor may allow the name to contain wildcards, in which case
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
281 standard C-shell glob semantics are expected.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
282
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
283 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
284
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
285 sub get_feature_by_name {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
286 shift->throw_not_implemented();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
287 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
288
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
289 =head2 get_feature_by_target
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
290
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
291 Title : get_feature_by_target
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
292 Usage : $db->get_feature_by_target($class => $name)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
293 Function: fetch features by their similarity target
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
294 Returns : a list of Bio::SeqFeatureI objects
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
295 Args : the class and name of the desired feature
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
296 Status : public
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
297
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
298 This method can be used to fetch a named feature from the database
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
299 based on its similarity hit. The arguments are the same as
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
300 get_feature_by_name(). If this is not implemented, the interface
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
301 defaults to using get_feature_by_name().
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
302
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
303 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
304
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
305 sub get_feature_by_target {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
306 shift->get_feature_by_name(@_);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
307 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
308
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
309 =head2 get_feature_by_id
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
310
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
311 Title : get_feature_by_id
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
312 Usage : $db->get_feature_by_target($id)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
313 Function: fetch a feature by its ID
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
314 Returns : a Bio::SeqFeatureI objects
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
315 Args : the ID of the feature
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
316 Status : public
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
317
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
318 If the database provides unique feature IDs, this can be used to
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
319 retrieve a single feature from the database. If not overridden, this
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
320 interface calls get_feature_by_name() and returns the first element.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
321
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
322 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
323
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
324 sub get_feature_by_id {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
325 (shift->get_feature_by_name(@_))[0];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
326 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
327
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
328 =head2 get_feature_by_attribute
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
329
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
330 Title : get_feature_by_attribute
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
331 Usage : $db->get_feature_by_attribute(attribute1=>value1,attribute2=>value2)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
332 Function: fetch features by combinations of attribute values
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
333 Returns : a list of Bio::SeqFeatureI objects
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
334 Args : the class and name of the desired feature
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
335 Status : public
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
336
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
337 This method can be used to fetch a set of features from the database.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
338 Attributes are a list of name=E<gt>value pairs. They will be
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
339 logically ANDed together. If an attribute value is an array
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
340 reference, the list of values in the array is treated as an
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
341 alternative set of values to be ORed together.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
342
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
343 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
344
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
345 sub get_feature_by_attribute {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
346 shift->throw_not_implemented();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
347 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
348
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
349
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
350 =head2 search_notes
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
351
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
352 Title : search_notes
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
353 Usage : $db->search_notes($search_term,$max_results)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
354 Function: full-text search on features, ENSEMBL-style
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
355 Returns : an array of [$name,$description,$score]
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
356 Args : see below
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
357 Status : public
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
358
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
359 This routine performs a full-text search on feature attributes (which
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
360 attributes depend on implementation) and returns a list of
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
361 [$name,$description,$score], where $name is the feature ID,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
362 $description is a human-readable description such as a locus line, and
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
363 $score is the match strength.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
364
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
365 Since this is a decidedly non-standard thing to do (but the generic
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
366 genome browser uses it), the default method returns an empty list.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
367 You do not have to implement it.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
368
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
369 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
370
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
371 sub search_notes { return }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
372
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
373 =head2 get_seq_stream
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
374
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
375 Title : get_seq_stream
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
376 Usage : $seqio = $db->get_seq_stream(@args)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
377 Function: Performs a query and returns an iterator over it
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
378 Returns : a Bio::SeqIO stream capable of returning Bio::SeqFeatureI objects
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
379 Args : As in features()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
380 Status : public
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
381
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
382 This routine takes the same arguments as features(), but returns a
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
383 Bio::SeqIO::Stream-compliant object. Use it like this:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
384
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
385 $stream = $db->get_seq_stream('exon');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
386 while (my $exon = $stream->next_seq) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
387 print $exon,"\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
388 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
389
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
390 NOTE: In the interface this method is aliased to get_feature_stream(),
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
391 as the name is more descriptive.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
392
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
393 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
394
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
395 sub get_seq_stream { shift->throw_not_implemented }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
396 sub get_feature_stream {shift->get_seq_stream(@_) }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
397
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
398 =head2 refclass
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
399
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
400 Title : refclass
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
401 Usage : $class = $db->refclass
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
402 Function: returns the default class to use for segment() calls
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
403 Returns : a string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
404 Args : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
405 Status : public
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
406
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
407 For data sources which use namespaces to distinguish reference
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
408 sequence accessions, this returns the default namespace (or "class")
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
409 to use. This interface defines a default of "Accession".
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
410
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
411 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
412
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
413 sub refclass { "Accession" }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
414
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
415 1;