rentrez 獲取 NCBI 數(shù)據(jù)庫數(shù)據(jù)

rentrez 是 E-utilities 的 R 包封裝,用它可以在 R 語言代碼簡便地使用 E-utilities 省去創(chuàng)建 E-utilities 鏈接的麻煩源内。

NCBI 默認(rèn)有訪問限制老厌,未設(shè)置 api key 時(shí)限制 3 次每秒瘟则,設(shè)置后限制 10 次每秒。如果有枝秤,通過 set_entrez_key 函數(shù)設(shè)置醋拧。

set_entrez_key("xxxxxx")

本質(zhì)是設(shè)置環(huán)境變量 "ENTREZ_KEY" 直接設(shè)置環(huán)境變量也可以。

> set_entrez_key
function (key) 
{
    Sys.setenv(ENTREZ_KEY = key)
}
<bytecode: 0x5650672a7630>
<environment: namespace:rentrez>

列舉可用的數(shù)據(jù)庫 entrez_dbs 函數(shù)淀弹,常用的數(shù)據(jù)庫大多都支持丹壕。

> entrez_dbs()
 [1] "pubmed"          "protein"         "nuccore"         "ipg"            
 [5] "nucleotide"      "structure"       "genome"          "annotinfo"      
 [9] "assembly"        "bioproject"      "biosample"       "blastdbinfo"    
[13] "books"           "cdd"             "clinvar"         "gap"            
[17] "gapplus"         "grasp"           "dbvar"           "gene"           
[21] "gds"             "geoprofiles"     "homologene"      "medgen"         
[25] "mesh"            "nlmcatalog"      "omim"            "orgtrack"       
[29] "pmc"             "popset"          "proteinclusters" "pcassay"        
[33] "protfam"         "pccompound"      "pcsubstance"     "seqannot"       
[37] "snp"             "sra"             "taxonomy"        "biocollections" 
[41] "gtr" 

查看某數(shù)據(jù)庫總結(jié) entrez_db_summary 函數(shù)。

> entrez_db_summary("nucleotide")
 DbName: nuccore
 MenuName: Nucleotide
 Description: Core Nucleotide db
 DbBuild: Build221030-1815m.1
 Count: 508239779
 LastUpdate: 2022/11/01 21:31 

查看某數(shù)據(jù)庫支持的搜索字段(fields)薇溃,可根據(jù)支持的字段定義搜索條件進(jìn)行搜索菌赖。

> entrez_db_searchable("nucleotide")
Searchable fields for database 'nuccore'
  ALL    All terms from all searchable fields 
  UID    Unique number assigned to each sequence 
  FILT   Limits the records 
  WORD   Free text associated with record 
  TITL   Words in definition line 
  KYWD   Nonstandardized terms provided by submitter 
  AUTH   Author(s) of publication 
  JOUR   Journal abbreviation of publication 
  VOL    Volume number of publication 
  ISS    Issue number of publication 
  ...  # 剩下省略

esearch 搜索用 entrez_search 函數(shù),字段用 [] 包含沐序。

> es <- entrez_search(db = "nucleotide", term = "Human adenovirus 5[ORGN]", retmax = 5)
> es
Entrez search result with 681 hits (object contains 5 IDs and no web_history object)
 Search term (as translated):  "Human adenovirus 5"[Organism] 
> es$ids
[1] "2295556242" "2295556240" "2295556238" "2287989107" "2260395970"

函數(shù) entrez_link 獲取不同數(shù)據(jù)庫的鏈接琉用。比如從物種鏈接到核酸序列,可以獲取一個(gè)物種對應(yīng)核酸序列 id 列表策幼,后續(xù)用于獲取序列信息或下載序列等邑时。

> el <- entrez_link(dbfrom = "taxonomy", id = 28285, db = "nucleotide")
> el
elink object with contents:
 $links: IDs for linked records from NCBI
 
> el$links
elink result with information from 2 databases:
[1] taxonomy_nuccore        taxonomy_nucleotide_exp
> el$links$taxonomy_nuccore[1:5]
[1] "9652377"    "9652366"    "296210"     "2295556242" "2295556240"

函數(shù) entrez_summary 取得條目總結(jié)信息,設(shè)置 always_return_list = TRUE 讓函數(shù)就算一個(gè)請求也返回列表特姐,防止在 apply 或循環(huán)時(shí)出現(xiàn)非預(yù)期行為晶丘。

> es <- entrez_summary(db = "nucleotide", id = "2295556242")
> es
esummary result with 32 items:
 [1] uid          term         caption      title        extra       
 [6] gi           createdate   updatedate   flags        taxid       
