【病理医疗】(一)PubMed数据库获取文章信息调研
调研内容
PubMed的检索可以大致分成基础检索和精准检索
基础检索:
就是最简单的使用PubMed首页搜索框直接输入,返回结果广泛但精度较低,难以批量获取数据
精准检索:
里面通常需要配合 Medical Subject Headings (MeSH) 来确定特定的检索领域,比如病理Pathology,Pathology的MeSH下面又有很多细分的方向,如下图;另外可以添加更多细分结合了布尔逻辑运算(AND/OR/NOT)的检索条件,比如时间、作用物体(人or 动物)、文章类型等。
要获取病理相关的论文信息,使用病理的MeSH主题词配合额外的检索条件是比较合适的。
批量获取数据的方式
有两种方式访问pubmed的数据
- 直接FTP下载文件: https://pubmed.ncbi.nlm.nih.gov/download/
这里分成两部分,一个是年度的基线文件,每年整理一次,为XML格式文件;一个是每日更新的文件,XML格式;
所以如果想通过这种方式获得最新的所有论文,需要先有年度基线文献,然后再把每日的合并进去;
每个年度基线里面也会有很多子文件,里面包含了一些文章的信息,年份、标题、作者、摘要、分类等信息
- 使用api访问获取文章内容:Entrez https://www.ncbi.nlm.nih.gov/books/NBK25501/
他们提供了一个基于url传参来获取文章信息的接口,规定了很多参数,比如邮箱、访问的数据库、检索词、MeSH、返回数量等。
python有个现成的库Bio,可以直接导入Entrez。
主要使用Esearch函数进行检索,使用use_history缓存每次之前的检索位置,参数说明:https://www.ncbi.nlm.nih.gov/books/NBK25499/#chapter4.ESearch
完成代码后发现PubMed限制死了使用ESearch只能访问最多9999条记录:
RuntimeError: Search Backend failed: Exception:
'retstart' cannot be larger than 9998. For PubMed, ESearch can only retrieve the first 9,999 records matching the query. To obtain more than 9,999 PubMed records, consider using EDirect that contains additional logic to batch PubMed search results automatically so that an arbitrary number can be retrieved. For details see https://www.ncbi.nlm.nih.gov/books/NBK25499/
两种思路,一个是按年份分开,把每年的单独读取(不够彻底,但是比较灵活,如果出现一年内的文章超过1万条,会有同样的问题,可以再按照期刊类型之类的进行划分,但是实践下来每年也就1000条左右,足够使用)
第二个思路是按照他提供的Edirect工具直接请求所有,会自动处理去重和合并。需要安装一下EDirect相关的三方库。
代码实现
省略
附录
请求后每一条record有很多字段:
大致对比了一下文档:
- 关键时间字段
字段名 | 含义 | 示例值 |
---|---|---|
DP | 出版日期 (Date of Publication) | '2024 Dec' |
DEP | 电子出版日期 (Date of Electronic Publication) | '20241205' (YYYYMMDD) |
EDAT | Entrez 收录日期 | '2024/12/05 06:23' |
MHDA | MeSH 标引日期 | '2024/12/27 06:19' |
CRDT | 记录创建日期 | ['2024/12/05 04:47'] |
- 核心文献信息字段
字段名 | 含义 | 示例值 |
---|---|---|
PMID | PubMed 唯一标识符 | '39633285' |
TI | 标题 (Title) | 'The Role of Neuropathology Evaluation...' |
AB | 摘要 (Abstract) | 'Test article (TA)-induced seizures...' |
FAU | 作者全名 (Full Author) | ['Sokolowski, Katie', 'Liu, Judy', ...] |
AU | 作者缩写 (Abbreviated Author) | ['Sokolowski K', 'Liu J', ...] |
AD | 作者机构 (Affiliation) | ['Denali Therapeutics, ...', ...] |
LA | 语言 (Language) | ['eng'] (英语) |
PT | 文章类型 (Publication Type) | ['Journal Article', 'Review'] |
PL | 出版国家 (Country) | 'United States' |
TA | 期刊缩写 (Journal Abbrev) | 'Toxicol Pathol' |
JT | 期刊全名 (Journal Title) | 'Toxicologic pathology' |
VI | 卷号 (Volume) | '52' |
IP | 期号 (Issue) | '8' |
PG | 页码 (Pages) | '566-573' |
LID | DOI 或标识符 | '10.1177/01926233241300065 [doi]' |
- 主题相关字段
字段名 | 含义 | 示例值 |
---|---|---|
MH | MeSH 主题词 (Medical Subject Headings) | ['*Seizures', 'Animals', '*Brain/pathology', ...] |
OT | 其他关键词 (Other Terms) | ['EEG', 'convulsions', ...] |
SB | 子集 (Subset) | 'IM' (Index Medicus) |
- 出版状态与标识符
字段名 | 含义 | 示例值 |
---|---|---|
AID | 文章标识符 (Article ID) | ['10.1177/01926233241300065 [doi]'] |
PST | 出版状态 (Publication Status) | 'ppublish' (印刷版) |
SO | 完整引用 (Source) | 'Toxicol Pathol. 2024 Dec;52(8):566-573...' |