Bio::Das::Lite(3pm)

πŸ“¦
version 2.11 Β· 2 versions
, in debian bookworm, ubuntu jammy, ubuntu noble

πŸ’– Bio::Das::Lite πŸ’–

okay so bestie, meet Bio::Das::Lite β€” a Perl extension for the DAS (HTTP+XML) Protocol and yes it's over at http://biodas.org/ πŸ¦‹


✨ VERSION ✨

See $Bio::Das::Lite::VERSION πŸ‘‘


🌸 SYNOPSIS 🌸

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

πŸŽ€ SUBROUTINES/METHODS πŸŽ€

πŸ’… new : Constructor

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/',
                            });

the options you can pass are literally these, no cap:

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)

πŸ’… new_from_registry : Constructor

it's giving new but with ✨registry energy✨ β€” same as new up there, except it also supports capability and category in the hashref you hand it, and it uses those to go query the DAS registry and set up the DSNs accordingly. slay πŸ’…

my $das = Bio::Das::Lite->new_from_registry({
                                           'capability' => ['features'],
                                           'category'   => ['Protein Sequence'],
                                          });

so the options are all of the above, PLUS:

Options are as above, plus
               capability OR capabilities   (optional arrayref of capabilities)
               category                     (optional arrayref of categories)

for the full list of capabilities and categories, go look here bestie:

  http://das.sanger.ac.uk/registry/

and plot twist: category can optionally be a full coordinate system name, which lets you restrict things even further by authority, version and species. like:

    'Protein Sequence' OR
    'UniProt,Protein Sequence' OR
    'GRCh_37,Chromosome,Homo sapiens'

πŸ’… http_proxy : Get/Set http_proxy

$das->http_proxy('http://user:pass@squid.myco.com:3128/');

πŸ’… proxy_user : Get/Set proxy username for authenticating forward-proxies

you only need this if you didn't already put the username in when you set http_proxy, iykyk 🫢

$das->proxy_user('myusername');

πŸ’… proxy_pass : Get/Set proxy password for authenticating forward-proxies

and you only need this one if you didn't already drop the password in when you set http_proxy πŸ”

$das->proxy_pass('secretpassword');

πŸ’… no_proxy : Get/Set domains to not use proxy for

$das->no_proxy('ebi.ac.uk', 'localhost');
OR
$das->no_proxy( ['ebi.ac.uk', 'localhost'] );
always returns an arrayref, periodt ✨

πŸ’… user_agent : Get/Set user-agent for request headers

$das->user_agent('GroovyDAS/1.0');

πŸ’… 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()

or, if you wanna add to the dsn list you already got and you're feeling sneaky about it… πŸ‘€

push @{$das->dsn}, 'http://my.server/das/additionalsource';

πŸ’… dsns : Retrieve information about other sources served from this server.

heads up: this one is dsns (with the s, bestie), which is a whole different thing from dsn, aka the source you've currently got configured. the way that they're literally one letter apart… πŸ’€

my $src_data = $das->dsns();

πŸ’… entry_points : Retrieve the list of entry_points for this source

like chromosomes and all their little details (sequence length, version, the whole vibe) 🧬

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',
  },
]

for other parameters, check the DAS specifications 🌈


πŸ’… types : Find out about different data types available from this source

my $types         = $das->types(); # takes optional args - see DAS specs

retrieves the types of data available for this source β€” think 32k_cloneset, karyotype, swissprot πŸ¦‹


πŸ’… features : Retrieve features from a segment

like clones on a chromosome, iconic behaviour honestly:

#########
# 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',},
                                   ]);

and now, the feature fetch with callback version ✨

#########
# 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);

πŸ’… alignment : Retrieve protein alignment data for a query.

This can be a multiple sequence alignment or pairwise alignment. Note - this has not been tested for structural alignments as there is currently no Das source avialable.

my $alignment = $das->alignment({query => 'Q01234'});

πŸ’… structure : Retrieve known structure (i.e. PDB) for a query

my $structure = $das->structure({ query => 'pdb_id'});

πŸ’… sources : Retrieves the list of sources form the DAS registry, via a DAS call.

my $sources = $das->source;

πŸ’… 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();

πŸ’… specversions : Retrieve a server's DAS specification version for a request URL

my $version         = $das->specversions($url);  # e.g. 1.53, 1.6, 1.6E
my $version_hashref = $das->specversions();

πŸ’… max_hosts set number of running concurrent host connections

🚨 THIS METHOD IS NOW DEPRECATED AND HAS NO EFFECT 🚨
$das->max_hosts(7);
print $das->max_hosts();

πŸ’… max_req set number of running concurrent requests per host

🚨 THIS METHOD IS NOW DEPRECATED AND HAS NO EFFECT 🚨
$das->max_req(5);
print $das->max_req();

πŸ’… registry : Get/Set accessor for DAS-Registry service URLs

$biodaslite->registry('http://www.dasregistry.org/das');

my $registry_arrayref = $biodaslite->registry();

πŸ’… registry_sources : Arrayref of dassource objects from the configured registry services

my $sources_ref = $biodaslite->registry_sources();

my $sources_ref = $biodaslite->registry_sources({
  'capability' => ['features','stylesheet'],
});

my $sources_ref = $biodaslite->registry_sources({
  'category' => ['Protein Sequence'],
});

πŸ’… build_queries

Constructs an arrayref of DAS requests including parameters for each call 🧚


πŸ’… build_requests

Constructs the WWW::Curl callbacks πŸ’«


πŸ’… postprocess

Applies processing to the result set, e.g. removal of whitespace from sequence responses. πŸ’…


🌈 DESCRIPTION 🌈

This module is an implementation of a client for the DAS protocol (XML over HTTP primarily for biological-data). fr fr that's the whole vibe 🧬✨


πŸ’œ DEPENDENCIES πŸ’œ

strict
warnings
WWW::Curl
HTTP::Response
Carp
English
Readonly

πŸ¦‹ DIAGNOSTICS πŸ¦‹

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

πŸ“ CONFIGURATION AND ENVIRONMENT πŸ“

(nothing here bestie, it's literally an empty section and we respect that)


πŸŽ€ INCOMPATIBILITIES πŸŽ€

(also empty, no drama here)


πŸ’€ BUGS AND LIMITATIONS πŸ’€

The max_req and max_hosts methods are now deprecated and have no effect.

πŸ‘‘ SEE ALSO πŸ‘‘


🌸 AUTHOR 🌸

Roger Pettett, <rpettett@cpan.org> β€” the icon, the moment, the legend 🫢


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.


okay that's the whole page bestie, no notes πŸ’…βœ¨ this was perl v5.32.0 energy, dated 2020-11-27, and it's the Bio::Das::Lite(3pm) manual β€” go forth and query some DAS sources, you've got this πŸ¦‹πŸ’–πŸŽ€

πŸ“¦ where this page comes from