⚙️ algorithm

GATK变异检测示例

```bash # === GATK最佳实践流程 === # 1. 标记重复(MarkDuplicates) gatk MarkDuplicates \ -I sample.sorted.bam \ -O sample.dedup.bam \ -M sample.metrics.txt \ --REMOVE_DUPLICATES false # 标记但不删除,GA...

📖 定义

# === GATK最佳实践流程 ===
# 1. 标记重复(MarkDuplicates)
gatk MarkDuplicates \
    -I sample.sorted.bam \
    -O sample.dedup.bam \
    -M sample.metrics.txt \
    --REMOVE_DUPLICATES false  # 标记但不删除,GATK推荐
samtools index sample.dedup.bam
# 2. 碱基质量校正(BQSR)
# 需要已知变异位点(如dbSNP)作为训练集
gatk BaseRecalibrator \
    -I sample.dedup.bam \
    -R reference.fa \
    --known-sites dbsnp.vcf.gz \
    -O sample.recal.table
gatk ApplyBQSR \
    -R reference.fa \
    -I sample.dedup.bam \
    --bqsr-recal-file sample.recal.table \
    -O sample.recal.bam
# 3. 变异检测(HaplotypeCaller)
gatk HaplotypeCaller \
    -R reference.fa \
    -I sample.recal.bam \
    -O sample.g.vcf.gz \
    -ERC GVCF  # 输出gVCF格式(适合多样本联合分析)
# 4. 多样本联合基因型(如果有多个样本)
# GenomicsDBImport导入gVCF
gatk GenomicsDBImport \
    -V sample1.g.vcf.gz \
    -V sample2.g.vcf.gz \
    -V sample3.g.vcf.gz \
    --genomicsdb-workspace-path cohort_db \
    -L intervals.list
# GenotypeGVCFs输出最终VCF
gatk GenotypeGVCFs \
    -R reference.fa \
    -V gendb://cohort_db \
    -O cohort.vcf.gz
# 5. 变异质控(VQSR,可选)
gatk VariantRecalibrator \
    -R reference.fa \
    -V cohort.vcf.gz \
    --resource:hapmap,known=false,training=true,truth=true,prior=15.0 hapmap.vcf.gz \
    --resource:omni,known=false,training=true,truth=false,prior=12.0 omni.vcf.gz \
    -an QD -an MQ -an MQRankSum -an ReadPosRankSum \
    -mode SNP \
    -O cohort.recal \
    --tranches-file cohort.tranches
gatk ApplyVQSR \
    -R reference.fa \
    -V cohort.vcf.gz \
    --recal-file cohort.recal \
    --tranches-file cohort.tranches \
    --truth-sensitivity-filter-level 99.5 \
    -mode SNP \
    -O cohort.vqsr.vcf.gz
# 6. 硬过滤(如果VQSR不适用,如小样本)
gatk VariantFiltration \
    -R reference.fa \
    -V cohort.vcf.gz \
    -O cohort.filtered.vcf.gz \
    --filter-expression "QD < 2.0 || MQ < 40.0 || FS > 60.0 || SOR > 3.0" \
    --filter-name "basic_filters"