首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >通过PubTator进行PubMed文本挖掘

通过PubTator进行PubMed文本挖掘

原创
作者头像
叶子Tenney
发布于 2023-04-28 06:56:52
发布于 2023-04-28 06:56:52
2.9K00
代码可运行
举报
运行总次数:0
代码可运行

引言

有许多可以从 PubMed 的文章摘要中提取信息的文本挖掘脚本,包括: NLTKTextBlobgensimspaCyIBM Whatson NLUPubTatorLitVarNegBioOpenNLPBioCreative 等<sup>1</sup>。这里介绍一下 PubTator Central (PTC) <sup>2</sup>。

PubTator Central(PTC) 是一个基于 Web 的系统,提供 PubMed 摘要和 PMC 全文文章中基因和突变等生物医学概念的自动注释。

效果展示

PMC6982432全文的生物医学概念注释 - PubTator
PMC6982432全文的生物医学概念注释 - PubTator

使用方式

PubTator API的使用

PubTator 提供了 API 以导出注释,并提供包括 curlPerlPythonJava 在内的四种代码示例。当然,直接通过浏览器访问也是可行的。以 GETPOSTBioCpubtatorJSON 格式批量导出 PubTator 的注释出版物,单次最多以 GET 形式获得 100 份或以 POST 形式获得 1000 份。

在线教程(https://www.ncbi.nlm.nih.gov/research/pubtator/api.html)<sup>3</sup>提供了完整的详细信息和代码示例。

PTC RESTful Web 服务以简单的制表符分隔格式( PubTator 格式)和两种基于 BioC 的格式: BioC-XMLBioC-JSON 提供对 PTC 结果的编程访问。 PMC - TM 全文文章需要 BioC-XMLBioC-JSON ,但所有三种格式都支持 PubMed 摘要。

PTC RESTful Web 服务 API 的用法:

摘要示例:

https://www.ncbi.nlm.nih.gov/research/pubtator-api/publications/export/pubtator?pmids=26739349,28483577

摘要示例
摘要示例

全文示例:

https://www.ncbi.nlm.nih.gov/research/pubtator-api/publications/export/biocxml?pmcids=PMC4743391

全文示例
全文示例

因此, 可以使用 curl 命令来获得相应的文档. 如:

curl https://www.ncbi.nlm.nih.gov/research/pubtator-api/publications/export/pubtator?pmids=26739349,28483577

如需获得文件, 在后面添加 -o output.pubtator 即可(对 pubtator 文件).

代码语言:txt
AI代码解释
复制
https://www.ncbi.nlm.nih.gov/research/pubtator-api/publications/export/[Format]?[Type]=[Identifiers]&concepts=[Bioconcepts]

PubTator在python中的安装和使用

代码语言:txt
AI代码解释
复制
注: 如仅需要对PubMed文献进行处理, 则无需搭建环境, 存在 `requests` 包即可. 可跳至本文"上传 `PMID` "部分继续观看. 

conda建立新环境

代码语言:txt
AI代码解释
复制
# conda run
conda create --name py36 python=3.6
conda env list
conda activate py36
conda install virtualenv

conda 安装的安装过程详见篇外部分<sup>外1</sup>.

PubTator Python安装

代码语言:txt
AI代码解释
复制
virtualenv -p python3.6 venv
source venv/bin/activate
pip install -r requirements.txt
报错处理
代码语言:shell
AI代码解释
复制
ERROR: Could not find a version that satisfies the requirement en-core-sci-sm==0.2.4 (from versions: none)
ERROR: No matching distribution found for en-core-sci-sm==0.2.4

根据 scispacy 官网<sup>6</sup>提示:

代码语言:txt
AI代码解释
复制
pip install https://s3-us-west-2.amazonaws.com/ai2-s2-scispacy/releases/v0.5.1/en_core_sci_sm-0.5.1.tar.gz

进入 requirements.txt 注释 en-core-sci-sm==0.2.4 :

# en-core-sci-sm==0.2.4

再次运行 pip install -r requirements.txt .

PubTator Python使用

上传 PMID

示例:

代码语言:txt
AI代码解释
复制
python SubmitPMIDList.py input_pmid/ex.pmid pubtator
pubtator
pubtator
代码语言:txt
AI代码解释
复制
$ python SubmitPMIDList.py [InputFile] [Format] [BioConcept]
[Inputfile]: a file with a pmid list
[Format]: 1) pubtator (PubTator)
			2) biocxml (BioC-XML)
			3) biocjson (JSON-XML)
			* Reference for format descriptions: https://www.ncbi.nlm.nih.gov/research/bionlp/APIs/format/
