1 背景
在生成VCF文件后,需要对生成的SNP进行过滤,再进行后续的种群分析。首先,低质量和无信息的SNP会影响后续群体结构或GWAS的分析结果;其次,群体研究时,由于测序的个体较多检测出来的变异位点数量过大,进一步过滤会减少后续分析时,对计算资源的需求。
为什么要过滤indel邻近区域的SNP和10bp范围内的SNP cluster:
1. 在过滤分析的语境中,Indel Gap 指的是插入缺失标记(Indel)与单核苷酸多态性(SNP)之间的最小距离。Indel 可能会导致比对错误,还可能在其附近产生假阳性 SNP,因此位于 Indel 附近的 SNP 会被过滤掉。我采用了 20 个碱基对(bp)的阈值标准,所以在经过过滤的 VCF 文件中,不会包含距离 Indel 20 bp 范围内的任何 SNP。
2. SNP Gap 是一个类似的概念。如果在一段较短的区域内出现成簇的 SNP,那么这些 SNP 极有可能全都是假阳性。举例来说,若一个 20 bp 的区域内存在 3 个或更多 SNP,这些 SNP 就极大概率为假阳性结果。
3. 我不清楚你所指的是哪一种阈值标准,是变异质量得分,还是最低碱基质量得分?不同的变异检测工具(如 GATK 和 Samtools)得出的变异质量得分范围存在差异,且针对不同工具,人们设定的得分截断值也各不相同。例如,GATK 建议使用 30 分及以上的变异质量得分作为标准。
2 具体步骤
(1)去除10bp范围内的SNP cluster(建议先进行步骤2)
# 1. 基于硬过滤后的文件,创建索引
# (1)重新压缩SNP文件,并创建索引
gunzip -c genome_snp_filtered_deleted.vcf > genome_snp_filtered_deleted.vcf
bgzip genome_snp_filtered_deleted.vcf
tabix -p vcf genome_snp_filtered_deleted.vcf
# 2. 去除10bp范围内有3个以上的SNP
#(1)标出10bp范围3个SNP的 SnpCluster
gatk VariantFiltration -V genome_snp_filtered_deleted.vcf -O genome_snp_filtered_deleted_10_3filter.vcf.gz
#(2)去除上一步标出的SnpCluster
gatk SelectVariants -V genome_snp_filtered_deleted_10_3filter.vcf.gz -O genome-2_snp_filtered_deleted_10_3filter_deleted.vcf.gz -select "FILTER == SnpCluster" --invertSelect(2)去除indel附近5bp范围内的SNP (需要确保indel和snp在一个文件内)
# bcftools filter -g 5 -O v -o 5genome_snp_gap5_filter.vcf.gz 4genome_snp_filtered_deleted_10_3filter_deleted.vcf.gz3 注意事项
(1)去除位点前后,都需要对位点进行统计,依据位点的数量,判断是否得到了正确的结果文件。
(2)在进行 去除indel附近5bp范围内的SNP 的过程时,确保INDEL和SNP在一个文件内,否则会造成INDEL位置识别不到,从而无法去除。