最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python 利用Entrez庫篩選下載PubMed文獻(xiàn)摘要的示例

 更新時(shí)間:2020年11月24日 16:24:11   作者:v林三歲  
這篇文章主要介紹了Python 利用Entrez庫篩選下載PubMed文獻(xiàn)摘要的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下

作者:xiaolanLin

聲明 :本文版權(quán)歸作者和博客園共有,來源網(wǎng)址:https://www.cnblogs.com/xiaolan-Lin

一個(gè)不是學(xué)生物的孩子來搞生物,當(dāng)真是變成了一塊廢鐵啊,但也是讓我體會(huì)到了一把生物信息的力量。

廢話不多說,開整!

任務(wù):快速高效從PubMed上下載滿足條件的文獻(xiàn)PMID、標(biāo)題(TI)、摘要(AB)。

PubMed官網(wǎng) https://pubmed.ncbi.nlm.nih.gov

此處有幾種選擇可以達(dá)到目的:

(1)官網(wǎng)上匹配篩選條件(注:匹配快速,但是下載下來的數(shù)量受到限制,每次只能下載10000條數(shù)據(jù),甚至更少。)

 可以看到,我需要的數(shù)據(jù)是有三十多萬條,但是每次只能下載10000條,那我豈不是要手動(dòng)n次。。很明顯,在大批量下載文獻(xiàn)的情況下,官網(wǎng)不是很友好。