[Bioconcept]: Default (leave it blank) includes all bioconcepts. Otherwise, user can choose gene, disease, chemical, species, proteinmutation, dnamutation, snp, and cellline.

* All arguments are case sensitive.

根据文档可知, 可以输出三种格式:

  • pubtator (PubTator)
  • biocxml (BioC-XML)
  • biocjson (JSON-XML)

其中, PubTator 是以制表符分隔的, 可以直接在Excel中打开.

保存文本

SubmitPMIDList.py 中查找

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
	else:
		print(r.text.encode("utf-8"))

并添加

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
		with open('output_'+Inputfile+'.'+Format, 'wb') as f:
			f.write(r.text.encode("utf-8"))
output.pubtator
output.pubtator
上传原始文本

同样, 可以上传三种数据格式, 后缀名分别为 BioCPubTatorjson .

而后根据相应的格式传回处理后的文件.

ex. PubTator
ex. PubTator
代码语言:txt
AI代码解释
复制
# Submitting requests
python SubmitText_request.py input All SessionNumber.txt
# Retrieving results
python SubmitText_retrieve.py input SessionNumber.txt output

第一步是提交输入文件并获得服务编号, 第二部是根据服务编号获得文件.

值得注意的是文件处理并不是实时的, 一般都需要10~20分钟. 另外, 官方示例中的 python SubmitText_retrieve.py SessionNumber.txt output 疑似缺少参数, 应添加输入文件夹.

批量上传

代码来自codeium:

Q: 写一个shell脚本将一个纯文本文件每一千行分隔一次, 并输出文件名列表到文件.

A: 下面是一个可以实现您要求的shell脚本,它将一个纯文本文件分隔成每1000行一个文件,并将文件名列表输出到一个文件中:

代码语言:shell
AI代码解释
复制
#!/bin/bash

# 每个文件的行数
LINES=1000

# 输入文件的名称
INPUT_FILE="ex.pmid"

# 文件名前缀
FILE_PREFIX="ex"

# 计数器
count=1

# 读取文件并将其拆分为多个小文件
split -l $LINES $INPUT_FILE $FILE_PREFIX

# 将小文件重命名为您想要的名称格式
for file in $FILE_PREFIX*
do
    mv "$file" "${FILE_PREFIX}_${count}.pmid"
    count=$((count+1))
done

# 输出文件列表到文件
ls $FILE_PREFIX* > file_names.txt

您可以将上面的脚本保存为 split_and_list_to_file.sh 并通过以下方式运行它:

代码语言:shell
AI代码解释
复制
chmod +x split_and_list_to_file.sh
./split_and_list_to_file.sh

请注意,此脚本假定输入文件名为 ex.pmid ,每个输出文件包含1000行,并将输出文件命名为 ex_1.pmidex_2.pmid 等。如果您需要使用不同的文件名或行数,请相应地更改变量。

另外, 脚本需要 cd 进入 input_pmid 运行.

之后, 对 filenames.txt 中的 ex_1.pmidex_2.pmid 等依次运行 python SubmitPMIDList.py inputpmid/ex.pmid pubtator .

代码语言:shell
AI代码解释
复制
#!/bin/bash

# 读取文件列表
for file in $(sort -t_ -k2 -n file_names.txt)
do
  # 运行 SubmitPMIDList.py 脚本
  python ../SubmitPMIDList.py $file pubtator
done

可以将上述脚本保存为 run_submit_pmid.sh ,并通过以下命令执行:

