【PubMed API】Entrez Programming Utilities の使い方

みなさん,こんにちは。
シンノユウキ(shinno1993)です。

医学・生物学系の論文検索サイトとして最も有名なものがPubMedかと思います。

PubMedはブラウザからそのまま利用するのでも十分便利なのですが,実はWeb APIも提供されています。

今回はPubMed検索が可能なAPI:Entrez Programming Utilities (E-utilities)について紹介していきます。

スポンサーリンク

Entrez Programming Utilities (E-utilities)とは?

Entrez Programming Utilities (E-utilities)は,NCBI(National Center for Biotechnology Information)によって提供される,医学・生物学系のデータが含まれる38のデータベースにアクセスできるWeb APIです。

固有のURLと独自のパラメータを指定することで,APIを使うことができます。結果は基本的にXMLで返されますので,それを利用できるプログラミング言語であればどのようなものでも利用することができます。

PubMedはブラウザを利用してWebで利用するだけでも非常に便利なものですが,Web APIを使用することができると,PubMed検索を独自のアプリケーションに組み込むことができ,利便性の向上が期待できます。

公式ドキュメントは下記から閲覧できますので,詳細を知りたい方はアクセスしてみてください:

Entrez Programming Utilities Help - NCBI Bookshelf
Please see the E-utilities Introduction video for a brief introduction.

APIを利用する頻度が少ない場合や規模が小さい場合は登録等は不要です。しかし,頻度が多くなってくると(目安は1秒間に3回以上),IPアドレスによってブロックされる可能性があります。その場合はアカウントの登録とAPIキーの利用が必要となりますのでご注意ください。

基本的な使い方

まずは基本的なAPIの使い方について紹介します。ベースとなるURLに加え必要となる各種パラメータについて解説していきます。

①検索|キーワードに合致するPMIDを取得する

では早速,最も基本的で簡単な使い方を紹介します。特定のデータベースを特定の検索ワードで検索する場合の基本的な構文は下記となります:

https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db={database}&term={query}

  • {db}:検索するデータベースを指定します。PubMedで検索する場合はpubmedとすればOKです。
  • {query}:検索するキーワードを指定します。collagen AND skin AND (intake OR adsorption OR supplementation) AND (meta-analysis[pt] OR review[pt] OR systematic review[pt]) のように指定します。

つまり,PubMedでキーワード:collagen AND skin AND (intake OR adsorption OR supplementation) AND (meta-analysis[pt] OR review[pt] OR systematic review[pt])を検索したい場合,URLは下記のようになります:

https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=collagen AND skin AND (intake OR adsorption OR supplementation) AND (meta-analysis[pt] OR review[pt] OR systematic review[pt])

上記のURLにアクセスした場合,検索にヒットした文献のPMIDのリストをXML形式で取得することができます。実際にアクセスした場合は下記のようになります:

②論文情報の取得|PMIDからタイトルやAbstractなどを取得する

では,PMIDからAbstractを含む論文情報を取得してみましょう。その場合のURLは下記のようになります:

https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db={db}&id={uid_list}&retmode={retmode}

  • {db}:検索するデータベースを指定します。PubMedで検索する場合はpubmedとすればOKです。
  • {uid_list}:論文情報を取得したいPMIDをリスト形式で指定します。たとえば,32667528と32559349と32530124の3つの論文の情報を取得したい場合は,32667528,32559349,32530124とカンマで区切って指定します。
  • {retmode}:結果の表示方法について指定します。xmltextのどちらかが良いと思います。後々の加工のしやすさから考えるとxmlが良いでしょうし,ただ表示するだけでしたらtextの方が見やすいと思います。

では,上記のベースとなるURLに各種パラメータを指定してみましょう。最終的にURLは,下記のようになります:

https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=32667528,32559349,32530124&retmode=xml

このURLにアクセスすると,下記のように論文ごとに著者やタイトルなどを取得することができます:

③検索→論文情報の取得を組み合わせる

上記までは検索から論文情報の取得までを単独で行っていましたした。つまり,検索で取得したPMIDを,論文情報取得の際にわざわざ入力し直していたことになります。

これは面倒ですので,検索した結果として取得したPMIDをそのまま論文情報の取得に利用したいところです。

そのためには,最初に検索を行った際にその結果を保存し,論文情報取得時にその保存先を指定してあげる必要があります。

まず,下記の構文により検索を行います:

https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=&term=&usehistory=y

先に紹介した検索構文と同じように見えます。しかし1点だけ異なっています。末尾にusehistory=yがついた点です。これにより,検索結果を保存できるようになります。

なお,実際にデータベースや検索キーワードを入力した場合は下記のようなURLになります:

https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=collagen AND skin AND (intake OR adsorption OR supplementation) AND (meta-analysis[pt] OR review[pt] OR systematic review[pt])&usehistory=y

このURLで検索結果を保存することができました。では,どのようにしてこの検索結果を利用するのでしょうか。ここで重要になるのがQueryKeyWebEnvです。これらは検索時に取得できる結果のXMLに含まれるもので,これを論文情報取得時に指定してあげることで保存した検索結果を利用することができます。

なお,QueryKeyとWebEnvは,検索結果のこの部分に該当します:

QueryKeyとWebEnvを利用した論文情報の取得に関する基本的な構文は下記のようになります:

