Bio::Das::Lite(3pm) User Contributed Perl Documentation Bio::Das::Lite(3pm)

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' => '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: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 '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: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();

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

  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 DAS 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 DAS protocol (XML over HTTP primarily for biological-data).

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

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

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.

2020-11-27 perl v5.32.0