代码语言:shell
AI代码解释
复制
chmod +x run_submit_pmid.sh
./run_submit_pmid.sh

总流程:

代码语言:shell
AI代码解释
复制
cd input_pmid
./split_and_list_to_file.sh
./run_submit_pmid.sh
输出结果
输出结果

结论

至此,通过PubTator进行PubMed文本挖掘的处理结果已经获得,如何展示且待下回分解。

本文所使用代码文件可在公众号后台回复 PubTator提取PubMed文章摘要信息 获得.

另外, PubTator 隶属于 bionlp 项目<sup>7</sup>,除 PubTator 以外该项目组还 LitSuggestTeamTat 等优秀项目,有兴趣的话大家可以一试。

  1. LitSuggest:一个文献推荐和策展系统。NAR 2021。
  2. TeamTat:一个协作的文本/语料库注释工具。NAR 2020。
  3. PubTator:全文文章的自动概念注释。2013年,2019年。
  4. LitSense:在句子层面理解生物医学文献。NAR 2019。
  5. LitVar:一个用于基因组变异的语义文献搜索引擎。NAR 2018。篇外

1. conda安装

安装conda:

代码语言:shell
AI代码解释
复制
wget https://repo.continuum.io/miniconda/Miniconda3-latest-$(uname -s)-$(uname -m).sh
# exemple: wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash ./Miniconda3-latest-$(uname -s)-$(uname -m).sh
# exemple: bash ./Miniconda3-latest-Linux-x86_64.sh
source ~/.bashrc

中国镜像

代码语言:shell
AI代码解释
复制
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda
conda config --set show_channel_urls yes
conda config --show  # 查看新增channels

2. 本机安装python3

不推荐, 比较麻烦

代码语言:txt
AI代码解释
复制
sudo apt-get install python
python -V
python3 -V
代码语言:shell
AI代码解释
复制
root@tenney:/www/wwwroot/mdreader.yeyeziblog.eu.org# whereis python
python: /usr/bin/python3.8-config /usr/bin/python2.7 /usr/bin/python3.8 /usr/lib/python2.7 /usr/lib/python3.8 /usr/lib/python3.9 /etc/python2.7 /etc/python3.8 /usr/local/lib/python2.7 /usr/local/lib/python3.8 /usr/include/python3.8 /usr/share/python
root@tenney:/www/wwwroot/mdreader.yeyeziblog.eu.org# rm /usr/bin/python
root@tenney:/www/wwwroot/mdreader.yeyeziblog.eu.org# ln -s /usr/bin/python3.8 /usr/bin/python
代码语言:txt
AI代码解释
复制
RuntimeError: failed to find interpreter for Builtin discover of python_spec='python3.6'
ERROR: Cannot uninstall 'certifi'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

