关于 dbsnp-database
dbsnp-database 是用于查询 NCBI dbSNP 的命令行技能,适合需要映射变异并获取 RefSNP 记录的基因组研究人员。它通过封装脚本支持按 rsID、坐标、HGVS 表达式或染色体区间查询。
主要功能
- 01按 rsID 获取 RefSNP 摘要
- 02将基因组坐标映射为 rsID
- 03将 HGVS 表达式解析为 rsID
- 04将 rsID 转换为组装坐标
- 05搜索染色体区间内的变异
适用场景
- 01从 VCF 格式坐标识别 rsID
- 02查看变异关联基因和临床标签
- 03查找基因组区间内的变异
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ google-deepmind/ science-skills --skill dbsnp-database安装后在 Claude Code 中输入/dbsnp-database确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/api-notes.mdcitation.bibscripts/dbsnp_cli.py详细介绍
dbSNP 数据库集成
前置条件
uv:阅读uv技能,并按照其中的设置说明确保已安装uv,且已将其添加到 PATH。- 用户通知:如果工作区根目录中尚不存在 .licenses/dbsnp_database_LICENSE.txt,则 (1) 显著提醒用户查看 https://www.ncbi.nlm.nih.gov/snp/ 上的条款,然后 (2) 创建该文件,记录通知文本和时间戳。
.env文件:确保主目录中存在.env文件。如果不存在,请创建一个。NCBI_API_KEY(可选):将 NCBI 速率限制从每秒 3 次请求提高到每秒 10 次。没有它也能使用此技能,但如果用户计划执行大量查询或遇到 429 错误,建议使用密钥。可以在 https://www.ncbi.nlm.nih.gov/account/settings/ 免费注册获取密钥。如果此技能与用户的请求相关,必须使用credentials技能中的安全凭据协议检查并请求此密钥。
核心规则
- 使用封装脚本:查询数据库时,始终执行提供的封装脚本
scripts/dbsnp_cli.py,而不要构造自定义 HTTP 或 curl 请求。该脚本会自动处理速率限制、重试和 JSON 解析。 - 命令选择:不要使用
search-region查找特定变异的 rsID;应改用resolve-variant。 - 输出大小:除非确有需要,否则避免对
get-variant使用--full,因为原始载荷可能超过 1 MB。 - Shell 安全:始终将 HGVS 字符串括在单引号中,以避免 Shell 展开错误。
- 通知:如果使用了此技能,确保在输出中提及。
适用场景
在以下情况下使用此技能:
- 将基因组变异映射到其规范 rsID(通过 VCF 坐标或 HGVS 表示法)。
- 获取 rsID 的摘要数据:变异类型、基因关联、临床意义和群体等位基因频率。
- 将 rsID 转换回特定组装版本上的基因组坐标。
- 查找染色体区域内的所有已知变异。
在以下情况下不要使用此技能:
- 获取包含提交者理由的临床致病性分类(使用 clinvar-database)。
- 获取按祖源分层的精确群体等位基因频率(使用 gnomad-database)。
- 预测新突变的功能影响(使用 alphagenome-single-variant-analysis)。
- 查看受变异影响的蛋白质 3D 结构(使用 alphafold-database-fetch-and-analyze / pdb-database)。
命令选择指南
首次就选对命令。 根据用户的输入,从下方选择正确的子命令——通常只需调用一次命令。
- 用户提供……:运行此命令
- 一个 rsID(例如
rs7412、rs268):get-variant - 基因组坐标:染色体位置参考等位基因替代等位基因(例如
8 19962213 C T):resolve-variant - 一个 HGVS 字符串(例如
NC_000008.11:g.19962213del):resolve-hgvs - 一个 rsID,且需要查询其坐标:
resolve-rsid - 一个染色体区域(染色体起始位置终止位置):
search-region
注意
**不要使用
search-region查找特定变异的 rsID。**如果用户提供染色体、位置、参考等位基因和替代等位基因(四个值),请使用resolve-variant——这是一次直接的 API 查询。search-region仅用于调查某个位置范围内的所有变异,返回结果可能多达数百或数千条。
快速开始
# Look up variant rs7412: type, gene, clinical significance, MAF
uv run scripts/dbsnp_cli.py get-variant rs7412 --output /tmp/rs7412.json
# Find the rsID for a variant at chr8:19962213 C>T
uv run scripts/dbsnp_cli.py resolve-variant 8 19962213 C T \
--output /tmp/resolve.json
所有子命令都会将 JSON 写入磁盘。始终将输出保存到 /tmp/ 目录中。必须指定 --output 标志。
命令
1. get-variant — 获取变异记录
检索一个 rsID 对应的 RefSNP 记录。默认情况下,输出会缩略为最有用的字段。rs268 和 268 均可接受。
uv run scripts/dbsnp_cli.py get-variant rs268 --output /tmp/rs268.json
uv run scripts/dbsnp_cli.py get-variant 268 --assembly GCF_000001405.40 \
--output /tmp/rs268.json
参数:
rsid(位置参数,必需):RefSNP 标识符。--assembly:RefSeq 组装版本登录号(默认值:GCF_000001405.40= GRCh38)。--full:返回完整的原始 JSON 负载 — 请参阅下方警告。--output:输出文件路径(默认值:/tmp/dbsnp_output.json)。
缩略输出字段:
refsnp_id:数字形式的 rsIDvariant_type:例如snv、ins、del、delinsgenes:按顺序排列的基因符号(基因座名称)列表clinical_significances:临床意义标签列表minor_allele_frequencies:研究名称、等位基因计数、总计数placements:所请求组装版本的基因组位置
警告
关于
--full: 原始 RefSNP 负载通常为 50–500 KB;对于提交记录众多的临床重要变异,可能会超过 1 MB。 仅当你确实需要缩略输出中没有的数据时才使用--full— 例如:
- 所有转录本和蛋白质异构体的完整 HGVS 命名。
- 完整的提交历史,包括各提交者的详细信息和时间戳。
- 研究中按亚群划分的人群层面等位基因频率明细(例如,gnomAD 按人群划分的计数)。
- 多个组装版本中的完整基因组位置集(同时包含 GRCh37 和 GRCh38)。
- 合并历史,显示哪些较旧的 rsID 被合并到此 ID。
2. resolve-variant — 基因组坐标 → rsID
根据变异的基因组坐标(染色体、位置、参考等位基因、替代等位基因)确定其 rsID。当用户以空格分隔的坐标形式提供变异时,应使用此命令,例如 8 19962213 C T。
uv run scripts/dbsnp_cli.py resolve-variant 8 19962213 C T \
--output /tmp/resolve.json
参数:
chrom(位置参数):染色体编号(例如8)或 RefSeq 序列登录号(例如NC_000008.11)。染色体 X 和 Y 必须分别以对应的数字传入:X 为23,Y 为24。pos(位置参数):从 1 开始计数的基因组位置。ref(位置参数):参考等位基因(例如C)。alts(位置参数):替代等位基因,可用逗号分隔(例如T)。--assembly:RefSeq 组装版本登录号(默认值:GCF_000001405.40)。--output:输出文件路径(默认值:/tmp/dbsnp_output.json)。
输出: {"rsids": ["12345", "67890"]}
3. resolve-rsid — rsID → 基因组坐标
获取特定组装版本上已知 rsID 的基因组位置(序列 ID 和等位基因详细信息)。
uv run scripts/dbsnp_cli.py resolve-rsid rs7412 --output /tmp/coords.json
参数:
rsid(位置参数):RefSNP 标识符。--assembly:RefSeq 组装版本登录号(默认值:GCF_000001405.40)。--output:输出文件路径(默认值:/tmp/dbsnp_output.json)。
输出: {"rsid": "7412", "assembly": "...", "placements": [...]}
4. resolve-hgvs — HGVS → rsID
查找与 HGVS 表达式对应的 rsID。
uv run scripts/dbsnp_cli.py resolve-hgvs 'NC_000008.11:g.19962213del' \
--output /tmp/hgvs.json
参数:
hgvs(位置参数):HGVS 字符串。--assembly:RefSeq 组装版本登录号(默认值:GCF_000001405.40)。--output:输出文件路径(默认值:/tmp/dbsnp_output.json)。
输出: {"rsids": ["12345"]}
提示
HGVS 字符串通常包含 shell 会解释的字符(冒号、大于号)。请始终用单引号括住它们,以避免 shell 展开。
5. search-region — 区域变异搜索
查找限定染色体区域内的所有 rsID。
uv run scripts/dbsnp_cli.py search-region 7 117100000 117300000 \
--output /tmp/region.json
参数:
chrom(位置参数):染色体(例如7)。染色体 X 使用23, 染色体 Y 使用24。start(位置参数):起始位置。end(位置参数):结束位置。--retmax:返回的 rsID 最大数量(默认值:500,上限:5 000)。--output:输出文件路径(默认值:/tmp/dbsnp_output.json)。
输出:
{
"rsids": ["12345", "67890", "..."],
"returned": 500,
"total_available": 1423,
"truncated": true,
"note": "Only 500 of 1423 variants returned. Increase --retmax ..."
}
当 total_available 大于返回数量时,输出会包含 truncated 标记和
note。增大 --retmax 可检索更多结果(最多 5 000 个)。
典型工作流
根据坐标识别已知变异
# Step 1: Map VCF coordinates to rsID
uv run scripts/dbsnp_cli.py resolve-variant 19 44908684 T C \
--output /tmp/step1.json
# Step 2: Get the full details for the resolved rsID
uv run scripts/dbsnp_cli.py get-variant <rsid_from_step1> \
--output /tmp/step2.json
调查基因区域内的变异
# Step 1: Find all variants in a region spanning the CFTR gene
uv run scripts/dbsnp_cli.py search-region 7 117100000 117300000 \
--retmax 1000 --output /tmp/region.json
# Step 2: Retrieve details on individual rsIDs of interest
uv run scripts/dbsnp_cli.py get-variant <rsid> --output /tmp/detail.json
将 HGVS 表示法转换为基因组坐标
# Step 1: Get the rsID for an HGVS expression
uv run scripts/dbsnp_cli.py resolve-hgvs 'NC_000019.10:g.44908684T>C' \
--output /tmp/hgvs.json
# Step 2: Resolve that rsID to VCF-style coordinates
uv run scripts/dbsnp_cli.py resolve-rsid <rsid> --output /tmp/coords.json
组装版本默认值和自动回退
Variation Services 端点(由 get-variant、resolve-variant、
resolve-rsid、resolve-hgvs 使用)要求提供 RefSeq 组装版本登录号。
GRCh38 的 RefSeq 登录号为 GCF_000001405.40,GRCh37 的为
GCF_000001405.25。
search-region 子命令始终搜索 GRCh38 坐标。
重要
自动组装版本回退:
resolve-variant和resolve-hgvs命令会先自动尝试 GRCh38。如果未找到 rsID,则会在报告失败前 改用 GRCh37 重试。发生回退时,输出 JSON 会包含一个"note"字段,说明 哪个组装版本成功。 你无需手动改用其他组装版本重试——脚本会自动处理。
只有在你明确希望将查询限制在某个组装版本时(例如,已知用户的坐标
属于 GRCh37),才需要覆盖 --assembly。
NCBI API 密钥和速率限制
未使用 API 密钥时,脚本的请求速率限制为每秒 3 次。使用密钥后,速率 可提高到每秒 10 次。
你可以在
https://www.ncbi.nlm.nih.gov/account/settings/ 免费注册获取密钥。如果此
技能与用户的请求相关,你必须使用 credentials 技能中的安全凭据协议来检查并申请此密钥。
HTTP 500 错误排查
参考等位基因不匹配
如果收到 HTTP 500 错误,且错误消息指出断言的参考等位基因与参考序列不相符:
**含义:**坐标位置可能有效,但你提供的参考等位基因(ref)与所请求
组装版本中该位置的碱基不匹配。
**操作:**1. 不要机械地重试完全相同的查询。2. 检查组装版本:坐标因
组装版本而异。3. 切换组装版本:如果查询的是 GRCh37,请尝试 GRCh38(使用
--assembly GCF_000001405.40);如果查询的是 GRCh38,请尝试 GRCh37(使用
--assembly GCF_000001405.25)。
常见错误
-
错误: 忘记给 HGVS 字符串加引号 修正: 用单引号括起来:
'NC_000008.11:g.19962213del' -
错误: 向
resolve-variant传入染色体名称,而不是序列登录号 修正: 使用染色体数字 ID(例如8)或 RefSeq 登录号,例如NC_000008.11 -
错误: 不需要时仍在
get-variant中使用--full修正: 简略输出已能满足大多数使用场景;--full会返回 50–500 KB 以上的 JSON -
错误: 认为
search-region默认会返回所有结果 修正: 默认--retmax为 500;查看输出中的total_available,确认结果是否被截断 -
错误: 在
search-region中使用 GRCh37 坐标 修正:search-region始终使用 GRCh38 坐标;如果起始坐标来自 GRCh37,请先进行坐标转换 -
错误: 首次调用失败时,手动使用不同的
--assembly重试resolve-variant或resolve-hgvs修正: 脚本会自动依次尝试 GRCh38 和 GRCh37;调用一次即可 -
错误: 将
X或Y作为染色体值传入 修正: 使用对应的数字:染色体 X 为23,染色体 Y 为24。CLI 默认按数字处理染色体。