annotate variant_effect_predictor/Bio/DB/GDB.pm @ 2:a5976b2dce6f

changing defualt values for ensembl database
author mahtabm
date Thu, 11 Apr 2013 17:15:42 +1000
parents 1f6dce3d34e0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 # $Id: GDB.pm,v 1.12 2002/12/01 00:05:19 jason Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module for Bio::DB::GenBank
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 # Cared for by Jason Stajich <jason@bioperl.org>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 # Copyright Jason Stajich
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 # You may distribute this module under the same terms as perl itself
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 # POD documentation - main docs before the code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 Bio::DB::GDB - Database object interface to GDB HTTP query
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 $gdb = new Bio::DB::GDB;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 $info = $gdb->get_info(-type=>'marker',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 -id=>'D1S243'); # Marker name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 print "genbank id is ", $info->{'gdbid'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 "\nprimers are (fwd, rev) ", join(",", @{$info->{'primers'}}),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 "\nproduct length is ", $info->{'length'}, "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 This class allows connections to the Genome Database (GDB) and queries
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 to retrieve any database objects. See http://www.gdb.org/ or any
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 mirror for details.
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
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 evolution of this and other Bioperl modules. Send
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 your comments and suggestions preferably to one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 of the Bioperl mailing lists. Your participation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 http://bioperl.org/MailList.shtml - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 Report bugs to the Bioperl bug tracking system to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 help us keep track the bugs and their resolution.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 Bug reports can be submitted via email or the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 bioperl-bugs@bio.perl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 =head1 AUTHOR - Jason Stajich
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 Email jason@bioperl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 The rest of the documentation details each of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 object methods. Internal methods are usually
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 # Let the code begin...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 package Bio::DB::GDB;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 use Bio::Root::Root;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 use LWP::UserAgent;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 use HTTP::Request::Common;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 use HTML::Parser;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 use vars qw(@ISA $BASEADDRESS %PARAMSTRING $MODVERSION);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 @ISA = qw(Bio::Root::Root);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 $MODVERSION = '0.01';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 $BASEADDRESS = 'http://www.gdb.org/gdb-bin/genera/genera/hgd/GenomicSegment';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 %PARAMSTRING = (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 gene => { '!action' => 'query' },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 marker => { '!action' => 'query' },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 # the new way to make modules a little more lightweight
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 my($class,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 my $self = $class->SUPER::new(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 my $ua = new LWP::UserAgent;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 $ua->agent(ref($self) ."/$MODVERSION");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 $self->ua($ua);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 =head2 ua
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 Title : ua
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 Usage : my $ua = $self->ua or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 $self->ua($ua)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 Function: Get/Set a LWP::UserAgent for use
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 Returns : reference to LWP::UserAgent Object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 Args : $ua - must be a LWP::UserAgent
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 sub ua {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 my ($self, $ua) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 if( defined $ua && $ua->isa("LWP::UserAgent") ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 $self->{_ua} = $ua;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 return $self->{_ua};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 # helper method to get specific options
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 =head2 get_params
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 Title : get_params
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 Usage : my %params = $self->get_params($mode)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 Function: Returns key,value pairs to be passed to query
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 for mode ('marker', 'gene')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 Returns : a key,value pair hash
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 Args : 'marker' or 'gene' mode for retrieval
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 sub get_params {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 my ($self, $mode) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 return %{$PARAMSTRING{$mode}};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 =head2 get_info
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 Title : get_info
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 Usage : my $info = $self->get_info(-type => 'marker',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 -id => 'D1S234');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 Function: Returns key,value pairs specific
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 Returns : a key,value pair hash
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 Args : -type => 'marker' or 'gene' mode for retrieval
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 -id => unique id to query for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 sub get_info {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 my ($self, @args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 my ( $type, $id) = $self->_rearrange([qw(TYPE ID)], @args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 if( !defined $type ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 $self->throw("Must specify a type you are querying for");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 } elsif( !defined $id ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 $self->throw("Must specify a id to query for");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 my %params = $self->get_params($type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 $params{'displayName'} = $id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 if( $type eq 'marker' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 # do more specific stuff?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 } elsif( $type eq 'gene' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 # do more specific stuff?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 my $url = $self->get_request(%params);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 my ($resp) = $self->_request($url);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 if( ! defined $resp || ! ref($resp) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 $self->warn("Did not get any data for url ". $url->uri);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 my $content = $resp->content;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 if( $content =~ /ERROR/ || length($resp->content) == 0 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 $self->warn("Error getting for url " . $url->uri . "!\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 my (@primers, $length, $markerurl, $realname);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 my $state = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 my $title = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 my $p;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 $p = new HTML::Parser( api_version => 3,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 start_h => [ sub {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 return if( $title == 2 || $state == 3);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 my($tag,$attr,$text) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 return if( !defined $tag);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 if( $tag eq 'table' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 $state = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 } elsif( $tag eq 'title' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 $title = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 } elsif( $state == 2 &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 $tag eq 'a' &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 $attr->{'href'} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 $state = 3;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 if( $text =~ m(href="?(http://.+)"?\s*>) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 $markerurl = $1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 }, "tagname, attr, text" ],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 end_h => [ sub {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 return if ($title == 2 || $state == 3);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 my ( $tag ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 $title = 0 if( $tag eq 'title' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 }, "tagname" ],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 text_h => [ sub {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 return if( $title == 2 || $state == 3);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 my($text) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 if( $title && $text =~ /Amplimer/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 $markerurl = 'this';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 $title = 2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 $state = 2 if( $state == 1 && $text =~ /Amplimer/);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 }, "text" ],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 marked_sections =>1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 $p->parse($content) or die "Can't open: $!";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 if( ! defined $markerurl ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 @primers = ('notfound','notfound', '?');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 } elsif( $markerurl eq 'this' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 my $resp = $self->_request(GET $markerurl);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 return undef if ( !defined $resp );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 $content = $resp->content();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 $state = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 $realname = 'unknown';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 my $lasttag = '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 $p = HTML::Parser->new(api_version => 3,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 start_h => [ sub { my ($tag) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 $tag = lc $tag;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 $lasttag = $tag;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 if( $state == 3 && $tag eq 'dd' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 $state = 4;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 } , 'tagname'],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 text_h => [ sub {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 my($text) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 if( $text =~ /Primer Sequence/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 $state =1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 } elsif( $state == 1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 foreach my $l ( split(/\n+/,$text) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 $l =~ s/\s+(\S+)/$1/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 my ($name,$primer) = split(/\s+/,$l);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 next if( !defined $name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 push @primers, $primer;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 $state = 2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 } elsif( $state == 2 &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 ($text =~ /Seq Min Len/i ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 $text =~ /Seq Max Len/i) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 $state = 3;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 } elsif ( $state == 4 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 my ($len) = ( $text =~ /(\d+\.\d+)/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 $length = $len;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 $length *= 1000 if( $len < 1 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 $state = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 } elsif( $lasttag eq 'dd' &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 $text =~ /(GDB:\d+)/i ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 $realname = $1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 } , "text" ],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 marked_sections =>1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 $p->parse($content) || die "Can't open: $!";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 return { 'gdbid' => $realname, 'length' => $length, 'primers' => \@primers };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 =head2 get_request
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 Title : get_request
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 Usage : my $url = $self->get_request
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 Function: HTTP::Request
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 Args : %qualifiers = a hash of qualifiers (ids, format, etc)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 sub get_request {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 my ($self, %params) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 if( ! %params ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 $self->throw("must provide parameters with which to query");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 my $url = $BASEADDRESS;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 my $querystr = '?' . join("&", map { "$_=$params{$_}" } keys %params);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 return GET $url . $querystr;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 # private methods
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 sub _request {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 my ($self, $url,$tmpfile) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 my ($resp);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 if( defined $tmpfile && $tmpfile ne '' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 $resp = $self->ua->request($url, $tmpfile);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 } else { $resp = $self->ua->request($url); }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 if( $resp->is_error ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 $self->warn($resp->as_string() . "\nError getting for url " .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 $url->uri . "!\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 return $resp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 sub _gdb_search_tag_start {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 __END__