You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VCF文件样本SNV基因型修正问题:bcftools filter未按预期生效

解决bcftools批量修正不符合QC标准的样本基因型问题

问题根源

你之前用的bcftools filter -i是位点级过滤,默认仅保留所有样本都满足条件的位点,--set-GTs只会对被过滤掉的位点(整个位点)设置参考基因型,而非针对单个样本的基因型逐一判断修正。这就是输出文件里仍存在不符合QC的样本基因型的原因。

解决方案:用bcftools +setGT插件(推荐)

bcftools +setGT是专门用于样本级基因型批量修改的插件,支持对每个样本的基因型单独判断,精准替换不符合条件的基因型为参考型。

1. 基础命令(处理DP/VAF/GQ样本级QC)

bcftools +setGT $vcf_file -- -t q -i 'FORMAT/DP < 10 || FORMAT/VAF < 0.05 || FORMAT/GQ < 99' -n 0 -o filtered_output.vcf

参数说明:

  • -t q:启用样本级查询模式,对每个样本的基因型单独评估条件
  • -i:定义需要被修正的不符合QC的条件(用||表示任意一项不满足)
  • -n 0:将符合上述条件的基因型设为参考型(二倍体为0/0,单倍体为0)

2. 加入位点级GC含量过滤

如果需要同时处理GC含量不符合要求的位点(将该位点所有样本基因型设为参考),可以先处理位点级条件,再处理样本级条件:

# 先把GC不符合的位点所有样本设为参考,再处理样本级QC
bcftools +setGT $vcf_file -- -t s -i 'INFO/GC < 0.2 || INFO/GC > 0.8' -n 0 | \
bcftools +setGT -- -t q -i 'FORMAT/DP < 10 || FORMAT/VAF < 0.05 || FORMAT/GQ < 99' -n 0 -o filtered_output.vcf

参数说明:

  • -t s:启用位点级模式,对整个位点的所有样本基因型统一修改

结果验证

用以下命令检查是否还有不符合QC的非参考基因型:

bcftools query -f '%CHROM\t%POS\t%SAMPLE\t%GT\t%DP\t%VAF\t%GQ\n' filtered_output.vcf | \
awk '$4 != "0/0" && ($5 < 10 || $6 < 0.05 || $7 < 99)'

如果无输出,说明所有不符合条件的基因型已被成功修正为参考型。

备选方案:调整bcftools filter参数

如果不想用插件,也可以调整bcftools filter的参数实现样本级修正:

bcftools filter -i 'SAMPLE="*" && (FORMAT/DP >= 10 && FORMAT/VAF >= 0.05 && FORMAT/GQ >= 99)' \
--set-GTs 0 -m any $vcf_file -o filtered_output.vcf

参数说明:

  • -m any:只要有一个样本满足条件就保留该位点
  • SAMPLE="*":明确对所有样本单独评估条件
  • --set-GTs 0:将不满足条件的样本基因型设为参考型

内容的提问来源于stack exchange,提问作者Silver surfer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 03:26:10