PubMed数据库作为最流行的文献检索数据库。本身提供了很多供用户使用的检索功能,关键词筛选机制。今天给大家介绍一个在R中进行PubMed数据库挖掘的工具包RISmed。其实这个包主要是利用了NCBI提供的API进行功能的封装,操作的简化。更多的详细参数参数可以参见:https://www.ncbi.nlm.nih.gov/books/NBK25499/。另外一个包则是主要进行对pubmed数据库中检索的结果进行进一步的标准化和拆分,主要涉及有摘要英文文本分词、词频统计的功能,摘要内文本基因名的频率统计的功能。首先我们先看下包的安装:
install.packages(“RISmed”)
install.packages(“pumed.mineR”)
devtools::install_github("kassambara/ggpubr")
install.packages(“wordcloud2”)
我们直接通过实例来进行对包中的功能进行演示:
1. 关键词的检索功能。需要用到函数EUtilsSummary(),其中query参数指的是需要检索的关键词,关键词的规则和在PubMed中的一致;db指的是在MCBI中 的数据库,当然不限于PubMed;retmax用于设置最大获取量,默认的最大值1000,所以需要根据结果进行设置;mindate和maxdate分别设定检索的开始时间和结束时间。接下来直接看下实例:
key="COVID-19"
data=EUtilsSummary(key,db="pubmed",retmax=122451,mindate=2019,maxdate=2021)
2. 获取上面结果的详细信息。需要用到函数EUtilsGet()。其可以获取文章的所有相关信息,包括PMID(PMID),标题(ArticleTitle),摘要(AbstractText),接收时间(YearAccepted),杂志(Title),文章类型(PublicationType),DOI(DOI),国家(Country),单位(Affiliation)等。我们直接看下实例:
pid=data@PMID
results=EUtilsGet(pid,type="efetch",db="pubmed")
至此,通过RISmed包通过关键词获得了我们想要的数据结果.接下来就是对文本的挖掘。在这里需要用到包pumed.mineR。首先需要搞清楚如何将上面的结果和此包进行对接。在这里用到了S4的一个R的类,这个类主要是两个包之间进行数据传递的纽带。在pumed.mineR中,有一个Abstracts的类,其中包含了Journal,Abstract和PMID三个数据。我们需要将其和前面的数据进行对接并对类进行实例化。直接看实例:
data <- data.frame(
pid=results@PMID,
Title=ArticleTitle(results),
Year=YearAccepted(results),
journal=ISOAbbreviation(results),
abstract=AbstractText(results),
countary=Country(results),
doi=DOI(results),
Affiliation=Affiliation
)
data=data[which(nchar(data$abstract)>20),]#此处主要是对数据进行过滤删掉空的摘要数据
Sys.setlocale("LC_ALL")
adata=new("Abstracts",Journal=data$journal,Abstract=data$abstract,PMID=as.numeric(data$pid))
接下来就是对文本数据进行分析,首先进行摘要的分词处理及可视化:
words=word_atomizations(adata)
library(ggpubr)
ggdotchart(words[1:20,], x ="words", y = "Freq",
#color = "Freq", # Color bygroups
palette = c("#00AFBB", "#E7B800","#FC4E07"), # Custom color palette
sorting = "descending", # Sort value indescending order
rotate = TRUE, # Rotatevertically
dot.size = 2, # Large dotsize
y.text.col = TRUE, # Color y text bygroups
ggtheme = theme_pubr() # ggplot2 theme
)+ theme_cleveland() # Adddashed grids
然后是相关的基因的频率展示:
至此我们对PubMed数据库中的122451篇文献的摘要进行了分词和基因频率的展示。
欢迎大家学习交流!