Bio::Tools::EUtilities3pm
Ncbi eutil xml parsers.
Usage
# from file or fhmy $parser = Bio::Tools::EUtilities->new(-eutil => 'einfo',-file => 'output.xml');# or HTTP::Response object...my $parser = Bio::Tools::EUtilities->new(-eutil => 'esearch',-response => $response);# esearch, esummary, elink@ids = $parser->get_ids(); # returns array or array ref of IDs# egquery, espell$term = $parser->get_term(); # returns array or array ref of IDs# elink, einfo$db = $parser->get_database(); # returns database# Query-related methods (esearch, egquery, espell data)# eutil data centered on use of search termsmy $ct = $parser->get_count; # uses optional database for egquery countmy $translation = $parser->get_count;my $corrected = $parser->get_corrected_query; # espellwhile (my $gquery = $parser->next_GlobalQuery) {# iterates through egquery data}# Info-related methods (einfo data)# database-related informationmy $desc = $parser->get_description;my $update = $parser->get_last_update;my $nm = $parser->get_menu_name;my $ct = $parser->get_record_count;while (my $field = $parser->next_FieldInfo) {# ...}while (my $field = $parser->next_LinkInfo) {# ...}# History methods (epost data, some data returned from elink)# data which enables one to retrieve and query against user-stored# information on the NCBI serverwhile (my $cookie = $parser->next_History) {# ...}my @hists = $parser->get_Histories;# Bio::Tools::EUtilities::Summary (esummary data)# information on a specific database record# retrieve nested docsum datawhile (my $docsum = $parser->next_DocSum) {print "ID:",$docsum->get_ids,"\n";while (my $item = $docsum->next_Item) {# do stuff here...while (my $listitem = $docsum->next_ListItem) {# do stuff here...while (my $listitem = $docsum->next_Structure) {# do stuff here...}}}}# retrieve flattened item list per DocSumwhile (my $docsum = $parser->next_DocSum) {my @items = $docsum->get_all_DocSum_Items;}
Version
version 1.77
Overview
Parses NCBI eutils XML output for retrieving IDs and other information. Part of the BioPerl EUtilities system.
This is a general parser for eutils XML; data from efetch is NOT parsed (this requires separate format-dependent parsers). All other XML for eutils is parsed. These modules can be used independently of Bio::DB::EUtilities and Bio::Tools::EUtilities::EUtilParameters; if used in this way, only data present in the XML will be parsed out (other bits are retrieved from a passed-in Bio::Tools::EUtilities::EUtilParameters instance used while querying the database)
Todo
This module is largely complete. However there are a few holes which will eventually be filled in. TranslationSets from esearch are not currently parsed, for instance.
Constructor methods
new
Title : newUsage : my $parser = Bio::Tools::EUtilities->new(-file => 'my.xml',-eutil => 'esearch');Function : create Bio::Tools::EUtilities instanceReturns : new Bio::Tools::EUtilities instanceArgs : -file/-fh - File or filehandle-eutil - eutil parser to use (supports all but efetch)-response - HTTP::Response object (optional)
Bio::Tools::EUtilities methods
cache_response
Title : cache_responseUsage : $parser->cache_response(1)Function : sets flag to cache response object (off by default)Returns : value eval'ing to TRUE or FALSEArgs : value eval'ing to TRUE or FALSENote : must be set prior to any parsing run
response
Title : responseUsage : my $response = $parser->response;Function : Get/Set HTTP::Response objectReturns : HTTP::ResponseArgs : HTTP::ResponseNote : to prevent object from destruction set cache_response() to TRUE
parameter_base
Title : parameter_baseUsage : my $response = $parser->parameter_base;Function : Get/Set Bio::ParameterBaseI object (should be Bio::Tools::EUtilities::EUtilParameters)Returns : Bio::Tools::EUtilities::EUtilParameters || undefArgs : (optional) Bio::Tools::EUtilities::EUtilParametersNote : If this object is present, it may be used as a last resort forsome data values if parsed XML does not contain said values (forinstance, database, term, IDs, etc).
data_parsed
Title : data_parsedUsage : if ($parser->data_parsed) {...}Function : returns TRUE if data has been parsedReturns : value eval'ing to TRUE or FALSEArgs : none (set within parser)Note : mainly internal method (set in case user wants to checkwhether parser is exhausted).
is_lazy
Title : is_lazyUsage : if ($parser->is_lazy) {...}Function : returns TRUE if parser is set to lazy parsing mode(only affects elink/esummary)Returns : BooleanArgs : noneNote : Permanently set in constructor. Still highly experimental.Don't stare directly at happy fun ball...
parse_data
Title : parse_dataUsage : $parser->parse_dataFunction : direct call to parse data; normally implicitly calledReturns : noneArgs : none
to_string
Title : to_stringUsage : $foo->to_string()Function : converts current object to stringReturns : noneArgs : (optional) simple data for text formattingNote : Implemented in plugins
print_all
Title : print_allUsage : $info->print_all();$info->print_all(-fh => $fh, -cb => $coderef);Function : prints (dumps) all data in parser. Unless a coderef is supplied,this just dumps the parser-specific to_string method to either afile/fh or STDOUTReturns : noneArgs : [optional]-file : file to print to-fh : filehandle to print to (cannot be used concurrently with file)-cb : coderef to use in place of default print method. This ispassed in the parser object-wrap : number of columns to wrap default text output to (def = 80)Notes : only applicable for einfo. If -file or -fh are not defined,prints to STDOUT
Bio::Tools::EUtilities::EUtilDataI methods
eutil
Title : eutilUsage : $eutil->$foo->eutilFunction : Get/Set eutilReturns : stringArgs : string (eutil)Throws : on invalid eutil
datatype
Title : datatypeUsage : $type = $foo->datatype;Function : Get/Set data object typeReturns : stringArgs : string
Methods useful for multiple eutils
get_ids
Title : get_idsUsage : my @ids = $parser->get_idsFunction : returns array of requested IDs (see Notes for more specifics)Returns : arrayArgs : [conditional] not required except when running elink queries againstmultiple databases. In case of the latter, the database name isoptional but recommended when retrieving IDs as the ID list willbe globbed together. In such cases, if a db name isn't provided awarning is issued as a reminder.Notes : esearch : returned ID listelink : returned ID list (see Args above for caveats)all others : from parameter_base->id or undef
get_database
Title : get_databaseUsage : my $db = $info->get_database;Function : returns single database name (eutil-compatible). This is thequeried database. For most eutils this is straightforward. Forelinks (which have 'db' and 'dbfrom') this is db/dbto, for egquery,it is the first db in the list (you probably want get_databasesinstead)Returns : stringArgs : noneNotes : egquery : first db in the query (you probably want get_databases)einfo : the queried databaseespell : the queried databaseall others : from parameter_base->db or undef
get_db (alias for get_database)
get_databases
Title : get_databasesUsage : my @dbs = $parser->get_databasesFunction : returns list of databasesReturns : array of stringsArgs : noneNotes : This is guaranteed to return a list of databases. For a singledatabase use the convenience method get_db/get_databaseegquery : list of all databases in the queryeinfo : the queried database, or the available databasesespell : the queried databaseelink : collected from each LinkSetall others : from parameter_base->db or undef
get_dbs (alias for get_databases)
next_History
Title : next_HistoryUsage : while (my $hist=$parser->next_History) {...}Function : returns next HistoryI (if present).Returns : Bio::Tools::EUtilities::HistoryI (Cookie or LinkSet)Args : noneNote : esearch, epost, and elink are all capable of returning data whichindicates search results (in the form of UIDs) is stored on theremote server. Access to this data is wrapped up in simple interface(HistoryI), which is implemented in two classes:Bio::DB::EUtilities::History (the simplest) andBio::DB::EUtilities::LinkSet. In general, calls to epost and esearchwill only return a single HistoryI object (formerly known as aCookie), but calls to elink can generate many depending on thenumber of IDs, the correspondence, etc. Hence this iterator, whichallows one to retrieve said data one piece at a time.
next_cookie (alias for next_History)
get_Histories
Title : get_HistoriesUsage : my @hists = $parser->get_HistoriesFunction : returns list of HistoryI objects.Returns : list of Bio::Tools::EUtilities::HistoryI (History or LinkSet)Args : none
Feedback
Mailing lists
User feedback is an integral part of the evolution of this and other Bioperl modules. Send your comments and suggestions preferably to the Bioperl mailing list. Your participation is much appreciated.
[email protected] - General discussionhttps://bioperl.org/Support.html - About the mailing lists
Support
Please direct usage questions or support issues to the mailing list: [email protected] rather than to the module maintainer directly. Many experienced and reponsive experts will be able look at the problem and quickly address it. Please include a thorough description of the problem with code and data examples if at all possible.
Reporting bugs
Report bugs to the Bioperl bug tracking system to help us keep track of the bugs and their resolution. Bug reports can be submitted via the web:
https://github.com/bioperl/bio-eutilities/issues
Releases
6 releases since Debian 6.0 (Squeeze); the text changed 5 times.