BioF3 组学数据分析
05 变异过滤与质量评估
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 时,按这个顺序快速判断质量:
- 总变异数:WGS ~4-5M,WES ~50-100k,Panel <1000。数量异常意味着流水线有问题
- Ti/Tv:上面已说,偏离正常意味着假阳性
- dbSNP 重叠率:> 95% 健康,< 90% 有问题
- Het/Hom:偏离 1.5-2.0 可能样本污染或近交
- Singleton 比例:单次出现的变异比例。WGS 应 < 5%,过高说明假阳性
- 覆盖度均匀性:变异 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% 说明数据质量有问题。
下一步
接着深入:
- 06 群体遗传:PCA / 祖源 / LD — 过滤后的 VCF 进入群体分析
- 07 GWAS 入门 — GWAS 项目的过滤更严格(HWE、call rate 等)
横向延伸:
- 03 VCF 注释与可视化 — 过滤前后做注释对比
- GATK 硬过滤指南 — 官方阈值的来源和细节