The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

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.