本篇文章給大家分享的是有關(guān)如何自Python中使用Entrez庫(kù)篩選并下載PubMed文獻(xiàn),小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
創(chuàng)新互聯(lián)公司服務(wù)緊隨時(shí)代發(fā)展步伐,進(jìn)行技術(shù)革新和技術(shù)進(jìn)步,經(jīng)過十多年的發(fā)展和積累,已經(jīng)匯集了一批資深網(wǎng)站策劃師、設(shè)計(jì)師、專業(yè)的網(wǎng)站實(shí)施團(tuán)隊(duì)以及高素質(zhì)售后服務(wù)人員,并且完全形成了一套成熟的業(yè)務(wù)流程,能夠完全依照客戶要求對(duì)網(wǎng)站進(jìn)行成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、建設(shè)、維護(hù)、更新和改版,實(shí)現(xiàn)客戶網(wǎng)站對(duì)外宣傳展示的首要目的,并為客戶企業(yè)品牌互聯(lián)網(wǎng)化提供全面的解決方案。任務(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ù)是有三十多萬(wàn)條,但是每次只能下載10000條,那我豈不是要手動(dòng)n次。。很明顯,在大批量下載文獻(xiàn)的情況下,官網(wǎng)不是很友好。
(2)R語(yǔ)言有個(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í)庫(kù)來了,Python自帶的Bio包中的Entrez檢索庫(kù),簡(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ù)庫(kù) # 此處需將服務(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ù)庫(kù),比如說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")
網(wǎng)站題目:如何自Python中使用Entrez庫(kù)篩選并下載PubMed文獻(xiàn)-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://vcdvsql.cn/article48/djppep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、網(wǎng)站內(nèi)鏈、網(wǎng)站制作、手機(jī)網(wǎng)站建設(shè)、用戶體驗(yàn)、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容
營(yíng)銷型網(wǎng)站建設(shè)知識(shí)