植物基因組重測序除了GATK的方法進行變異檢測以外,還有samtools+bcftools去進行變異檢測。
在這里我們不去分析哪一種分析方法好,使用samtools+bcftools的最突出的特點:速度快!
其實,samtools+bcftools去進行變異檢測的流程很早就有了。
但是為什么現在又寫一個呢?
就是因為:samtools以及bcftools軟件逐步更新,里面的參數更改的太快了,以致于網絡上很多的流程其實已經不能使用了。
當然,samtools以及bcftools這兩個軟件在未來一定會繼續更新,未來大家再來看這篇教程的時候,也許也可能是失效。
周而復始,萬物更替,大體就是這個道理吧。
Step1:軟件準備
#數據所需的軟件:sra-tools bwa trim_galore samtools bcftools picard
使用conda解決一切軟件
conda install -y sra-tools bwa samtools bcftools picard
#santools的版本是Version: 1.10 (using htslib 1.10)
#bcftools的版本是Version: 1.10 (using htslib 1.10)
Step2:數據準備
#使用的測試數據來源于NCBI-SRA
#SRR2040561
#SRR2052532
#使用sra-tools下載SRA數據
prefetch SRR2040561 -O ./
prefetch SRR2052532 -O ./
#并且進行格式轉化 將sra數據轉化為fastq格式
ls *.sra|while read id
do
nohup fastq-dump --gzip --split-3 -O ./ ${id} &
done
##將數據進行質控
nohup fastqc -t 6 -O ./ ../sra/*fastq.gz &
#質控后截斷得到clean_read
ls *_1.fastq.gz > 1
ls *_2.fastq.gz > 2
paste 1 2 > config
cat config |while read id
do
arr=(${id})
fq1=${arr[0]}
fq2=${arr[1]}
trim_galore --phred33 -q 25 -e 0.1 --length 36 --stringency 3 --paired -o ./ $dir/${fq1} $dir/${fq2}
done
Step3:BWA比對--->bam文件+index+flagstat
#首先構建基因組索引
nohup bwa index -a is Oryza_sativa.fasta &
#參考基因組構建的索引結果
358M Nov 22 09:51 Oryza_sativa.fasta.bwt
90M Nov 22 09:51 Oryza_sativa.fasta.pac
509 Nov 22 09:51 Oryza_sativa.fasta.ann
14K Nov 22 09:51 Oryza_sativa.fasta.amb
179M Nov 22 09:53 Oryza_sativa.fasta.sa
377 Nov 22 09:53 nohup.out
#使用BWA進行比對
#bwa+samtools聯用
bwa mem -t 10 -M ./Oryza_sativa.fasta \
./SRR2040561_1_val_1.fq.gz \
./SRR2040561_2_val_2.fq.gz |samtools sort -@ 4 -m 1G -o SRR2040561.sort.bam -
bwa mem -t 10 -M ./Oryza_sativa.fasta\
./SRR2052532_1_val_1.fq.gz \
./SRR2052532_2_val_2.fq.gz |samtools sort -@ 4 -m 1G -o SRR2052532.sort.bam -
去除PCR重復
#picard rmduplication
picard -Xmx4g MarkDuplicates I=SRR2040561.sort.bam \
O=SRR2040561.sort.rmdup.bam REMOVE_DUPLICATES=true \
M=SRR2040561.mark_dup_matrix
picard -Xmx4g MarkDuplicates I=SRR2052532.sort.bam \
O=SRR2052532.sort.rmdup.bam REMOVE_DUPLICATES=true \
M=SRR2052532.mark_dup_matrix
#bam index + flagstat
# bam+index
samtools index SRR2040561.sort.bam
samtools index SRR2052532.sort.bam
# bam +flagstat
samtools flagstat SRR2040561.sort.bam > SRR2040561.sort.bam.flagstat
samtools flagstat SRR2052532.sort.bam > SRR2052532.sort.bam.flagstat
Step4:bcftools--call SNP InDel
#準備基因組fasta文件還有.fai 索引文件
samtools faidx Oryza_sativa.fasta
# Generate VCF or BCF file
bcftools mpileup SRR2040561.sort.bam --fasta-ref Oryza_sativa.fasta > SRR2040561.vcf
bcftools mpileup SRR2052532.sort.bam --fasta-ref Oryza_sativa.fasta > SRR2052532.vcf
#call snp
bcftools call SRR2040561.vcf -c -v -o SRR2040561.vcf
bcftools call SRR2052532.vcf -c -v -o SRR2052532.vcf
#merge vcf
bcftools merge SRR2040561.vcf.gz SRR2052532.vcf.gz -v -o merged.vcf
#filter vcf
bcftools filter -g3 -G10 -e'%QUAL<10 || (RPB<0.1 && %QUAL<15) || (AC<2 && %QUAL<15) || MQ < 30 || MQSB <=0.1' merged.bcf > merge.filter.vcf