3

PubMed の Eutils によって生成された XML 出力から ID の配列を作成しようとしています。

GitHub のコードは次のとおりです。以下は、特定のサブルーチンです。

これについて最善の方法は何ですか?

getUID($query);

sub getUID {

  # First, build the Eutils query
  my $utils = 'http://eutils.ncbi.nlm.nih.gov/entrez/eutils'; # Base URL for searches
  my $db = 'pubmed'; # Default to PubMed database; this may be changed.
  my $retmax = 10; # Get 10 results from Eutils

  my $esearch = $utils . '/esearch.fcgi?db=' . $db . '&retmax=' . $retmax . '&term=';

  my $esearch_result = get( $esearch . $query ); # Downloads the XML

  # Second, extract the UIDs
  $esearch_result =~ m(<Id>*</Id>);      

  print $esearch_result; # This should return a list of ID's (numbers), but doesn't.

}

PubMed XML の結果は次のようになります。

<?xml version="1.0" ?>
<!DOCTYPE eSearchResult PUBLIC "-//NLM//DTD eSearchResult, 11 May 2002//EN" "http://www.ncbi.nlm.nih.gov/entrez/query/DTD/eSearch_020511.dtd">
<eSearchResult><Count>2768671</Count><RetMax>10</RetMax><RetStart>0</RetStart><IdList>
<Id>23682407</Id>
<Id>23682406</Id>
<Id>23682388</Id>
<Id>23682359</Id>
<Id>23682336</Id>
<Id>23682331</Id>
<Id>23682325</Id>
<Id>23682320</Id>
<Id>23682315</Id>
<Id>23682311</Id>
</IdList><TranslationSet><Translation>     <From>cancer</From>     <To>"neoplasms"[MeSH Terms] OR "neoplasms"[All Fields] OR "cancer"[All Fields]</To>    </Translation></TranslationSet><TranslationStack>   <TermSet>    <Term>"neoplasms"[MeSH Terms]</Term>    <Field>MeSH Terms</Field>    <Count>2430901</Count>    <Explode>Y</Explode>   </TermSet>   <TermSet>    <Term>"neoplasms"[All Fields]</Term>    <Field>All Fields</Field>    <Count>1920766</Count>    <Explode>Y</Explode>   </TermSet>   <OP>OR</OP>   <TermSet>    <Term>"cancer"[All Fields]</Term>    <Field>All Fields</Field>    <Count>1192293</Count>    <Explode>Y</Explode>   </TermSet>   <OP>OR</OP>   <OP>GROUP</OP>  </TranslationStack><QueryTranslation>"neoplasms"[MeSH Terms] OR "neoplasms"[All Fields] OR "cancer"[All Fields]</QueryTranslation></eSearchResult>
4

2 に答える 2

0

このように eutils を手動で使用したい理由があるかもしれませんが、少なくとももっと簡単な方法があることを知ってもらいたいと思いました。これらのタスクには、BioPerl のBio::DB::EUtilitiesモジュールを使用します。これにより、この種の作業がはるかに簡単になり、時間を節約できるからです ( EUtilities クックブックには、PubMed から入手できる情報を示すセクションがあります)。また、最近更新されたBio::Biblioモジュールには、PubMed レコードにアクセスするための多数のメソッドがあります。

于 2013-05-20T19:06:44.067 に答える