WGS数据分析目的:检测出每个样本基因组中的变异集合(不同样本中的差异序列)
WGS数据分析流程分为三步:原始数据质控 -> 数据预处理 -> 变异检测
1.原始数据质控阶段:拿到原始测序数据 -> QC过滤低质量的read数据
2.数据预处理阶段:read比对 -> sort排序 -> 去除重复 -> 局部重比对 -> 碱基质量校正(BQSR) -> 变异检测
3.变异质控过滤(VQSR) -> 结果
分析过程中所需软件:
BWA(Burrow-Wheeler Aligner):最权威,使用最广的NGS数据比对软件( https://github.com/lh3/bwa )
Samtools:一个专门用于处理比对数据的工具(https://github.com/samtools/samtools)
Picard:著名组学研究中心Broad研究所开发的NGS数据处理工具,功能与Samtools部分重叠,但更多的是互补,由Java编写(http://broadinstitute.github.io/picard/ )
GATK:目前最权威,使用最广的基因数据变异检测工具。有3.x和4.x两个版本,4.x使用了新的设计模式,做了很多功能的整合,是更适合于大规模集群和云运算的版本,后续GATK团队也将主要维护4.x的版本,而且它的代码是100%开源的,3.x只有部分开源(https://software.broadinstitute.org/gatk/download/)
tabix:可以对NGS分析中常见格式的文件建立索引,从而加快访问速度,支持VCF,BED,GFF,SAM等格式文件(VCF文件压缩时不可用gzip替代bgzip; https://sourceforge.net/projects/samtools/files/tabix/)
fastp:一个对fastq文件进行处理的一站式工具支持多线程,有基本的过滤功能和生成质控报告功能,也可以对双端测序数据中overlap区间不一致的碱基进行校正,自动识别头序列并去除,自动去除mRNA测序数据中的polyG序列以及拆分输出等(https://github.com/OpenGene/fastp)
参数fastp \
-i test.R1.fastq.gz # read1测序文件名
-o test.R1.clean.fastq.gz # read1 输出文件名
-I test.R2.fastq.gz # read2 测序文件名
-O test.R2.clean.fastq.gz # read2 输出文件名
-w 4 # 线程数
-l 150 #输出序列最短长度
-h test.status.html #质控报告
质控定义:质控的含义和目的是指通过一定的标准,最大可能地剔除假阳性的结果,并尽可能地保留最多的正确数据
认识一个原始的测序数据(fastq data):
<1>read各个位置的碱基质量值分布;
<2>碱基的总体质量值分布;
<3>read各个位置上碱基分布比例,目的是为了分析碱基的分离程度;
<4>GC含量分布;
<5>read各位置的N含量;
<6>read是否还包含测序的接头序列;
<7>read重复率,这个是实验的扩增过程所引入的。
整体流程:
(1)fastp质控
fastp -i read1.fq -I read2.fq -o out_read1.fq -O out_read2.fq
gzip out_CRR125938_f1.fq #压缩out_read文件
gzip out_CRR125938_f2.fq
(2)比对
把测序数据定位到参考基因组上,确定每个read在基因组中的位置。使用软件BWA完成。
<1>创建索引
bwa index -a is input.fa #操作执行完毕会增加五份索引文件以input.fa为前缀,.amb;.ann;.bwt;.pac;.sa为后缀
samtools faidx input.fa #建立一个以.fai为后缀的文件,根据这个文件和源文件可以快速提取其任意区域序列
<2>比对(使用bwa完成)
bwa mem -t 4 -R '@RG\tID:foo\tPL:illumina\tSM:read' input.fa out_read1.fq.gz out_read1.fq.gz | samtools view -Sb - > read1.bam && echo "** bwa mapping done **"
#首先利用bwa men比对模块将read质控后的测序数据定位到参考基因组 -t:指定线程 -R:指定组别标识 ; 通过管道将比对的数据引流到samtools转换为BAM文件, 然后重定向输出到文件保存;成功则输出** bwa mapping done **
<3>排序
samtools sort -@ 4 -m 4G -O bam -o read.sort.bam read.bam && echo "** BAM sort done **"
#将用samtools对原始的比对结果按照参考序列位置从小到大进行排序 -@:设置排序和压缩的线程数,默认单线程;-m:每个线程的运行内存大小; -o:排序后输 出文件 ,只有这个步骤完成之后才可以继续往下,成功则输出** BAM sort done **
<4>标记pcr重复
gatk MarkDuplicates -I read.sort.bam -O read.sorted.markdup.bam -M read.sorted.markdup_metrics.txt && echo "** markdup done **"
#成功输出** markdup done **
<5>创建比对索引文件
samtools index read.sorted.markdup.bam && echo "** index done **"
<6>变异检测
gatk CreateSequenceDictionary -R input.fa -O input.dict && echo "** dict done **"
#.dict文件的名字前缀需要和fasta的一样,并跟它在同一个路径下
<7>生成中间文件gvcf
gatk HaplotypeCaller -R input.fa --emit-ref-confidence GVCF -I read.sorted.markdup.bam -O read.g.vcf && echo "** gvcf done **"
<8>通过gvcf检测变异
gatk GenotypeGVCFs -R input.fa -V read.g.vcf -O read.vcf && echo "** vcf done **"
<9>压缩并用tabix构建索引,方便分析
bgzip -f /home/st20171401139/WGS/CRR125938.vcf
tabix -p vcf /home/st20171401139/WGS/CRR125938.vcf.gz