电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python 利用Entrez庫篩選下載PubMed文獻摘要的示例

瀏覽:84日期:2022-07-04 13:59:02

作者:xiaolanLin

聲明 :本文版權歸作者和博客園共有,來源網址:https://www.cnblogs.com/xiaolan-Lin

一個不是學生物的孩子來搞生物,當真是變成了一塊廢鐵啊,但也是讓我體會到了一把生物信息的力量。

廢話不多說,開整!

任務:快速高效從PubMed上下載滿足條件的文獻PMID、標題(TI)、摘要(AB)。

PubMed官網 https://pubmed.ncbi.nlm.nih.gov

此處有幾種選擇可以達到目的:

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

Python 利用Entrez庫篩選下載PubMed文獻摘要的示例

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

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

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

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

注:Entrez在Bio包中,Bio的安裝請移步 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 = '(此處寫你自己在官網注冊的郵箱賬號)' # 應用自己的賬號訪問NCBI數據庫 # 此處需將服務器協議指定為1.0,否則會出現報錯。http.client.IncompleteRead: IncompleteRead(0 bytes read) # 服務器http協議1.0,而python的是1.1,解決辦法就是指定客戶端http協議版本 import http.client http.client.HTTPConnection._http_vsn = 10 http.client.HTTPConnection._http_vsn_str = ’HTTP/1.0’ ''' Entrez 是一個檢索系統,可以用其訪問NCBI數據庫,比如說PubMed,GenBank,GEO等。 獲得有關 global PBDE 的所有文獻的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) # 獲取檢索條件的所有文獻 idlist = record['IdList'] # 提取出文獻id print ('Total: ', record['Count']) No_Papers = len(idlist) # 共306431篇文獻 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) # 獲取上述所有文獻的PubMed IDs records = Medline.parse(handle_1) records = list(records) # 將迭代器轉換至列表(list) for index in np.arange(len(records)): id = records[index].get('PMID', '?') title = records[index].get('TI', '?') title = title.replace(’[’, ’’).replace(’].’, ’’) # 若提取的標題出現[].符號,則去除 abstract = records[index].get('AB', '?') f.write(id) f.write('n') f.write(title) f.write('n') f.write(abstract) f.write('n')

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

Python 利用Entrez庫篩選下載PubMed文獻摘要的示例

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

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

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

Entrez.read是對Entrez.esearch檢索到的內容進行讀取,里邊包含了9種元素,我們主要是想從中得到文獻的id號,只有拿到了文獻的id號,我們后面進行摘要的提取才能準確定位。

Python 利用Entrez庫篩選下載PubMed文獻摘要的示例

最后是循環當中步長的設置,這里就要根據自己的需求來定義了,包括內容的提取,因為我只需要PMID、標題(TI)、摘要(AB),所以我就沒有加載別的內容進來,這里也有一點要注意,標題下載下來是大部分帶有[ ].的,方便操作我直接就在下載的時候給去除了,這也是上面replace代碼的由來。

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

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

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

以上就是Python 利用Entrez庫篩選下載PubMed文獻摘要的示例的詳細內容,更多關于Python Entrez庫下載PubMed文獻的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 中细软知识产权_专业知识产权解决方案提供商 | 美名宝起名网-在线宝宝、公司、起名平台 | 砍排机-锯骨机-冻肉切丁机-熟肉切片机-预制菜生产线一站式服务厂商 - 广州市祥九瑞盈机械设备有限公司 | 云南标线|昆明划线|道路标线|交通标线-就选云南云路施工公司-云南云路科技有限公司 | 威实软件_软件定制开发_OA_OA办公系统_OA系统_办公自动化软件 | 赛尔特智能移动阳光房-阳光房厂家-赛尔特建筑科技(广东)有限公司 | 众品家具网-家具品牌招商_家具代理加盟_家具门户的首选网络媒体。 | 臭氧实验装置_实验室臭氧发生器-北京同林臭氧装置网 | 钢托盘,钢制托盘,立库钢托盘,金属托盘制造商_南京飞天金属制品实业有限公司 | 最新范文网_实用的精品范文美文网 | AGV无人叉车_激光叉车AGV_仓储AGV小车_AGV无人搬运车-南昌IKV机器人有限公司[官网] | 无菌水质袋-NASCO食品无菌袋-Whirl-Pak无菌采样袋-深圳市慧普德贸易有限公司 | 旋片真空泵_真空泵_水环真空泵_真空机组-深圳恒才机电设备有限公司 | 猪I型/II型胶原-五克隆合剂-细胞冻存培养基-北京博蕾德科技发展有限公司 | 叉车电池-叉车电瓶-叉车蓄电池-铅酸蓄电池-电动叉车蓄电池生产厂家 | 热回收盐水机组-反应釜冷水机组-高低温冷水机组-北京蓝海神骏科技有限公司 | 沈飞防静电地板__机房地板-深圳市沈飞防静电设备有限公司 | 高压贴片电容|贴片安规电容|三端滤波器|风华电容代理南京南山 | pbootcms网站模板|织梦模板|网站源码|jquery建站特效-html5模板网 | 工业铝型材生产厂家_铝合金型材配件批发精加工定制厂商 - 上海岐易铝业 | 制丸机,小型中药制丸机,全自动制丸机价格-甘肃恒跃制药设备有限公司 | H型钢切割机,相贯线切割机,数控钻床,数控平面钻,钢结构设备,槽钢切割机,角钢切割机,翻转机,拼焊矫一体机 | 家用净水器代理批发加盟_净水机招商代理_全屋净水器定制品牌_【劳伦斯官网】 | 气力输送设备_料封泵_仓泵_散装机_气化板_压力释放阀-河南锐驰机械设备有限公司 | 福建珂朗雅装饰材料有限公司「官方网站」 | 哈希余氯测定仪,分光光度计,ph在线监测仪,浊度测定仪,试剂-上海京灿精密机械有限公司 | 二次元影像仪|二次元测量仪|拉力机|全自动影像测量仪厂家_苏州牧象仪器 | HEYL硬度计量泵-荧光法在线溶解氧仪-净时测控技术(上海)有限公司 | 电池高低温试验箱-气态冲击箱-双层电池防爆箱|简户百科 | 奶茶加盟,奶茶加盟店连锁品牌-甜啦啦官网 | 对夹式止回阀_对夹式蝶形止回阀_对夹式软密封止回阀_超薄型止回阀_不锈钢底阀-温州上炬阀门科技有限公司 | 上海公众号开发-公众号代运营公司-做公众号的公司企业服务商-咏熠软件 | 紧急切断阀_气动切断阀_不锈钢阀门_截止阀_球阀_蝶阀_闸阀-上海上兆阀门制造有限公司 | 安全,主动,被动,柔性,山体滑坡,sns,钢丝绳,边坡,防护网,护栏网,围栏,栏杆,栅栏,厂家 - 护栏网防护网生产厂家 | 动物麻醉机-数显脑立体定位仪-北京易则佳科技有限公司 | 招商帮-一站式网络营销服务|搜索营销推广|信息流推广|短视视频营销推广|互联网整合营销|网络推广代运营|招商帮企业招商好帮手 | 湖南自考_湖南自学考试网| 电解抛光加工_不锈钢电解抛光_常州安谱金属制品有限公司 | 玉米深加工机械,玉米加工设备,玉米加工机械等玉米深加工设备制造商-河南成立粮油机械有限公司 | 缠膜机|缠绕包装机|无纺布包装机-济南达伦特机械设备有限公司 | (中山|佛山|江门)环氧地坪漆,停车场地板漆,车库地板漆,聚氨酯地板漆-中山永旺地坪漆厂家 |