annotate variant_effect_predictor/Bio/DB/Biblio/biofetch.pm @ 0:21066c0abaf5 draft

Uploaded
author willmclaren
date Fri, 03 Aug 2012 10:04:48 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1 # $Id: biofetch.pm,v 1.5 2002/10/22 07:45:14 lapp Exp $
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
3 # BioPerl module Bio::DB::Biblio::biofetch.pm
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
4 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
5 # Cared for by Heikki Lehvaslaiho <heikki@ebi.ac.uk>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
6 # For copyright and disclaimer see below.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
7
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
8 # POD documentation - main docs before the code
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
9
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
10 =head1 NAME
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
11
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
12 Bio::DB::Biblio::biofetch - A BioFetch-based access to a bibliographic
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
13 citation retrieval
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
14
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
15 =head1 SYNOPSIS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
16
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
17 Do not use this object directly, only access it through the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
18 I<Bio::Biblio> module:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
19
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
20 use Bio::Biblio;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
21 my $biblio = new Bio::Biblio (-access => 'biofetch');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
22 my $ref = $biblio->get_by_id('20063307'));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
23
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
24 my $ids = ['20063307', '98276153'];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
25 my $refio = $biblio->get_all($ids);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
26 while ($ref = $refio->next_bibref) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
27 print $ref->identifier, "\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
28 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
29
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
30 =head1 DESCRIPTION
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
31
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
32 This class uses BioFetch protocol based service to retrieve Medline
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
33 references by their ID.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
34
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
35 =head1 FEEDBACK
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
36
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
37 =head2 Mailing Lists
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
38
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
39 User feedback is an integral part of the evolution of this and other
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
40 Bioperl modules. Send your comments and suggestions preferably to
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
41 the Bioperl mailing list. Your participation is much appreciated.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
42
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
43 bioperl-l@bioperl.org - General discussion
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
44 http://bioperl.org/MailList.shtml - About the mailing lists
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
45
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
46 =head2 Reporting Bugs
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
47
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
48 Report bugs to the Bioperl bug tracking system to help us keep track
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
49 of the bugs and their resolution. Bug reports can be submitted via
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
50 email or the web:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
51
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
52 bioperl-bugs@bioperl.org
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
53 http://bugzilla.bioperl.org/
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
54
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
55 =head1 AUTHOR
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
56
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
57 Heikki Lehvaslaiho (heikki@ebi.ac.uk)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
58
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
59 =head1 COPYRIGHT
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
60
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
61 Copyright (c) 2002 European Bioinformatics Institute. All Rights Reserved.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
62
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
63 This module is free software; you can redistribute it and/or modify
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
64 it under the same terms as Perl itself.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
65
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
66 =head1 DISCLAIMER
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
67
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
68 This software is provided "as is" without warranty of any kind.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
69
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
70 =head1 BUGS AND LIMITATIONS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
71
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
72 =over 1
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
73
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
74 =item *
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
75
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
76 Only method get_by_id() is supported.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
77
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
78 =back
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
79
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
80 =head1 APPENDIX
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
81
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
82 The main documentation details are to be found in
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
83 L<Bio::DB::BiblioI>.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
84
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
85 Here is the rest of the object methods. Internal methods are preceded
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
86 with an underscore _.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
87
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
88 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
89
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
90
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
91 # Let the code begin...
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
92
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
93
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
94 package Bio::DB::Biblio::biofetch;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
95 use vars qw(@ISA $VERSION %HOSTS %FORMATMAP $DEFAULTFORMAT
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
96 $Revision $DEFAULT_SERVICE $DEFAULT_NAMESPACE);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
97 use strict;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
98
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
99 use Bio::Biblio;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
100 use Bio::DB::DBFetch;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
101 use Bio::Biblio::IO;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
102
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
103 @ISA = qw( Bio::DB::DBFetch Bio::Biblio);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
104
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
105 BEGIN {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
106
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
107 # set the version for version checking
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
108 $VERSION = do { my @r = (q$Revision: 1.5 $ =~ /\d+/g); sprintf "%d.%-02d", @r };
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
109 $Revision = q$Id: biofetch.pm,v 1.5 2002/10/22 07:45:14 lapp Exp $;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
110
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
111 # you can add your own here theoretically.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
112 %HOSTS = (
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
113 'dbfetch' => {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
114 baseurl => 'http://%s/cgi-bin/dbfetch?db=medline&style=raw',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
115 hosts => {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
116 'ebi' => 'www.ebi.ac.uk'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
117 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
118 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
119 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
120 %FORMATMAP = ( 'default' => 'medlinexml'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
121 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
122 $DEFAULTFORMAT = 'default';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
123
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
124 $DEFAULT_SERVICE = 'http://www.ebi.ac.uk/cgi-bin/dbfetch';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
125
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
126 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
127
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
128
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
129 sub new {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
130 my ($class, @args ) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
131 my $self = $class->SUPER::new(@args);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
132
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
133 $self->{ '_hosts' } = {};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
134 $self->{ '_formatmap' } = {};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
135
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
136 $self->hosts(\%HOSTS);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
137 $self->formatmap(\%FORMATMAP);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
138 $self->{'_default_format'} = $DEFAULTFORMAT;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
139
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
140 return $self;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
141 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
142
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
143 =head2 get_by_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
144
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
145 Title : get_by_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
146 Usage : $entry = $db->get__by_id('20063307')
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
147 Function: Gets a Bio::Biblio::RefI object by its name
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
148 Returns : a Bio::Biblio::Medline object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
149 Args : the id (as a string) of the reference
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
150
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
151 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
152
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
153 sub get_by_id {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
154 my ($self,$id) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
155 my $io = $self->get_Stream_by_id([$id]);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
156 $self->throw("id does not exist") if( !defined $io ) ;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
157 return $io->next_bibref();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
158 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
159
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
160
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
161 =head2 get_all
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
162
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
163 Title : get_all
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
164 Usage : $seq = $db->get_all($ref);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
165 Function: Retrieves reference objects from the server 'en masse',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
166 rather than one at a time. For large numbers of sequences,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
167 this is far superior than get_by_id().
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
168 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
169 Returns : a stream of Bio::Biblio::Medline objects
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
170 Args : $ref : either an array reference, a filename, or a filehandle
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
171 from which to get the list of unique ids/accession numbers.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
172
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
173 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
174
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
175 sub get_all {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
176 my ($self, $ids) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
177 return $self->get_seq_stream('-uids' => $ids, '-mode' => 'single');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
178 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
179
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
180 =head2 get_seq_stream
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
181
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
182 Title : get_seq_stream
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
183 Usage : my $seqio = $self->get_seq_sream(%qualifiers)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
184 Function: builds a url and queries a web db
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
185 Returns : a Bio::SeqIO stream capable of producing sequence
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
186 Args : %qualifiers = a hash qualifiers that the implementing class
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
187 will process to make a url suitable for web querying
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
188
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
189 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
190
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
191 sub get_seq_stream {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
192 my ($self, %qualifiers) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
193 my ($rformat, $ioformat) = $self->request_format();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
194 my $seen = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
195 foreach my $key ( keys %qualifiers ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
196 if( $key =~ /format/i ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
197 $rformat = $qualifiers{$key};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
198 $seen = 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
199 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
200 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
201 $qualifiers{'-format'} = $rformat if( !$seen);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
202 ($rformat, $ioformat) = $self->request_format($rformat);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
203
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
204 my $request = $self->get_request(%qualifiers);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
205 my ($stream,$resp);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
206 if( $self->retrieval_type =~ /temp/i ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
207 my $dir = $self->io()->tempdir( CLEANUP => 1);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
208 my ( $fh, $tmpfile) = $self->io()->tempfile( DIR => $dir );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
209 close $fh;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
210 my ($resp) = $self->_request($request, $tmpfile);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
211 if( ! -e $tmpfile || -z $tmpfile || ! $resp->is_success() ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
212 $self->throw("WebDBSeqI Error - check query sequences!\n");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
213 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
214 $self->postprocess_data('type' => 'file',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
215 'location' => $tmpfile);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
216 # this may get reset when requesting batch mode
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
217 ($rformat,$ioformat) = $self->request_format();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
218 if( $self->verbose > 0 ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
219 open(ERR, "<$tmpfile");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
220 while(<ERR>) { $self->debug($_);}
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
221 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
222 $stream = new Bio::Biblio::IO('-format' => $ioformat,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
223 '-file' => $tmpfile);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
224 } elsif( $self->retrieval_type =~ /io_string/i ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
225 my ($resp) = $self->_request($request);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
226 my $content = $resp->content_ref;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
227 $self->debug( "content is $$content\n");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
228 if( ! $resp->is_success() || length(${$resp->content_ref()}) == 0 ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
229 $self->throw("WebDBSeqI Error - check query sequences!\n");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
230 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
231 ($rformat,$ioformat) = $self->request_format();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
232 $self->postprocess_data('type'=> 'string',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
233 'location' => $content);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
234 $stream = new Bio::Biblio::IO('-format' => $ioformat,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
235 # '-data' => "<tag>". $$content. "</tag>");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
236 '-data' => $$content
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
237 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
238 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
239 $self->throw("retrieval type " . $self->retrieval_type .
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
240 " unsupported\n");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
241 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
242 return $stream;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
243 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
244
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
245
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
246 =head2 postprocess_data
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
247
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
248 Title : postprocess_data
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
249 Usage : $self->postprocess_data ( 'type' => 'string',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
250 'location' => \$datastr);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
251 Function: process downloaded data before loading into a Bio::SeqIO
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
252 Returns : void
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
253 Args : hash with two keys - 'type' can be 'string' or 'file'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
254 - 'location' either file location or string
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
255 reference containing data
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
256
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
257 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
258
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
259 # the default method, works for genbank/genpept, other classes should
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
260 # override it with their own method.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
261
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
262 sub postprocess_data {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
263 my ($self, %args) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
264 my $data;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
265 my $type = uc $args{'type'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
266 my $location = $args{'location'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
267 if( !defined $type || $type eq '' || !defined $location) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
268 return;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
269 } elsif( $type eq 'STRING' ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
270 $data = $$location;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
271 } elsif ( $type eq 'FILE' ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
272 open(TMP, $location) or $self->throw("could not open file $location");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
273 my @in = <TMP>;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
274 close TMP;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
275 $data = join("", @in);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
276 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
277
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
278 $data = "<tag>". $data. "</tag>";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
279
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
280 if( $type eq 'FILE' ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
281 open(TMP, ">$location") or $self->throw("could overwrite file $location");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
282 print TMP $data;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
283 close TMP;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
284 } elsif ( $type eq 'STRING' ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
285 ${$args{'location'}} = $data;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
286 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
287
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
288 $self->debug("format is ". $self->request_format(). " data is $data\n");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
289
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
290 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
291
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
292
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
293
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
294
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
295 =head2 VERSION and Revision
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
296
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
297 Usage : print $Bio::DB::Biblio::biofetch::VERSION;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
298 print $Bio::DB::Biblio::biofetch::Revision;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
299
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
300 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
301
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
302 =head2 Defaults
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
303
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
304 Usage : print $Bio::DB::Biblio::biofetch::DEFAULT_SERVICE;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
305
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
306 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
307
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
308 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
309 __END__