[11] slen         biomol       moltype      topology     sourcedb    
[16] segsetsize   projectid    genome       subtype      subname     
[21] assemblygi   assemblyacc  tech         completeness geneticcode 
[26] strand       organism     strain       biosample    statistics  
[31] properties   oslt   
> es$organism
[1] "Human adenovirus 5"

函數(shù) extract_from_esummary 從返回的總結(jié)對象提取需要信息。

> head(extract_from_esummary(es, "biomol"))
1884989923 1884989922 1884989921 1884989920 1884989919 1041463157 
 "genomic"  "genomic"  "genomic"  "genomic"  "genomic"  "genomic" 

函數(shù) entrez_fetch 獲取條目完整信息到逊,常用于下載數(shù)據(jù)铣口,如選擇 nucleotide 數(shù)據(jù)庫并返回類型為 fasta 時(shí)可以下載對應(yīng) fasta 信息,返回為字符串寫入到文件觉壶,即完成了核酸序列 fasta 文件下載脑题。

> el <- entrez_link(dbfrom = "taxonomy", id = "28285", db = "nucleotide")
> nu5 <- el$links$taxonomy_nuccore[1:5]
> nu5
[1] "9652377"    "9652366"    "296210"     "2295556242" "2295556240"
> ef <- entrez_fetch(db = "nucleotide", id = nu5, rettype = "fasta")
> temp <- tempfile()
> write(ef, temp)

web_history
NCBI 允許將搜索結(jié)果保存在服務(wù)器,然后調(diào)用結(jié)果铜靶,避免了下載結(jié)果叔遂、解析、上傳解析結(jié)果的過程争剿,也能避免產(chǎn)生過多的請求數(shù)目導(dǎo)致受限已艰。如 entrez_link 設(shè)置參數(shù) cmd = "neighbor_history" 將返回 web_history 對象。

以下載某物種核酸序列為例蚕苇,默認(rèn)的 entrez_link 返回對象需要自己取得核酸序列 id 列表(如前面的例子)哩掺,然后用這些核酸序列輸入到 entrez_fetch 從 NCBI 一條條下載核酸序列;如果用 web_history 因?yàn)閷ο蟊4嬖?NCBI 服務(wù)器涩笤,可以直接根據(jù) web_history 下載物種的核酸序列嚼吞,如下面的代碼示例盒件。

> el <- entrez_link(dbfrom = "taxonomy", id = "208893", db = "nucleotide", cmd = "neighbor_history")
> el
elink object with contents:
 $web_histories: Objects containing web history information

> el$web_histories
$taxonomy_nuccore
Web history object (QueryKey = 1, WebEnv = MCID_637d8b3...)

$taxonomy_nucleotide_exp
Web history object (QueryKey = 2, WebEnv = MCID_637d8b3...)

# 下載所有的該物種核酸序列
> ef <- entrez_fetch(db = "nucleotide", web_history = el$web_histories$taxonomy_nuccore, rettype = "fasta")
> str(ef)
 chr ">LC732340.1 Human respiratory syncytial virus A Fukui_S_258_2018 gene for attachment glycoprotein, partial cds\"| __truncated__
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市舱禽,隨后出現(xiàn)的幾起案子炒刁,更是在濱河造成了極大的恐慌,老刑警劉巖誊稚,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翔始,死亡現(xiàn)場離奇詭異,居然都是意外死亡里伯,警方通過查閱死者的電腦和手機(jī)城瞎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來俏脊,“玉大人全谤,你說我怎么就攤上這事肤晓∫叮” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵补憾,是天一觀的道長漫萄。 經(jīng)常有香客問我,道長盈匾,這世上最難降的妖魔是什么腾务? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮削饵,結(jié)果婚禮上岩瘦,老公的妹妹穿的比我還像新娘。我一直安慰自己窿撬,他們只是感情好启昧,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著劈伴,像睡著了一般密末。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上跛璧,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天严里,我揣著相機(jī)與錄音,去河邊找鬼追城。 笑死刹碾,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的座柱。 我是一名探鬼主播迷帜,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼叨吮,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了瞬矩?” 一聲冷哼從身側(cè)響起茶鉴,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎景用,沒想到半個(gè)月后涵叮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡伞插,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年割粮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片媚污。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡舀瓢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出耗美,到底是詐尸還是另有隱情京髓,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布商架,位于F島的核電站堰怨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蛇摸。R本人自食惡果不足惜备图,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望赶袄。 院中可真熱鬧揽涮,春花似錦、人聲如沸饿肺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽唬格。三九已至家破,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間购岗,已是汗流浹背汰聋。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留喊积,地道東北人烹困。 一個(gè)月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像乾吻,于是被迫代替她去往敵國和親髓梅。 傳聞我的和親對象是個(gè)殘疾皇子拟蜻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容