正文
" -T SelectVariants -R
"
$ref
"
-V filtered_SNPs_near_INDEL.vcf -selectType SNP -o SNPs_only.vcf
vcftools --vcf filtered_SNPs_near_INDEL.vcf --remove-indels --recode --recode-INFO-all --out SNPs_only
上面用两种方式实现提取 SNP 位点的操作;
如果使用 vcftools,
记得加上
--recode-INFO-all 参数,这样才能保留 INFO 的信息,后面还需要根据这列信息进行过滤。如果不加,整列信息将变为 '.'!
3 GATK hard filtering
java -jar "$GATK" -T VariantFiltration -R "$ref" -V SNPs_only.vcf --filterExpression "QD < 2.0" --filterName "QD_snp_filter" --filterExpression "FS > 60.0" --filterName "FS_snp_filter" --filterExpression "SOR > 4.0" --filterName "SOR_snp_filter" --filterExpression "MQ < 40.0" --filterName "MQ_snp_filter" --filterExpression "MQRankSum < -12.5" --filterName "MQRankSum_snp_filter" --filterExpression "ReadPosRankSum < -8.0" --filterName "ReadPosRankSum_snp_filter" -o hard_filtering.snps.vcf
grep -v 'snp_filter' hard_filtering.snps.vcf > hard_filtered.snps.vcf
对于 GATK hard filtering 的参数,请参考官网的介绍;
这步运行后,GATK 并没有直接删掉不符合阈值的位点,仅仅是在 FILTER 那列标注 'PASS' 或标注每个过滤参数自定义的 'filterName';
在最初尝试过滤参数组合的时候,给每个过滤参数的命名可参考:特有 (FS) + 共有 (_snp_filter) 的方式,以便查看每个过滤参数对数据的影响。