annotate variant_effect_predictor/Bio/DB/Query/GenBank.pm @ 0:1f6dce3d34e0

Uploaded
author mahtabm
date Thu, 11 Apr 2013 02:01:53 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 # $Id: GenBank.pm,v 1.4.2.1 2003/09/09 21:28:52 lstein Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module for Bio::DB::Query::GenBank.pm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 # Cared for by Lincoln Stein <lstein@cshl.org>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 # Copyright Lincoln Stein
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 # You may distribute this module under the same terms as perl itself
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 # POD documentation - main docs before the code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 Bio::DB::Query::GenBank - Build a GenBank Entrez Query
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 my $query_string = 'Oryza[Organism] AND EST[Keyword]';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 my $query = Bio::DB::Query::GenBank->new(-db=>'nucleotide',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 -query=>$query_string,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 -mindate => '2001',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 -maxdate => '2002');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 my $count = $query->count;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 my @ids = $query->ids;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 # get a genbank database handle
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 my $gb = new Bio::DB::GenBank;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 my $stream = $gb->get_Stream_by_query($query);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 while (my $seq = $stream->next_seq) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 ...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 # initialize the list yourself
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 my $query = Bio::DB::Query::GenBank->new(-ids=>[195052,2981014,11127914]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 This class encapsulates NCBI Entrez queries. It can be used to store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 a list of GI numbers, to translate an Entrez query expression into a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 list of GI numbers, or to count the number of terms that would be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 returned by a query. Once created, the query object can be passed to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 a Bio::DB::GenBank object in order to retrieve the entries
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 corresponding to the query.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 User feedback is an integral part of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 evolution of this and other Bioperl modules. Send
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 your comments and suggestions preferably to one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 of the Bioperl mailing lists. Your participation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 http://bioperl.org/MailList.shtml - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 Report bugs to the Bioperl bug tracking system to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 help us keep track the bugs and their resolution.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 Bug reports can be submitted via email or the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 bioperl-bugs@bio.perl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 =head1 AUTHOR - Lincoln Stein
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 Email lstein@cshl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 The rest of the documentation details each of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 object methods. Internal methods are usually
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 # Let the code begin...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 package Bio::DB::Query::GenBank;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 use Bio::DB::Query::WebQuery;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 use URI::Escape 'uri_unescape';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 use constant EPOST => 'http://www.ncbi.nih.gov/entrez/eutils/epost.fcgi';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 use constant ESEARCH => 'http://www.ncbi.nih.gov/entrez/eutils/esearch.fcgi';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 use constant DEFAULT_DB => 'protein';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 use constant MAXENTRY => 100;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 use vars qw(@ISA @ATTRIBUTES $VERSION);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 @ISA = 'Bio::DB::Query::WebQuery';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 $VERSION = '0.2';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 BEGIN {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 @ATTRIBUTES = qw(db reldate mindate maxdate datetype);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 for my $method (@ATTRIBUTES) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 eval <<END;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 sub $method {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 my \$self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 my \$d = \$self->{'_$method'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 \$self->{'_$method'} = shift if \@_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 \$d;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 END
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 Title : new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 Usage : $db = Bio::DB::Query::GenBank->new(@args)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 Function: create new query object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 Returns : new query object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 Args : -db database ('protein' or 'nucleotide')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 -query query string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 -mindate minimum date to retrieve from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 -maxdate maximum date to retrieve from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 -reldate relative date to retrieve from (days)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 -datetype date field to use ('edat' or 'mdat')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 -ids array ref of gids (overrides query)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 This method creates a new query object. Typically you will specify a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 -db and a -query argument, possibly modified by -mindate, -maxdate, or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 -reldate. -mindate and -maxdate specify minimum and maximum dates for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 entries you are interested in retrieving, expressed in the form
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 DD/MM/YYYY. -reldate is used to fetch entries that are more recent
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 than the indicated number of days.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 If you provide an array reference of IDs in -ids, the query will be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 ignored and the list of IDs will be used when the query is passed to a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 Bio::DB::GenBank object's get_Stream_by_query() method. A variety of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 IDs are automatically recognized, including GI numbers, Accession
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 numbers, Accession.version numbers and locus names.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 my $class = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 my $self = $class->SUPER::new(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 my ($db,$reldate,$mindate,$maxdate,$datetype,$ids)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 = $self->_rearrange([qw(DB RELDATE MINDATE MAXDATE DATETYPE IDS)],@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 $self->db($db || DEFAULT_DB);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 $reldate && $self->reldate($reldate);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 $mindate && $self->mindate($mindate);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 $maxdate && $self->maxdate($maxdate);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 $datetype ||= 'mdat';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 $datetype && $self->datetype($datetype);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 =head2 cookie
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 Title : cookie
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 Usage : ($cookie,$querynum) = $db->cookie
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 Function: return the NCBI query cookie
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 Returns : list of (cookie,querynum)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 NOTE: this information is used by Bio::DB::GenBank in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 conjunction with efetch.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 sub cookie {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 if (@_) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 $self->{'_cookie'} = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 $self->{'_querynum'} = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 $self->_run_query;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 @{$self}{qw(_cookie _querynum)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 =head2 _request_parameters
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 Title : _request_parameters
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 Usage : ($method,$base,@params = $db->_request_parameters
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 Function: return information needed to construct the request
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 Returns : list of method, url base and key=>value pairs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 sub _request_parameters {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 my ($method,$base);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 my @params = map {eval("\$self->$_") ? ($_ => eval("\$self->$_")) : () } @ATTRIBUTES;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 push @params,('usehistory'=>'y','tool'=>'bioperl');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 $method = 'get';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 $base = ESEARCH;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 push @params,('term' => $self->query);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 push @params,('retmax' => $self->{'_count'} || MAXENTRY);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 ($method,$base,@params);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 =head2 count
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 Title : count
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 Usage : $count = $db->count;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 Function: return count of number of entries retrieved by query
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 Returns : integer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 Returns the number of entries that are matched by the query.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 sub count {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 if (@_) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 my $d = $self->{'_count'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 $self->{'_count'} = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 return $d;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 $self->_run_query;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 return $self->{'_count'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 =head2 ids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 Title : ids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 Usage : @ids = $db->ids([@ids])
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 Function: get/set matching ids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 Returns : array of sequence ids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 Args : (optional) array ref with new set of ids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 =head2 query
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 Title : query
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 Usage : $query = $db->query([$query])
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 Function: get/set query string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 Returns : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 Args : (optional) new query string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 =head2 _parse_response
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 Title : _parse_response
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 Usage : $db->_parse_response($content)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 Function: parse out response
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 Returns : empty
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 Throws : 'unparseable output exception'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 sub _parse_response {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 my $content = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 if (my ($warning) = $content =~ m!<ErrorList>(.+)</ErrorList>!s) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 warn "Warning(s) from GenBank: $warning\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 if (my ($error) = $content =~ /<OutputMessage>([^<]+)/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 $self->throw("Error from Genbank: $error");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 my ($count) = $content =~ /<Count>(\d+)/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 my ($max) = $content =~ /<RetMax>(\d+)/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 my $truncated = $count > $max;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 $self->count($count);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 if (!$truncated) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 my @ids = $content =~ /<Id>(\d+)/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 $self->ids(\@ids);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 $self->_truncated($truncated);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 my ($cookie) = $content =~ m!<WebEnv>(\S+)</WebEnv>!;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 my ($querykey) = $content =~ m!<QueryKey>(\d+)!;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 $self->cookie(uri_unescape($cookie),$querykey);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 1;