群体遗传学专题二之GATK实战

写在最前面

本次的GATK实战用到的raw data是水稻的,reference是v4版本,具体如下:
raw data:EV19-0_HQ_clean_R1.fq/EV19-0_HQ_clean_R2.fq
reference:IRGSP_v4.fasta
我在运行GATK的时候并没有每一步都用GATK的工具,还涉及到另外几个软件,名称和版本如下:
bwa-0.7.17
samtools-1.8
picard-tools-1.119
GenomeAnalysis TK-3.4.-0
将这些软件安装好并且加入到环境变量之后就可以进入实战部分啦。


以下是我的GATK实战内容:

1. 建立ref的index

bwa index IRGSP_v4.fasta

bwaindex命令 建立reference序列的index,此步骤结束会产生5个文件,分别为IRGSP_v4.fasta为前缀的sa、pac、bwt、ann、amb格式的文件

2. 建立ref的索引内容

samtools faidx IRGSP_v4.fasta

samtoolsfaidx命令 建立reference序列的索引内容,此步骤结束会产生一个以IRGSP_v4.fasta为前缀的fai文件

3. 建立ref的dict内容

java -Xmx45g -jar CreateSequenceDictionary.jar R=IRGSP_v4.fasta O=IRGSP_v4.dict

picard工具包 中的CreateSequenceDictionary建立reference序列的dict,此步骤结束会产生一个以IRGSP_v4.fasta为前缀的dict文件

注:前三步结束一共会产生以ref名为前缀的7个文件,在此基础上才能进行后续命令程序,若在之前已经进行过以此ref为基础的相关内容,则可以跳过前三步


4. 对raw data文件进行过滤,加header并生成sam文件

bwa mem -M -t 20 -R "@RG\tID:EV\tPL:ILLUMINA\tLB:EV\tSM:EV"  IRGSP_v4.fasta EV19-0_HQ_clean_R1.fq EV19-0_HQ_clean_R2.fq -o EV.sam

bwamem命令 对fq文件进行比对过滤,并加header生成sam文件

参数解释:
-M:用来处理同一个 reads比对到参考基因组上不同位置的情况
-t:线程数
-R:设置 reads的 header
-o:输出文件

注1:关于加header的内容,一般格式为“@RG ID:样品ID号 PL:测序平台(一般为ILLUMINA) LB:样品的文库名(一般为样品名) SM:样品名称”其中所有的空格都是\t(制表符)
注2:对于pair-end文件,命令如上所示,在ref后输入 read1.fq read2.fq ;对于sngle-end文件,则只需要在ref后输入read.fq

5. 将sam文件转为bam文件

samtools view -bS EV.sam -o EV.bam

samtoolsview命令 将sam文件转为bam文件,(bam文件是二进制,运算速度会快),此步骤结束会产生一个bam文件

参数解释:
-b:输出bam文件(因为默认输出是sam)
-S:输入sam文件(因为默认输入是bam)

6. 对bam文件进行排序

java -Xmx45g -jar SortSam.jar INPUT=EV.bam OUTPUT=EV_sort.bam SORT_ORDER=coordinate

picard工具包 中的SortSam对上一步得到的bam文件中同一染色体对应的条目按照坐标顺序从小到大进行排序,此步骤结束会产生一个排序过的bam文件,可命名为EV_sort.bam

7. 对排序后的bam文件进行去重

java -Xmx100g -jar MarkDuplicates.jar INPUT=EV_sort.bam OUTPUT=EV_dedup.bam METRICS_FILE=EV_dedup.metrics ASSUME_SORTED=true VALIDATION_STRINGENCY=SILENT CREATE_INDEX=true

picard工具包 中的MarkDuplicates对排序后的bam文件进行去重(由于PCR扩增底物的过程中使样品出现重复,故要去重,此步使重复的reads带上标签,便于后续处理),此步骤结束会产生一个metrics文件,一个bai文件,一个去重的bam文件,可命名为EV_dedup.bam
参数解释:
ASSUME_SORTED:默认为false,经过sortsam后改为true
CREATE_INDEX:创建索引(true才会产生bai文件)

注1:metrics文件用于写入一些duplicates的统计信息
注2:CREATE_INDEX使得bai文件产生,若不在这一步创建,则下一步要先用samtools的index命令对EV_dedup.bam建立索引才行。

8. 建立indel区间文件

java -Xmx45g -jar GenomeAnalysisTK.jar -T RealignerTargetCreator -R IRGSP_v4.fasta -I EV_dedup.bam -o EV_dedup.intervals

GATK工具包 中的RealignerTargetCreator先建立indel区间文件,此步骤结束会产生一个intervals文件
参数解释:
-T:使用的工具名

9. 对以上所得位置进行重新对比

java -Xmx45g -jar GenomeAnalysisTK.jar -T IndelRealigner -R IRGSP_v4.fasta -I EV_dedup.bam -targetIntervals EV_dedup.intervals -o EV_dedup_realign.bam

GATK工具包 中的IndelRealigner对上一步建立的indel区域进行reads重比对(indel会导致附近的错配,所以需要借由这一步降低indel附近的假阳性),此步骤结束会产生一个重新比对过的bam文件,可命名为EV_dedup_realign.bam

10. 进行变异检测

java -Xmx45g -jar GenomeAnalysisTK.jar -T UnifiedGenotyper -R IRGSP_v4.fasta -I EV_dedup_realign.bam -glm BOTH -stand_call_conf 30 -stand_emit_conf 10 -o LD.vcf

GATK工具包 中的UnifiedGenotyper对上述重新比对过的bam文件进行变异检测,寻找variant,此步骤结束会产生一个vcf文件和一个idx文件

参数解释:
-glm:选择检测的变异类型,“SNP、INDEL、BOTH”皆可选,默认为SNP,采用BOTH表示同时检测两者
-stand_call_conf:在变异检测过程中用于区分低质量变异位点和高质量变异位点的阈值,高于其会被视为高质量,低于其会标注LowQual
-stand_emit_conf:在变异检测过程中,所容许的最小质量值。只有大于等于这个设定值的变异位点会被输出到结果中。


写在最后面

  1. 运行命令时,要注意使用的软件、输入文件以及输出文件的路径,最好采用绝对路径的命令输入模式
  2. 由于过程中会产生很多文件,所以输出文件要好好命名。每个文件是从哪一步得到的,最好标上后缀,方便后续调用
  3. 我这里的GATK版本还是较旧的3.4版本,现在最新的应该是4.0版本。在4.0版本中去掉了RealignerTargetCreator、IndelRealigner、UnifiedGenotyper这几个工具,全部用HaplotypeCaller可以解决,具体的参数在运行程序的时候help一下就可以看到了,所以8 、9、10三步骤可以用HaplotypeCaller代替
  4. 以上的GATK实战步骤也是我在摸索中运行的,后续的数据分析还没有进行过,其中可能存在一定问题,欢迎提出指正,互相交流。

你可能感兴趣的:(群体遗传学专题二之GATK实战)