https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db={db}&query_key={key}&WebEnv={webenv string}&retmode={retmode}

  • {db}:検索するデータベースを指定します。PubMedで検索する場合はpubmedとすればOKです。
  • {key}:検索した際に取得したkeyを入力します。1などの数字になります(検索回数等によって異なります)。
  • {webenv string}:検索した際に取得したWebEnvを入力します。MCID_***************などの文字列となります(環境によって異なります)。
  • {retmode}:結果の表示方法について指定します。xmltextのどちらかが良いと思います。後々の加工のしやすさから考えるとxmlが良いでしょうし,ただ表示するだけでしたらtextの方が見やすいと思います。

これに実際に値を指定したURLは下記のようになります:

https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&query_key=1&WebEnv=MCID_***************&retmode=xml

もちろん,query_keyやWebEnvは人によっても行った検索によっても異なるので,実際に利用する際にはそれぞれ任意のものを入力してください。

実際の結果は下記のように取得できます:

実際に使ってみる

では実際のプログラム内で,上記のURLを使用してみましょう。プログラム言語としてはPythonを利用します。

collagen AND skin AND (intake OR adsorption OR supplementation) AND (meta-analysis[pt] OR review[pt] OR systematic review[pt])で検索して,ヒットした文献のタイトルやアブストラクトをテキストファイルに書き込む処理をしてみます。

コードは下記となります:

import requests
import xml.etree.ElementTree as et

# 検索
url = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi"
payload = {
    "db":"pubmed",
    "term":"collagen AND skin AND (intake OR adsorption OR supplementation) AND (meta-analysis[pt] OR review[pt] OR systematic review[pt])",
    "usehistory":"y"
}

ret = requests.get(url, params=payload)
xml = ret.text.encode("utf-8")
root = et.fromstring(xml)


# 検索結果から論文タイトルとAbstractを取得しテキストファイルに書き込む
url = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi"
payload = {
    "db" : "pubmed",
    "query_key" : root.findtext("QueryKey"),
    "WebEnv" : root.findtext("WebEnv"),
    "retmode" : "text",
    "rettype" : "abstract"
}

ret = requests.get(url, params=payload)
with open("sample.txt", "w", encoding="utf-8") as f:
    f.write(ret.text)

これを実行すると,下記のようなデータがテキストファイルに書き込まれます:

1. J Cosmet Dermatol. 2020 May 21. doi: 10.1111/jocd.13435. [Epub ahead of print]

Collagen supplementation for skin health: A mechanistic systematic review.

Barati M(1), Jabbari M(2), Navekar R(3), Farahmand F(4), Zeinalian R(5),
Salehi-Sahlabadi A(6), Abbaszadeh N(5), Mokari-Yamchi A(2), Davoodi SH(7).

Author information: 
(1)Student Research Committee, Department of Cellular and Molecular Nutrition,
Faculty of Nutrition and Food Technology, Shahid Beheshti University of Medical
Sciences, Tehran, Iran.
(2)Department of Community Nutrition, Faculty of Nutrition and Food Technology,
Shahid Beheshti University of Medical Sciences, Tehran, Iran.
(3)Nutrition Research Center, Faculty of Nutrition and Food Sciences, Tabriz
University of Medical Sciences, Tabriz, Iran.
(4)Department of Community Nutrition, School of Nutritional Sciences and
Dietetics, Tehran University of Medical Sciences, Tehran, Iran.
(5)Faculty of Nutrition and Food Sciences, Tabriz University of Medical Sciences,
Tabriz, Iran.
(6)Student Research Committee, Department of Clinical Nutrition and Dietetics,
Faculty of Nutrition and Food Technology, Shahid Beheshti University of Medical
Sciences, Tehran, Iran.
(7)Cancer Research Center, Shahid Beheshti University of Medical Sciences,
Tehran, Iran.

BACKGROUND: Over the last decade, many researchers tried to evaluate the effects 
of collagen supplements on skin aging and surprisingly revealed that the
interventions improved skin aging parameters without any inconsistency.
AIM: This systematic review assesses the literature regarding the effects of
collagen supplements on skin health parameters in healthy and patient subjects,
focusing on mechanisms of action.
METHODS: At the first step of search in the databases, 9057 items were obtained. 
After removal of duplicate items, 6531 publications remained. Further screening
by title and/or abstract resulted in removal of 6500 items. Finally, full texts
of the 31 remained items were assessed for eligibility and 10 publications were
included in this review.
RESULTS: The evidences obtained from these systematic reviews indicated that oral
administration of intact or hydrolyzed collagen improves clinical manifestation
of skin health. Almost all of the included studies reported the beneficial
effects of collagen supplementation, and no inconsistencies have been seen in
this regard between studies.
CONCLUSIONS: In this systematic review, three different mechanisms of action were
clarified for the intervention. Direct effects of collagen peptides on
fibroblasts, M2-like macrophages, and oral tolerance-related mechanisms are the
possible mechanisms for the beneficial effects of collagen supplementation.

まとめ

今回はPubMed検索を利用できるAPI:E-utilitiesの基本的な使い方について紹介しました。

PubMedはWebからの検索も非常に利用しやすい便利なサービスですが,APIを組み合わせることで,これまでとの届きづらかったところにもアプローチできるかもしれませんね。

タイトルとURLをコピーしました