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' => 'GRCh_37,Chromosome,Homo sapiens'}); 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:[email protected]/das/ensembl1834', 'http_proxy' => 'http://user:[email protected]: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 'capability' 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({ 'capability' => ['features'], 'category' => ['Protein Sequence'], });
Options are as above, plus capability OR capabilities (optional arrayref of capabilities) category (optional arrayref of categories)
For a complete list of capabilities and categories, see:
http://das.sanger.ac.uk/registry/
The category can optionally be a full coordinate system name, allowing further restriction by authority, version and species. For example: 'Protein Sequence' OR 'UniProt,Protein Sequence' OR 'GRCh_37,Chromosome,Homo sapiens'
$das->http_proxy('http://user:[email protected]: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();
THIS METHOD IS NOW DEPRECATED AND HAS NO EFFECT
$das->max_hosts(7); print $das->max_hosts();
THIS METHOD IS NOW DEPRECATED AND HAS NO EFFECT
$das->max_req(5); print $das->max_req();
$biodaslite->registry('http://www.dasregistry.org/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 \s-1DAS\s0 requests including parameters for each call
Constructs the WWW::Curl 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 \s-1DAS\s0 protocol (\s-1XML\s0 over \s-1HTTP\s0 primarily for biological-data).
Set $Bio::Das::Lite::DEBUG = 1;
The max_req and max_hosts methods are now deprecated and have no effect.
\s-1DAS\s0 Specifications at: http://biodas.org/documents/spec.html
ProServer (A \s-1DAS\s0 Server implementation also by the author) at:
http://www.sanger.ac.uk/proserver/
The venerable Bio::Das suite (\s-1CPAN\s0 and http://www.biodas.org/download/Bio::Das/).
The \s-1DAS\s0 Registry at:
http://das.sanger.ac.uk/registry/
Roger Pettett, <[email protected]>
Copyright (C) 2007 \s-1GRL\s0, 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.