преобразовать pmc-id -> pmid - PullRequest
       72

преобразовать pmc-id -> pmid

2 голосов
/ 10 февраля 2012

Можно ли преобразовать pmc-идентификаторы (опубликованные центральные идентификаторы) в pmids (опубликованные идентификаторы) через API-интерфейс ncbi?Вы можете сделать это через веб-форму, но я хотел бы использовать программу - конечно, я всегда могу написать скребок для экрана ... спасибо

1 Ответ

1 голос
/ 12 февраля 2012

Вы можете преобразовать опубликованные центральные идентификаторы в опубликованные идентификаторы с помощью EFetch , из утилит программирования NCBI Entrez ( E-утилит ).Можно использовать EFetch с любого языка программирования, который может читать данные из HTTP и анализировать XML.

Например, если одна из статей в вашем списке:

Wang TT, и др. .J Biol Chem.2010 янв. 22; 285 (4): 2227-31.
PubMed PMID: 19948723 PubMed Central PMCID: PMC2807280

Документ XML можно получить по адресуследующий URL EFetch:

"http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pmc&id=2807280&rettype=medline&retmode=xml"

XML-документ содержит идентификатор PubMed:

<pmc-articleset>
   <article>
     <front>
        <article-meta>
            <article-id pub-id-type="pmc">2807280</article-id>
            <article-id pub-id-type="pmid">19948723</article-id>

Один из способов преобразования pmcid в pmid в perl - это:

#!/usr/bin/perl
# pmcid2pmid.pl -- convert a pubmed central id to a pubmed id with EFetch 
# http://eutils.ncbi.nlm.nih.gov/corehtml/query/static/efetchlit_help.html

use strict;
use warnings;
use LWP::UserAgent;    # send request to eutils.ncbi.nlm.nih.gov
use XML::Smart;        # parse response

# check parameter
my ($id) = @ARGV;
if ( not(defined($id))  ) { 
    print STDERR "must provide a pmcid as 1st parameter...\n";  
    exit(-1);
}    

$id =~ s/PMC//;
sleep(3);  #  recommended delay between queries

# build & send efetch query
my $efetch= "http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?";
my $efetch_query = "db=pmc&id=$id&rettype=medline&retmode=xml";
my $url = $efetch.$efetch_query;

my $xml  = XML::Smart->new($url);
##print $xml->dump_tree(),"\n";

# parse the response
$xml = $xml->{'pmc-articleset'}->{'article'}->{'front'}{'article-meta'};
my $pmid   = $xml->{'article-id'}('pub-id-type','eq','pmid')->content; 

print STDOUT "PMID = $pmid";

> perl pmcid2pmid.pl PMC2807280
PMID = 19948723

...