logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

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

Author

       Roger Pettett, <rpettett@cpan.org>

Bugs And Limitations

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

Configuration And Environment

Dependencies

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

Description

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

Diagnostics

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

Incompatibilities

Name

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

See Also

       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/

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

        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
         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'

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

   proxy_user:Get/Setproxyusernameforauthenticatingforward-proxies
         This is only required if the username wasn't specified when setting http_proxy

           $das->proxy_user('myusername');

   proxy_pass:Get/Setproxypasswordforauthenticatingforward-proxies
         This is only required if the password wasn't specified when setting http_proxy

           $das->proxy_pass('secretpassword');

   no_proxy:Get/Setdomainstonotuseproxyfor
           $das->no_proxy('ebi.ac.uk', 'localhost');
           OR
           $das->no_proxy( ['ebi.ac.uk', 'localhost'] );

           Always returns an arrayref

   user_agent:Get/Setuser-agentforrequestheaders
           $das->user_agent('GroovyDAS/1.0');

   timeout:Get/Settimeout
           $das->timeout(30);

   caching:Get/Setcaching
           $das->caching(1);

   callback:Get/Setcallbackcoderef
           $das->callback(sub { });

   basename:GetbaseURL(s)ofservice
           $das->basename(optional $dsn);

   dsn:Get/SetDSN
         $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';

   dsns:Retrieveinformationaboutothersourcesservedfromthisserver.
        Note this call is 'dsns', as differentiated from 'dsn' which is the current configured source

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

   entry_points:Retrievethelistofentry_pointsforthissource
         e.g. chromosomes and associated information (e.g. sequence length and version)

         my $entry_points  = $das->entry_points();

   Typesofargumentfor'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:Findoutaboutdifferentdatatypesavailablefromthissource
         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:Retrievefeaturesfromasegment
          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);

   alignment:Retrieveproteinalignmentdataforaquery.Thiscanbeamultiplesequencealignmentorpairwisealignment.Note-thishasnotbeentestedforstructuralalignmentsasthereiscurrentlynoDassourceavialable.
         my $alignment = $das->alignment({query => 'Q01234'});

   structure:Retrieveknownstructure(i.e.PDB)foraquery
         my $structure = $das->structure({ query => 'pdb_id'});

   sources:RetrievesthelistofsourcesformtheDASregistry,viaaDAScall.
         my $sources = $das->source;

   sequence:Retrievesequencedataforasegment(probablydnaorprotein)
         my $sequence      = $das->sequence('2:1,1000'); # segment:start,stop (e.g. chromosome 2, bases 1 to 1000)

   stylesheet:Retrievestylesheetdata
         my $style_data    = $das->stylesheet();
         my $style_data2   = $das->stylesheet($callback);

   statuscodes:RetrieveHTTPstatuscodesforrequestURLs
         my $code         = $das->statuscodes($url);
         my $code_hashref = $das->statuscodes();

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

   max_hostssetnumberofrunningconcurrenthostconnections
         THIS METHOD IS NOW DEPRECATED AND HAS NO EFFECT

         $das->max_hosts(7);
         print $das->max_hosts();

   max_reqsetnumberofrunningconcurrentrequestsperhost
         THIS METHOD IS NOW DEPRECATED AND HAS NO EFFECT

         $das->max_req(5);
         print $das->max_req();

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

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

   registry_sources:Arrayrefofdassourceobjectsfromtheconfiguredregistryservices
         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.

Synopsis

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

Version

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

See Also