こんばんは,@PKです.
QuickFormノードを使ってPubMed検索ワード入力を行い,PubMed APIで論文アブストラクトを取得するKNIME Workflowの紹介です.
Workflowの概要とQuickformについては前編で紹介しております.
QuickForm素敵なので,ご覧になっていない方は是非参考にしてください.
www.t-kahi.com
前編で紹介しましたが,QuickFormノードを活用してPubMed検索を行うWorkflowを以下の動画で示しています.
youtu.be
後編ではPubMed APIの部分を中心に,Interactive viewを使ったデータ入力を少しご紹介していきます.
KNIME Workflow概要
KNIME Workflowの概要です.
- QuickFormを使ってデータを入力できる「Wrapped Metanode」
- PubMed APIを使って論文情報を取得する「Simple Metanode」
- Interactive viewで表を表示してほしいデータを選択できる「Wrapped Metanode」
- 選んだデータを出力する「Excel Writer」
1については前編でお話したので,2~4について簡単にご紹介していきます.
PubMed APIを使って論文情報の取得
前編の最後に,「String Manipulation」を使って,QuickFormで入力したワードからPubMed APIのQueryを作成しました.
join("https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=",$search$,"&retmax=",$${Snew variable}$$)
ここでは「high+content+analysis」,「new+target+cancer」を検索し,検索したい論文のID数を3と記入して実行してみます.
実行結果の表では,以下のようなQueryが作成されました.
https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=high+content+analysis&retmax=3 https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=new+target+cancer&retmax=3
このQuery結果を使って,PubMed APIへアクセスします.
APIの使い方については,こちらに詳細がありますので,参考にしてください.
A General Introduction to the E-utilities - Entrez Programming Utilities Help - NCBI Bookshelf
The E-utilities In-Depth: Parameters, Syntax and More - Entrez Programming Utilities Help - NCBI Bookshelf
特に,A General Introduction to the E-utilitiesは使用する前に確認したほうがいいと思います.
一番大事なポイントとして以下の部分で,
Frequency, Timing and Registration of E-utility URL Requests
In order not to overload the E-utility servers, NCBI recommends that users post no more than three URL requests per second and limit large jobs to either weekends or between 9:00 PM and 5:00 AM Eastern time during weekdays.
1秒に3回以上Queryを投げないように気を付けましょう. データを取得する際はXML形式化JSON形式か選択できますが,自分的に扱いが楽なのでXML形式でデータを取得します.
APIを使ってデータを取得する際は「String Manipulation」→「GET Request」→「X Path」を繰り返します.(XML形式の場合)
下図では「GET Request」の設定と実行結果を示しています.
URL Columnとして先ほど「String Manipulation」で設定したカラムを選び,Delay(ms)で400msecに1回Queryを投げるようにしておきます.
実行結果を確認すると,XML形式でデータが取得できています.
上記データから必要な情報(今回はID)を「X Path」で取得していきます.
IDを取得するX Pathは[/eSearchResult/IdList/Id]です.
下図では「X Path」の設定と実行結果を示しています.
上手くIDが抜き出せていますね.
抜き出したIDを使って論文のアブストラクト等を取得していきます.
「String Manipulation」→「GET Request」→「X Path」の流れなので詳細は割愛します.
「String Manipulation」で以下のQueryを作成し,「GET Request」でデータを取得します.
join("https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=",$Id$,"&retmode=xml")
その後,「X Path」で欲しいデータを取得していきます.
今回取得したデータのX Path queryを以下に示します.
ArticleTitle /PubmedArticleSet/PubmedArticle/MedlineCitation/Article/ArticleTitle AbstractText /PubmedArticleSet/PubmedArticle/MedlineCitation/Article/Abstract/AbstractText Jounal Title /PubmedArticleSet/PubmedArticle/MedlineCitation/Article/Journal/Title DOI /PubmedArticleSet/PubmedArticle/MedlineCitation/Article/ELocationID Year /PubmedArticleSet/PubmedArticle/MedlineCitation/Article/Journal/JournalIssue/PubDate/Year Month /PubmedArticleSet/PubmedArticle/MedlineCitation/Article/Journal/JournalIssue/PubDate/Month Day /PubmedArticleSet/PubmedArticle/MedlineCitation/Article/Journal/JournalIssue/PubDate/Day
実行すると以下のようにデータをすることができました.
Interactive viewでデータの選択
続いてInteractive viewのMetanode部分ですが,こちらはかなりシンプルです.
「Table View (Java Script)」を使ってInteractive View表示をし,選択した行を「Row Filter」で選んでExcel Writerに出力します.
Interactive NodeはMetanodeの中に複数入れこむこともできます.Metanodeの作り方はこちらを参考にしていただけると幸いです.
【KNIME】CellProfilerの画像解析結果を可視化する - t_kahi’s blog
Interactive viewが使える可視化ノードをMetanodeにすることで,動画で示したようなテーブル表示をすることができます.
まとめ
QuickFormやInteractive viewとMetanodeをうまく使うことで,KNIME Workflowをシンプルにすることができました.
まだまだ勉強不足なので,引き続き勉強したことをご紹介できればと思います.