You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用R语言entrez_fetch下载NCBI DNA序列时遇查询获取失败问题

问题分析与解决方案

错误核心原因

你遇到的Cannot retrieve query from history错误,本质是NCBI的搜索历史(web_history)与数据库强绑定——你在biosample库生成的历史记录,无法直接用于nuccore库的entrez_fetch调用。两个数据库的索引体系完全独立,跨库复用历史会导致NCBI无法识别查询逻辑。

修复步骤

1. 关联Biosample到Nuccore的序列ID

先通过entrez_link将biosample的ID映射到对应的nuccore序列ID,再基于新的数据库上下文创建搜索历史:

library(rentrez)

# 1. 搜索目标Biosample条目
search <- entrez_search(db = "biosample", 
                        term = "Escherichia coli[Organism] AND geo_loc_name=USA:WA[attr]",
                        retmax = 9999, use_history = T)

# 2. 关联Biosample到Nuccore的序列ID
link_result <- entrez_link(dbfrom = "biosample", id = search$ids, db = "nuccore")
nuccore_ids <- link_result$links$biosample_nuccore

# 3. 基于Nuccore ID创建新的搜索历史
nuccore_search <- entrez_search(db = "nuccore", id = nuccore_ids, use_history = T)

2. 分批下载序列(规避NCBI限制)

NCBI对单次请求的序列数量有限制,直接下载12000条会被截断或拒绝,需要分批处理:

# 定义分批下载函数
batch_download <- function(web_history, batch_size = 1000) {
  total <- entrez_search(db = "nuccore", web_history = web_history)$count
  batches <- ceiling(total / batch_size)
  fasta_list <- list()
  
  for (i in 1:batches) {
    start <- (i-1)*batch_size + 1
    end <- min(i*batch_size, total)
    # 加入延迟,遵守NCBI速率限制(每秒不超过3次请求)
    Sys.sleep(0.3)
    fasta_batch <- entrez_fetch(db = "nuccore", 
                                web_history = web_history,
                                rettype = "fasta",
                                retstart = start,
                                retmax = batch_size)
    fasta_list[[i]] <- fasta_batch
  }
  # 合并所有批次结果
  paste(fasta_list, collapse = "")
}

# 执行分批下载并保存
ecoli_fasta <- batch_download(nuccore_search$web_history)
writeLines(ecoli_fasta, "ecoli_wa_sequences.fasta")

3. 关于ape包下载不全的说明

ape::read.GenBank默认没有处理大数量序列的分批逻辑,且受限于NCBI的单次请求上限,所以会丢失大量数据。用上述rentrez的分批方法可以完整获取所有可公开访问的序列。

关键注意事项

  • 始终确保搜索历史与下载操作使用同一个数据库,跨库历史无法复用。
  • 严格遵守NCBI使用规则:每秒请求不超过3次,单次retmax不超过10000,避免IP被临时封禁。
  • 若关联后得到的Nuccore ID数量少于Biosample ID,说明部分Biosample条目无公开序列,属于正常情况。

内容的提问来源于stack exchange,提问作者notasfarwest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 00:16:07