引用

  1. 基于知识图谱的文本挖掘 - 超越文本挖掘 - 专知
  2. PubTator Central - NCBI - NLM - NIH
  3. PubTator Central API - NCBI - NLM - NIH
  4. 怎么在ubuntu安装python
  5. [原创] Anaconda安装Python 3.6版本 – 编码无悔 /  Intent & Focused
  6. scispacy | SpaCy models for biomedical text processing
  7. Zhiyong Lu - NCBI - NLM

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
生物信息学技能面试题(第4题)-多个同样的行列式文件合并起来
相信用过htseq-count的朋友都知道,它是分开对每个样本计算所有的基因表达量,所以会生成一个个独立的文件,我用perl脚本模仿它的结果如下: $ head a.txt gene_1 178 gene_2 692 gene_3 486 gene_4 666 gene_5 395 gene_6 48 gene_7 926 gene_8 733 gene_9 660 gene_10 578 第一列是基因,第二列是该基因的counts值,共有a~z这26个样本的counts文件,需要合并成一
生信技能树
2018/03/08
1.8K0
生物信息学技能面试题(第4题)-多个同样的行列式文件合并起来
dbGaP数据库的测序数据当然是可以申请成功的
一般来说,NCBI数据库提供的prefetch命令下载sra文件速度太慢,可以参考:使用ebi数据库直接下载fastq测序数据 , 需要自行配置好,然后去EBI里面搜索到的 fq.txt 路径文件:
生信技能树
2021/07/06
1.8K0
ATAC-seq实操
本实操完全学习了:给学徒的ATAC-seq数据实战(附上收费视频) 的代码及流程,首先致谢!
生信技能树
2018/11/05
7.3K2
RNA-seq(2)-2:下载数据
首先,按照这个方法可以去查找文章和数据。共下载7个文件,我仿写了个代码,如下: 运行起来速度还是很好,平均5M/S.
Y大宽
2018/09/10
9290
HiC数据分析实战(一)
首先需要明白数据分析流程,可以查看第一讲:三维基因组学习笔记,提炼流程如下: Hi-C标准分析流程(比对及过滤,原始互作图谱构建) 下载参考基因组及构建bowtie2索引 把fq测序数据比对都参考基因
生信技能树
2018/08/06
6.9K0
一篇文章学会ChIP-seq分析(上)
写在前面:《一篇文章学会ChIP-seq分析(上)》《一篇文章学会ChIP-seq分析(下)》为生信菜鸟团博客相关文章合集,共九讲内容。带领你从相关文献解读、资料收集和公共数据下载开始,通过软件安装、数据比对、寻找并注释peak、寻找motif等ChIP-seq分析主要步骤入手学习,最后还会介绍相关可视化工具。 第一讲:文献选择与解读 文献;CARM1 Methylates Chromatin Remodeling Factor BAF155 to Enhance Tumor Progression and
生信技能树
2018/03/08
9.4K1
一篇文章学会ChIP-seq分析(上)
GEO数据库的每个GPL平台对应的详细信息获取txt文本文件
一般来说,GEO数据库的每个GPL平台都有对应的网页,而且可以获取其详细信息的txt文本文件,比如:https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc
生信技能树
2023/09/04
1.7K0
GEO数据库的每个GPL平台对应的详细信息获取txt文本文件
R语言网络爬虫之Pubmed API的使用
查询文献你懂的,我认为Pubmed首选。当oncotarget杂志不再被Pubmed检索的收获,多少博士内心发慌,多少专家内心悔恨自己掏出的稿费。当然,用好Pubmed不能仅限于利用网页界面去检索那么几个关键词,AND 或者 OR。今天我来给大家介绍一下Pubmed API是如何在R语言中运用自如的。
一粒沙
2019/07/31
6.6K20
R语言网络爬虫之Pubmed API的使用
基于PubMed数据库挖掘研究最多的基因与以及有关某基因发表了多少篇文献?这些文献有什么特点???
如果我们想探索一下什么基因研究的最多,那就是检索pubmed数据库资源。在 NCBI的ftp里面关于人的一些基因信息 :
DoubleHelix
2022/11/24
8870
基于PubMed数据库挖掘研究最多的基因与以及有关某基因发表了多少篇文献?这些文献有什么特点???
不装了,摊牌了,转录组测序表达量矩阵就这么简单!
虽然说我们确实是在单细胞天地,生信菜鸟团,生信技能树等多个公众号转发了:作者仅提供了fpkm格式表达量矩阵的转录组测序数据集该如何重新分析呢 里面的小技巧,但仍然是各个交流群还是有人发问,关于转录组测序的公共数据集如何分析,因为大家看到的常规教程都是之前的表达量芯片的数据分析流程。
生信技能树
2024/11/21
1970
不装了,摊牌了,转录组测序表达量矩阵就这么简单!
找个motif嘛,简单
上午在朋友圈看到有公众号点名: 好不容易有人搞个公众号活动,就支持一下,毕竟生信技能,都在技能树啊~ 原文见:画泡泡图,发CNS 虽然今天整体都在开会ing,但还是抽空上午跑了个程序,晚上出结果,再
生信技能树
2018/06/07
2.7K0
单细胞专题 | 4.单细胞转录组的上游分析-从SRA到FASTQ
SRAtoolkit是NCBI提供的SRA文件处理工具集, SRA文件是NCBI的SRA数据库数据的储存格式,许多公开的scRNA-seq数据都会上传到该数据库。SRAtoolkit将NCBI的SRA数据库中SRA文件转换为FastQ文件。
DoubleHelix
2022/06/13
4.1K0
单细胞专题 | 4.单细胞转录组的上游分析-从SRA到FASTQ
高速下载GEO数据库的单细胞表达量矩阵文件
但是如果要下载成百上千个文件,最好是使用代码批量下载,而且现在单细胞技术的大行其道,使得表达量矩阵文件本身也会很巨大,比如:https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE253013 ,可以看到如下所示9.3 Gb文件 :
生信技能树jimmy
2024/02/22
1.2K0
高速下载GEO数据库的单细胞表达量矩阵文件
RNA-seq 保姆教程:差异表达分析(一)
RNA-seq 目前是测量细胞反应的最突出的方法之一。RNA-seq 不仅能够分析样本之间基因表达的差异,还可以发现新的亚型并分析 SNP 变异。本教程[1]将涵盖处理和分析差异基因表达数据的基本工作流程,旨在提供设置环境和运行比对工具的通用方法。请注意,它并不适用于所有类型的分析,比对工具也不适用于所有分析。此外,本教程的重点是给出一般的分析流程。对于更大规模的研究,强烈建议使用集群来增加内存和计算能力。
数据科学工厂
2023/02/27
2.1K0
RNA-seq 保姆教程:差异表达分析(一)
分享| PyPubMed文献搜索整理小工具
欢迎回来,科研的日常总避不开要查阅、下载整理文献。之前我们推荐过不同的方法,例如NCBI加谷歌助手、SCI-hub代替网站、中文期刊下载方法等。但都还是停留在手动层面,今天分享一个最近看到自动化小工具,不仅在下载中添加了条件筛选,将文献检索与摘要输出excel表格,我扒了它的github仓库,一起来看看吧~
生信菜鸟团
2021/03/23
7260
Pubmed金主不给钱了~我们该怎么办
https://www.ncbi.nlm.nih.gov/pubmed/Pubmed,GG了
Chris生命科学小站
2023/02/12
3720
Pubmed金主不给钱了~我们该怎么办
NLM 公布了一个新的重新设计的 PubMed 数据库
经常使用 PubMed 的童鞋可能已经发现,美国国家医学图书馆(NLM)在今年 10 月份左右发布了一个新的重新设计的版本以取代 PubMed 数据库的现有版本,新版本现在已经上线,可以通过下面的链接进行访问:https://pubmed.ncbi.nlm.nih.gov/。
章鱼猫先生
2021/10/15
5910
NLM 公布了一个新的重新设计的 PubMed 数据库
生物信息中的Python 03 | 自动化操作NCBI
相信大家在上一文中下载fasta的时候还没有感觉到下载是多么复杂,但是对于分析比对多个序列文件时,这个工作量说多了都是泪。比如,老板让你比对自己测定序列与 NCBI 库中序列,并构建相应的进化树,而这个序列需要大于100条。我想你的心情不会和下载一条序列时那么平静,那么,接下来通过BioPython提供的接口来实现快速的自动化序列下载。
白墨石
2021/01/13
1.1K0
生物信息中的Python 03 | 自动化操作NCBI
DNA甲基化芯片分析01: 使用methylumi和limma分析27K DNA甲基化芯片数据
27K的数据是很老的芯片数据,但是客户有需求就要找方法分析,主流的DNA甲基化芯片R包minfi和champ都只支持450K和850K的芯片。所以在bioconductor中搜索到了methylumi这个包,可以从idat读数据,经过质控得到beta值矩阵,之后用limma做差异分析。
生信探索
2023/02/09
4620
除了pubmed, ncbi还有哪些数据库
对于医学生而言,我们要是查询文献的话,更多使用的还是pubmed而不是web of science这样的文献检测数据库。关于pubmed,这个是属于NCBI旗下的一个文献检索网站。
医学数据库百科
2021/07/28
2.1K0
推荐阅读
相关推荐
生物信息学技能面试题(第4题)-多个同样的行列式文件合并起来
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档