重测序数据(简化基因组和非简化基因组)的Clean data 到snp-indel的vcf步骤

最近有多个朋友问我关于二代重测序数据的分析问题(clean data 到vcf),我写了一个完整的步骤如下,若你是多个样品进行分析,最好是写

循环语句,这里我仅举一个例子“sample1”作为样品进行脚本编写。

############  中国科学院植物研究所   #####################

############  孟庆霖   #########

##2021-6-10 参考基因组索引构建

#第一步 bwa

cd /datapool/.../raw/ref/

bwa index ref.fa

#第二步samtools生成.fai文件

samtools faidx ref.fa > ref.fa.fai

#第三步 gatk 生成.dict文件

gatk CreateSequenceDictionary \

-R ref.fa \

-O ref.dict

#到此,参考基因组的index构建完成。

###############################################

##下面开始fq(clean data)文件到vcf文件的生成

#1生成bam

bwa mem -M -t 4 -R "@RG\tID:sample1\tSM:sample1\tPL:illumina" \

ref.fa sample1_1.fq.gz sample1_2.fq.gz > | \

samtools view -bS - > sample1.bam


#2对bam进行sort

gatk --java-options "-Xmx15g" SortSam \

-I sample1.bam \

--SORT_ORDER coordinate \

-O sample1.sort.bam

##这一步只是说明可以对sam进行sort,如果你是bam,就直接sort就行

##gatk也可以对sam进行sort

gatk --java-options "-Xmx15g" SortSam \

-I sample1.sam \

--SORT_ORDER coordinate \

-O sample1.sort.sam


#3对bam文件标记pcr重复

##若是简化基因组测序,则不要进行这一步的运算

gatk --java-options "-Xmx15g" \

MarkDuplicates \

-I sample1.sort.bam \

--METRICS_FILE sample1.metrics.txt \

-O sample1.sort.md.bam


#4对3获得bam进行index

samtools index -@ 4 sample1.sort.md.bam

#5gatk call vcf变异

gatk --java-options "-Xmx15g" \

HaplotypeCaller \

-R ref.fa \

--emit-ref-confidence GVCF \

-I sample1.sort.md.bam \

-O sample1.g.vcf

gatk --java-options "-Xmx15g" \

GenotypeGVCFs \

-R ref.fa \

-V sample1.g.vcf \

-O sample1.raw.vcf


#6合并多个样品的vcf文件,其-I顺序即样品在vcf中的排列顺序

gatk --java-options "-Xmx15g" \

MergeVcfs \

-I sample1.raw.vcf \

-I sample2.raw.vcf \

-I sample3.raw.vcf \

...

-O all.raw.vcf


#7对vcf进行硬过滤

gatk --java-options "-Xmx15g" \

VariantFiltration \

-R ref.fa \

-V all.raw.vcf \

--filter-expression \

"AC<2||QD<2.0||FS>60.0||MQ<40.0||MQRankSum < -12.5||ReadPosRankSum < -8.0 " \

--filter-name "ref.fa-name" \

-O all.raw.H.vcf  #H=硬过滤“hard”

grep "#" all.raw.H.vcf > all.raw.HP.vcf

grep "PASS" all.raw.H.vcf >> all.raw.HP.vcf

gatk --java-options "-Xmx15g" \

IndexFeatureFile \

-F all.raw.HP.vcf


#8将indel和snp分开

gatk --java-options "-Xmx15g" \

-R ref.fa --STRICT false \

-I all.raw.HP.vcf \

--INDEL_OUTPUT all.raw.HP.indel.vcf \

--SNP_OUTPUT all.raw.HP.snp.vcf

最后:如果你运行过程出错了=>首先,核对是否完全按照我编写的脚本进行;其次,查看是否路径设对了。

你可能感兴趣的:(重测序数据(简化基因组和非简化基因组)的Clean data 到snp-indel的vcf步骤)