保姆级教程:用GATK4从鸡的fastq数据到vcf文件,手把手搞定全流程(附避坑指南)
保姆级教程:用GATK4从鸡的fastq数据到vcf文件全流程实战
第一次接触GATK流程时,面对复杂的参数和报错信息,我曾在实验室熬到凌晨三点——直到发现-R参数里少写了一个反斜杠。这份教程将用鸡基因组案例带你完整走通从原始数据到变异检测的全流程,重点标注那些教科书不会告诉你的实战细节。
1. 环境准备与参考基因组处理
工欲善其事必先利其器。建议使用conda管理生物信息学软件环境:
conda create -n gatk4 python=3.8 conda install -c bioconda gatk4=4.2.6.1 bwa=0.7.17 samtools=1.12鸡参考基因组(Gallus_gallus.GRCg6a.dna.primary_assembly.fa)需从Ensembl下载,注意处理大基因组文件的特殊要求:
# 建立BWA索引(耗时约2小时) bwa index -a bwtsw GRCg6a.fa # 生成FASTA索引 samtools faidx GRCg6a.fa # 创建序列字典(注意O参数需与参考基因组同名) gatk CreateSequenceDictionary -R GRCg6a.fa -O GRCg6a.dict避坑提示:当看到
java.lang.OutOfMemoryError错误时,需调整JVM内存参数,例如:gatk --java-options "-Xmx4g" CreateSequenceDictionary -R GRCg6a.fa
2. 原始数据比对与BAM处理
假设我们有一对鸡的WGS测序数据(sample1_R1.fq.gz和sample1_R2.fq.gz),比对时最关键的是正确设置@RG头信息:
bwa mem -t 8 -M -Y -R '@RG\tID:sample1\tSM:sample1\tLB:WGS\tPL:ILLUMINA' \ GRCg6a.fa sample1_R1.fq.gz sample1_R2.fq.gz | \ samtools view -Sb - > sample1.raw.bam常见问题排查表:
| 错误现象 | 可能原因 | 解决方案 |
|---|---|---|
| 最终vcf为空文件 | @RG头信息错误 | 用samtools view -H sample1.bam | grep '@RG'验证 |
| 比对速度极慢 | 未使用-Y参数 | 添加-Y参数处理Illumina长读段 |
| 内存溢出 | 未限制线程数 | 根据服务器核心数调整-t参数 |
后续BAM处理流程包含三个关键步骤:
排序与去重(需30GB内存):
samtools sort -@ 8 -o sample1.sorted.bam sample1.raw.bam gatk MarkDuplicates -I sample1.sorted.bam -O sample1.markdup.bam \ -M sample1.metrics.txt --REMOVE_DUPLICATES true生成索引文件:
samtools index sample1.markdup.bam质量评估(可选但推荐):
samtools flagstat sample1.markdup.bam > sample1.flagstat.txt
3. 变异检测与gVCF生成
单样本变异检测使用HaplotypeCaller时,建议先生成gVCF格式以便后续群体分析:
gatk HaplotypeCaller \ -R GRCg6a.fa \ -I sample1.markdup.bam \ -O sample1.g.vcf.gz \ -ERC GVCF \ --native-pair-hmm-threads 8关键参数解析:
-ERC GVCF:生成分区间隔的gVCF文件-stand-call-conf 30:可调整变异检测置信度阈值--disable-read-filter:根据数据质量选择性关闭过滤
性能优化技巧:添加
--java-options "-Xmx32g"可提升大基因组处理效率,但需确保服务器有足够内存。
4. 群体分析与VQSR质控
当处理多个样本时,推荐的工作流程是:
合并gVCF文件(适用于10+样本):
find . -name "*.g.vcf.gz" > gvcf.list gatk CombineGVCFs -R GRCg6a.fa -V gvcf.list -O cohort.g.vcf.gz联合基因分型:
gatk GenotypeGVCFs \ -R GRCg6a.fa \ -V cohort.g.vcf.gz \ -O raw_variants.vcf.gzVQSR质控(需准备已知变异集):
gatk VariantRecalibrator \ -R GRCg6a.fa \ -V raw_variants.vcf.gz \ --resource:known_sites chicken_dbSNP.vcf \ -an QD -an FS -an SOR -an MQ -an MQRankSum -an ReadPosRankSum \ -mode SNP \ -O snp.recal \ --tranches-file snp.tranches
VQSR过滤指标阈值参考:
| 指标 | 优质变异阈值 | 说明 |
|---|---|---|
| QD | >2.0 | 质量深度比 |
| FS | <60.0 | 链特异性偏差 |
| SOR | <3.0 | 链比值 |
| MQ | >40.0 | 映射质量 |
最后应用过滤规则生成最终结果:
gatk ApplyVQSR \ -R GRCg6a.fa \ -V raw_variants.vcf.gz \ -O filtered_variants.vcf.gz \ --truth-sensitivity-filter-level 99.0 \ --tranches-file snp.tranches \ --recal-file snp.recal \ -mode SNP记得用bcftools stats filtered_variants.vcf.gz评估最终变异集质量。当看到转换/颠换比率在2.0-2.1范围内时,通常说明数据分析流程运行良好。
