如何查物种的12S基因片段是否存在于NCBI公共数据库?
如果你已经拿到了一个地区的物种名录,下一步就是系统地查询每个物种在NCBI上有没有12S序列。考虑到物种数量多、手动查效率太低,我建议你用自动化的方式来搞定。
🧭 整体思路
整套流程分三步:先搞定物种的科学名和分类信息,再用工具批量查NCBI,最后整理结果。
1. 准备一份带拉丁学名和分类的物种清单
首先需要把你手里的中文名录转成标准格式——这是后续自动查询的基础。
拉丁学名:这是必填项,是查询的唯一标准。
NCBI分类ID (TaxID):最好也一并获取。它是NCBI给每个物种的唯一编号,能让查询更准、更快。
高阶分类信息:如果暂时拿不到TaxID,也可以用“属名”或“科名”先顶着,作为备选查询方案。
2. 用Gene Fetch工具批量查询NCBI
手动一条条查显然不现实。这里有个很顺手的工具——Gene Fetch,专为这类批量查询设计,能省不少时间。
安装:
bash
git clone https://github.com/bge-barcoding/gene_fetch cd gene_fetch conda env create -n fetch -f fetch.yaml conda activate fetch准备输入文件:创建一个
birds.csv文件,格式如下(根据你的数据选一种方式):最佳方案(用TaxID):
csv
sample_id,tax_id Anas_platyrhynchos,8839 Cygnus_olor,8869 ...备选方案(用分类信息):
csv
sample_id,species,genus,family,order Anas_platyrhynchos,Anas platyrhynchos,Anas,Anatidae,Anseriformes ...
运行查询:在终端里执行这行命令,工具会自动调用NCBI的API去批量查询:
bash
gene-fetch -e 你的邮箱@example.com -k 你的API_KEY \ -g "12S ribosomal RNA" \ --type nucleotide \ -i birds.csv \ -o ./wildducklake_12s_results \ --header detailed准备工作:
-e邮箱:填你自己的邮箱就行。-kAPI_KEY:需要先去NCBI官网注册一个账号,然后在“API Key Management”里生成一个。NCBI对匿名请求有很严格的频率限制,但提供了API Key之后,每秒能请求10次,查询速度会快很多。
3. 整理与分析结果
命令跑完后,在wildducklake_12s_results/目录下会生成这些文件:
nucleotide/文件夹:里面是所有成功查到的12S序列,按物种存成了一个个FASTA文件。sequence_references.csv汇总表:这个很关键,它记录了每个物种的拉丁名、TaxID、序列长度等元数据。直接在这张表里就能清晰地看到哪个物种有数据、哪个没有。failed_searches.csv文件:查询失败的物种会记录在这里。针对这批物种,你可以进一步判断:是NCBI里真的没有数据?你可以去Bold Systems等其他数据库再查查看。
还是你提供的查询信息(比如学名)有误?
💎 总结与后续
第一步是打基础:获取物种的拉丁学名是重中之重,直接关系到后续所有查询的准确性。
善用自动化工具:用Gene Fetch这类工具来批量查询NCBI,效率远高于手动操作。
结果导向:最终你会得到一份清晰的清单,明确标出哪些物种有12S序列(可以构建本地参考库),哪些没有(可能需要自己补测或尝试多基因鉴定)。
生成API密钥的步骤
成功登录你的NCBIC账户后,按照以下步骤生成API密钥:
进入账户设置:在NCBIC任何一个页面的右上角,点击你的用户名。在弹出的下拉菜单中,选择“Account settings”。
找到API密钥管理:在“Account Settings”页面中,向下滚动直到找到“API Key Management”区域。
创建新密钥:点击“Create an API Key”按钮。系统将立即生成一串由字母和数字组成的唯一字符串。
保存你的API密钥:
立即复制并保存:这是最关键的一步!将这个API密钥复制到一个安全的地方(例如,一个文本文件或密码管理器)。
提示:NCBI的页面说明中提到,这串密钥在你关闭页面后可能无法再次查看,如果遗失则需要重新生成一个新的。
(可选)设置环境变量:为了方便后续在命令行或R/Python脚本中使用,可以将此密钥设置为计算机的环境变量。
Linux/macOS:在终端执行
export NCBI_API_KEY='你的API密钥'Windows (WSL):同样在终端执行
export NCBI_API_KEY='你的API密钥'R语言:执行
Sys.setenv(PUBMED_API_KEY = "你的API密钥")
