跳到主要内容

05 变异过滤与质量评估

原始 VCF 里有大量假阳性。过滤策略决定了最终结果的可靠性。

VQSR vs 硬过滤

方法适用原理
VQSR样本量 > 30、WGS用已知变异集训练机器学习模型
硬过滤样本量少、WES、Panel手动设阈值(QD、FS、MQ 等)

硬过滤典型参数

# SNP 过滤
gatk VariantFiltration -R ref.fa -V raw.vcf.gz \
--filter-expression "QD < 2.0" --filter-name "LowQD" \
--filter-expression "FS > 60.0" --filter-name "HighFS" \
--filter-expression "MQ < 40.0" --filter-name "LowMQ" \
--filter-expression "MQRankSum < -12.5" --filter-name "LowMQRS" \
--filter-expression "ReadPosRankSum < -8.0" --filter-name "LowRPRS" \
-O filtered_snps.vcf.gz

# Indel 过滤
gatk VariantFiltration -R ref.fa -V raw.vcf.gz \
--filter-expression "QD < 2.0" --filter-name "LowQD" \
--filter-expression "FS > 200.0" --filter-name "HighFS" \
--filter-expression "ReadPosRankSum < -20.0" --filter-name "LowRPRS" \
-O filtered_indels.vcf.gz

质量评估指标

  • Ti/Tv ratio:WGS ~2.0-2.1,WES ~2.8-3.0。偏低 = 假阳性多
  • Het/Hom ratio:人类 WGS ~1.5-2.0
  • 已知变异比例:和 dbSNP 的重叠率应该 > 95%(WGS)
  • Mendelian error rate:有 trio 数据时,子代不符合孟德尔遗传的比例应 < 1%

一份 VCF 的诊断 checklist

拿到一份新 VCF 时,按这个顺序快速判断质量:

  1. 总变异数:WGS ~4-5M,WES ~50-100k,Panel <1000。数量异常意味着流水线有问题
  2. Ti/Tv:上面已说,偏离正常意味着假阳性
  3. dbSNP 重叠率:> 95% 健康,< 90% 有问题
  4. Het/Hom:偏离 1.5-2.0 可能样本污染或近交
  5. Singleton 比例:单次出现的变异比例。WGS 应 < 5%,过高说明假阳性
  6. 覆盖度均匀性:变异 DP 分布的 CV 应该 < 0.5

这 6 个 5 分钟能查完,比单纯看 padj 信息量大得多。

常见坑

坑 1:VQSR 对小样本量直接套

VQSR 需要 30+ 样本才能学出可靠模型。< 30 样本必须用硬过滤,硬上 VQSR 结果不可信。

坑 2:硬过滤参数照搬 GATK 推荐值

GATK 推荐值是 WGS 的经验值,对 WES、Panel、低深度数据不一定合适。先看自己数据 QD / FS / MQ 的分布,再选阈值。

坑 3:过滤了 PASS 之外的所有

GATK Best Practices 把过滤标记写进 FILTER 列(PASS 或具体过滤名),不是删除bcftools view -f PASS 才能拿到只有 PASS 的子集。直接读完整 VCF 后忘了筛 FILTER 列是常见错误。

坑 4:用 GQ 阈值过滤 INDEL

GQ(genotype quality)对 SNP 比较合理,INDEL 的 GQ 经常很低(call indel 本身难),用 GQ ≥ 20 会丢一半真 INDEL。INDEL 用 QD + FS 过滤更合适。

坑 5:trio 项目不查 Mendelian error

有父母和子代的 trio 数据,子代不符合孟德尔遗传的位点几乎都是假阳性vcftools --mendel 可以查这个错误率,超过 1% 说明数据质量有问题。

下一步

接着深入

横向延伸

参考资源

AI 组学实践

让 AI 带我实战这一篇

AI 会读这篇文章后给你 3-5 步学习计划, 逐步带你学完,最后出 1-3 道题验证你掌握得怎么样。 登录后 AI 才能记住你的进度。

静态文件

离线资料下载

手册 HTML / PDF 已在后台预生成,点击后直接下载网站静态资源。