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