Bio::DB
GDB
Summary
Bio::DB::GDB - Database object interface to GDB HTTP query
Package variables
Privates (from "my" definitions)
($len) = ( $text =~ /(\d+\.\d+)/)
$lasttag = ''
$resp = $self->_request(GET $markerurl)
( $tag ) = @_
($name,$primer) = split(/\s+/,$l)
Included modules
HTML::Parser
HTTP::Request::Common
LWP::UserAgent
Inherit
Synopsis
use Bio::DB::GDB;
$gdb = new Bio::DB::GDB;
$info = $gdb->get_info(-type => 'marker',
-id => 'D1S243'); # Marker name
print "genbank id is ", $info->{'gdbid'},
"\nprimers are (fwd, rev) ", join(",", @{$info->{'primers'}}),
"\nproduct length is ", $info->{'length'}, "\n";
Description
This class allows connections to the Genome Database (GDB) and queries
to retrieve any database objects. See
http://www.gdb.org/ or any
mirror for details.
Methods
Methods description
Title : ua Usage : my $ua = $self->ua or $self->ua($ua) Function: Get/Set a LWP::UserAgent for use Returns : reference to LWP::UserAgent Object Args : $ua - must be a LWP::UserAgent |
Title : get_params Usage : my %params = $self->get_params($mode) Function: Returns key,value pairs to be passed to query for mode ('marker', 'gene') Returns : a key,value pair hash Args : 'marker' or 'gene' mode for retrieval |
Title : get_info Usage : my $info = $self->get_info(-type => 'marker', -id => 'D1S234'); Function: Returns key,value pairs specific Returns : a key,value pair hash Args : -type => 'marker' or 'gene' mode for retrieval -id => unique id to query for |
Title : get_request Usage : my $url = $self->get_request Function: HTTP::Request Returns : Args : %qualifiers = a hash of qualifiers (ids, format, etc) |
Methods code
sub new
{ my($class,@args) = @_;
my $self = $class->SUPER::new(@args);
my $ua = new LWP::UserAgent(env_proxy => 1);
$ua->agent(ref($self) ."/$MODVERSION");
$self->ua($ua);
return $self;} |
sub ua
{ my ($self, $ua) = @_;
if( defined $ua && $ua->isa("LWP::UserAgent") ) {
$self->{_ua} = $ua;
}
return $self->{_ua};} |
sub get_params
{ my ($self, $mode) = @_;
return %{$PARAMSTRING{$mode}};} |
sub get_info
{ my ($self, @args) = @_;
my ( $type, $id) = $self->_rearrange([qw(TYPE ID)], @args);
if( !defined $type ) {
$self->throw("Must specify a type you are querying for");
} elsif( !defined $id ) {
$self->throw("Must specify a id to query for");
}
my %params = $self->get_params($type);
$params{'displayName'} = $id;
if( $type eq 'marker' ) {
} elsif( $type eq 'gene' ) {
}
my $url = $self->get_request(%params);
my ($resp) = $self->_request($url);
if( ! defined $resp || ! ref($resp) ) {
$self->warn("Did not get any data for url ". $url->uri);
return;
}
my $content = $resp->content;
if( $content =~ /ERROR/ || length($resp->content) == 0 ) {
$self->warn("Error getting for url " . $url->uri . "!\n");
return;
}
my (@primers, $length, $markerurl, $realname);
my $state = 0;
my $title = 0;
my $p;
$p = new HTML::Parser( api_version => 3,
start_h => [ sub {
return if( $title == 2 || $state == 3);
my($tag,$attr,$text) = @_;
return if( !defined $tag);
if( $tag eq 'table' ) {
$state = 1;
} elsif( $tag eq 'title' ) {
$title = 1;
} elsif( $state == 2 &&
$tag eq 'a' &&
$attr->{'href'} ) {
$state = 3;
if( $text =~ m(href="?(http://.+)"?\s*>) ) {
$markerurl = $1;
}
}
}, "tagname, attr, text" ],} |
sub get_request
{ my ($self, %params) = @_;
if( ! %params ) {
$self->throw("must provide parameters with which to query");
}
my $url = $BASEADDRESS;
my $querystr = '?' . join("&", map { "$_=$params{$_}" } keys %params);
return GET $url . $querystr;} |
sub _request
{
my ($self, $url,$tmpfile) = @_;
my ($resp);
if( defined $tmpfile && $tmpfile ne '' ) {
$resp = $self->ua->request($url, $tmpfile);
} else { $resp = $self->ua->request($url); }
if( $resp->is_error ) {
$self->throw($resp->as_string() . "\nError getting for url " .
$url->uri . "!\n");
return;
}
return $resp;} |
| _gdb_search_tag_start | description | prev | next | Top |
| sub _gdb_search_tag_start
{} |
General documentation
User feedback is an integral part of the
evolution of this and other Bioperl modules. Send
your comments and suggestions preferably to one
of the Bioperl mailing lists. Your participation
is much appreciated.
bioperl-l@bioperl.org - General discussion
http://bioperl.org/wiki/Mailing_lists - About the mailing lists
Report bugs to the Bioperl bug tracking system to help us keep track
the bugs and their resolution. Bug reports can be submitted via the
web:
http://bugzilla.open-bio.org/
| AUTHOR - Jason Stajich | Top |
The rest of the documentation details each of the
object methods. Internal methods are usually
preceded with a _