植物基因组重测序除了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
网友评论