NAME
Bio::DasLite - Perl extension for the DAS (HTTP+XML) Protocol (http://biodas.org/)
SYNOPSIS
use Bio::DasLite;
new : Constructor
my $das = Bio::DasLite->new("http://das.ensembl.org/das/ensembl1834");
my $das = Bio::DasLite->new({
'timeout' => 60, # optional timeout in seconds
'dsn' => "http://das.ensembl.org/das/ensembl1834", # optional DSN (scalar, or arrayref)
'http_proxy' => "http://webcache.local.com:3128", # optional http proxy
});
Options can be: dsn (optional scalar or array ref, URLs of DAS services)
timeout (optional int, HTTP fetch timeout in seconds)
http_proxy (optional scalar, web cache or proxy if not set in %ENV)
caching (optional bool, primitive caching on/off)
callback (optional code ref, callback for processed xml blocks)
http_proxy : Get/Set http_proxy
$das->http_proxy("http://squid.myco.com:3128/");
timeout : Get/Set timeout
$das->timeout(30);
caching : Get/Set caching
$das->caching(1);
callback : Get/Set callback code ref
$das->callback(sub { });
basename : Get base URL(s) of service
$das->basename(optional $dsn);
dsn : Get/Set DSN
$das->dsn("http://das.ensembl.org/das/ensembl1834/"); # give dsn (scalar or arrayref) here if not specified in new()
dsns : Retrieve information about other sources served from this server.
Note this call is 'dsns', as differentiated from 'dsn' which is the current configured source
my $src_data = $das->dsns();
entry_points : Retrieve the list of entry_points for this source
e.g. chromosomes and associated information (e.g. sequence length and version)
my $entry_points = $das->entry_points();
Types of argument for 'types', 'features', 'sequence' calls:
Segment Id:
"1"
Segment Id with range:
"1:1,1000"
Segment Id with range and type:
{
'segment' => "1:1,1000",
'type' => 'exon',
}
Multiple Ids with ranges and types:
[
{
'segment' => "1:1,1000",
'type' => 'exon',
},
{
'segment' => "2:1,1000",
'type' => 'exon',
},
]
See DAS specifications for other parameters
types : Find out about different data types available from this source
my $types = $das->types(); # takes optional args - see DAS specs
Retrieve the types of data available for this source
e.g. 32k_cloneset, karyotype, swissprot
features : Retrieve features from a segment
e.g. clones on a chromosome
#########
# Different ways to fetch features -
#
my $feature_data1 = $das->features("1:1,100000");
my $feature_data2 = $das->features(["1:1,100000", "2:20435000,21435000"]);
my $feature_data3 = $das->features({
'segment' => "1:1,1000",
'type' => "karyotype",
# optional args - see DAS Spec
});
my $feature_data4 = $das->features([
{'segment' => "1:1,1000000",'type' => 'karyotype',},
{'segment' => "2:1,1000000",},
]);
#########
# Feature fetch with callback
#
my $callback = sub {
my $struct = shift;
print STDERR Dumper($struct);
};
# then:
$das->callback($callback);
$das->features("1:1,1000000");
# or:
$das->features("1:1,1000000", $callback);
# or:
$das->features(["1:1,1000000", "2:1,1000000", "3:1,1000000"], $callback);
sequence : Retrieve sequence data for a segment (probably dna or protein)
my $sequence = $das->sequence("2:1,1000"); # segment:start,stop (e.g. chromosome 2, bases 1 to 1000)
stylesheet : Retrieve stylesheet data
my $style_data = $das->stylesheet();
my $style_data2 = $das->stylesheet($callback);
statuscodes : Retrieve HTTP status codes for request URLs
my $code = $das->statuscodes($url);
my $code_hashref = $das->statuscodes();
max_req set number of running concurrent requests
$das->max_req(5);
print $das->max_req();
DESCRIPTION
This module is an implementation of a client for the DAS protocol (XML over HTTP primarily for biological-data). It requires LWP::Parallel::UserAgent.
SEE ALSO
DAS Specifications at: http://biodas.org/documents/spec.html
ProServer (A DAS Server implementation) at: http://www.sanger.ac.uk/proserver/
The venerable Bio::Das suite (CPAN and http://www.biodas.org/download/Bio::Das/).
AUTHOR
Roger Pettett, <rmp@sanger.ac.uk>
COPYRIGHT AND LICENSE
Copyright (C) 2005 by Roger Pettett
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.4 or, at your option, any later version of Perl 5 you may have available.