Rで解析:Entrezの操作が楽々です!「rentrez」パッケージ


投稿日: Rの解析に役に立つ記事 , ,

Entrezは論文のデータベースであるPubmedでおなじみのNational Center for Biotechnology Information (NCBI)が開発した検索システムです。あまりにも有名なのでEntrezの説明はしませんが、論文だけでなく、SNPも含めた遺伝子情報のデータベースもあり、J-STAGE、JDreamⅢともに重宝しています。

Entrezもそうですが、多くのウェブ上のデータベースはソフトウェアから操作するためのAPIを公開しています。APIを利用してデータを取得すると作業効率が格段に上昇します。

本パッケージはEntrezのAPIを操作してデータを取得するパッケージです。一瞬で、必要なデータを取得できます。

ただし、大量のデータを取得する行為は迷惑となりますので十分に注意してください。

過度なデータの収集は、あまり意味が無いと思います。人が処理できるデータ量は限界があります。また、アクセス遮断などの措置が取られる場合がありますのでご注意を。

パッケージのバージョンは0.4.2。実行コマンドはR version 3.2.2で確認しています。

パッケージのインストール

下記コマンドを実行してください。

#パッケージのインストール
install.packages("rentrez")

実行コマンド

詳細はコメント、パッケージヘルプを確認してください。

#パッケージの読み込み
library("rentrez")

#データベースの一覧を取得:entrez_absコマンド
entrez_dbs()
[1] "pubmed"          "protein"         "nuccore"         "nucleotide"      "nucgss"         
[6] "nucest"          "structure"       "genome"          "gpipe"           "annotinfo"      
[11] "assembly"        "bioproject"      "biosample"       "blastdbinfo"     "books"          
[16] "cdd"             "clinvar"         "clone"           "gap"             "gapplus"        
[21] "grasp"           "dbvar"           "epigenomics"     "gene"            "gds"            
[26] "geoprofiles"     "homologene"      "medgen"          "mesh"            "ncbisearch"     
[31] "nlmcatalog"      "omim"            "orgtrack"        "pmc"             "popset"         
[36] "probe"           "proteinclusters" "pcassay"         "biosystems"      "pccompound"     
[41] "pcsubstance"     "pubmedhealth"    "seqannot"        "snp"             "sra"            
[46] "taxonomy"        "unigene"         "gencoll"         "gtr" 

#データベース要約を表示:entrez_db_summaryコマンド
entrez_db_summary("gene")
DbName              MenuName           Description               DbBuild 
"gene"                "Gene"       "Gene database" "Build150922-0035m.1" 
Count            LastUpdate 
"21688958"    "2015/09/22 08:14" 

#検索で使用できるオプションを表示:entrez_db_searchableコマンド
entrez_db_searchable("gene")
[1] ALL  UID  FILT TITL WORD ORGN MDAT CHR  MV   GENE ECNO MIM  DIS  ACCN UGEN PROP CDAT NCAC NUID
[20] PACC PUID PMID TID  GO   DOM  DDAT CPOS GFN  PFN  GL   XC   GRP  PREF AACC ASM 

#キーワードで検索:entrez_searchコマンド
#termはEntrezの形式がそのまま使用できます
#データベースの指定:dbオプション
#結果取得数の指定:retmaxオプション
r_search <- entrez_search(db = "gene", term = "MTHFR AND Homo sapiens[ORGN]", retmax = NULL)
r_search
Entrez search result with 108 hits (object contains 20 IDs and no cookie)
#データ構造の確認
str(r_search)
List of 4
$ ids   : chr [1:20] "7157" "348" "4524" "3569" ...
$ count : chr "108"
$ retmax: chr "20"
$ file  :Classes 'XMLInternalDocument', 'XMLAbstractDocument' <externalptr> 
  - attr(*, "class")= chr [1:2] "esearch" "list"

#検索結果の要約を取得:entrez_summarコマンド
#idは取得結果とデータが格納されているリスト名の組み合わせ
GeneResult <- entrez_summary(db = "gene", id = r_search$ids)
$`7157`
esummary result with 20 items:
[1] uid                name               description        status             currentid         
[6] chromosome         geneticsource      maplocation        otheraliases       otherdesignations 
[11] nomenclaturesymbol nomenclaturename   nomenclaturestatus mim                genomicinfo       
[16] geneweight         summary            chrsort            chrstart           organism  
#以下略
#例えば一番目結果のdescriptionを表示
sapply(GeneResult, "[[", "description")[1]
7157 
"tumor protein p53" 

###パッケージ公式ページより#####
#特定キーワードの年代別論文数を取得コマンドを一部改変
#serch_yearコマンドの作成
search_year <- function(year, term){
  query <- paste(term, "AND (", year, "[PDAT])")
  entrez_search(db = "pubmed", term = query, retmax = 0)$count
}
year <- 2008:2014
papers <- sapply(year, search_year, term = "MTHFR AND Homo sapiens[ORGN]", USE.NAMES = FALSE)
plot(year, papers, type = 'b', main = "MTHFR AND Homo sapiens[ORGN]:PAPERS",
     ylim = c(0, type.convert(max(papers))*1.2))

#特定キーワードの論文を取得し情報をまとめる
SearchResult <- entrez_search(db = "pubmed", retmax = 10,
                              term = "folic acid AND MTHFR")
#ジャーナル名の取得
GetSummary <- entrez_summary(db="pubmed", id=SearchResult$ids)
sapply(GetSummary, "[[", "title")[1]
26376686 
"Unmetabolized Folic Acid in Prediagnostic Plasma and the Risk of Colorectal Cancer." 

#マークダウンしてHTMLテーブルで出力
#体裁は整えていません
#entrez_summaryの結果はリストで返されます
#通常のリストに対する操作でデータをいじれます
cat(knitr::kable(sapply(GetSummary, "[[", "title"),
                 row.names = TRUE, caption = "TEST table",
                 col.names = c("TiTle"), format = "html"),
    file = "TEST.html", sep = "\n")

出力例

マークダウンしてHTMLテーブルで出力。体裁は整えていません。画像で紹介します。
pubTable


少しでも、あなたのウェブや実験の解析が楽になりますように!!

スポンサードリンク

おすすめコンテンツ


スポンサードリンク