mcpField
N
ncbi-sequence-fetch

ncbi-sequence-fetch

github.com/google-deepmind数据与数据库3.4k2.2k 次安装5 天前更新
代码仓库

关于 ncbi-sequence-fetch

NCBI Sequence Fetch 是供研究人员通过 NCBI Entrez 获取蛋白质和核苷酸序列的技能。单一脚本支持按登录号、基因、物种、文献和专利搜索,也可翻译 CDS 并跟踪跨数据库链接。

主要功能

  1. 01按登录号获取蛋白质和核苷酸序列
  2. 02将编码序列翻译为蛋白质
  3. 03搜索 Entrez 数据库并跟踪链接
  4. 04按基因或位点标签查找蛋白质
  5. 05获取文献和专利关联序列
  6. 06按物种和精确序列长度搜索

适用场景

  1. 01通过 NCBI 登录号获取序列
  2. 02将核苷酸记录翻译为蛋白质序列
  3. 03按基因和物种查找蛋白质记录
  4. 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 序列获取

先决条件

  1. uv:阅读 uv 技能,并按照其中的设置说明确保已安装 uv,且它位于 PATH 中。
  2. 用户通知:如果工作区根目录中尚不存在 .licenses/ncbi_sequence_fetch_LICENSE.txt,则(1)醒目地通知用户查看 https://www.ncbi.nlm.nih.gov/ 和 https://www.ncbi.nlm.nih.gov/home/about/policies/ 上的条款,然后(2)创建该文件,记录通知文本和时间戳。
  3. .env 文件:确保 .env 文件存在于你的主目录中。如果不存在,请创建一个。
  4. 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)

  1. 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 输出中的标头来 确定正确的蛋白质。

工作流

标准序列检索流程

尝试查找蛋白质序列时,请按以下优先级顺序操作:

  1. 直接登录号 — 使用 GenPept/RefSeq 登录号运行 fetch-protein
  2. CDS 翻译 — 使用核苷酸/CDS 登录号运行 cds-translate
  3. PubMed 关联 — 使用 PMID + 基因名称运行 pubmed-proteins
  4. 基因座查询 — 使用基因座标签 + 生物体运行 locus-protein
  5. 基因 + 生物体 — 使用基因名称 + 生物体运行 gene-protein
  6. 专利搜索 — 使用专利号或关键词运行 patent-search
  7. 生物体 + 长度 — 作为最后手段运行 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 技能)

评论

支持 Markdown