(2)R語言有個(gè)R包,叫做easyPubMed,這里我也給大家貼上學(xué)習(xí)指南(https://cran.r-project.org/web/packages/easyPubMed/vignettes/getting_started_with_easyPubMed.html

由于我不喜歡用R寫代碼,所以我寫一半還是換了Python,熟練R的小伙伴可以自行根據(jù)指南走通需求。

(3)重量級(jí)庫來了,Python自帶的Bio包中的Entrez檢索庫,簡(jiǎn)直就是我的救星,以下是我的代碼:

  注:Entrez在Bio包中,Bio的安裝請(qǐng)移步 https://www.cnblogs.com/xiaolan-Lin/p/14023147.html

 import numpy as np
 from Bio import Medline, Entrez # 一般是通過BioPython的Bio.Entrez模塊訪問Entrez
 from collections import Counter
 
 Entrez.email = "(此處寫你自己在官網(wǎng)注冊(cè)的郵箱賬號(hào))" # 應(yīng)用自己的賬號(hào)訪問NCBI數(shù)據(jù)庫
 
 # 此處需將服務(wù)器協(xié)議指定為1.0,否則會(huì)出現(xiàn)報(bào)錯(cuò)。http.client.IncompleteRead: IncompleteRead(0 bytes read)
 # 服務(wù)器http協(xié)議1.0,而python的是1.1,解決辦法就是指定客戶端http協(xié)議版本
 import http.client
 http.client.HTTPConnection._http_vsn = 10
 http.client.HTTPConnection._http_vsn_str = 'HTTP/1.0'
 
 """
 Entrez 是一個(gè)檢索系統(tǒng),可以用其訪問NCBI數(shù)據(jù)庫,比如說PubMed,GenBank,GEO等。
 獲得有關(guān) global PBDE 的所有文獻(xiàn)的PubMed IDs
 """
 # handle_0 = Entrez.esearch(db="pubmed", term="drug therapy[Subheading] AND adverse effects[Subheading] AND humans[MeSH Terms]", retmax=306431)
 handle_0 = Entrez.esearch(db="pubmed", term="drug therapy[MeSH Subheading] AND adverse effects[MeSH Subheading] AND humans[MeSH Terms] AND (2000/01/01[Date - Publication] : 2021/12/31[Date - Publication])",
              ptyp="Review", usehistory="y", retmax=306431)
 record = Entrez.read(handle_0) # 獲取檢索條件的所有文獻(xiàn)
 idlist = record["IdList"] # 提取出文獻(xiàn)id
 print ("Total: ", record["Count"])
 No_Papers = len(idlist)  # 共306431篇文獻(xiàn) 2000-01-01:2021-12-31
 webenv = record['WebEnv']
 query_key = record['QueryKey']
 
 total = No_Papers
 step = 1300
 print("Result items:", total)
 with open("./Data_PubMed/PBDE1.txt", 'w') as f:
   for start in range(0, total, step):
     print("Download record %i to %i" % (start + 1, int(start + step)))
     handle_1 = Entrez.efetch(db="pubmed", retstart=start, rettype="medline", retmode="text",
                 retmax=step, webenv=webenv, query_key=query_key) # 獲取上述所有文獻(xiàn)的PubMed IDs
     records = Medline.parse(handle_1)
     records = list(records) # 將迭代器轉(zhuǎn)換至列表(list)
     for index in np.arange(len(records)):
       id = records[index].get("PMID", "?")
       title = records[index].get("TI", "?")
       title = title.replace('[', '').replace('].', '') # 若提取的標(biāo)題出現(xiàn)[].符號(hào),則去除
       abstract = records[index].get("AB", "?")
       f.write(id)
       f.write("\n")
       f.write(title)
       f.write("\n")
       f.write(abstract)
       f.write("\n")

話不多說,結(jié)果跑出來了我真的很快樂~

最后的結(jié)果是存放在txt文件中,大伙兒根據(jù)自己的需求改變代碼所需字段啊。

現(xiàn)在我來解釋一下,我貼上的這串代碼的實(shí)現(xiàn)原理,首先是通過Entrez檢索到符合我篩選條件的文獻(xiàn),里邊的限制條件包括了幾個(gè)詞匯匹配以及時(shí)間限制,時(shí)間我限制在了2000年1月1日到2021年的12月31日(這里的時(shí)間我選用的是Date - Publication,時(shí)間選取Date - Completion、Date - Modification還是Date - Publication其實(shí)還是有爭(zhēng)議的,大家自行考慮選取)。

Entrez.esearch的作用就是用來檢索的,里邊的參數(shù)db指向你要檢索的數(shù)據(jù)庫,代碼中的注釋也寫了,Entrez作為一個(gè)接口檢索,除了能夠檢索PubMed中的文獻(xiàn),也能去到別的數(shù)據(jù)庫檢索文獻(xiàn);term是寫你的篩選語句,注意你寫的檢索語句不能帶有引號(hào),單引號(hào)也不行,否則會(huì)檢索不到,如果不知道檢索語句怎么寫,或者是不知道字段是否被定義,可以在官網(wǎng)的檢索那里https://pubmed.ncbi.nlm.nih.gov/advanced/選擇字段輸入內(nèi)容自動(dòng)生成query,但是生成的語句是不太智能的,會(huì)有很多括號(hào)是你不需要的,自己寫代碼的時(shí)候要適當(dāng)去掉;ptyp我這里用的是Review,usehistory是y,意思是后邊我的檢索要記住這個(gè)語句,根據(jù)歷史查詢來檢索;retmax如果不進(jìn)行設(shè)置的話,默認(rèn)給你的最大數(shù)據(jù)量好像是只有1000,我要的檢索內(nèi)容是超過這個(gè)值的,因此我需要自定義檢索的數(shù)量。

Entrez.read是對(duì)Entrez.esearch檢索到的內(nèi)容進(jìn)行讀取,里邊包含了9種元素,我們主要是想從中得到文獻(xiàn)的id號(hào),只有拿到了文獻(xiàn)的id號(hào),我們后面進(jìn)行摘要的提取才能準(zhǔn)確定位。

最后是循環(huán)當(dāng)中步長(zhǎng)的設(shè)置,這里就要根據(jù)自己的需求來定義了,包括內(nèi)容的提取,因?yàn)槲抑恍枰狿MID、標(biāo)題(TI)、摘要(AB),所以我就沒有加載別的內(nèi)容進(jìn)來,這里也有一點(diǎn)要注意,標(biāo)題下載下來是大部分帶有[ ].的,方便操作我直接就在下載的時(shí)候給去除了,這也是上面replace代碼的由來。

附上我參考的鏈接,如果我這篇文章解決不了你的問題,那么希望下面的渠道能夠幫助到你

