第38期 R语言!rentrez包抓取pubmed文献信息?

本期介绍如何使用rentrez包来批量抓取相关主题的文献信息

入手简单,非常舒适

公众号回复231314获取rmd源码

随手一写的

展示效果

同时抓取不同主题的不同文献,自定义主题及抓取文献数

对所有文献进行可视化

实现代码

Rentrez介绍

  • rentrez
    • rentrez 是一个 R 语言包,主要用于与 NCBI(美国国家生物技术信息中心)的各种数据库进行交互,包括 PubMed、GenBank 等。这个包提供了一系列函数,可以在 R 语言环境中直接进行数据的检索、下载和处理,非常适合生物信息学、基因组学以及相关领域的研究人员使用。
    • 本期使用rentrez来进行文献获取

载入包

install.packages("rentrez")
install.packages("brcueR")
library(bruceR)#包内包含了tidyverse系列包,很方便
library(rentrez)

单主题,确定索引数

# 设定主题词 ,参考pubmed索引规则
query_term=("COVID-19")
#设定索引多少文献
index=1:20

data <- tibble(
  index=index
) %>%unnest(index)%>% 
  rowwise() %>% 
   mutate(result=entrez_search(db = "pubmed",term =query_term)$ids[index],
  ) %>%ungroup() %>% 
  mutate(summary=entrez_summary(db="pubmed",id=result)
  ) %>%unnest_wider(summary)

多主题,自定义每一个的索引数

query_list=list("COVID-19","health","cancer")  #设定主题列表
index_list=list(1:20,1:18,1:15)                #设定每个主题需要多少论文,如果需要多设置retmax参数


data <- tibble(
  query=query_list,
  index=index_list
) %>%unnest(index)%>% 
  rowwise() %>% 
   mutate(result=entrez_search(db = "pubmed",term =query)$ids[index],
  ) %>%ungroup() %>% 
  mutate(summary=entrez_summary(db="pubmed",id=result)
  ) %>%unnest_wider(summary) %>% 
  group_by(query)%>% 
  nest

data %>% pull(data,query) %>%      #使用bruceR包,将结果快捷导出到excel
  export("result.xlsx")

单主题,检索所有文献。并进行可视化



query="microplastic AND cancer"

index=length(entrez_search(db = "pubmed",
                           term =query,
                           retmax=300)$ids)     #注意retmax是需要自己设定过多最大论文数,可以先试试index最多多少

data_all <- tibble(index=1:index) %>% 
   mutate(result=entrez_search(db = "pubmed",term =query,retmax=300)$ids[index],
  ) %>%ungroup() %>% 
  mutate(summary=entrez_summary(db="pubmed",id=result)
  ) %>%unnest_wider(summary)


#进行优雅的可视化
data_all%>%select(index,pubdate) %>% 
  mutate(pubdate=str_sub(pubdate,1,4)) %>% 
  mutate(pubdate=as.numeric(pubdate)) %>% 
  group_by(pubdate) %>% 
  summarise(期刊数=n()) %>% 
  ungroup() %>% 
  ggplot(aes(x=pubdate,y=期刊数)) +
  geom_bar(stat = "identity",fill="#2B6B96")+
  geom_line(color="#071BC9",linewidth=1)+
  geom_point(color="#071BC9",size=4)+
  theme_classic()+
  geom_text(aes(y=期刊数+3,label=期刊数))+
  scale_color_lancet()+
  labs(x="年份",y="发表数",title=query) +
  theme(plot.title = element_text(hjust = 0.5),
        plot.margin =margin(t = 0, r = 0, b = 0, l = 0, unit = "pt"))+
  scale_y_continuous(limits = c(0, 60))

注意事项

使用 rentrez 包时的注意事项:

  • API Key:在大量使用或频繁请求 NCBI 数据库时,建议注册并使用 NCBI 的 API Key,这可以提高请求的限制。
  • 查询限制:NCBI 对于没有使用 API Key 的请求有频率限制。过于频繁的请求可能导致暂时性的访问限制。
  • 查询精确度:构建查询语句时需要注意其精确度和相关性,以便获取到最相关的数据。
  • 网络稳定性:由于 rentrez 包依赖于网络来访问 NCBI 的数据库,因此网络的稳定性对于数据检索的成功率有重要影响。
  • 数据处理:获取的数据可能需要进一步的处理和解析,根据研究需求对数据进行适当的处理和分析。