关于 ncbi-sequence-fetch
NCBI Sequence Fetch 是供研究人员通过 NCBI Entrez 获取蛋白质和核苷酸序列的技能。单一脚本支持按登录号、基因、物种、文献和专利搜索,也可翻译 CDS 并跟踪跨数据库链接。
主要功能
- 01按登录号获取蛋白质和核苷酸序列
- 02将编码序列翻译为蛋白质
- 03搜索 Entrez 数据库并跟踪链接
- 04按基因或位点标签查找蛋白质
- 05获取文献和专利关联序列
- 06按物种和精确序列长度搜索
适用场景
- 01通过 NCBI 登录号获取序列
- 02将核苷酸记录翻译为蛋白质序列
- 03按基因和物种查找蛋白质记录
- 04查找与文献或专利关联的序列
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ google-deepmind/ science-skills --skill ncbi-sequence-fetch安装后在 Claude Code 中输入/ncbi-sequence-fetch确认已加载。
附带文件references/citation.bibscripts/ncbi_fetch.py
详细介绍
NCBI 序列获取
先决条件
uv:阅读uv技能,并按照其中的设置说明确保已安装uv,且它位于 PATH 中。- 用户通知:如果工作区根目录中尚不存在 .licenses/ncbi_sequence_fetch_LICENSE.txt,则(1)醒目地通知用户查看 https://www.ncbi.nlm.nih.gov/ 和 https://www.ncbi.nlm.nih.gov/home/about/policies/ 上的条款,然后(2)创建该文件,记录通知文本和时间戳。
.env文件:确保.env文件存在于你的主目录中。如果不存在,请创建一个。NCBI_API_KEY(可选):将 NCBI 速率限制从每秒 3 次请求提高到每秒 10 次请求。没有密钥也能使用此技能,但如果用户计划执行大量查询或遇到 429 错误,建议使用密钥。你可以在 https://www.ncbi.nlm.nih.gov/account/settings/ 免费注册密钥。如果此技能看起来与用户的请求相关,你必须使用credentials技能中的安全凭据协议检查并申请此密钥。
核心规则
- 使用封装脚本:始终执行提供的辅助脚本来查询数据库,而不是直接访问数据库。这些脚本会自动以恰当的方式遵守所需的速率限制。
- API 密钥支持:如果用户在其环境中提供了
NCBI_API_KEY,查询速率限制会自动大幅提高。 - 通知:如果使用了此技能,请确保在输出中提及。
概述
封装 NCBI 的 Entrez E-utilities(efetch、esearch、elink、esummary),用于检索蛋白质和核苷酸序列。提供 10 个子命令,涵盖各种序列检索工作流:
fetch-protein— 直接按登录号查询蛋白质(GenPept、RefSeq)fetch-nucleotide— 直接按登录号查询核苷酸cds-translate— 获取 CDS 并翻译为蛋白质(3 种方法)search— 对任意 NCBI 数据库进行自由文本搜索elink— 跟踪跨数据库链接(PubMed→Protein 等)gene-protein— 按基因名称和生物体搜索蛋白质locus-protein— 按位点标签和生物体搜索蛋白质pubmed-proteins— 查找与 PubMed 文章关联的蛋白质patent-search— 从专利中提取蛋白质序列organism-length— 最后的搜索手段:按生物体和精确氨基酸长度搜索
实用脚本
scripts/ncbi_fetch.py — 包含多个子命令的单个脚本。
所有子命令都会写入结构化 JSON 输出。使用 --output FILE 将结果保存到文件,或省略此参数以打印到 stdout。始终会向 stdout 打印人类可读的摘要。
1. 按登录号获取蛋白质
按登录号从 NCBI 获取蛋白质 FASTA(XP_、NP_、GenPept 等)
uv run scripts/ncbi_fetch.py fetch-protein XP_022033624 -o /tmp/result.json
uv run scripts/ncbi_fetch.py fetch-protein NP_001234567 ABC12345.1
2. 按登录号获取核苷酸
按登录号从 NCBI 获取核苷酸 FASTA。
uv run scripts/ncbi_fetch.py fetch-nucleotide MK034466 -o /tmp/result.json
3. CDS 翻译
获取 CDS/核苷酸登录号,并将其翻译为蛋白质序列。按顺序尝试三种方法:1. NCBI 预翻译的 CDS 蛋白质(fasta_cds_aa)
- GenBank XML CDS 注释翻译 3. 原始核苷酸 → 6 帧 ORF 查找
uv run scripts/ncbi_fetch.py cds-translate MK034466 -o /tmp/result.json
uv run scripts/ncbi_fetch.py cds-translate HQ662330 --target-length 1043
如果登录号是基因组记录(而非 mRNA/CDS),该工具会报告 is_genomic: true,以便你改用基于同源性的方法。
4. 搜索任意数据库
使用 Entrez 查询语法进行自由文本搜索。支持所有 NCBI 数据库。
# Search protein database
uv run scripts/ncbi_fetch.py search "WRR4B[Gene Name] AND Arabidopsis[Organism]" \
--database protein --retmax 5 --fetch-sequences
# Search nucleotide database
uv run scripts/ncbi_fetch.py search "Rz2[Gene Name] AND Beta vulgaris[Organism]" \
--database nuccore --retmax 10
# Search with patent filter
uv run scripts/ncbi_fetch.py search "disease resistance AND Solanum[Organism] AND patent[Properties]" \
--database protein --fetch-sequences
# Search by sequence length
uv run scripts/ncbi_fetch.py search '"Oryza sativa"[Organism] AND 1043[SLEN]' \
--database protein --fetch-sequences --retmax 50
5. 跨数据库链接(elink)
跟踪 NCBI 的跨数据库链接(例如,PubMed 文章 → 关联的蛋白质)。
uv run scripts/ncbi_fetch.py elink 24896089 --dbfrom pubmed --db protein \
--fetch-sequences -o /tmp/linked.json
6. 基因 + 生物体搜索
按基因名称和生物体搜索蛋白质序列。使用 [Gene Name] 和 [Organism] 限定符搜索 NCBI Protein。
uv run scripts/ncbi_fetch.py gene-protein WRR4B --organism "Arabidopsis thaliana"
uv run scripts/ncbi_fetch.py gene-protein Pikh-2 --organism "Oryza sativa" \
--target-length 1043 -o /tmp/result.json
7. 位点标签搜索
在 NCBI Protein 和 Nuccore 数据库中按位点标签搜索。如果没有可用的直接蛋白质命中项,则从 GenBank XML 中提取 CDS 翻译。
uv run scripts/ncbi_fetch.py locus-protein At1g56540 --organism "Arabidopsis thaliana"
uv run scripts/ncbi_fetch.py locus-protein Niben101Scf02422g02015.1 \
--organism "Nicotiana benthamiana" -o /tmp/result.json
8. PubMed 关联蛋白质
查找与 PubMed 文章关联的蛋白质序列。通过 PMID 搜索 NCBI Protein,沿 elink PubMed→Protein 追踪关联,并从关联的 Nuccore 记录中提取 CDS 翻译序列。
uv run scripts/ncbi_fetch.py pubmed-proteins 30692254 --identifier WRR4B
uv run scripts/ncbi_fetch.py pubmed-proteins 24896089 --identifier "K2" \
-o /tmp/result.json
9. 专利序列搜索
两种模式:
按专利号 — 获取指定专利中的所有蛋白质序列:
bash uv run scripts/ncbi_fetch.py patent-search --patent-number US10123456 -o /tmp/patent.json
按关键词 — 使用 patent[Properties] 筛选条件搜索 NCBI Protein:bash uv run scripts/ncbi_fetch.py patent-search --keywords WRR4B Albugo --organism "Arabidopsis thaliana" -o /tmp/patent.json
重要
专利惯例:在分子生物学专利中,SEQ ID NO: 1 通常是 DNA 序列,而 SEQ ID NO: 2 是主要蛋白质。较大的 SEQ ID NO 值对应变体或相关序列。选择主要关注的蛋白质时,优先选择 Sequence 2。
10. 生物体 + 长度搜索
仅知道生物体和预期蛋白质长度时使用的最后手段搜索。
使用 NCBI 的 [SLEN] 筛选条件精确匹配长度。
uv run scripts/ncbi_fetch.py organism-length \
--organism "Arabidopsis thaliana" --length 1048 --retmax 50 \
-o /tmp/result.json
说明
此搜索通常会返回多个候选结果。使用 JSON 输出中的标头来 确定正确的蛋白质。
工作流
标准序列检索流程
尝试查找蛋白质序列时,请按以下优先级顺序操作:
- 直接登录号 — 使用 GenPept/RefSeq 登录号运行
fetch-protein - CDS 翻译 — 使用核苷酸/CDS 登录号运行
cds-translate - PubMed 关联 — 使用 PMID + 基因名称运行
pubmed-proteins - 基因座查询 — 使用基因座标签 + 生物体运行
locus-protein - 基因 + 生物体 — 使用基因名称 + 生物体运行
gene-protein - 专利搜索 — 使用专利号或关键词运行
patent-search - 生物体 + 长度 — 作为最后手段运行
organism-length
解读结果
- 所有子命令都会返回包含
results数组的 JSON - 每个结果包含
sequence(氨基酸字符串)、length和header/元数据 - 返回多个结果时,请根据以下条件选择:
- 与预期长度最接近(
target_length) - 标头相关性(匹配基因名称、“disease resistance”等关键词)
- 来源优先级(RefSeq > GenPept > 专利)
- 与预期长度最接近(
参考资料
- NCBI E-utilities 文档:https://www.ncbi.nlm.nih.gov/books/NBK25499/
- Entrez 搜索语法:https://www.ncbi.nlm.nih.gov/books/NBK49540/
- 数据库列表:protein、nuccore、gene、pubmed、pmc、biosample 等
- 常见登录号格式:
XP_/NP_— NCBI RefSeq 蛋白质AAA到AZZ+ 数字 — GenPept(翻译后的 GenBank)MK、MN、HQ等 + 数字 — GenBank 核苷酸ENSG、ENST、ENSP— Ensembl(请改用ensembl-database技能)Q、P、O+ 数字 — UniProt(请改用uniprot-database技能)