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