如何通过提供查询名称列表而不是单个查询名称来使用 rentrez 包检索数据?
How to retrieve data using the rentrez package by giving a list of query names instead of a single one?
所以我正在尝试使用 rentrez
包从 GenBank 检索 DNA 序列数据,作为输入提供物种列表。
我所做的是为我想要查询的物种创建一个向量,然后创建一个 term
,我在其中指定我想要检索的序列数据类型,然后创建一个 search
来检索所有匹配我的查询的事件,最后我创建 data
,我在其中检索 fasta 文件中的实际序列数据。
library(rentrez)
species<-c("Ablennes hians","Centrophryne spinulosa","Doratonotus megalepis","Entomacrodus cadenati","Katsuwonus pelamis","Lutjanus fulgens","Pagellus erythrinus")
for (x in species){
term<-paste(x,"[Organism] AND (((COI[Gene] OR CO1[Gene] OR COXI[Gene] OR COX1[Gene]) AND (500[SLEN]:3000[SLEN])) OR complete genome[All Fields] OR mitochondrial genome[All Fields])",sep='',collapse = NULL)
search<-entrez_search(db="nuccore",term=term,retmax=99999)
data<-entrez_fetch(db="nuccore",id=search$ids,rettype="fasta")
}
基本上我要做的是将每个物种的查询结果连接成一个变量。我开始使用 for 循环,但我发现这种形式没有任何意义,因为正在查询的每个新物种的数据只是替换 data
.
中的前一个物种。
对于 species
的某些元素,将没有可检索的数据并且 R 显示此错误:
Error: Vector of IDs to send to NCBI is empty, perhaps entrez_search or entrez_link found no hits?
在显示此错误并因此没有该特定物种的数据的情况下,我希望代码继续运行并忽略它。
我的输出将是一个变量 data
,其中包含从 species
中的所有名称中检索到的序列数据。
library(rentrez)
species<-c("Ablennes hians","Centrophryne spinulosa","Doratonotus megalepis","Entomacrodus cadenati","Katsuwonus pelamis","Lutjanus fulgens","Pagellus erythrinus")
data <- list()
for (x in species){
term<-paste(x,"[Organism] AND (((COI[Gene] OR CO1[Gene] OR COXI[Gene] OR COX1[Gene]) AND (500[SLEN]:3000[SLEN])) OR complete genome[All Fields] OR mitochondrial genome[All Fields])",sep='',collapse = NULL)
search<-entrez_search(db="nuccore",term=term,retmax=99999)
data[x] <- tryCatch({entrez_fetch(db="nuccore",id=search$ids,rettype="fasta")},
error = function(e){NA})
}
所以我正在尝试使用 rentrez
包从 GenBank 检索 DNA 序列数据,作为输入提供物种列表。
我所做的是为我想要查询的物种创建一个向量,然后创建一个 term
,我在其中指定我想要检索的序列数据类型,然后创建一个 search
来检索所有匹配我的查询的事件,最后我创建 data
,我在其中检索 fasta 文件中的实际序列数据。
library(rentrez)
species<-c("Ablennes hians","Centrophryne spinulosa","Doratonotus megalepis","Entomacrodus cadenati","Katsuwonus pelamis","Lutjanus fulgens","Pagellus erythrinus")
for (x in species){
term<-paste(x,"[Organism] AND (((COI[Gene] OR CO1[Gene] OR COXI[Gene] OR COX1[Gene]) AND (500[SLEN]:3000[SLEN])) OR complete genome[All Fields] OR mitochondrial genome[All Fields])",sep='',collapse = NULL)
search<-entrez_search(db="nuccore",term=term,retmax=99999)
data<-entrez_fetch(db="nuccore",id=search$ids,rettype="fasta")
}
基本上我要做的是将每个物种的查询结果连接成一个变量。我开始使用 for 循环,但我发现这种形式没有任何意义,因为正在查询的每个新物种的数据只是替换 data
.
对于 species
的某些元素,将没有可检索的数据并且 R 显示此错误:
Error: Vector of IDs to send to NCBI is empty, perhaps entrez_search or entrez_link found no hits?
在显示此错误并因此没有该特定物种的数据的情况下,我希望代码继续运行并忽略它。
我的输出将是一个变量 data
,其中包含从 species
中的所有名称中检索到的序列数据。
library(rentrez)
species<-c("Ablennes hians","Centrophryne spinulosa","Doratonotus megalepis","Entomacrodus cadenati","Katsuwonus pelamis","Lutjanus fulgens","Pagellus erythrinus")
data <- list()
for (x in species){
term<-paste(x,"[Organism] AND (((COI[Gene] OR CO1[Gene] OR COXI[Gene] OR COX1[Gene]) AND (500[SLEN]:3000[SLEN])) OR complete genome[All Fields] OR mitochondrial genome[All Fields])",sep='',collapse = NULL)
search<-entrez_search(db="nuccore",term=term,retmax=99999)
data[x] <- tryCatch({entrez_fetch(db="nuccore",id=search$ids,rettype="fasta")},
error = function(e){NA})
}