
Bio::Das::Lite - Perl extension for the DAS (HTTP+XML) Protocol (http://biodas.org/)

See $Bio::Das::Lite::VERSION

use Bio::Das::Lite;
my $bdl = Bio::Das::Lite->new_from_registry({'category' => 'Chromosome'});
my $results = $bdl->features('22');

my $das = Bio::Das::Lite->new('http://das.ensembl.org/das/ensembl1834');
my $das = Bio::Das::Lite->new({
'timeout' => 60,
'dsn' => 'http://user:pass@das.ensembl.org/das/ensembl1834',
'http_proxy' => 'http://user:pass@webcache.local.com:3128/',
});
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)
no_proxy (optional list/ref, non-proxiable domains if not set in %ENV)
caching (optional bool, primitive caching on/off)
callback (optional code ref, callback for processed XML blocks)
registry (optional array ref containing DAS registry service URLs
defaults to 'http://das.sanger.ac.uk/registry/services/das')
proxy_user (optional scalar, username for authenticating forward-proxy)
proxy_pass (optional scalar, password for authenticating forward-proxy)
user_agent (optional scalar, User-Agent HTTP request header value)
Similar to 'new' above but supports 'capabilities' and 'category'
in the given hashref, using them to query the DAS registry and
configuring the DSNs accordingly.
my $das = Bio::Das::Lite->new_from_registry({
'capabilities' => ['features'],
'category' => ['Protein Sequence'],
});
Options are as above, plus
capability (optional arrayref of capabilities)
category (optional arrayref of categories)
For a complete list of capabilities and categories, see:
http://das.sanger.ac.uk/registry/
$das->http_proxy('http://user:pass@squid.myco.com:3128/');
This is only required if the username wasn't specified when setting http_proxy
$das->proxy_user('myusername');
This is only required if the password wasn't specified when setting http_proxy
$das->proxy_pass('secretpassword');
$das->no_proxy('ebi.ac.uk', 'localhost');
OR
$das->no_proxy( ['ebi.ac.uk', 'localhost'] );
Always returns an arrayref
$das->user_agent('GroovyDAS/1.0');
$das->timeout(30);
$das->caching(1);
$das->callback(sub { });
$das->basename(optional $dsn);
$das->dsn('http://das.ensembl.org/das/ensembl1834/'); # give dsn (scalar or arrayref) here if not specified in new()
Or, if you want to add to the existing dsn list and you're feeling sneaky...
push @{$das->dsn}, 'http://my.server/das/additionalsource';
Note this call is 'dsns', as differentiated from 'dsn' which is the current configured source my $src_data = $das->dsns();
e.g. chromosomes and associated information (e.g. sequence length and version) my $entry_points = $das->entry_points();
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
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
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',},
{'group_id' => 'OTTHUMG00000036084',},
]);
#########
# 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);
# or:
$das->features([{'group_id' => 'OTTHUMG00000036084'}, '2:1,1000000', '3:1,1000000'], $callback);
my $alignment = $das->alignment({query => 'Q01234'});
my $structure = $das->structure({ query => 'pdb_id'});
my $sources = $das->source;
my $sequence = $das->sequence('2:1,1000'); # segment:start,stop (e.g. chromosome 2, bases 1 to 1000)
my $style_data = $das->stylesheet(); my $style_data2 = $das->stylesheet($callback);
my $code = $das->statuscodes($url); my $code_hashref = $das->statuscodes();
$das->max_hosts(7); print $das->max_hosts();
$das->max_req(5); print $das->max_req();
$biodaslite->registry('http://das.sanger.ac.uk/registry/das');
my $registry_arrayref = $biodaslite->registry();
my $sources_ref = $biodaslite->registry_sources();
my $sources_ref = $biodaslite->registry_sources({
'capability' => ['features','stylesheet'],
});
my $sources_ref = $biodaslite->registry_sources({
'category' => ['Protein Sequence'],
});
Constructs an arrayref of DAS requests including parameters for each call
Constructs the LWP::P::UA callbacks
Applies processing to the result set, e.g. removal of whitespace from sequence responses.

This module is an implementation of a client for the DAS protocol (XML over HTTP primarily for biological-data).

LWP::Parallel::UserAgent HTTP::Request HTTP::Headers SOAP::Lite Carp English

Set $Bio::Das::Lite::DEBUG = 1;


Versions of LWP from 5.816 onwards (at time of writing upto 5.820) break LWP::Parallel and therefore Bio::Das::Lite. It is recommended to use version 5.814 of LWP.


DAS Specifications at: http://biodas.org/documents/spec.html
ProServer (A DAS Server implementation also by the author) at: http://www.sanger.ac.uk/proserver/
The venerable Bio::Das suite (CPAN and http://www.biodas.org/download/Bio::Das/).
The DAS Registry at: http://das.sanger.ac.uk/registry/

Roger Pettett, <rpettett@cpan.org>

Copyright (C) 2007 GRL, 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.