https://zhuanlan.zhihu.com/p/54611852

https://zhuanlan.zhihu.com/p/262957260

以上就是Python 利用Entrez庫篩選下載PubMed文獻(xiàn)摘要的示例的詳細(xì)內(nèi)容,更多關(guān)于Python Entrez庫下載PubMed文獻(xiàn)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python創(chuàng)建Flask Talisman應(yīng)用程序的步驟詳解

    python創(chuàng)建Flask Talisman應(yīng)用程序的步驟詳解

    Flask是一個(gè)功能強(qiáng)大的Web框架,主要用于使用Python語言開發(fā)有趣的Web應(yīng)用程序,Talisman基本上是一個(gè)Flask擴(kuò)展,用于添加HTTP安全標(biāo)頭我們的Flask應(yīng)用程序易于實(shí)施,本文就給大家講講帶Talisman的Flask安全性,需要的朋友可以參考下
    2023-09-09
  • Python pandas中的iloc使用小結(jié)

    Python pandas中的iloc使用小結(jié)

    iloc是Pandas中一個(gè)重要的工具,用于按照整數(shù)位置選擇數(shù)據(jù),通過使用整數(shù)索引,它使得在數(shù)據(jù)處理中按照位置選擇數(shù)據(jù)變得簡(jiǎn)單和直觀,這篇文章主要介紹了Python pandas中的iloc使用方法,需要的朋友可以參考下
    2024-06-06
  • 對(duì)比Python中__getattr__和 __getattribute__獲取屬性的用法

    對(duì)比Python中__getattr__和 __getattribute__獲取屬性的用法

    這篇文章主要介紹了對(duì)比Python中__getattr__和 __getattribute__獲取屬性的用法,注意二者間的區(qū)別,__getattr__只作用于不存在的屬性,需要的朋友可以參考下
    2016-06-06
  • python對(duì)綁定事件的鼠標(biāo)、按鍵的判斷實(shí)例

    python對(duì)綁定事件的鼠標(biāo)、按鍵的判斷實(shí)例

    今天小編就為大家分享一篇python對(duì)綁定事件的鼠標(biāo)、按鍵的判斷實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • python如何從文件讀取數(shù)據(jù)及解析

    python如何從文件讀取數(shù)據(jù)及解析

    這篇文章主要介紹了python如何從文件讀取數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Python上下文管理器和with塊詳解

    Python上下文管理器和with塊詳解

    這篇文章主要為大家詳細(xì)介紹了Python上下文管理器和with塊的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Linux環(huán)境下GPU版本的pytorch安裝

    Linux環(huán)境下GPU版本的pytorch安裝

    使用默認(rèn)的源地址下載速度很慢,所以一般都是使用國內(nèi)源,今天花了點(diǎn)時(shí)間配置安裝,所以記錄一下,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • 如何編寫python的daemon程序

    如何編寫python的daemon程序

    這篇文章主要介紹了如何編寫python的daemon程序,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-01-01
  • python 浮點(diǎn)數(shù)四舍五入需要注意的地方

    python 浮點(diǎn)數(shù)四舍五入需要注意的地方

    這篇文章主要介紹了python 四舍五入需要注意的地方,幫助大家避免一些不必要的坑,感興趣的朋友可以了解下
    2020-08-08
  • python3 反射的四種基本方法解析

    python3 反射的四種基本方法解析

    這篇文章主要介紹了python3 反射的四種基本方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08

最新評(píng)論

门源| 南阳市| 拜城县| 长白| 嘉义县| 宣恩县| 通许县| 白城市| 江阴市| 八宿县| 长兴县| 东丰县| 新源县| 江安县| 新宾| 黎平县| 松潘县| 福海县| 彰武县| 股票| 余干县| 德钦县| 通江县| 泾川县| 什邡市| 竹山县| 灵寿县| 西和县| 韶关市| 唐海县| 富顺县| 呈贡县| 松溪县| 台江县| 汉寿县| 白山市| 灌阳县| 武川县| 济阳县| 湟源县| 新巴尔虎右旗|