过滤和比对没什么好说的,fastp + bwa足够
重点是call snp这块,GATK作为精度最高的东西,运行速度也是最慢的,卡的要死。有人提出可以使用freebayes进行快速snp calling。 然而freebayes如果运用不当,可以成为比gatk更卡的东西
那么如何使用freebayes提速,发挥他真正的实力呢?
重点有2,一个是参数选对,一个是切片。
先说最简单的,切片,对参考基因组进行分割,然后call指定位点的变异,这个freebayes提供了软件内部的脚本fasta_generate_regions.py
python fasta_generate_regions.py x.fasta 1000000 > x.bed
按100Mb的窗口大小切割然后call的时候用这个生成脚本加到-r 参数后面就行
其次是加一些特定参数提高运行速度,一个是-g 1000 去掉coverage 大于1000 计算量很大但是没什么有用结果的地方;然后是--use-best-n-alleles 4 去掉一些complex的情况。
100个样本在60核250RAM的情况下,应该可以在一天内结束calling。 之后可以使用vcftools进行合并,vcffilter过滤出高质量snp位点,再使用vcftools进行过滤。
合并:vcf-concat *.vcf > combined.vcf
过滤indel和complex: cat combined.vcf | vcffilter -f "TYPE = snp" > x.snp.vcf
vcftools进一步过滤: vcftools --remove-indels --recode --recode-INFO-all --vcf x.snp.vcf --maf 0.05 --minDP 5 --maxDP 50 --minGQ 20 --hwe 0.001 --max-missing 0.8 --stdout > final.snp.vcf
最后再进行bgzip和tabix即可得到最终用于下游分析的VCF文件