annotate variant_effect_predictor/Bio/DB/BioFetch.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: BioFetch.pm,v 1.13.2.1 2003/06/25 13:44:18 heikki Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module for Bio::DB::BioFetch
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 package Bio::DB::BioFetch;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 use Bio::DB::WebDBSeqI;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 use HTTP::Request::Common 'POST';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 Bio::DB::BioFetch - Database object interface to BioFetch retrieval
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 use Bio::DB::BioFetch;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 $bf = new Bio::DB::BioFetch;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 $seq = $sp->get_Seq_by_id('BUM'); # EMBL or SWALL ID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 # change formats, storage procedures
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 $bf = new Bio::DB::BioFetch(-format => 'fasta',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 -retrievaltype => 'tempfile',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 -db => 'EMBL');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 $stream = $bf->get_Stream_by_id(['BUM','J00231']);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 while (my $s = $stream->next_seq) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 print $s->seq,"\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 # get a RefSeq entry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 $bf->db('refseq');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 eval {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 $seq = $bf->get_Seq_by_version('NM_006732.1'); # RefSeq VERSION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 print "accession is ", $seq->accession_number, "\n" unless $@;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 Bio::DB::BioFetch is a guaranteed best effort sequence entry fetching
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 method. It goes to the Web-based dbfetch server located at the EBI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 (http://www.ebi.ac.uk/cgi-bin/dbfetch) to retrieve sequences in the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 EMBL or GenBank sequence repositories.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 This module implements all the Bio::DB::RandomAccessI interface, plus
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 the get_Stream_by_id() and get_Stream_by_acc() methods that are found
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 in the Bio::DB::SwissProt interface.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 User feedback is an integral part of the evolution of this and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 Bioperl modules. Send your comments and suggestions preferably to one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 of the Bioperl mailing lists. Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 http://bio.perl.org/MailList.html - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 Report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 the bugs and their resolution. Bug reports can be submitted via email
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 bioperl-bugs@bio.perl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 =head1 AUTHOR - Lincoln Stein
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 Email Lincoln Stein E<lt>lstein@cshl.orgE<lt>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 Also thanks to Heikki Lehvaslaiho E<lt>heikki@ebi.ac.ukE<gt> for the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 BioFetch server and interface specification.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 The rest of the documentation details each of the object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 methods. Internal methods are usually preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 # Let the code begin...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 use vars qw(@ISA $VERSION %FORMATMAP );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 use Bio::Root::Root;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 @ISA = qw(Bio::DB::WebDBSeqI Bio::Root::Root);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 $VERSION = '1.0';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 # warning: names used here must map into Bio::SeqIO::* space
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 use constant DEFAULT_LOCATION => 'http://www.ebi.ac.uk/cgi-bin/dbfetch';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 BEGIN {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 %FORMATMAP = (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 'embl' => {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 default => 'embl', # default BioFetch format/SeqIOmodule pair
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 embl => 'embl', # alternative BioFetch format/module pair
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 fasta => 'fasta', # alternative BioFetch format/module pair
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 namespace => 'embl',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 'swissprot' => {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 default => 'swiss',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 swissprot => 'swiss',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 fasta => 'fasta',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 namespace => 'swall',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 'refseq' => {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 default => 'genbank',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 genbank => 'genbank',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 fasta => 'fasta',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 namespace => 'RefSeq',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 'swall' => {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 default => 'swiss',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 swissprot => 'swiss',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 fasta => 'fasta',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 namespace => 'swall',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 'genbank' => {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 default => 'genbank',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 genbank => 'genbank',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 namespace => 'genbank',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 'genpep' => {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 default => 'genbank',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 genbank => 'genbank',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 namespace => 'genpep',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 Title : new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 Usage : $bf = Bio::DB::BioFetch->new(@args)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 Function: Construct a new Bio::DB::BioFetch object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 Returns : a Bio::DB::BioFetch object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 Args : see below
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 Throws :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 @args are standard -name=E<gt>value options as listed in the following
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 table. If you do not provide any options, the module assumes reasonable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 defaults.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 Option Value Default
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 ------ ----- -------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 -baseaddress location of dbfetch server http://www.ebi.ac.uk/cgi-bin/dbfetch
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 -retrievaltype "tempfile" or "io_string" io_string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 -format "embl", "fasta", "swissprot", embl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 or "genbank"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 -db "embl", "genbank" or "swissprot" embl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 #'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 my ($class,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 my $self = $class->SUPER::new(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 my ($db) = $self->_rearrange([qw(DB)],@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 $db ||= $self->default_db;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 $self->db($db);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 $self->url_base_address(DEFAULT_LOCATION) unless $self->url_base_address;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 =head2 new_from_registry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 Title : new_from_registry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 Usage : $biofetch = $db->new_from_registry(%config)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 Function: Creates a BioFetch object from the registry config hash
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 Returns : itself
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 Args : A configuration hash (see Registry.pm)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 Throws :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 sub new_from_registry {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 my ($class,%config)=@_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 my $self = $class->SUPER::new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 -BASEADDRESS=>$config{'location'}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 $self->db($config{'dbname'}) if $config{dbname};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 # from Bio::DB::RandomAccessI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 =head2 get_Seq_by_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 Title : get_Seq_by_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 Usage : $seq = $db->get_Seq_by_id('ROA1_HUMAN')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 Function: Gets a Bio::Seq object by its name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 Returns : a Bio::Seq object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 Args : the id (as a string) of a sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 Throws : "id does not exist" exception
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 =head2 get_Seq_by_acc
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 Title : get_Seq_by_acc
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 Usage : $seq = $db->get_Seq_by_acc('X77802');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 Function: Gets a Bio::Seq object by accession number
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 Returns : A Bio::Seq object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 Args : accession number (as a string)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 Throws : "acc does not exist" exception
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 =head2 get_Seq_by_gi
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 Title : get_Seq_by_gi
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 Usage : $seq = $db->get_Seq_by_gi('405830');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 Function: Gets a Bio::Seq object by gi number
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 Returns : A Bio::Seq object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 Args : gi number (as a string)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 Throws : "gi does not exist" exception
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 =head2 get_Seq_by_version
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 Title : get_Seq_by_version
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 Usage : $seq = $db->get_Seq_by_version('X77802.1');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 Function: Gets a Bio::Seq object by sequence version
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 Returns : A Bio::Seq object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 Args : accession.version (as a string)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 Throws : "acc.version does not exist" exception
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 sub get_Seq_by_version {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 my ($self,$seqid) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 return $self->get_Seq_by_acc($seqid);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 =head2 get_Stream_by_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 Title : get_Stream_by_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 Usage : $stream = $db->get_Stream_by_id( [$uid1, $uid2] );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 Function: Gets a series of Seq objects by unique identifiers
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 Returns : a Bio::SeqIO stream object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 Args : $ref : a reference to an array of unique identifiers for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 the desired sequence entries
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 =head2 get_Stream_by_gi
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 Title : get_Stream_by_gi
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 Usage : $seq = $db->get_Seq_by_gi([$gi1, $gi2]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 Function: Gets a series of Seq objects by gi numbers
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 Returns : a Bio::SeqIO stream object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 Args : $ref : a reference to an array of gi numbers for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 the desired sequence entries
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 Note : For GenBank, this just calls the same code for get_Stream_by_id()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 =head2 get_Stream_by_batch
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 Title : get_Stream_by_batch
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 Usage : $seq = $db->get_Stream_by_batch($ref);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 Function: Get a series of Seq objects by their IDs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 Returns : a Bio::SeqIO stream object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 Args : $ref : an array reference containing a list of unique
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 ids/accession numbers.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 In some of the Bio::DB::* moduels, get_Stream_by_id() is called
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 get_Stream_by_batch(). Since there seems to be no consensus, this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 is provided as an alias.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 *get_Stream_by_batch = \&Bio::DB::WebDBSeqI::get_Stream_by_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 =head1 The remainder of these methods are for internal use
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 =head2 get_request
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 Title : get_request
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 Usage : my $url = $self->get_request
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 Function: returns a HTTP::Request object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 Args : %qualifiers = a hash of qualifiers (ids, format, etc)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 sub get_request {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 my ($self, @qualifiers) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 my ($uids, $format) = $self->_rearrange([qw(UIDS FORMAT)],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 @qualifiers);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 my $db = $self->db;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 my $namespace = $self->_namespace;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 $self->throw("Must specify a value for UIDs to fetch")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 unless defined $uids;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 my $tmp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 my $format_string = '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 $format ||= $self->default_format;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 ($format, $tmp) = $self->request_format($format);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 my $base = $self->url_base_address;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 my $uid = join('+', ref $uids ? @$uids : $uids);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 $self->debug("\n$base$format_string&id=$uid\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 return POST($base,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 [ db => $namespace,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 id => join('+',ref $uids ? @$uids : $uids),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 format => $format,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 style => 'raw'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 ]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 =head2 default_format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 Title : default_format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 Usage : $format = $self->default_format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 Function: return the default format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 Returns : a string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 sub default_format {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 return 'default';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 =head2 default_db
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 Title : default_db
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 Usage : $db = $self->default_db
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 Function: return the default database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 Returns : a string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 sub default_db { 'embl' }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 =head2 db
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 Title : db
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 Usage : $db = $self->db([$db])
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 Function: get/set the database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 Returns : a string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 Args : new database
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 sub db {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 if (@_) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 my $db = lc shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 $FORMATMAP{$db} or $self->throw("invalid db [$db], must be one of [".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 join(' ',keys %FORMATMAP). "]");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 $self->{_db} = $db;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 return $self->{_db} || $self->default_db ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 sub _namespace {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 my $db = $self->db;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 return $FORMATMAP{$db}{namespace} or $db;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 =head2 postprocess_data
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 Title : postprocess_data
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 Usage : $self->postprocess_data ( 'type' => 'string',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 'location' => \$datastr);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 Function: process downloaded data before loading into a Bio::SeqIO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 Returns : void
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 Args : hash with two keys - 'type' can be 'string' or 'file'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 - 'location' either file location or string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 reference containing data
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 sub postprocess_data {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 my ($self,%args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 # check for errors in the stream
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 if ($args{'type'} eq 'string') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 my $stringref = $args{'location'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 if ($$stringref =~ /^ERROR (\d+) (.+)/m) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 $self->throw("BioFetch Error $1: $2");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 elsif ($args{'type'} eq 'file') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 open (F,$args{'location'}) or $self->throw("Couldn't open $args{location}: $!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 # this is dumb, but the error may be anywhere on the first three lines because the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 # CGI headers are sometimes printed out by the server...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 my @data = (scalar <F>,scalar <F>,scalar <F>);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 if (join('',@data) =~ /^ERROR (\d+) (.+)/m) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 $self->throw("BioFetch Error $1: $2");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 close F;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 $self->throw("Don't know how to postprocess data of type $args{'type'}");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 =head2 request_format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 Title : request_format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 Usage : my ($req_format, $ioformat) = $self->request_format;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 $self->request_format("genbank");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 $self->request_format("fasta");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 Function: Get/Set sequence format retrieval. The get-form will normally not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 be used outside of this and derived modules.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 Returns : Array of two strings, the first representing the format for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 retrieval, and the second specifying the corresponding SeqIO format.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 Args : $format = sequence format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 sub request_format {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 my ($self, $value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 if ( defined $value ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 my $db = $self->db;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 my $namespace = $self->_namespace;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 my $format = lc $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 print "format:", $format, " module:", $FORMATMAP{$db}->{$format}, " ($namespace)\n"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 if $self->verbose > 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 $self->throw("Invalid format [$format], must be one of [".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 join(' ',keys %{$FORMATMAP{$db}}). "]")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 unless $format eq 'default' || $FORMATMAP{$db}->{$format};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455 $self->{'_format'} = [ $format, $FORMATMAP{$db}->{$format}];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 return @{$self->{'_format'}};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 =head2 Bio::DB::WebDBSeqI methods
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 Overriding WebDBSeqI method to help newbies to retrieve sequences.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 EMBL database is all too often passed RefSeq accessions. This
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 redirects those calls. See L<Bio::DB::RefSeq>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468 =head2 get_Stream_by_acc
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470 Title : get_Stream_by_acc
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 Usage : $seq = $db->get_Seq_by_acc([$acc1, $acc2]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 Function: Gets a series of Seq objects by accession numbers
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 Returns : a Bio::SeqIO stream object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 Args : $ref : a reference to an array of accession numbers for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 the desired sequence entries
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 sub get_Stream_by_acc {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 my ($self, $ids ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 $self->_check_id($ids);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 return $self->get_seq_stream('-uids' => $ids, '-mode' => 'single');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486 =head2 _check_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 Title : _check_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 Usage :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 Function: Throw on whole chromosome NCBI sequences not in sequence databases
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 and redirect RefSeq accession requests sent to EMBL.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 Args : $id(s), $string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 Throws : if accessionn number indicates whole chromosome NCBI sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 sub _check_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 my ($self, $id) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501 # NT contigs can not be retrieved
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 $self->throw("NT_ contigs are whole chromosome files which are not part of regular".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 "database distributions. Go to ftp://ftp.ncbi.nih.gov/genomes/.")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504 if $id =~ /NT_/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 # Asking for a RefSeq from EMBL/GenBank
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 if ($id =~ /N._/ && $self->db ne 'refseq') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 $self->warn("[$id] is not a normal sequence database but a RefSeq entry.".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 " Redirecting the request.\n")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 if $self->verbose >= 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 $self->db('RefSeq');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516 1;