信息速览

dbSNP — 全球最大遗传变异数据库 AI-Ready Wikipedia
INFOBOX
| 字段 | 内容 |
|---|---|
| 数据集名称 | dbSNP |
| 英文全称 | Database of Single Nucleotide Polymorphisms |
| 别名/简称 | NCBI dbSNP;单核苷酸多态性数据库;rsID 体系 |
| 疾病分类(ICD-11) | 全疾病谱变异基础设施,不限单一编码(代表性映射见 §2.1) |
| SNOMED CT | 跨疾病参照(映射示例见 §2.1) |
| 数据模态 | 基因组短变异(SNV/indel/MNV)+ 人群等位基因频率 |
| AI 任务类型 | 变异注释、known-sites 质控、GWAS 特征工程、序列模型预训练语料 |
| 样本总数 | 1,130,597,309 条 RefSNP(Build 156);超 33 亿条 ss 提交记录 |
| 数据大小 | VCF 压缩约 14-15 GB(解压约 70 GB) |
| 数据格式 | VCF 4.x、JSON(另有存档 XML/flat/数据库表) |
| 许可证 | 公共领域(美国联邦政府作品,无使用限制) |
| 访问级别 | 开放(无需注册、无申请流程) |
| DUO 标签 | NRES(无限制) |
| 语言 | 英文 |
| 首发日期 | 1998-09 |
| 最后更新 | Build 157(2025-03 公告) |
| 发布机构 | NCBI(NLM/NIH),与 NHGRI 合作建立 |
| 官方主页 | https://www.ncbi.nlm.nih.gov/snp/ |
| 下载地址 | https://ftp.ncbi.nih.gov/snp/latest_release/VCF/ |
| DOI | 10.1093/nar/29.1.308(原始论文) |
| 引用次数 | 9,100+(Google Scholar,截至 2026-09) |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 版本记录、JSON/VCF 规范与 API 齐备且全免费;扣分项:无官方训练划分、大文件需自建解析管线、人群频率分散需另行合并 |
| 页面状态 | published |
§0 E-E-A-T 审核声明
- 医学审核者:[千方病案医学编辑部] 交叉审核:§2 医学背景(ICD-11 与 SNOMED CT 映射、遗传变异流行病学)、§7 偏倚分析。
- 数据工程审核者:[千方病案医学编辑部交叉审核] 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
- 审核日期:2026-09-05
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。dbSNP 数据属美国联邦政府作品(公共领域),开放获取、无需注册申请;NCBI 附带标准免责声明(不就内容准确性作任何担保)。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 📌 30 秒速览
这是什么? dbSNP 是美国 NCBI 维护的全球最大遗传变异数据库,像一本"人类基因组差异总账":任何人身上与参考基因组不同的单个碱基变化、小片段插入缺失,都被收进这里并编上唯一的 rs 编号(如 rs4244285)。截至 Build 156,它收录了 11.3 亿条去重参考变异(官方公告)。
为什么重要? 几乎所有基因组学研究都要先回答一个问题:"这个位置的变异,别人见过吗?常见吗?"GWAS、肿瘤测序、药物基因组学全都依赖这套 rs 编号与人群频率。它 1998 年上线至今,原始论文被引超过 9,100 次(Google Scholar,截至 2026-09),是名副其实的基因组学基础设施。
我能用它做什么? 给测序结果做质控过滤(剔除常见无害变异)、给 AI 模型提供人群频率特征、把文献里的变异对齐到统一坐标,或直接把 11 亿条变异当作基因组序列模型的预训练语料。本 Wiki 的 §6 提供完整代码与 8 个真实坑点。
§1.1 技术摘要
dbSNP 采用提交-聚合架构:全球实验室与大型项目(1000 Genomes、TOPMed、gnomAD、ClinVar 等)把各自发现的变异以提交记录(ss,Submitted SNP)形式上报;NCBI 用 SPDI 归一化模型(Holmes et al. 2020)把不同格式、不同参考序列版本的描述统一投影,再将同一位置的多个 ss 聚类成去重参考记录(rs,RefSNP),高位 rs 并入低位 rs 以保证每位置唯一标识。数据以不定期 Build 发布(Build 156 于 2023-01,Build 157 于 2025-03),产品形态包括 VCF 4.x(按 GRCh37/GRCh38 双坐标)、按 rs 分片的 JSON 与在线 API。人群等位基因频率由 NCBI ALFA 项目从 dbGaP 汇总(Release 3 覆盖 20 万+受试者、12 大人群,Sayers et al. 2024),并与 ClinVar(临床意义)、PubMed(文献)交叉引用。全部数据属公共领域,可经 FTP、API 免费获取。
§1.2 战略价值
基础设施维度——事实标准的网络效应。 rs 编号是基因组学文献的"通用货币":GWAS Catalog、ClinVar、hgmd 之外的商业数据库、几乎所有变异数据都携带 rsID。对 AI 工程师而言,把 dbSNP 作为主键体系,可以让模型特征(频率、基因注释、临床状态)跨数据源对齐;放弃它意味着重造一套没人认的 ID 体系。dbSNP 同时是罕见变异的"存在性证明":一个位点是否已被全球社区观察到,本身就是强特征。
数据维度——规模与多样性的唯一解。 11.3 亿 rs、48.5 亿 ss(Build 157)的体量没有任何单一项目可以复现;1000 Genomes 只有 2,504 人,gnomAD 强在频率但不含历史上被文献引用的 legacy 变异。dbSNP 把 25 年的提交历史(HapMap 2004、1000 Genomes 2009、ExAC 2015、gnomAD 2017、TOPMed 2020,Phan et al. 2025)压缩进一个可下载目录,并保留合并历史(RsMergeArch)使跨年代文献可追溯——这是生成式基因组模型预训练语料与变异级监督信号的关键来源。
选型速断——什么时候选/不选 dbSNP:
- ✅ 需要给全基因组变异发唯一 ID 并跨库对齐时(rsID 是唯一同时被 ClinVar/gnomAD/GWAS Catalog 承认的通用键)。
- ✅ 需要"这个变异别人见过吗"的存在性证据与多来源频率底表时。
- ✅ 需要公共领域、免申请、可再分发的数据做产品化特征时(无 DUA 负担)。
- ❌ 需要临床致病性标签时——直接用 ClinVar,dbSNP 不携带该信息(坑点 8)。
- ❌ 需要个体级基因型-表型分析时——走 dbGaP 受控申请,dbSNP 公开层只有聚合频率。
- ❌ 需要结构变异(SV >50 bp)时——dbSNP 只收短变异,用 dbVar/DGV。
§1.3 同类数据集横向对比
| 数据集 | 规模口径 | 内容重点 | 标注方式 | 与 dbSNP 的差异化 |
|---|---|---|---|---|
| dbSNP | 11.3 亿 rs / 33 亿 ss(Build 156) | 全部短变异的存档目录 + 多来源频率 | 提交聚合(无逐条人工审核) | 本体:变异"户籍系统",公共领域 |
| ClinVar | 数十万级变异-表型记录 | 变异-疾病-临床意义(致病/良性) | 提交者 + 专家审核 | 临床意义权威源;经 rsID 关联 dbSNP |
| gnomAD | 141,456 例外显子组/基因组 | 高深度人群频率 + 约束指标 | 测序聚合 | 频率更精细但不含 legacy 提交 |
| 1000 Genomes | 2,504 人、26 群体 | 基因型 + 单体型 | 全基因组测序 | 人口分层清晰,规模小三个数量级 |
| GWAS Catalog | 数千项研究的 SNP-性状关联 | 关联统计量 | 文献策展 | 消费 dbSNP 的 rsID 与坐标 |
| HGMD | 数十万条专业突变 | 致病突变 | 专家策展 | 商业许可;临床遗传学导向 |
§1.4 版本时间轴
| Build | 发布时点 | RefSNP(rs)总数 | 关键事件 |
|---|---|---|---|
| Build 151 | 2018-04 | 约 6.6 亿 | 旧构建系统最后一版主力产品 |
| Build 152 | 2018-12 | —(系统重构) | 新一代构建系统首发,引入 SPDI 记法 |
| Build 154 | 2020-06 | 729,491,867 | 首次接入 ALFA 频率 |
| Build 155 | 2021-06 | 1,085,850,277 | rs 首次突破 10 亿 |
| Build 156 | 2023-01 | 1,130,597,309 | 25 周年版本;ss 超 33 亿;ALFA R2/R3 频率 |
| Build 157 | 2025-03 | 1,172,689,405(live) | ss 达 4,849,775,973;16,292 个 rs 因 ClinVar 解析错误暂失临床标记 |
数字来源:Build 156 公告、Build 157 公告、dbSNP 新闻 RSS。
§1.5 典型应用场景
- 变异调用质控(known-sites):GATK BQSR 与硬过滤用 dbSNP 常见位点作为"已知真实变异"先验,降低假阳性(§6.3)。
- GWAS 后续注释:关联位点通过 rsID 回查基因区、人群频率与连锁信息,区分新颖信号与已知信号。
- 频率特征工程:把 TOPMed/ALFA/gnomAD 频率拼成变异级特征表,用于致病性排序、变异优先级模型。
- 基因组深度学习语料:以变异位置为监督信号构造序列窗口(正例=真实变异位点),预训练 DNA 大模型(§6.4)。
- 药物基因组学:CYP2C19*2(rs4244285)、VKORC1(rs9923231)等位点以 rsID 沉淀在 dbSNP,供用药决策系统引用。
§2 医学背景
§2.1 ICD-11 与 SNOMED CT 映射
dbSNP 覆盖全疾病谱,无单一疾病归属;下表给出其高频引用疾病场景的术语映射(供标签体系对齐用):
| 标签 | ICD-11 编码 | SNOMED CT 码 | 术语 |
|---|---|---|---|
| 2 型糖尿病(T2D 关联变异密集区) | 5A11 | 44054006 | type 2 diabetes mellitus |
| 原发性高血压 | BA00 | 38341003 | hypertensive disorder |
| 乳腺恶性肿瘤 | 2C61 | 254837009 | malignant neoplasm of breast |
| 阿尔茨海默病 | 8A20 | 26929004 | Alzheimer disease |
| 囊性纤维化(经典单基因示例) | CA25 | 190905008 | cystic fibrosis |
映射说明:dbSNP 记录本身不携带 ICD-11/SNOMED 编码;疾病语义经由 ClinVar(变异-表型)与文献(PubMed 链接)间接获得,落地时需自行维护"rsID → 疾病术语"的映射表。
§2.2 遗传变异与疾病:背景与流行病学
任意两个不相关人类的基因组约 99.9% 一致;1000 Genomes 三期分析显示,一个典型个体与参考基因组存在约 410-500 万个变异位点,其中绝大多数为单碱基替换(Auton et al. 2015, Nature)。按惯用定义,最小等位基因频率(MAF)≥1% 的位点称为单核苷酸多态性(SNP);dbSNP 的收录口径更宽——不设频率门槛、不假设功能中性,因此既包含中性多态,也包含致病性临床突变(Sherry et al. 2001)。
变异与疾病的关联分三个层次:常见变异-常见病(GWAS 检出的数千个风险位点,多为效应量微小的 tag SNP);罕见变异-强效应(如囊性纤维化 CFTR 基因的功能缺失变异);体细胞变异(肿瘤基因组中的获得性突变,dbSNP 通过 SAO 字段区分种系/体细胞起源)。流行病学上,这些变异的分布存在显著人群分层——这正是 dbSNP 聚合多来源频率数据(ALFA、TOPMed、gnomAD)的原因,也是 §7.5 公平性议题的根源。
从频率谱看,人类变异位点的绝大多数是稀有的:1000 Genomes 三期数据显示,典型基因组携带的 410-500 万变异中约 0.5% 为常见变异(频率 >5%),绝大多数位点频率低于 0.5%,且新发现位点的比例随样本量增长持续上升——这决定了任何"常见变异目录"(如芯片设计、common_all 产品)都只覆盖了频率谱的头部,而 dbSNP 的存档价值恰在于把长尾也纳入可寻址空间。相邻变异之间还存在连锁不平衡(LD):同一染色体区段上的变异以单倍型块共同遗传,这既是 GWAS 用 tag SNP 间接关联因果变异的原理,也是 §5.3 划分泄漏防御必须按 LD 区块分组的原因。
§2.3 临床与科研任务定义
| 任务 | 输入 | dbSNP 的角色 | 输出 |
|---|---|---|---|
| 变异调用质控 | 测序比对结果(BAM/CRAM) | known-sites 先验(BQSR、硬过滤) | 去噪后的变异集合(VCF) |
| 变异注释与优先级 | 候选变异列表 | rsID 主键、基因映射、人群频率 | 按致病风险排序的变异表 |
| GWAS 位点解读 | 关联统计(rsID + p 值) | 频率与注释回查、连锁区聚合 | 可解释的风险位点清单 |
| 药物基因组学 | 患者 genotype | 位点标准化(rs4244285 等) | 用药建议的证据输入 |
| 序列模型预训练 | 参考基因组 FASTA | 变异位置监督信号/变异注入增强 | 基因组表征模型 |
注意:以上任务中 dbSNP 均为参照与特征源,不是标签源——临床致病性标签必须回溯 ClinVar(见坑点 8)。
§2.4 频率贡献人群构成
dbSNP 自身不招募患者;下表是其人群频率数据的主要来源项目:
| 来源项目 | 样本量 | 人群覆盖 | 就医/采集类型 |
|---|---|---|---|
| 1000 Genomes Phase 3 | 2,504 人 | 26 个全球人群 | 社区招募志愿者 |
| gnomAD(v2/v3 合并口径) | 141,456 例 | 全球(欧洲裔占比最高) | 疾病特异性研究残留样本汇总 |
| NCBI ALFA Release 3 | 200,000+ 受试者 | 12 大人群 | dbGaP 研究汇总(去标识聚合) |
| HapMap Phase II | 270 人 | 11 个人群 | 历史项目(2007) |
来源:Auton et al. 2015、Karczewski et al. 2020, Nature、ALFA 文档。
代表性提示:上述面板的"人群"分层粒度不一——1000 Genomes 的 26 个人群各自仅数十至上百人,ALFA 的 12 大人群是超级聚合(最大单群数万人),gnomAD 的亚人群则受残留样本来源影响。做人群特异性分析时应混合使用:粗分层用 ALFA/gnomAD(样本量大),精细族裔用 1000 Genomes(祖先成分明确但样本小),并对小样本人群体积区间做显式报告。
§2.5 临床价值
对临床 AI 而言,dbSNP 的价值集中在三个环节:过滤降噪——全基因组测序人均约 400-500 万变异,其中绝大多数为良性常见多态,以 dbSNP 常见位点先行过滤可将候选集压缩两个数量级;标准化互通——实验室间报告变异时统一到 rsID,避免 chr-pos-allele 手写差异导致的对不上号;人群校准——等位频率是 ACMG/AMP 良性证据(BA1:频率过高排除致病)的核心定量输入,dbSNP 聚合的频率视图为该证据提供参考下限(严格临床判定仍以 ClinVar 与人群频率专业库为准)。
临床落地路径上,dbSNP 数据通常以三种形态进入医院级系统:作为测序报告解读管线的内置注释资源(随 LIMS/分析平台分发);作为药物基因组学知识库(如 CPIC 指南位点)的坐标锚点;作为科研队列联检(跨研究 meta 分析)的位点对齐基准。三种形态都依赖版本钉死策略——临床环境严禁滚动升级 Build,任何升级必须走验证-备案流程。
§2.6 金标准与参照角色
| 维度 | dbSNP 的定位 |
|---|---|
| 划分 | 无训练/测试划分;作为参考目录整体消费 |
| 标注方式 | 提交聚合(算法聚类 + SPDI 归一化),无逐条人工审核 |
| 标注者 | 全球提交实验室与大型项目;NCBI 负责映射与合并 |
| 性质 | 变异调用质控与注释的事实参照,而非临床金标准;变异调用严格评估的金标准是 NIST Genome in a Bottle 真值集 |
§3 数据集规格
§3.0 版本抉择矩阵
| 你的需求 | 推荐版本 | 大小 | 理由 |
|---|---|---|---|
| 新管线搭建/模型预训练 | Build 157(GRCh38 VCF) | 压缩约 14 GB | 最新现役 rs 集;与现行参考基因组对齐 |
| 复现 2023-2024 年论文 | Build 156 | 压缩约 14 GB | 与该时段 ClinVar/gnomAD 快照同代 |
| 老管线(hg19/GRCh37 锚定) | Build 151 GRCh37p13(00-All.vcf.gz) | 压缩约 15 GB | 存档目录直接可用,无需 liftOver |
| 字段级查询/ID 追溯 | Build 157 JSON + RsMergeArch | 按 rs 分片 | 保留 SPDI、合并别名与频率聚合视图 |
| 仅需常见变异过滤 | common_all 类产品或第三方轻量资源 | 数百 MB | 避免为 1% 过滤需求搬运全库 |
§3.1 模态详情
dbSNP 收录"短变异"(small-scale variation):单核苷酸替换(SNV)、小片段插入/缺失(indel,通常 ≤50 bp)、多核苷酸变异(MNV)、微卫星重复与命名变异。变异类别编码在 VCF INFO 的 VC 字段(snv、indel、delins、mnv、microsatellite 等)。每一 rs 记录的核心内容为:基因组锚点坐标(按 Build 对应 assembly)、参考/替代等位(REF/ALT)、变异类别、来源 ss 列表、多来源等位基因频率、基因映射(GENEINFO)、分子后果与临床标志(ClinVar 关联仅作指示,不含分级结论)。
VC 字段常见取值与建模提示:
| VC 取值 | 含义 | 相对占比 | 建模提示 |
|---|---|---|---|
| snv | 单核苷酸替换 | 绝对主导 | 样本充足,可作主任务类别 |
| indel | 小片段插入/缺失 | 少数 | 表示复杂(重复区),先归一化 |
| delins | 替换型变异(同时删/插) | 极少 | 与 indel 合并训练或单独留出 |
| mnv | 相邻多核苷酸变异 | 极少 | 可拆分为 snv 组合但语义会丢失 |
| microsatellite | 微卫星重复 | 极少 | 表示过精确问题最突出(VOCA) |
注意 VC 是提交聚合推断的结果,同一 rs 跨 Build 可能改类(聚类边界变化);训练管线应对 VC 变更事件做监控。
§3.2 按 Build 的规模分布
| 子集 | rs(去重参考) | ss(提交记录) | 坐标系 |
|---|---|---|---|
| Build 151(2018) | 约 6.6 亿 | —(旧口径未并轨) | GRCh37p13 / GRCh38p7 双发布 |
| Build 154(2020) | 729,491,867 | — | GRCh37/GRCh38 |
| Build 155(2021) | 1,085,850,277 | — | GRCh37/GRCh38 |
| Build 156(2023) | 1,130,597,309 | 超 33 亿 | GRCh37/GRCh38 |
| Build 157(2025) | 1,172,689,405(live) | 4,849,775,973 | GRCh37/GRCh38 |
来源:Build 156 公告、Build 157 公告、dbSNP 新闻 RSS。注意 rs 与 ss 是两个口径(坑点 3)。
§3.3 数据格式
| 格式 | 位置 | 内容 | 适用场景 |
|---|---|---|---|
| VCF 4.x(bgzip) | /snp/latest_release/VCF/ | 按染色体的全量 rs 变异(含 INFO 注释) | 标准管线、tabix 区域访问 |
| JSON(按 rs 分片) | /snp/latest_release/JSON/ | 完整 RefSNP 对象(SPDI、等位、频率、提交) | 字段级解析、文档库导入 |
| FASTA 参考序列 | /snp/latest_release/reference_sequence/ | 对应 assembly 参考 | 窗口序列提取 |
| 发布说明 | release_notes.txt | BUILD SUMMARY 与 rs/ss 总数 | 下载完整性核对 |
| 存档 XML/flat/BCP | /snp/organisms/ 各物种目录 | 旧版产品与关系库表 | 复现历史研究、RsMergeArch |
JSON 产品的单 rs 记录要点(字段语义以 官方 OpenAPI 规范为准):
| JSON 顶层字段 | 内容 | AI 用途 |
|---|---|---|
| refsnp_id | rs 数字主键 | 主键 |
| merged_snapshot / merged_into | 合并状态与去向 | 别名归一(坑点 1) |
| spdi / alleles | 归一化 SPDI 表示与等位集合 | 跨 assembly 投影主键 |
| primary_snapshot_data | 基因组放置、基因映射、频率聚合 | 特征抽取 |
| present_obs_mocks / submissions | 提交 ss 概要与来源 | 溯源与去重评估 |
§3.4 存储大小
VCF 主文件(00-All 类)压缩约 14-15 GB、解压约 70 GB(第三方管线实测;Build 151 存档 00-All.vcf.gz 约 15 GB,见 社区记录)。JSON 产品按 rs 分片,单 rs 约 KB 量级。整库关系表(本地 MySQL/SQL Server 导入)在 NCBI 内部人类数据约 3 TB、小鼠约 700 GB(NCBI Handbook)。经验配置:全库 ETL 预留 200 GB SSD + 32 GB 内存(§6.8)。
按使用场景的存储规划:
| 场景 | 需要的文件 | 峰值磁盘 | 备注 |
|---|---|---|---|
| 区域查询/注释服务 | VCF(保持压缩)+ .tbi | 约 15 GB | tabix 随机访问,不解压 |
| 全库特征表 ETL | VCF + 归一化产物 + TSV 导出 | 约 150-200 GB | 归一化产物与原文件等量级 |
| 窗口序列训练 | VCF 子集 + GRCh38 FASTA + .fai | 约 60-100 GB | FASTA 约 3 GB,索引另计 |
| JSON 全量导入文档库 | JSON 分片 | 约 100 GB+ | 分片可并行、可断点 |
§3.5 标注方式
dbSNP 的"标注"是算法聚合而非人工标注:提交记录经侧翼序列比对定位→SPDI 归一化→同位置聚类→rs 合并(高位并入低位);等位基因频率由提交数据与 ALFA/gnomAD/TOPMed 等项目自动汇总;分子后果(同义/错义等)由参考转录本投影自动计算。全库不存在逐条人工审核环节——这是它与 ClinVar(提交者声明 + 专家分级)的本质区别。
聚合流水线的五个步骤(对应 SPDI 论文描述的重设计系统):
- 表示归一:各提交按 HGVS/VCF/序列位置等不同格式写入,统一转 SPDI 四元组(sequence, position, deletion, insertion)。
- 过度精确校正:VOCA 算法把重复区的过精确 indel 表示折叠到最大可信精度。
- 跨序列投影:把变异投影到同源序列(转录本、各 assembly 的基因组序列)。
- 聚类合并:同一删除区间 + 同一类型(六类之一)的变异聚合为一个 RefSNP。
- 产品生成:MapReduce 框架批量产出 VCF/JSON 分片与网页视图。
§3.6 提交者资质与质量控制
提交者为全球范围的测序/基因分型实验室与大型协作项目(1000 Genomes、TOPMed、gnomAD、ClinVar 提交方及数千个独立实验室)。质量控制机制包括:提交时侧翼序列校验、映射一致性校验、跨 Build 重映射与合并(消除冗余)、撤回机制(SNPHistory 记录完全删除的 rs)。质量方差客观存在:早期短侧翼、低质量比对与未成熟 assembly 曾造成大规模合并(Build 129→130 期间 20% 的 rs 被合并,NCBI FAQ)。
§3.7 采集周期
1998-09 开放提交至今,持续滚动接收;数据以 Build 形式不定期发布——2018 年两版、2020/2021/2023/2025 各一版。Build 发布才是数据快照边界:Build 之间不新增变异,但频率与映射可能更新。
发布节奏的工程含义:不要假设"最新"与"最全"永远同向——Build 157 曾因 ClinVar 解析缺陷临时发布 rs_unsupported 清单,Variation Viewer 的配套发布也曾延期(见 Build 157 公告)。升级决策应盯三样东西:公告正文、release_notes.txt、官方缺陷清单,而非仅看 build 号大小。
§3.8 地域覆盖
提交者遍布全球(北美、欧洲、东亚、大洋洲为主);人群频率维度上,ALFA Release 3 覆盖 12 大人群(Sayers et al. 2024),1000 Genomes 覆盖 5 大洲 26 个人群。频率数据的洲际均衡度远低于提交数据的地理分布(§7.5)。
§3.9 测序平台与设备规格
覆盖 25 年技术演进:早期 Sanger 测序与基因分型芯片、中期高密度 SNP 芯片(Illumina/Affymetrix 体系)、当前 Illumina/PacBio/ONT 短长读测序。VCF 产品不携带平台元数据——平台信息仅存在于部分 ss 提交的方法字段中。对 AI 的影响:平台效应(如芯片偏倚)无法在文件内校正,只能在 §7.1 偏倚层处理。
| 技术代际 | 时期 | 对 dbSNP 内容的影响 |
|---|---|---|
| Sanger 测序/PCR 芯片 | 1998-2005 | 早期 rs,侧翼序列短,合并率最高 |
| 高密度基因分型芯片 | 2005-2012 | HapMap 时代常见 SNP 密集覆盖 |
| 外显子组测序 | 2010-2015 | ExAC 等带来编码区罕见变异潮 |
| WGS + 大型聚合 | 2015-至今 | gnomAD/TOPMed 全谱覆盖,ALFA 频率 |
§3.10 深度溯源链
完整溯源链为:提交实验室 → ss 编号(含方法/人群描述)→ rs 聚类(合并规则见坑点 1)→ Build 快照(dbSNPBuildID 字段记录首次纳入的 Build 号)→ RsMergeArch/SNPHistory 保留全生命周期变更。发布层面:release_notes.txt 提供 BUILD SUMMARY 总数核对;FTP 目录校验值用于下载完整性;官方 JSON 规范(github.com/ncbi/dbsnp)以 OpenAPI 形式冻结字段语义。
对 AI 数据治理的实操含义:当需要回答"这个 rs 的数据从哪来、谁在什么年代用何种方法提交"时,路径只有两条——JSON 分片的 submissions 概要(在线服务便捷),或历史 Build 的 ss 级关系表(完整但笨重)。建议特征表至少保留 dbSNPBuildID 一列,让每条特征可回溯到首次入库年代,为 §7.6 的漂移分析留出锚点。
§4 数据结构
§4.0 目录树
dbsnp_b157/ # 解压后的数据根目录(本 Wiki 的 data_root)
├── VCF/
│ ├── GCA_000001405.15(.gz) # GRCh38 全量 rs 变异(主文件,压缩约 14 GB)
│ ├── GCA_000001405.15.gz.tbi # tabix 索引(区域随机访问必需)
│ └── GCA_000001405.14(.gz) # GRCh37 对应版本(同目录并存,勿混用!坑点 4)
├── JSON/
│ ├── refsnp-snpg000000001.json.gz # 按 rs 分片的 RefSNP 完整对象
│ └── ... # 每个 rs 一个分片
├── reference_sequence/
│ └── GCF_000001405.40_GRCh38.p14_genomic.fna(.gz)
├── release_notes.txt # BUILD SUMMARY:rs/ss 总数与版本核对
└── misc/
└── rs_unsupported_b157.txt # 已知缺陷清单(16,292 个丢失 ClinVar 标记的 rs)
说明:目录结构与文件命名以 FTP 实际列表为准,历史 Build 存放在 /snp/organisms/(如 human_9606_b151_GRCh37p13/VCF/00-All.vcf.gz)与 /snp/archive/b155/VCF/。
§4.1 DAIMS 字段字典(VCF 00-All)
| 字段 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| CHROM | String | 染色体(GRCh38 命名) | chr17 | 区域过滤、染色体级划分 | alt contig 与 primary 区需区分 | 无 | 1-22, X, Y, MT, alt contig |
| POS | Integer | 变异锚点位置(1-based) | 19826182 | 坐标索引、窗口切分 | indel 左对齐差异(坑点 2) | 无 | 1 至染色体长度 |
| ID | String | rs 编号 | rs157397 | 主键、外部关联 | 跨 Build 漂移(坑点 1) | 无 | rs[0-9]+ |
| REF | String | 参考等位 | T | 等位编码、突变类型 | 依赖 assembly 版本 | 无 | [ACGTN]+ |
| ALT | String | 替代等位(逗号分隔多等位) | A,C | 等位编码、多等位处理 | 重复区表示过精确(VOCA 修正) | . | [ACGTN]+ 或 . |
| QUAL / FILTER | Float/String | 质量分/过滤标记 | . | 无(提醒:勿误读为质量信号) | dbSNP 不使用 | .(全部为 .) | . |
| INFO.RSPOS | Integer | rs 锚点坐标 | 19826182 | 与 POS 交叉校验 | 同 POS | 无 | 同 POS |
| INFO.dbSNPBuildID | Integer | 首次纳入的 Build 号 | 111 | 版本溯源、数据年代特征 | — | 无 | ≥1 |
| INFO.GENEINFO | String | 基因符号与 GeneID(VCF 内两值以竖线分隔) | ULK2(GeneID 7398) | 基因级聚合特征 | 多基因位点多值 | 缺省即未映射基因 | 任意组合 |
| INFO.VC | String | 变异类别(标签) | SNV | 类别标签/分层采样 | 类别口径随构建系统演进 | 缺省即未分类 | snv, indel, delins, mnv 等 |
| INFO.SAO | Integer | 等位起源 | 1 | 区分种系/体细胞 | 口径依赖提交者声明 | 0(未知) | 0-3 |
| INFO.SSR | Integer | 可疑映射原因码 | 0 | 质控过滤(剔除可疑映射) | 仅标注已知可疑类型 | 0(无标记) | 0-3(1 paralog;2 byEST;3 oldAlign,见 VCF FAQ) |
| INFO.TOPMED | String | TOPMed 频率(等位=值) | T=0.116990 | 人群频率特征 | 单一项目口径 | 缺省即无该来源数据 | [0,1] |
| INFO.CAF | String | 1000G 汇总等位频率 | T=0.2059,G=0.7941 | 频率特征(历史口径) | 人群混合口径 | 缺省即未测 | [0,1] |
| INFO.COMMON | Integer | 是否常见变异(MAF≥1%) | 1 | 快速过滤 | 阈值口径随版本变化 | 缺省即未知 | 0/1 |
§4.2 标签与类别分布
dbSNP 无监督学习意义上的标签;最接近标签的字段是 VC(变异类别)。分布上 SNV 占绝对主导——2001 年建库初期单碱基替换即占提交的 99.77%(Sherry et al. 2001),当前的 00-All VCF 仍以 SNV 为绝大多数、indel 次之、MNV/微卫星为极少数。若把 VC 用作分类任务的标签,需对罕见类别做分层采样与分组(§4.5、§5.3)。临床致病性不是 dbSNP 的标签字段,其在 rs 页面仅以"是否见于 ClinVar"指示。
§4.3 关键统计
| 统计项 | 数值 | 口径与来源 |
|---|---|---|
| 现役 rs 总数(Build 157) | 1,172,689,405 | 官方公告 |
| ss 提交总数(Build 157) | 4,849,775,973 | 同上 |
| rs/ss 聚合比 | 约 1:4.1 | 由上两行计算 |
| ALFA 有频率的 rs | 904,700,000+(12 人群) | Sayers et al. 2024 |
| Build 157 已知缺陷 rs | 16,292(丢失 ClinVar 标记) | rs_unsupported_b157.txt |
| 历史最大单次合并潮 | b129→b130 约 20% rs 被合并 | NCBI FAQ |
§4.4 数据层级
物种(Organism,tax_id=9606 人类)
└── Build 快照(Build 151…157 × GRCh37/GRCh38)
└── RefSNP(rs,去重参考聚类——AI 消费的"一行")
├── 等位集合(REF/ALT,SPDI 表示)
├── 多来源频率(ALFA / TOPMed / gnomAD / 1000G…)
├── 基因与分子后果映射
└── Submitted SNP(ss,1 至数十条——原始提交,含方法/人群描述)
对 AI 而言,"样本"应定义在 rs 层;ss 层仅用于溯源与去重评估(坑点 2)。
两层结构的关键性质:rs 是稳定门面(对外发布的去重视图,坐标/等位/频率随 Build 更新),ss 是历史底账(追加式提交,永不修改只增补)。这一"门面-底账"模式与 Git 的分支-提交关系类似:消费端永远读 rs 门面,审计端才回放 ss 底账。将两者混用是新手最常见的架构错误——它同时引入重复(多个 ss 对应一个 rs)与不一致(不同 ss 对同一变异描述不同)。
§4.5 缺失值与信息性缺失编码
| 编码 | 位置 | 含义 | 处理建议 |
|---|---|---|---|
. |
QUAL / FILTER / ALT 等 | VCF 标准缺失(dbSNP 的 QUAL/FILTER 恒为 .) | 解析时跳过,勿当作数值 |
ALT = . |
ALT 列 | 该 rs 在当前 assembly 无替代等位(单态/不可表示) | 训练前过滤并记录比例 |
| INFO 字段缺省 | TOPMED/CAF/SAO 等 | 该来源未覆盖该变异(信息性缺失:未测≠频率为零) | 缺失指示变量 + 分来源填充 |
| SAO = 0 | INFO.SAO | 等位起源未知 | 保留为独立类别 |
| 频率 = 0 | TOPMED/CAF | 观察到的频率为零(测过为零,与未测不同) | 与缺省严格区分 |
缺失处理的参考实现(与 §6.3 的流式消费衔接):
def safe_freq(info_val):
"""把 TOPMED/CAF 的 'T=0.11699' 类字段解析为 (等位, 频率) 或缺失标记。
信息性缺失三态:None=未测(无该字段);'zero'=测过为零;float=观测值。"""
if info_val is None:
return None # 未测——保留为独立指示变量
try:
allele, _, freq = info_val.partition("=")
return (allele, float(freq))
except ValueError:
return None # 格式异常也按未测处理并记日志
§4.6 JSON 记录结构示例
JSON 产品(每 rs 一个分片)的骨架示意——适合文档库/键值库直接导入:
{
"refsnp_id": 157397,
"merged_snapshot": null,
"primary_snapshot_data": {
"placements_with_allele": [
{"placement": {"seq_id_attributes": {"assembly_name": "GRCh38.p14"}}}
],
"allele_annotations": [
{"frequency": [{"study_name": "TOPMED", "freq": 0.11699}]}
]
}
}
要点:merged_snapshot 非空即表示该 rs 已退役并给出去向(坑点 1 的在线判据);placements_with_allele 携带与 assembly 绑定的基因组放置与等位集合;frequency 数组按研究来源(TOPMED、GnomAD_genomes、ALFA 等)罗列频率。上例频率值取自 rs157397 实际页面,结构为骨架示意——字段全集与类型见官方 refsnp_specification.yaml,解析器应以规范驱动而非手写字段名。
§5 数据划分与使用建议
§5.1 官方划分
dbSNP 是参考目录,官方不提供训练/验证/测试划分,也永远不会提供——划分是下游任务的事。任何论文声称"在 dbSNP 上训练并在其上测试"都应视为存在评估设计缺陷。
§5.2 社区惯例划分
- 按染色体留出:如 chr1-20 训练、chr21-22 验证、chr8 或 chr22 整条测试(避免相邻位点同现)。
- 按 rs 号哈希:
hash(rsID) % 10确定性划分,可复现但无视基因组邻接(仍需配 LD 区块分组)。 - 按基因/基因组区间分组:以基因体或 CpG 岛为单位分组,防同一调控区横跨训练测试。
- 按频率层留出:把"仅见于稀有变异面板"的位点整层留作 OOD 测试集,专门度量模型对罕见变异的外推能力。
§5.3 划分策略与泄漏风险
dbSNP 场景的泄漏有四条特有通道:
- 频率面板重叠:gnomAD 汇聚了数百项研究的残留样本(141,456 例),与常见公开队列(TCGA、UKB)个体重叠。若训练集用 gnomAD 频率特征、测试集含 gnomAD 个体来源的变异,"罕见性"特征会系统性虚高。
- 合并 ID 多别名:一个现役 rs 带着多个退役别名(RsMergeArch);若按字符串 ID 去重而不做别名归一,同一变异会以不同 rsID 出现在训练与测试两侧。
- 连锁不平衡(LD):同一单倍型区块内的变异并非独立样本;随机按位点划分会让测试集"记住"训练集的单倍型背景。建议以 LD 区块或 ≥1 Mb 窗口分组划分。
- 注释派生特征回流:若基因映射(GENEINFO)、分子后果等特征在训练集统计上先验拟合(如按基因聚合频率),划分时按位点切而不按基因切,会让测试集变体的"基因画像"已在训练中被见过。
§5.4 交叉验证建议
采用分组 K 折(GroupKFold):分组键用"基因 + 染色体区间"或 LD 区块;每折内再做频率分层,保证各折的常见/罕见比例一致。跨人群评估(如以非欧洲人群为留出组)是检验频率特征公平性的推荐协议(§7.5)。
# 分组 K 折骨架:分组键 = 染色体 + 1Mb 区段(兼顾 LD 与基因边界)
import pandas as pd
from sklearn.model_selection import GroupKFold
df["group"] = df["chrom"] + ":" + (df["pos"] // 1_000_000).astype(str)
gkf = GroupKFold(n_splits=5)
for tr_idx, te_idx in gkf.split(df, groups=df["group"]):
train_df, test_df = df.iloc[tr_idx], df.iloc[te_idx]
# 在每个训练折内部再做频率分位分层抽样,保持常见/罕见比例
...
§5.5 外部验证建议
- 变异调用任务:以 NIST Genome in a Bottle 样本(HG001/HG002)真值集做严格外部评估,dbSNP 仅作 known-sites 先验。
- 频率预测/插补任务:用 1000 Genomes 高覆盖数据或 ALFA 未参与训练的人群分层做外部校验。
- 注释模型:与 Ensembl VEP/SnpEff 在同一 build 的独立位点集上盲比(§8.3)。
§6 AI 就绪指南 ⭐
§6.0 云端快速启动
不想下载 14 GB FTP 文件?两条捷径:
- GATK Resource Bundle(Google Cloud 公共桶):
gs://broad-references/hg38/dbsnp/提供常用历史 build 的 dbSNP VCF(版本可能滞后于官方 Build 157,用前核对文件名中的 build 号),gsutil cp或gcloud storage cp直取。 - API 零下载:单 rs 查询走 Variation Service(SPDI 归一化、合并别名、频率聚合),适合原型验证与在线特征服务,不适合全库训练。
§6.1 快速上手
# ── 目录结构预期 ──────────────────────────────────────────────
# $DATA_ROOT/dbsnp/b157/
# ├── GCF_000001405.39.gz(.tbi) # 00-All 类主文件(GRCh38 坐标)
# └── GRCh38.fa(.fai) # 同 assembly 参考基因组(坑点 4!)
# ── data_root 拼接关系 ───────────────────────────────────────
# 所有代码以 data_root = "$DATA_ROOT/dbsnp/b157" 为基准拼路径
# ── 最小可用子集 ─────────────────────────────────────────────
# 主文件 + .tbi 即可开始(压缩约 14 GB);FASTA 仅窗口任务需要
export DATA_ROOT=/data
mkdir -p $DATA_ROOT/dbsnp/b157 && cd $DATA_ROOT/dbsnp/b157
# 下载 Build 155 已验证文件名示例(latest_release 目录结构同理,先列表再取)
wget -c https://ftp.ncbi.nih.gov/snp/archive/b155/VCF/GCF_000001405.39.gz
wget -c https://ftp.ncbi.nih.gov/snp/archive/b155/VCF/GCF_000001405.39.gz.tbi
# 快速体验:取 BRCA1 区段前 5 条(无需解压全库)
bcftools view -H -r 17:43044295-43125482 GCF_000001405.39.gz | head -5
§6.2 数据获取
| 途径 | 链接 | 大小 | 前置条件 |
|---|---|---|---|
| FTP/HTTPS 主文件 | https://ftp.ncbi.nih.gov/snp/latest_release/VCF/ | 压缩约 14 GB | 无(免注册) |
| 存档(历史 Build) | https://ftp.ncbi.nih.gov/snp/archive/b155/VCF/ | 压缩约 14-15 GB | 无 |
| JSON 分片 | https://ftp.ncbi.nih.gov/snp/latest_release/JSON/ | 按 rs 分片 | 无 |
| Variation Service API | https://api.ncbi.nlm.nih.gov/variation/v0/ | 单次 KB 级 | 无 |
| GATK Resource Bundle | gs://broad-references/hg38/dbsnp/ | 随 build | GCS 访问 |
# 断点续传 + 校验(下载完整性用 release_notes.txt 的 BUILD SUMMARY 核对行数)
wget -c --tries=3 https://ftp.ncbi.nih.gov/snp/latest_release/VCF/GCF_000001405.39.gz
ls -l GCF_000001405.39.gz # 核对字节数与 FTP 页面一致
zcat GCF_000001405.39.gz | grep -vc '^#' # 行数应 ≈ rs 总数(11.3 亿级,预计数小时)
§6.3 预处理全流程
格式转换→归一化→切分→特征化四步,全部流式、不整表载入(坑点 5):
# ① 归一化:拆分多等位 + 左对齐 + 相对参考 FASTA 校正(防坑点 2)
bcftools norm -f GRCh38.fa -m -any \
GCF_000001405.39.gz -Oz -o dbsnp.norm.vcf.gz
tabix -p vcf dbsnp.norm.vcf.gz
# ② 流式导出扁平特征表(压缩 TSV,约 10-20 GB)
bcftools query -f '%CHROM\t%POS\t%ID\t%REF\t%ALT\t%INFO/VC\t%INFO/SAO\t%INFO/TOPMED\n' \
dbsnp.norm.vcf.gz | pigz > variants.tsv.gz
# ③ 按染色体组切分子集(染色体级划分,防 §5.3 泄漏)
for C in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do
bcftools view -H -r chr$C dbsnp.norm.vcf.gz | pigz > train_chr$C.tsv.gz
done
for C in 21 22 X; do
bcftools view -H -r chr$C dbsnp.norm.vcf.gz | pigz > val_chr$C.tsv.gz
done
# ④ Python 流式消费(cyvcf2 迭代器;内存占用恒定 <1 GB)
from cyvcf2 import VCF
def stream_variants(path, region=None):
vcf = VCF(path) # data_root 拼接示例:
for rec in (vcf(region) if region else vcf): # f"{data_root}/dbsnp.norm.vcf.gz"
if rec.ALT is None or "." in rec.ALT: # 跳过单态(§4.5)
continue
yield dict(chrom=rec.CHROM, pos=rec.POS, rs=rec.ID,
ref=rec.REF, alt=rec.ALT[0],
vc=(rec.INFO.get("VC") or "NA"),
topmed=(rec.INFO.get("TOPMED") or None))
§6.4 PyTorch DataLoader
<details>
<summary>完整可运行代码(点击展开,约 50 行)</summary>
# ── 前置:data_root 目录结构见 §6.1;染色体级子集文件见 §6.3 ③ ──
# 产出:(变异窗口 one-hot 张量, 变异类别标签),用于序列分类/预训练
import torch
from torch.utils.data import Dataset, DataLoader
from pyfaidx import Fasta
FLANK = 63 # 每侧侧翼;窗口 = 2*FLANK + len(REF)
BASES = {c: i for i, c in enumerate("ACGTN")}
class DbSnpWindowDataset(Dataset):
"""读取单个染色体子集 TSV + 参考 FASTA,产出替换后的序列窗口。
注意:本实现随机访问 TSV 行,要求先用 §6.3 产物(每染色体一文件)。"""
def __init__(self, tsv_gz, fasta_path, max_items=100_000):
import gzip
self.fasta = Fasta(fasta_path, sequence_always_upper=True)
self.items = []
with gzip.open(tsv_gz, "rt") as fh:
for line in fh:
if len(self.items) >= max_items:
break
chrom, pos, rs, ref, alt, vc = line.rstrip("\n").split("\t")[:6]
if len(ref) > 8 or any(a not in "ACGT" for a in alt):
continue # 简化:仅保留短等位、ACGT 字符
label = 0 if vc == "SNV" else (1 if vc == "INDEL" else 2)
self.items.append((chrom, int(pos), ref, alt, label))
def __len__(self):
return len(self.items)
def _encode(self, seq):
x = torch.zeros(len(seq), 5) # A/C/G/T/N
for j, c in enumerate(seq):
x[j, BASES.get(c, 4)] = 1.0
return x
def __getitem__(self, idx):
chrom, pos, ref, alt, label = self.items[idx]
start = pos - 1 - FLANK # VCF POS 为 1-based → 转 0-based
window = str(self.fasta[chrom][start:start + FLANK + len(ref) + FLANK])
mid = window[:FLANK] + alt + window[FLANK + len(ref):] # 注入替代等位
return self._encode(mid), label
def collate(batch):
xs, ys = zip(*batch)
lens = [x.shape[0] for x in xs]
X = torch.zeros(len(xs), max(lens), 5)
for i, (x, l) in enumerate(zip(xs, lens)):
X[i, :l] = x
return X, torch.tensor(ys)
# 染色体级划分(训练 chr1-20 / 验证 chr21,22,X —— 见 §5.2,防 LD 泄漏)
data_root = "/data/dbsnp/b157" # ← data_root 拼接基准
train_ds = DbSnpWindowDataset(f"{data_root}/train_chr1.tsv.gz",
f"{data_root}/GRCh38.fa", max_items=100_000)
val_ds = DbSnpWindowDataset(f"{data_root}/val_chr21.tsv.gz",
f"{data_root}/GRCh38.fa", max_items=20_000)
train_dl = DataLoader(train_ds, batch_size=256, shuffle=True,
collate_fn=collate, num_workers=4, pin_memory=True)
val_dl = DataLoader(val_ds, batch_size=512, shuffle=False,
collate_fn=collate, num_workers=2)
xb, yb = next(iter(train_dl)) # 形状检查:(B, L, 5), (B,)
print(xb.shape, yb.shape, yb.bincount())
</details>
§6.5 坑点清单
⚠️ 坑点 1:rsID merge/retire 导致版本间 ID 漂移(分类:预处理陷阱)
问题:dbSNP 通过"高位 rs 并入低位 rs"去重,退役 rs 号永不复用;跨 Build 引用旧注释/旧文献时,同一变异可能换 ID,硬编码 rsID 的特征表会静默失配。历史先例极端:Build 129→130 有约 20% 的 rs 被合并(NCBI FAQ)。
症状:旧注释表 JOIN 新 VCF 后大量 rsID 缺席;复现论文的统计数对不上;同一变异在两份文件里 ID 不同。
解决:
- 简单方法:退役 rs 在官网/Entrez 检索会自动重定向到现役 ID;Entrez 查询
mergedrs可批量获取合并对照。- 进阶方法:下载
RsMergeArch合并历史表,构建rsHigh → rsCurrent别名字典,在数据接入层做 ID 归一化:alias = {rs_high: rs_current for rs_high, rs_current in read_merge_arch()};注意其rsCurrent列语义有陷阱(链式合并后不等于现行 rs,见 NBK573445),需迭代解引用。- SOTA 方法:以 SPDI/Canonical Allele 作为分析主键(Variation Service API),rsID 降级为展示别名;“precious” rs(文献/临床已引用者)不参与退役,别名表须原样保留。
参考:NCBI Handbook dbSNP 章;NBK573473;SPDI 论文。
⚠️ 坑点 2:多次提交同一变异的重复与矛盾(分类:预处理陷阱)
问题:同一基因组位置会被多家实验室反复提交(ss 记录),侧翼序列长短/质量、等位描述不一,聚合前存在冗余与互相矛盾的记录;把 ss 层当训练样本会引入近重复泄漏与标签噪声。
症状:ss 计数是 rs 的 4 倍以上(Build 157:48.5 亿 ss vs 11.7 亿 rs);相邻行等位描述冲突;重复区 indel 的位置/长度表示五花八门。
解决:
- 简单方法:一律使用 RefSNP(rs)级产品(00-All VCF / JSON),不消费 ss 原始提交。
- 进阶方法:
bcftools norm -m -any -f REF.fa拆分多等位并左对齐,再按(CHROM,POS,REF,ALT)去重;重复区用bcftools norm --check-ref保证与参考一致。- SOTA 方法:经 SPDI 归一化后再去重——NCBI 的 VOCA 算法专门处理重复区"过精确"表示,Build 152 采用后一次性合并了 8,945,252 个变异进 4,493,144 个既有 RefSNP(Holmes et al. 2020)。
参考:NCBI Handbook;SPDI 论文。
⚠️ 坑点 3:RefSNP vs Submitted SNP 口径混淆(分类:标签理解)
问题:官方公告同时给出"11.7 亿 RefSNP"与"48.5 亿 ss"两个口径,二手材料常把 ss 数当成"变异数"传播;用错口径会让容量规划、去重评估与论文复现全部失真。
症状:本地 VCF 行数(≈rs 数)远小于"官方变异数"(实为 ss 口径),被误判为"下载不完整";对比表把 Build 156 的"33 亿"当成 rs 数。
解决:
- 简单方法:记住定义——ss=提交记录(可重复、可撤回),rs=去重参考聚类(AI 消费单位);引用时强制写明"rs/ss"。
- 进阶方法:以
release_notes.txt的 BUILD SUMMARY 核对下载完整性(Build 156 RS=1,130,597,309;Build 157 live RS=1,172,689,405,见 公告)。- SOTA 方法:在数据卡/模型卡固定记录"build 号 + 口径 + 快照日期"三元组(如
b157/rs/2025-03),禁止跨版本裸比较。
参考:Build 156 公告;Phan et al. 2025。
⚠️ 坑点 4:GRCh37/GRCh38 坐标系统不一致(分类:预处理陷阱)
问题:dbSNP 对每个 Build 同时发布 GRCh37(hg19)与 GRCh38(hg38)两套坐标产品,历史目录命名不直观(
human_9606_b150_GRCh37p13、human_9606_b151_GRCh38p7并存);与参考 FASTA/注释文件错配后,坐标系统性错位。
症状:liftOver 后大量变异丢失或落空;比对/注释在着丝粒与 alt contig 区异常;社区真实教训——解压 120 GB 后才发现拿错版本(社区记录)。
解决:
- 简单方法:下载前核对目录名(GRCh37↔hg19,GRCh38↔hg38),补丁号(p7/p13/p14)与参考 FASTA 保持一致。
- 进阶方法:管线配置层固化"参考 FASTA + dbSNP + 注释"三件套为同一 assembly 的访问号(如 GRCh38 = GCA/GCF_000001405.x);混用 build 会直接导致坐标失配与无效结果(管线文档)。
- SOTA 方法:以 SPDI 为存储主键、由 Variation Service 按需投影到目标 assembly,入库时双写 GRCh37/GRCh38 坐标并互写映射。
参考:VCF FAQ;NCBI Handbook。
⚠️ 坑点 5:VCF 文件巨大(>10GB)的下载与解析资源陷阱(分类:工程陷阱)
问题:00-All 主文件压缩 14-15 GB、解压约 70 GB;传统逐条解析器(PyVCF 等)遍历全库需数小时,把全表读进 pandas 会直接 OOM;Windows 图形工具解压大文件常闪退(社区实测)。
症状:notebook 超时/内存爆炸;磁盘写满;pd.read_csv卡死在第一步。
解决:
- 简单方法:只要子区域/常见变异→用随文件提供的
.tbi索引做 tabix 区域访问,或改用 common_all 类小产品;绝无必要为 1% 的过滤需求搬运全库。- 进阶方法:全程流式——
bcftools query | pigz导出压缩 TSV,Python 用cyvcf2/pysam迭代器 + 生成器逐条消费;解压用pigz -dc并行;磁盘预留 ≥200 GB SSD(§3.4)。- SOTA 方法:转为列式存储(DuckDB/Parquet)后再做特征工程;官方 snp2_json 教程脚本可复用;≥4 核 16 GB 内存起步,全库 ETL 建议 16 核 32 GB(§6.8)。
参考:ncbi/dbsnp tutorials;第三方管线资源表。
⚠️ 坑点 6:频次信息分散于 ALFA/gnomAD,需另行合并(分类:工程陷阱)
问题:VCF INFO 只携带 TOPMED、CAF 等少数频率字段;rs 页面展示的 20+ 来源频率(ALFA、gnomAD、ExAC、1000G、38KJPN 等,见 rs157397)并不会全部落进 VCF;完整人群频率分散在 ALFA(dbGaP 汇总)与 gnomAD 各自项目中,必须外部 join。
症状:拿 CAF 当"全球频率"造成人群分层失真;ALFA 与 gnomAD 同一 rs 的频率对不上(项目口径与版本不同)。
解决:
- 简单方法:用 VCF 内置 TOPMED/CAF 字段,并在数据卡写明来源与版本,不混用。
- 进阶方法:分别下载 ALFA/gnomAD VCF,各自
bcftools norm归一化后按(CHROM,POS,REF,ALT)join;多等位与合并 ID 先按坑点 1/2 处理,否则 join 率会莫名偏低。- SOTA 方法:用官方 JSON 产品的频率聚合视图或 Variation Service 单 rs 查询;建立"频率特征注册表"(来源 + 版本 + 人群 + 提取日期),特征上线前做分布快照。
参考:ALFA 文档;Frequency Project 教程。
⚠️ 坑点 7:非人类物种数据混入检索结果(分类:标签理解)
问题:dbSNP 收录任意物种(小鼠、大鼠等,官方明确"可接受任何物种提交");Entrez/API 检索不加物种过滤会混入非人类 rs;FTP
organisms/目录多物种并存,整目录递归下载会拖回数百 GB 无关数据(小鼠内部库即约 700 GB,NCBI Handbook)。
症状:人类研究特征表出现小鼠变异;统计"rs 总量"时把小鼠 ss 记入;磁盘被无关物种文件塞满。
解决:
- 简单方法:Entrez 检索在 Limits 面板锁定 organism(或查询串加
txid9606);FTP 只进human_9606*目录。- 进阶方法:API 返回体断言
tax_id == 9606再入库;JSON 分片按物种目录隔离下载。- SOTA 方法:ETL 按 tax_id 分区存储;数据卡明确"仅人类"或"多物种"口径,特征管道对物种字段做单测。
参考:NCBI FAQ(Limits 过滤);Sherry et al. 2001。
⚠️ 坑点 8:ClinVar 临床意义不在 dbSNP 内,易混淆(分类:标签理解/评估误用)
问题:dbSNP 是变异存档而非临床注释库——致病性分级在 ClinVar;rs 页面只显示"是否见于 ClinVar"。把"dbSNP 收录"误当"经临床审核"会高估可靠性;且两库同步存在延迟与已知缺陷:Build 157 处理时 ClinVar XML 解析错误曾致 16,292 个 rs 丢失临床标记(官方公告)。
症状:用 dbSNP 存在性做"良性"过滤,错杀低频致病位点;dbSNP-ClinVar join 后部分 rs 无临床标签且无解释。
解决:
- 简单方法:临床意义一律回 ClinVar 取数(VCV/RCV),dbSNP 仅保留 rsID 关联。
- 进阶方法:join 时把"临床状态缺失"保留为独立类别(信息性缺失),禁止二值化为"良性=不在 ClinVar"。
- SOTA 方法:快照同时记录 ClinVar 版本日期与 dbSNP build 号双时间戳;订阅
rs_unsupported_b157.txt类官方缺陷清单,在 ETL 中剔除或回填受影响 rs。
参考:Build 157 公告;ClinVar 文档。
§6.6 数据增强
| 策略 | 判定 | 说明 |
|---|---|---|
| 反向互补(双链等价变换) | ✅ 安全 | 窗口序列与等位整体取补,生物学等价 |
| 侧翼窗口随机截取抖动(±5 bp) | ✅ 安全 | 仅窗口任务;锚点碱基保持居中 |
| 等位字符级噪声(模拟测序错误) | ✅ 安全 | 仅自监督预训练;监督任务禁用 |
| 变异坐标随机平移 | ❌ 危险 | 破坏锚点语义与基因区上下文 |
| 退役 rs 与现役 rs 当独立样本 | ❌ 危险 | 近重复泄漏(坑点 1 别名归一后再去重) |
| 多等位拆分后复制同窗口多次加权 | ❌ 危险 | 等位间相关性被重复计入 |
§6.7 模型推荐
| 模型 | 年份 | 适配任务 | 要点 | 完整引用 |
|---|---|---|---|---|
| DeepSEA | 2015 | 变异→调控效应 | CNN 多任务,变异级特征鼻祖 | Zhou & Troyanskaya, 2015, Nature Methods. DOI 10.1038/nmeth.3547 |
| DanQ | 2016 | 变异→调控效应 | CNN+BiLSTM 杂交 | Quang & Xie, 2016, Nucleic Acids Research. DOI 10.1093/nar/gkw226 |
| SpliceAI | 2019 | 剪接影响预测 | 32 核 CNN,临床级剪接基线 | Jaganathan et al., 2019, Cell. DOI 10.1016/j.cell.2018.12.015 |
| Enformer | 2021 | 长程调控(200 kb 窗口) | Transformer,人体细胞轨道 | Avsec et al., 2021, Nature Methods. DOI 10.1038/s41592-021-01252-x |
| DNABERT | 2021 | 序列预训练表征 | k-mer BERT,变异分类微调底座 | Ji et al., 2021, Bioinformatics. DOI 10.1093/bioinformatics/btab083 |
§6.8 硬件需求
| 场景 | CPU | 内存 | 磁盘 | GPU |
|---|---|---|---|---|
| 子区域探索(tabix) | 2 核 | 8 GB | 60 GB(压缩态) | 无 |
| 全库流式 ETL(bcftools/cyvcf2) | 8-16 核 | 32 GB | 200 GB SSD | 无 |
| 窗口模型训练(§6.4 规模) | 8 核 | 32 GB | 200 GB SSD | 1×A100 40GB |
| 全基因组预训练(Enformer 级) | 32 核 | 128 GB | 500 GB SSD | 4×A100 40GB |
§6.9 评估指标代码
# 变异调用评估:以 dbSNP(known-sites 角色)为参照统计 Precision/Recall/F1。
# 注意:dbSNP 不是真值集,本指标仅衡量"与已知变异目录的一致率";
# 严格评估请用 NIST GIAB 真值集(§5.5)。
import pandas as pd
KEY = ["chrom", "pos", "ref", "alt"]
called = pd.read_csv("calls.tsv", sep="\t", names=KEY) # 你的调用结果
known = pd.read_csv("known.tsv", sep="\t", names=KEY) # dbSNP 归一化后子集
called, known = called.drop_duplicates(KEY), known.drop_duplicates(KEY)
tp = len(called.merge(known, on=KEY))
fp, fn = len(called) - tp, len(known) - tp
precision = tp / max(tp + fp, 1)
recall = tp / max(tp + fn, 1)
f1 = 2 * precision * recall / max(precision + recall, 1e-12)
print(f"P={precision:.4f} R={recall:.4f} F1={f1:.4f} (TP={tp}, FP={fp}, FN={fn})")
§6.10 MLOps 笔记
- 版本钉死:数据版本 =
build + assembly + 文件校验值三元组,写入实验跟踪(MLflow/W&B)与数据卡。 - 别名表随行:RsMergeArch 别名字典作为特征仓库的一部分版本化,与主数据同步更新。
- 漂移监控:服务期监控"rsID 命中率"(新请求变异在库内的匹配率)与频率特征分布 PSI;新 Build 发布时触发重评估。
- 快照纪律:dbSNP、ClinVar、gnomAD 三源 join 的表必须共享同一时间快照,禁止滚动混拼。
- 回滚预案:保留上一个 Build 的归一化产物与索引,新 Build 出现解析异常(如 b157 的 16,292 rs 事件)时可分钟级回退。
- 成本基线:全库 ETL 一次约数十 CPU 小时(16 核实测口径的量级参考),把归一化产物缓存为共享资产供多个模型复用,避免各任务重复搬运 70 GB 原始文件。
§7 质量评估与局限性
§7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|
| 人群提交偏倚 | 最大频率面板以欧洲裔为主(gnomAD v2 约 54% 为非芬兰欧洲裔,Karczewski et al. 2020) | 高 | 分人群取频率;ALFA/1000G 补充少数人群层 |
| 技术偏倚 | 芯片基因分型密集覆盖常见 SNV,罕见 indel/复杂区欠代表 | 中 | 按 VC 类别分层建模;长读数据补稀疏区 |
| 无人工审核偏倚 | 提交聚合无逐条质检,提交者错误会进入存档 | 高 | 关键任务回 ClinVar/文献核验;用 VC/SAO 过滤 |
| 存档口径偏倚 | 无 MAF 门槛、不假设中性,"polymorphism"名称有误导(含临床突变) | 中 | 文档化口径;区分 polymorphism 与 variant |
| 历史伪影 | 早期短侧翼/低质量映射造成合并 churn(b129→130 约 20%) | 中 | 钉死 build;RsMergeArch 别名归一 |
| 物种混杂 | 多物种同库,检索不加过滤会污染 | 低 | tax_id 过滤(坑点 7) |
§7.2 标注质量
dbSNP 的"标注质量"应理解为聚合质量:映射正确性(对当前 assembly)、聚类完备性(同位变异是否合并干净)、频率准确性(来源声明与口径一致)。NCBI 通过 SPDI/VOCA 归一化与重映射持续改进,Build 152 一次即合并 890 万冗余变异;但不存在逐条人工审核,个体记录的等位描述错误可能长期存留直至被合并或撤回。临床级质量判断请永远以 ClinVar 的提交者声明与专家分级为准(坑点 8)。
入库前推荐的质量抽检清单:
- 抽 100 个 rs 与官网 RefSNP 页面逐字段比对(坐标/等位/频率/VC)。
- 校验下载行数与 release_notes.txt 的 BUILD SUMMARY 一致。
- 抽查 20 个多等位位点,确认
bcftools norm拆分后与页面等位集合一致。 - 随机抽 10 个退役 rs(RsMergeArch),确认别名解析到正确现役 ID。
- 对涉及临床的位点子集,与 ClinVar 快照比对覆盖与缺失(坑点 8)。
§7.3 泛化性
| 场景 | 失效风险 | 证据与机理 |
|---|---|---|
| 跨人群频率外推 | 高 | 欧洲裔主导的面板对非洲裔等群体频率置信区间宽;PRS 跨人群性能显著衰减(Martin et al. 2019, Nature Genetics) |
| 跨 assembly 迁移 | 高 | 坐标与合并状态随 assembly 变化(坑点 4) |
| 跨物种 | 高(不适用即失效) | 物种命名空间独立,rs 号不跨物种通用 |
| 临床决策直接消费 | 高 | dbSNP 无致病性标签;需 ClinVar + 专家审核闭环 |
| 新 Build 平滑升级 | 中 | 合并 churn 使 rsID 覆盖率瞬时下降(坑点 1) |
§7.4 伦理
dbSNP 公开产品以聚合等位频率与变异描述为主,不含个人身份信息;个体级基因型-表型数据在 dbGaP 体系内受控访问,dbSNP 仅消费其聚合统计(ALFA)。作为美国联邦政府作品,数据可自由使用,但 NCBI 标准免责声明不担保内容准确性。研究涉及人类受试者来源频率数据时,仍应在论文中注明各来源项目的知情同意与数据使用条款。
两点延伸提示:其一,聚合频率理论上存在"小格子"再识别风险(极小人群 + 罕见等位组合),ALFA 等项目通过最小计数门槛与人群聚合控制该风险,消费方不应自行反推个体基因型;其二,变异本身可能携带高度敏感的含义(亨廷顿病相关位点、药瘾倾向相关位点等),在下游系统中的访问控制与日志审计应按敏感数据处理,而非因"公开数据"而豁免。
§7.5 公平性
核心公平性问题与 gnomAD/TOPMed 同源:频率参照系的人群不均衡。gnomAD v2 中约 54% 样本为非芬兰欧洲裔(Karczewski et al. 2020),以单一"全球频率"特征训练的模型在非欧洲人群中系统性失真;PRS 研究已量化这种迁移衰减(Martin et al. 2019)。缓解:按人群分列频率特征、对少数人群过采样、报告分层性能;ALFA 的 12 人群聚合与 1000 Genomes 的 26 人群设计是均衡化补救的起点,但小样本人群体积方差仍大。
§7.6 数据漂移
漂移源有三:Build 漂移——每 1-2 年一次 Build,rs 合并/退役造成 ID 层漂移;频率漂移——ALFA R2→R3、gnomAD 版本推进使同一 rs 的频率值更新;关联漂移——ClinVar 联动状态更新(含 b157 的 16,292 rs 缺陷事件)。对策:只消费 Build 快照、记录双时间戳、监控 rsID 命中率与频率 PSI(§6.10)。
漂移监控指标建议:
| 指标 | 定义 | 告警阈值(建议) |
|---|---|---|
| rsID 命中率 | 线上请求变异在库内匹配的比例 | 环比下降 >2% |
| 别名归一率 | 请求中需经 RsMergeArch 解析的比例 | 环比上升 >1% |
| 频率 PSI | 频率特征群体稳定指数(分人群) | PSI >0.2 |
| VC 改类率 | 相邻 Build 间变异类别变更比例 | >0.5% |
| 临床标记缺失率 | 与 ClinVar 快照 join 失败比例 | >0.1%(防 b157 类缺陷) |
§7.7 DAIMS 24 项评估
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式 | ✅ | VCF 一行一变异,TSV/JSON 双产品,AI 友好 |
| 2 | 唯一标识 | ⚠️ | rsID 体系完备,但跨 Build 合并/退役造成漂移(坑点 1) |
| 3 | 特殊字符 | ⚠️ | 等位串含逗号多等位与符号表示,解析需白名单校验 |
| 4 | 重复行 | ⚠️ | 多等位拆分与 ss 冗余需 norm+去重(坑点 2) |
| 5 | 缺失编码 | ✅ | VCF . 约定清晰且全文一致 |
| 6 | 标签标识 | ⚠️ | 仅有变异类别(VC);无疾病/功能监督标签 |
| 7 | 罕见类分组 | ⚠️ | MNV/微卫星等类别极稀疏,需分层采样 |
| 8 | 偏倚评估 | ⚠️ | 人群/技术偏倚可识别但官方未提供分层统计 |
| 9 | 数据字典 | ✅ | JSON OpenAPI 规范 + VCF FAQ + 数据字典齐备 |
| 10 | 信息性缺失解释 | ⚠️ | 频率字段缺省含义需读 FAQ 自行推断(§4.5) |
| 11 | 设备记录 | ❌ | VCF 产品不含测序平台/芯片元数据 |
| 12 | 共线性 | ✅ | 同一 Build 内坐标自洽(跨 assembly 另论,坑点 4) |
| 13 | 编码映射 | ✅ | SPDI/HGVS/VCF 三表示,官方服务互转 |
| 14 | 时间戳处理 | ✅ | Build 号、dbSNPBuildID、发布日期记录完整 |
| 15 | 划分建议 | ⚠️ | 官方无划分;社区惯例需自行实现(§5.2) |
| 16 | 泄漏讨论 | ⚠️ | 面板重叠/LD 泄漏需自行防御(§5.3) |
| 17 | 标签分布 | ✅ | BUILD SUMMARY 提供类别与总数统计 |
| 18 | 测量偏倚 | ⚠️ | 平台异构无元数据可校正(§3.9) |
| 19 | 外部验证建议 | ✅ | GIAB/1000G/独立队列路径清晰(§5.5) |
| 20 | 版本记录 | ✅ | Build 体系 + release notes + 合并历史全链路 |
| 21 | 预处理脚本 | ⚠️ | 官方教程脚本有,但非一键 pipeline |
| 22 | 合规要求 | ✅ | 公共领域、免注册、无 DUA |
| 23 | 多模态对齐 | ⚠️ | 单一模态(序列变异);跨库关联需自建 join |
| 24 | 去标识化 | ✅ | 公开层为聚合数据,无个人标识 |
DAIMS 评分:17.0 / 24
评分解读:良好偏上——版本管理、数据字典、编码映射与合规性是教科书级(基础设施类数据集的强项);失分集中在"非为机器学习而生"的结构性短板:无监督标签、无官方划分、无平台元数据、跨版本 ID 漂移需要工程手段补齐。
分维度看:数据契约维度(字段 1/5/9/12/13/14/17/20/22/24)接近满分,dbSNP 在"怎么读数据、怎么追版本"上比多数医疗数据集成熟;建模就绪维度(字段 6/7/15/16/18/21)是主要失分带,因为它不是为某个任务预制的训练集;过程质量维度(字段 8/10/11/23)依赖外部补全——偏倚分层、平台元数据、多模态对齐都需要消费方自建。
对你意味着什么:把 dbSNP 当作特征与主键层而非标注层接入——用它的 rsID 与频率做特征工程,标签从 ClinVar/文献自建;开箱即用价值高(下载即可解析),但上线前必须完成三件事:RsMergeArch 别名归一、按染色体/基因的分组划分、频率来源注册表。若你的任务需要临床标签或平台校正,dbSNP 单独不够,需组合 ClinVar 与 GIAB。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| Genome in a Bottle(HG001/HG002) | NIST | 小变异调用外部评估 | 与真值集一致的 P/R/F1 | 不适用(dbSNP 为参照而非真值) | GIAB 真值集独立于 dbSNP 构建,是 calling 严格评估的金标准(Zook et al. 2014, Nature Biotechnology) |
| GATK 最佳实践(BQSR/VQSR) | Broad Institute | 以 dbSNP 为 known-sites 的重打分 | calling 精度提升(论文报告量级) | 不适用 | dbSNP 常见位点作为先验是变异重打分的标准输入(DePristo et al. 2011, Genome Research) |
| PRS 跨人群迁移 | 多机构 | 欧洲裔训练的PRS在非欧人群验证 | 解释力显著衰减 | 相对欧洲裔内部大幅下降 | 频率/LD 参照系的人群构成直接决定迁移性能(Martin et al. 2019, Nature Genetics) |
§8 基准性能与生态
§8.1 工具生态排行
dbSNP 是基础设施而非竞赛任务,无"刷榜"排行榜。下表以"以 dbSNP 为数据源的主流工具"构成生态排行(角色与成熟度排序,各工具性能数值不可直接互比——任务、区域与评估集不同):
| 排名 | 工具 | 角色/性能 | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| 1 | Ensembl VEP | 变异注释事实标准,内置 dbSNP 缓存 | 2016 | 基因组投影 + 多源注释合并 | McLaren et al., 2016, Genome Biology. DOI 10.1186/s13059-016-0974-4 | GitHub |
| 2 | GATK | 变异调用 + BQSR/VQSR(dbSNP=known-sites) | 2010/2018 | HMM 局部重组装 + 机器学习重打分 | McKenna et al., 2010, Genome Research. DOI 10.1101/gr.107524.110 | GitHub |
| 3 | DeepVariant | 调用精度对标/超越 GATK 的深度学习路线 | 2018 | CNN 堆叠图像化比对信号 | Poplin et al., 2018, Nature Biotechnology. DOI 10.1038/nbt.4237 | GitHub |
| 4 | SnpEff | 轻量注释,dbSNP/SnpSift 联动 | 2012 | 基因区间索引 + 效应分类 | Cingolani et al., 2012, Fly. DOI 10.4161/fly.19695 | GitHub |
| 5 | ANNOVAR | 表格化注释经典款 | 2010 | 基于区间的数据库交叉 | Wang et al., 2010, Nucleic Acids Research. DOI 10.1093/nar/gkq603 | 官网 |
| 6 | bcftools/HTSlib | VCF 操作与流式查询的底座 | 2021 | bgzip+tabix 索引体系 | Danecek et al., 2021, GigaScience. DOI 10.1093/gigascience/giab008 | GitHub |
§8.2 SOTA 总结与选型建议
生产管线事实组合为 GATK/DeepVariant(调用)+ bcftools(流式操作)+ VEP/SnpEff(注释),dbSNP 在其中扮演 known-sites 与注释源双重角色。研究型任务(变异效应深度学习)建议 DeepSEA/DanQ/Enformer 起步(§6.7),把 dbSNP 频率与 rsID 作辅助特征。选型原则:凡需要临床结论,链条必须延伸到 ClinVar;凡跨版本比较,必须先过别名归一。
按任务的选型速查:
| 你的任务 | 推荐组合 | dbSNP 的输入形态 |
|---|---|---|
| 种系变异调用与质控 | GATK 或 DeepVariant + bcftools | known-sites VCF(BQSR/VQSR 先验) |
| 变异致病性排序 | VEP/SnpEff + ClinVar + 自建模型 | rsID 主键 + 频率特征 + GENEINFO |
| 调控效应深度学习 | DeepSEA/DanQ/Enformer 底座 | 变异位置监督信号(§6.4 窗口语料) |
| 人群遗传学分析 | 1000G/gnomAD + ALFA | 频率底表与人群分层参照 |
| 药物基因组学服务 | CPIC 指南 + PharmGKB | rsID 坐标锚定(rs4244285 等) |
§8.3 评测协议
- 调用一致率协议:固定 build + assembly → 归一化(
bcftools norm)→ 区域限定(排除 alt contig)→ 与 known-sites 求交集算 P/R/F1(§6.9);严格版本用 GIAB 真值集。 - 注释一致性协议:对同一独立位点集,比较模型输出与 VEP/SnpEff 官方缓存的一致率,分歧位点人工抽检。
- 频率复现协议:抽样 rs 对照 rs 页面 ALFA/TOPMed 数值(如 rs157397),校验 join 管线无坐标/等位错位。
三条协议共通的注意点:所有比较前先过 bcftools norm 归一化(否则多等位表示差异会制造假分歧);区域限定排除 alt contig 与未放置序列(防止坐标系统不同源的比较);结果表中始终附 build 号与快照日期,防止数月后不可复现。
§8.4 相关数据集
| 数据集 | 关系 | 组合用法 |
|---|---|---|
| ClinVar | 临床意义层 | rsID join 取致病性标签(坑点 8) |
| gnomAD | 高深度频率层 | 亚人群频率特征合并(坑点 6) |
| 1000 Genomes | 单体型与人群层 | LD 区块划分、人群分层评估 |
| NCBI ALFA | dbGaP 聚合频率 | 12 人群均衡频率补充 |
| GWAS Catalog | 关联统计层 | 风险位点回查与特征标注 |
| dbGaP | 个体基因型-表型(受控) | 聚合频率上游;个体分析走受控申请 |
| dbVar/DGV | 结构变异层 | dbSNP 只收短变异,SV 另取 |
| Ensembl Variation | 欧系整合视图 | 交叉校验注释一致性 |
| PharmGKB/CPIC | 药物基因组学层 | 以 rsID 锚定用药决策位点 |
| COSMIC | 肿瘤体细胞层 | SAO=体细胞位点的深挖参照 |
§8.5 关键论文 Top 10
- Sherry ST, Ward MH, Kholodov M, Baker J, Phan L, Smigielski EM, Sirotkin K. dbSNP: the NCBI database of genetic variation. Nucleic Acids Research, 2001, 29(1):308-311. DOI 10.1093/nar/29.1.308 —— 奠基论文,定义 rs/ss 双层架构与收录口径。
- Phan L, Zhang H, Wang Q, Villamarin R, Hefferon T, Ramanathan A, Kattman B. The evolution of dbSNP: 25 years of impact in genomic research. Nucleic Acids Research, 2025, 53(D1):D925-D931. DOI 10.1093/nar/gkae977 —— 25 周年官方综述,含里程碑时间轴与规模口径。
- Holmes JB, Moyer E, Phan L, Maglott D, Kattman B. SPDI: data model for variants and applications at NCBI. Bioinformatics, 2020, 36(6):1902-1907. DOI 10.1093/bioinformatics/btz856 —— 新一代归一化与聚合机制(VOCA)的技术依据。
- Smigielski EM, Sirotkin K, Ward M, Sherry ST. dbSNP: a database of single nucleotide polymorphisms. Nucleic Acids Research, 2000, 28(1):352-355. DOI 10.1093/nar/28.1.352 —— 建库早期规格与收录范围。
- Sherry ST, Ward MH, Sirotkin K. dbSNP—database for single nucleotide polymorphisms and other classes of minor genetic variation. Genome Research, 1999, 9(8):677-679. DOI 10.1101/gr.9.8.677 —— 建库动议与设计动机。
- Sherry ST, Ward M, Sirotkin K. Use of molecular variation in the NCBI dbSNP database. Human Mutation, 2000, 15(1):68-75. DOI 10.1002/(SICI)1098-1004(200001)15:1<68::AID-HUMU10>3.0.CO;2-C —— 变异分类体系早期阐述。
- Bhagwat M. Searching NCBI’s dbSNP database. Current Protocols in Bioinformatics, 2010, Chapter 1:Unit 1.19. DOI 10.1002/0471250953.bi0119s31 —— 官方检索方法实操手册(文本/序列两路)。
- Sayers EW, et al. Database resources of the National Center for Biotechnology Information. Nucleic Acids Research, 2024, 52(D1). DOI 10.1093/nar/gkad1044 —— dbSNP/ALFA 在 NCBI 全景中的年度权威描述。
- Auton A, et al. A global reference for human genetic variation. Nature, 2015, 526:68-74. DOI 10.1038/nature15393 —— 1000 Genomes 三期:dbSNP 最重要的现代提交来源之一与人群变异全景。
- Karczewski KJ, et al. The mutational constraint spectrum quantified from variation in 141,456 humans. Nature, 2020, 581:434-443. DOI 10.1038/s41586-020-2308-7 —— gnomAD:dbSNP 频率生态中深度最高的人群面板。
§8.6 社区活跃度
dbSNP 的"社区"是整个基因组学界:原始论文 Google Scholar 被引 9,149 次、Dimensions 口径 6,978 次(其中 9% 来自近两年,热度不减;均截至 2026-09 查询)。被引轨迹与基因组学世代共振——HapMap 时代(2005-2009)与大型聚合队列时代(2015-2020)是两个引用高峰段,SPDI 重设计(2019-2020)后工程类引用持续增长。官方触点持续活跃:dbsnp-announce 邮件列表发布 Build 公告(最近一次 2025-03);GitHub 仓库累计 190 commits(最后提交 2023-05,主要承载规范与教程而非持续开发);ASHG 等会议常年设 NCBI 展位与教程。用户支持走 snp-admin@ncbi.nlm.nih.gov 与 FAQ 知识库。
§8.7 生态快照
| 资源 | 类型 | 链接 | 活跃度(截至 2026-09) | 推荐理由 |
|---|---|---|---|---|
| ncbi/dbsnp | 官方规范/教程仓库 | https://github.com/ncbi/dbsnp | 190 commits;最后提交 2023-05 | JSON 规范与 Jupyter 教程的唯一官方源 |
| dbsnp-announce | 邮件列表 | https://www.ncbi.nlm.nih.gov/mailman/listinfo/dbsnp-announce | Build 157 公告 2025-03 | 版本追踪第一来源 |
| Variation Service | 在线 API | https://api.ncbi.nlm.nih.gov/variation/v0/ | 常驻服务 | SPDI 归一化与跨 assembly 投影 |
| NCBI ALFA | 频率子项目 | https://www.ncbi.nlm.nih.gov/snp/docs/gsr/alfa/ | Release 3(2023) | 12 大人群聚合频率 |
| GATK Resource Bundle | 云端镜像 | gs://broad-references/hg38/dbsnp/ | 常驻 GCS 公共桶 | 免 FTP 的云端取数捷径 |
| bcftools/HTSlib | 工具链 | https://github.com/samtools/bcftools | 持续维护 | 大文件流式访问的标准解 |
| VEP 官方 dbSNP 缓存 | 注释资源 | https://ftp.ensembl.org/pub/current_variation/ | 随 Ensembl 版本滚动 | 管线离线注释的首选分发形态 |
| dbSNP 教程 Jupyter | 官方教程 | https://github.com/ncbi/dbsnp/tree/master/tutorials | 最后提交 2023-05 | JSON/VCF 解析与 Variation Service 入门 |
§9 相关资源与引用
§9.1 官方资源
- dbSNP 主页——检索入口与 RefSNP 页面(如 rs268)。
- FTP 下载(latest_release)——VCF/JSON/参考序列/发布说明。
- 存档 FTP(历史 Build)——按 build 号回溯(如 b151/b155)。
- VCF FAQ——VCF 字段权威解释。
- RefSNP About——rs/ss 机制与合并规则。
- NCBI Handbook dbSNP 章——建库架构与本地化部署。
- FAQ:Data Changes between Builds 与 Merging RefSNP——合并/退役细节。
- ALFA 项目页——人群频率口径。
- GitHub: ncbi/dbsnp——JSON 规范(specs/)与 Jupyter 教程(tutorials/)。
- Variation Service API——SPDI 归一化服务。
- Variation Viewer——基因组浏览器视图,适合人工核对位点。
- dbSNP 新闻 RSS——Build 发布与公告的机器可读流。
- rs_unsupported_b157.txt——Build 157 已知缺陷 rs 清单(坑点 8 配套)。
§9.2 BibTeX 引用
@article{sherry2001dbsnp,
author = {Sherry, Stephen T. and Ward, M.-H. and Kholodov, M. and Baker, J. and Phan, L. and Smigielski, E. M. and Sirotkin, K.},
title = {dbSNP: the {NCBI} database of genetic variation},
journal = {Nucleic Acids Research},
year = {2001},
volume = {29},
number = {1},
pages = {308--311},
doi = {10.1093/nar/29.1.308},
pmid = {11125122}
}
@article{phan2025evolution,
author = {Phan, Lon and Zhang, Hua and Wang, Qiang and Villamarin, Ricardo and Hefferon, Tim and Ramanathan, Aravinthan and Kattman, Brandi},
title = {The evolution of {dbSNP}: 25 years of impact in genomic research},
journal = {Nucleic Acids Research},
year = {2025},
volume = {53},
number = {D1},
pages = {D925--D931},
doi = {10.1093/nar/gkae977},
pmid = {39530225}
}
@article{holmes2020spdi,
author = {Holmes, J. Bradley and Moyer, Eric and Phan, Lon and Maglott, Donna and Kattman, Brandi},
title = {{SPDI}: data model for variants and applications at {NCBI}},
journal = {Bioinformatics},
year = {2020},
volume = {36},
number = {6},
pages = {1902--1907},
doi = {10.1093/bioinformatics/btz856},
pmid = {31738401}
}
@article{smigielski2000dbsnp,
author = {Smigielski, Elizabeth M. and Sirotkin, Karl and Ward, Minghong and Sherry, Stephen T.},
title = {dbSNP: a database of single nucleotide polymorphisms},
journal = {Nucleic Acids Research},
year = {2000},
volume = {28},
number = {1},
pages = {352--355},
doi = {10.1093/nar/28.1.352}
}
§9.3 引用指南
- 引用数据本体:Sherry et al. 2001(奠基)+ Phan et al. 2025(现行规模与机制)。
- 引用归一化方法(若使用 SPDI/Variation Service):Holmes et al. 2020。
- 数据版本表述示例:“dbSNP Build 156(2023-01,rs=1,130,597,309;ss>33 亿,Sherry et al. 2001;Phan et al. 2025)”。
- 引用频率子项目时区分来源:ALFA(NCBI)、TOPMed、gnomAD(Karczewski et al. 2020)各自独立成文。
§10 AI 使用声明卡
§10.1 AI 模型列表
| 模型 | 用途 | 版本/提供方 |
|---|---|---|
| CodeBuddy(fast-model) | 初稿撰写、代码示例、结构化整理 | CodeBuddy Code CLI |
| 人工编辑部 | 事实核验、医学与工程审核 | 千方病案医学编辑部 |
§10.2 AI 参与范围
AI 完成资料检索汇总、初稿写作、代码示例编写与表格结构化;所有规模数字、日期、许可证与引用信息经人工对照官方公告与论文原文核验;三个免责声明与审核结论由编辑部终审。
人工核验覆盖的具体断言包括:
- 规模数字(Build 154/155/156/157 的 rs 与 ss 总数)逐项对照官方公告原文。
- rs 合并/退役规则对照 NCBI Handbook 与 FAQ 原文表述(含 precious 例外)。
- 文件大小与下载路径对照 FTP 目录结构与第三方管线实测记录。
- 原始论文书目信息(作者、卷期页码、DOI/PMID)对照出版商页面。
- 引用计数(Google Scholar/Dimensions)标注查询日期且注明口径差异。
- 代码示例经工程评审确认与官方教程的 API 用法一致。
§10.3 输入来源列表
- Sherry ST, et al. dbSNP: the NCBI database of genetic variation. Nucleic Acids Research, 2001, 29(1):308-311. DOI 10.1093/nar/29.1.308
- Phan L, et al. The evolution of dbSNP: 25 years of impact in genomic research. Nucleic Acids Research, 2025, 53(D1):D925-D931. DOI 10.1093/nar/gkae977
- Holmes JB, et al. SPDI: data model for variants and applications at NCBI. Bioinformatics, 2020, 36(6):1902-1907. DOI 10.1093/bioinformatics/btz856
- Smigielski EM, et al. dbSNP: a database of single nucleotide polymorphisms. Nucleic Acids Research, 2000, 28(1):352-355. DOI 10.1093/nar/28.1.352
- Sherry ST, Ward MH, Sirotkin K. dbSNP—database for single nucleotide polymorphisms and other classes of minor genetic variation. Genome Research, 1999, 9(8):677-679. DOI 10.1101/gr.9.8.677
- Sherry ST, Ward M, Sirotkin K. Use of molecular variation in the NCBI dbSNP database. Human Mutation, 2000, 15(1):68-75. PMID 10612825
- Bhagwat M. Searching NCBI’s dbSNP database. Current Protocols in Bioinformatics, 2010, Chapter 1:Unit 1.19. PMID 21154707
- Sayers EW, et al. Database resources of the National Center for Biotechnology Information. Nucleic Acids Research, 2024, 52(D1). DOI 10.1093/nar/gkad1044
- NCBI. dbSNP Build 156 Release(官方公告,2023-01-30). https://www.ncbi.nlm.nih.gov/mailman/pipermail/dbsnp-announce/2023q1/000234.html
- NCBI. dbSNP Build 157 Release(NCBI Insights,2025-03-18). https://ncbiinsights.ncbi.nlm.nih.gov/2025/03/18/dbsnp-release-157
- NCBI Handbook. The Single Nucleotide Polymorphism Database (dbSNP) of Nucleotide Sequence Variation. https://www.ncbi.nlm.nih.gov/books/n/handbook/ch5/
- NCBI FAQ. Data Changes that Occur Between Builds / Merging RefSNP Numbers. https://www.ncbi.nlm.nih.gov/books/NBK44467/ ;https://ncbi.nlm.nih.gov/books/NBK573473/
- NCBI. VCF FAQ(snp2_human_variation_vcf). https://www.ncbi.nlm.nih.gov/variation/docs/snp2_human_variation_vcf/
- Auton A, et al. A global reference for human genetic variation. Nature, 2015, 526:68-74. DOI 10.1038/nature15393
- Karczewski KJ, et al. The mutational constraint spectrum quantified from variation in 141,456 humans. Nature, 2020, 581:434-443. DOI 10.1038/s41586-020-2308-7
- Martin AR, et al. Clinical use of current polygenic risk scores may exacerbate health disparities. Nature Genetics, 2019, 51:584-591. DOI 10.1038/s41588-019-0379-x
- GitHub: ncbi/dbsnp(specs/tutorials/README,190 commits,截至 2026-09 查询). https://github.com/ncbi/dbsnp
§10.4 人工校验表
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| frontmatter 与 INFOBOX 数字口径(rs/ss、大小、许可) | 千方病案医学编辑部 | 对照 Build 156/157 官方公告逐项核验 | ✅ 已通过 |
| §1 概览与版本时间轴 | 千方病案医学编辑部 | 与 dbSNP 新闻 RSS/邮件列表交叉比对 | ✅ 已验证 |
| §2 医学背景与 ICD-11/SNOMED 映射 | 千方病案医学编辑部 | 医学术语与编码人工复核 | ✅ 已通过 |
| §3-§4 规格与字段字典 | 千方病案医学编辑部 | 对照官方 FAQ/Handbook/VCF FAQ 核验 | ✅ 已通过 |
| §6 代码示例与 8 个坑点 | 千方病案医学编辑部 | 工程侧评审 + 官方教程对照 | ✅ 已验证 |
| §7 DAIMS 评分与偏倚分析 | 千方病案医学编辑部 | 逐项状态复核与评分复算 | ✅ 已通过 |
| §8 排行榜与引用数表述 | 千方病案医学编辑部 | 与原文及 Scholar/Dimensions 快照交叉比对 | ✅ 已验证 |
| §9 BibTeX 与官方资源链接 | 千方病案医学编辑部 | 逐条链接可达性与书目核对 | ✅ 已验证 |
| §10 声明卡与输入来源清单 | 千方病案医学编辑部 | 来源清单与正文引用一致性检查 | ✅ 已通过 |
| §C JSON-LD @graph | 千方病案医学编辑部 | Schema 字段逐项校验 | ✅ 已通过 |
§10.5 AI 生成章节标注
以下章节由 AI 生成初稿并经人工审核:§1.0 30 秒速览、§3.0 版本抉择矩阵、§6.0-§6.4 代码示例、§6.5 八个坑点、§6.9 评估指标代码、§7.5 公平性分析、§7.7 DAIMS 评估表与评分、§8.7 生态快照、§C JSON-LD。
§10.6 最后人工审核
最后人工审核日期:2026-09-05(与 §0 审核日期一致)
页面状态:published(全部内容已完成审核并发布)
