全基因组测序WGS变异检测¶
一句话概述¶
全基因组测序(WGS)变异检测的完整流程——从BWA-MEM2比对、DeepVariant/GATK小变异检测,到Manta/DELLY进行结构变异(SV)和拷贝数变异(CNV)的全面解析。
核心知识点总览¶
| 知识点 | 关键内容 | 重要程度 |
|---|---|---|
| BWA-MEM2比对 | 快速全基因组序列比对与排序 | ⭐⭐⭐⭐⭐ |
| 数据预处理 | 去重(MarkDuplicates)/BQSR碱基质量校正 | ⭐⭐⭐⭐⭐ |
| SNV/InDel检测 | GATK HaplotypeCaller / DeepVariant | ⭐⭐⭐⭐⭐ |
| 结构变异(SV) | Manta/Delly/LUMPY断裂点检测 | ⭐⭐⭐⭐⭐ |
| 拷贝数变异(CNV) | DELLY CNV/CNVnator/Control-FREEC | ⭐⭐⭐⭐ |
| 变异注释 | VEP/SnpEff功能影响注释 | ⭐⭐⭐⭐ |
| 变异过滤 | VQSR/硬过滤策略 | ⭐⭐⭐⭐ |
| 质控评估 | 覆盖度/比对率/Ti/Tv比值 | ⭐⭐⭐ |
各步骤详解¶
第一步:WGS数据质控与参考基因组准备¶
白话解释: 全基因组测序产生的原始数据(FASTQ文件)首先要做质量检查——看碱基质量、接头污染、GC偏差等。同时需要准备好参考基因组及其索引文件。好的参考基因组版本选择(hg38 vs T2T)会影响后续所有分析。
技术细节: WGS通常产生30-50x覆盖度的150bp paired-end reads。参考基因组推荐使用GRCh38/hg38(包含alt contig和decoy序列),或更新的T2T-CHM13完全组装。预处理包括FastQC质控、Fastp接头和质量修剪。
# === 质控与预处理 ===
# FastQC 原始数据质检
fastqc -t 16 -o ./qc_raw/ sample_R1.fq.gz sample_R2.fq.gz
# Fastp 质控与接头去除
fastp \
-i sample_R1.fq.gz -I sample_R2.fq.gz \
-o sample_clean_R1.fq.gz -O sample_clean_R2.fq.gz \
-h sample_fastp.html -j sample_fastp.json \
--qualified_quality_phred 15 \
--unqualified_percent_limit 40 \
--length_required 50 \
--detect_adapter_for_pe \
--thread 16
# === 参考基因组准备 ===
# 下载 GRCh38 参考基因组(包含decoy和alt)
wget https://storage.googleapis.com/genomics-public-data/resources/broad/hg38/v0/Homo_sapiens_assembly38.fasta
wget https://storage.googleapis.com/genomics-public-data/resources/broad/hg38/v0/Homo_sapiens_assembly38.fasta.fai
wget https://storage.googleapis.com/genomics-public-data/resources/broad/hg38/v0/Homo_sapiens_assembly38.dict
# BWA-MEM2 建立索引
bwa-mem2 index Homo_sapiens_assembly38.fasta
# samtools 索引
samtools faidx Homo_sapiens_assembly38.fasta
第二步:BWA-MEM2序列比对¶
白话解释: 把测序产生的短读段(reads)对齐到参考基因组上,就像把拼图碎片放回原图一样。BWA-MEM2是BWA-MEM的加速版本,使用了SIMD指令优化,速度提升约2-3倍,是目前WGS分析的标准比对工具。
技术细节: BWA-MEM2使用Burrows-Wheeler变换和后缀数组实现高效的种子-延伸策略。关键参数包括读段组信息(@RG,包含样本、文库、测序平台等元数据),这在后续多样本联合分析和去重时必不可少。
# BWA-MEM2 比对
SAMPLE="NA12878"
PLATFORM="ILLUMINA"
LIBRARY="lib1"
RGID="flowcell1.lane1"
bwa-mem2 mem \
-t 32 \
-R "@RG\tID:${RGID}\tSM:${SAMPLE}\tLB:${LIBRARY}\tPL:${PLATFORM}\tPU:${RGID}" \
-K 100000000 \
-Y \
Homo_sapiens_assembly38.fasta \
sample_clean_R1.fq.gz sample_clean_R2.fq.gz \
| samtools sort -@ 16 -m 4G -o ${SAMPLE}.sorted.bam -
# 建立BAM索引
samtools index -@ 8 ${SAMPLE}.sorted.bam
# 比对统计
samtools flagstat ${SAMPLE}.sorted.bam > ${SAMPLE}.flagstat.txt
samtools stats ${SAMPLE}.sorted.bam > ${SAMPLE}.stats.txt
第三步:数据预处理(去重与BQSR)¶
白话解释: PCR扩增会产生重复reads(duplicates),这些"克隆"片段会让变异检测误判——把技术误差当成真实变异。需要标记并去除这些重复。然后做碱基质量分数校正(BQSR),用已知变异位点来修正测序仪报告的碱基质量值。
技术细节: MarkDuplicates使用比对位置和分子条码(UMI,如有)判断PCR重复。BQSR(Base Quality Score Recalibration)通过比较已知变异位点(dbSNP、Mills indels)的观测碱基质量与期望碱基质量,构建协变量模型进行校正。
# === 标记PCR重复 ===
# 使用GATK MarkDuplicatesSpark(支持多线程)
gatk MarkDuplicatesSpark \
-I ${SAMPLE}.sorted.bam \
-O ${SAMPLE}.markdup.bam \
-M ${SAMPLE}.markdup_metrics.txt \
--spark-master local[16]
# 或使用传统 MarkDuplicates
gatk MarkDuplicates \
-I ${SAMPLE}.sorted.bam \
-O ${SAMPLE}.markdup.bam \
-M ${SAMPLE}.markdup_metrics.txt \
--REMOVE_DUPLICATES false \
--CREATE_INDEX true
# === BQSR(碱基质量校正) ===
# 已知变异资源文件
KNOWN_SITES_SNP="Homo_sapiens_assembly38.dbsnp138.vcf"
KNOWN_SITES_INDEL="Homo_sapiens_assembly38.known_indels.vcf.gz"
KNOWN_SITES_MILLS="Mills_and_1000G_gold_standard.indels.hg38.vcf.gz"
# 第一步:生成重校正表
gatk BaseRecalibrator \
-I ${SAMPLE}.markdup.bam \
-R Homo_sapiens_assembly38.fasta \
--known-sites ${KNOWN_SITES_SNP} \
--known-sites ${KNOWN_SITES_INDEL} \
--known-sites ${KNOWN_SITES_MILLS} \
-O ${SAMPLE}.recal_data.table
# 第二步:应用重校正
gatk ApplyBQSR \
-I ${SAMPLE}.markdup.bam \
-R Homo_sapiens_assembly38.fasta \
--bqsr-recal-file ${SAMPLE}.recal_data.table \
-O ${SAMPLE}.recal.bam
# 可选:BQSR效果评估
gatk BaseRecalibrator \
-I ${SAMPLE}.recal.bam \
-R Homo_sapiens_assembly38.fasta \
--known-sites ${KNOWN_SITES_SNP} \
--known-sites ${KNOWN_SITES_INDEL} \
--known-sites ${KNOWN_SITES_MILLS} \
-O ${SAMPLE}.recal_post.table
gatk AnalyzeCovariates \
-before ${SAMPLE}.recal_data.table \
-after ${SAMPLE}.recal_post.table \
-plots ${SAMPLE}.recalibration_plots.pdf
第四步:SNV/InDel变异检测——GATK HaplotypeCaller¶
白话解释: 变异检测就是找出你的基因组与参考基因组的差异之处。HaplotypeCaller是GATK的核心工具,它不是简单比较碱基,而是在每个候选区域局部重新组装单倍型(haplotype),然后用贝叶斯模型判断最可能的基因型。
技术细节: GATK4 Best Practices推荐的WGS SNV/InDel检测流程: 1. HaplotypeCaller per-sample生成GVCF 2. GenomicsDBImport合并多样本GVCF 3. GenotypeGVCFs联合基因分型 4. VQSR变异质量校正
# === GATK HaplotypeCaller ===
# 单样本模式生成GVCF
gatk HaplotypeCaller \
-I ${SAMPLE}.recal.bam \
-R Homo_sapiens_assembly38.fasta \
-O ${SAMPLE}.g.vcf.gz \
-ERC GVCF \
--native-pair-hmm-threads 8 \
-G StandardAnnotation \
-G AS_StandardAnnotation
# 多样本联合分型(先合并GVCF)
gatk GenomicsDBImport \
-V sample1.g.vcf.gz \
-V sample2.g.vcf.gz \
-V sample3.g.vcf.gz \
--genomicsdb-workspace-path genomicsdb \
--intervals intervals.list \
--batch-size 50
# 联合基因分型
gatk GenotypeGVCFs \
-R Homo_sapiens_assembly38.fasta \
-V gendb://genomicsdb \
-O cohort.vcf.gz
# === VQSR 变异质量校正 ===
# SNP VQSR
gatk VariantRecalibrator \
-V cohort.vcf.gz \
-R Homo_sapiens_assembly38.fasta \
--resource:hapmap,known=false,training=true,truth=true,prior=15.0 hapmap_3.3.hg38.vcf.gz \
--resource:omni,known=false,training=true,truth=false,prior=12.0 1000G_omni2.5.hg38.vcf.gz \
--resource:1000G,known=false,training=true,truth=false,prior=10.0 1000G_phase1.snps.high_confidence.hg38.vcf.gz \
--resource:dbsnp,known=true,training=false,truth=false,prior=2.0 dbsnp_146.hg38.vcf.gz \
-an QD -an MQRankSum -an ReadPosRankSum -an FS -an MQ -an SOR \
-mode SNP \
-O cohort.snp.recal \
--tranches-file cohort.snp.tranches
gatk ApplyVQSR \
-V cohort.vcf.gz \
-R Homo_sapiens_assembly38.fasta \
--recal-file cohort.snp.recal \
--tranches-file cohort.snp.tranches \
--truth-sensitivity-filter-level 99.7 \
-mode SNP \
-O cohort.snp_recal.vcf.gz
# InDel VQSR
gatk VariantRecalibrator \
-V cohort.snp_recal.vcf.gz \
-R Homo_sapiens_assembly38.fasta \
--resource:mills,known=false,training=true,truth=true,prior=12.0 Mills_and_1000G_gold_standard.indels.hg38.vcf.gz \
--resource:axiomPoly,known=false,training=true,truth=false,prior=10.0 Axiom_Exome_Plus.genotypes.all_populations.poly.hg38.vcf.gz \
--resource:dbsnp,known=true,training=false,truth=false,prior=2.0 dbsnp_146.hg38.vcf.gz \
-an QD -an MQRankSum -an ReadPosRankSum -an FS -an SOR \
-mode INDEL \
--max-gaussians 4 \
-O cohort.indel.recal \
--tranches-file cohort.indel.tranches
gatk ApplyVQSR \
-V cohort.snp_recal.vcf.gz \
--recal-file cohort.indel.recal \
--tranches-file cohort.indel.tranches \
--truth-sensitivity-filter-level 99.0 \
-mode INDEL \
-O cohort.final.vcf.gz
第五步:DeepVariant——基于深度学习的变异检测¶
白话解释: DeepVariant把变异检测当作"看图识别"的问题。它把比对数据转换成一张张"基因组图片"(pileup image),然后用卷积神经网络(CNN)来判断每个位点是否存在变异。在多个benchmark测试中,DeepVariant的准确率超过GATK。
技术细节: DeepVariant由Google开发,分三步运行:make_examples(将BAM转换为TF examples)、call_variants(CNN推断)、postprocess_variants(生成VCF)。支持WGS/WES/PacBio/ONT等多种数据类型。
# === DeepVariant 运行 ===
# 使用Docker运行(推荐)
BIN_VERSION="1.10.0" # 截至2025年的最新稳定版
docker run \
-v "${INPUT_DIR}:/input" \
-v "${OUTPUT_DIR}:/output" \
google/deepvariant:"${BIN_VERSION}" \
/opt/deepvariant/bin/run_deepvariant \
--model_type=WGS \
--ref=/input/Homo_sapiens_assembly38.fasta \
--reads=/input/${SAMPLE}.recal.bam \
--output_vcf=/output/${SAMPLE}.deepvariant.vcf.gz \
--output_gvcf=/output/${SAMPLE}.deepvariant.g.vcf.gz \
--num_shards=32 \
--intermediate_results_dir=/output/intermediate
# 使用Singularity运行(HPC集群)
singularity run \
-B /data:/data \
deepvariant_${BIN_VERSION}.sif \
/opt/deepvariant/bin/run_deepvariant \
--model_type=WGS \
--ref=/data/ref/Homo_sapiens_assembly38.fasta \
--reads=/data/bam/${SAMPLE}.recal.bam \
--output_vcf=/data/vcf/${SAMPLE}.deepvariant.vcf.gz \
--num_shards=32
# DeepVariant + GLnexus 多样本联合分型
# GLnexus 合并多个 gVCF
glnexus_cli \
--config DeepVariantWGS \
--threads 32 \
sample1.deepvariant.g.vcf.gz \
sample2.deepvariant.g.vcf.gz \
sample3.deepvariant.g.vcf.gz \
> cohort.deepvariant.bcf
bcftools view cohort.deepvariant.bcf | bgzip > cohort.deepvariant.vcf.gz
tabix -p vcf cohort.deepvariant.vcf.gz
第六步:结构变异(SV)检测——Manta¶
白话解释: 结构变异是大片段(通常>50bp)的基因组改变,包括缺失(DEL)、插入(INS)、倒位(INV)、重复(DUP)和易位(BND)。Manta是最准确的SV检测工具之一,它同时利用异常配对reads和split reads来识别断裂点。
技术细节: Manta采用图模型进行SV候选检测。首先通过异常insert size和read方向识别候选区域,然后使用split-read精确定位断裂点。支持germline和somatic(肿瘤-正常配对)模式。
# === Manta SV检测 ===
# Germline SV检测
configManta.py \
--bam ${SAMPLE}.recal.bam \
--referenceFasta Homo_sapiens_assembly38.fasta \
--runDir manta_${SAMPLE}
# 运行
python manta_${SAMPLE}/runWorkflow.py -j 16 -m local
# 输出文件
# manta_${SAMPLE}/results/variants/diploidSV.vcf.gz # 二倍体SV
# manta_${SAMPLE}/results/variants/candidateSV.vcf.gz # 候选SV(未过滤)
# manta_${SAMPLE}/results/variants/candidateSmallIndels.vcf.gz # 候选小InDel
# Tumor-Normal 配对SV检测
configManta.py \
--normalBam normal.recal.bam \
--tumorBam tumor.recal.bam \
--referenceFasta Homo_sapiens_assembly38.fasta \
--runDir manta_somatic
python manta_somatic/runWorkflow.py -j 16 -m local
# SV结果统计
bcftools stats manta_${SAMPLE}/results/variants/diploidSV.vcf.gz
bcftools query -f '%CHROM\t%POS\t%INFO/SVTYPE\t%INFO/SVLEN\n' \
manta_${SAMPLE}/results/variants/diploidSV.vcf.gz | head
第七步:CNV与其他SV检测——DELLY¶
白话解释: DELLY是一个多功能的结构变异检测工具,既能检测传统的SV(缺失、倒位、易位等),也能通过读段深度(read depth)信号检测拷贝数变异(CNV)。它特别适合检测大片段的基因组扩增和缺失。
技术细节: DELLY整合了paired-end、split-read和read-depth三种信号。其CNV模块通过滑动窗口计算读段深度,与预期值比较识别拷贝数偏差。支持germline和somatic模式。
# === DELLY SV检测 ===
# Germline SV检测
delly call \
-g Homo_sapiens_assembly38.fasta \
-o ${SAMPLE}.delly.bcf \
${SAMPLE}.recal.bam
# 过滤SV
delly filter \
-t DEL \
-o ${SAMPLE}.delly.filtered.bcf \
${SAMPLE}.delly.bcf
# === DELLY CNV检测 ===
# 第一步:CNV calling
delly cnv \
-g Homo_sapiens_assembly38.fasta \
-m Homo_sapiens_assembly38.mappability.gz \
-o ${SAMPLE}.delly_cnv.bcf \
${SAMPLE}.recal.bam
# 第二步:CNV过滤
delly classify \
-o ${SAMPLE}.delly_cnv.classified.bcf \
${SAMPLE}.delly_cnv.bcf
# 转换为VCF查看
bcftools view ${SAMPLE}.delly_cnv.classified.bcf > ${SAMPLE}.delly_cnv.vcf
# === SV结果合并(多工具) ===
# 使用SURVIVOR合并不同工具的SV结果
# 准备输入文件列表
echo "manta_diploidSV.vcf" > sv_callers.txt
echo "delly_sv.vcf" >> sv_callers.txt
# 合并(允许断裂点偏差1000bp,至少2个工具支持)
SURVIVOR merge sv_callers.txt 1000 2 1 1 0 50 merged_sv.vcf
第八步:变异注释与功能预测¶
白话解释: 检测到变异后,需要知道这些变异有什么"含义"——它影响了哪个基因?改变了蛋白质吗?在人群中常见吗?与已知疾病有关吗?变异注释工具会将每个变异与基因组注释数据库比对,给出功能影响预测。
技术细节:
# === VEP 变异注释 ===
vep \
--input_file cohort.final.vcf.gz \
--output_file cohort.annotated.vcf \
--vcf \
--cache --dir_cache /data/vep_cache \
--assembly GRCh38 \
--offline \
--everything \
--fork 8 \
--force_overwrite \
--plugin CADD,whole_genome_SNVs.tsv.gz,gnomad.genomes.r4.0.indel.tsv.gz \
--plugin SpliceAI,snv=spliceai_scores.raw.snv.hg38.vcf.gz,indel=spliceai_scores.raw.indel.hg38.vcf.gz
# === SnpEff 变异注释 ===
java -Xmx8g -jar snpEff.jar \
-v GRCh38.105 \
cohort.final.vcf.gz \
> cohort.snpeff.vcf
# 统计注释结果
cat snpEff_summary.html # 查看注释统计报告
# === SV注释(AnnotSV)===
AnnotSV \
-SVinputFile merged_sv.vcf \
-genomeBuild GRCh38 \
-outputFile merged_sv.annotated \
-SVminSize 50
实战命令速查¶
# === 完整WGS流程一键脚本 ===
SAMPLE=$1
REF="Homo_sapiens_assembly38.fasta"
THREADS=32
# Step1: QC
fastp -i ${SAMPLE}_R1.fq.gz -I ${SAMPLE}_R2.fq.gz \
-o ${SAMPLE}_clean_R1.fq.gz -O ${SAMPLE}_clean_R2.fq.gz \
-h ${SAMPLE}.html --thread ${THREADS}
# Step2: Align
bwa-mem2 mem -t ${THREADS} -R "@RG\tID:${SAMPLE}\tSM:${SAMPLE}\tPL:ILLUMINA" \
${REF} ${SAMPLE}_clean_R1.fq.gz ${SAMPLE}_clean_R2.fq.gz \
| samtools sort -@ 16 -o ${SAMPLE}.sorted.bam -
# Step3: MarkDup
gatk MarkDuplicates -I ${SAMPLE}.sorted.bam -O ${SAMPLE}.markdup.bam \
-M ${SAMPLE}.dup_metrics.txt --CREATE_INDEX true
# Step4: BQSR
gatk BaseRecalibrator -I ${SAMPLE}.markdup.bam -R ${REF} \
--known-sites dbsnp.vcf.gz --known-sites mills.vcf.gz \
-O ${SAMPLE}.recal.table
gatk ApplyBQSR -I ${SAMPLE}.markdup.bam -R ${REF} \
--bqsr-recal-file ${SAMPLE}.recal.table -O ${SAMPLE}.recal.bam
# Step5: Variant Calling
gatk HaplotypeCaller -I ${SAMPLE}.recal.bam -R ${REF} \
-O ${SAMPLE}.g.vcf.gz -ERC GVCF
# Step6: SV Calling (Manta)
configManta.py --bam ${SAMPLE}.recal.bam --referenceFasta ${REF} \
--runDir manta_${SAMPLE}
python manta_${SAMPLE}/runWorkflow.py -j ${THREADS}
# Step7: CNV (DELLY)
delly cnv -g ${REF} -o ${SAMPLE}.cnv.bcf ${SAMPLE}.recal.bam
# 覆盖度统计
mosdepth -t 8 --by 500 ${SAMPLE} ${SAMPLE}.recal.bam
面试常问点¶
Q1: GATK HaplotypeCaller和DeepVariant的原理区别?¶
A: HaplotypeCaller基于局部单倍型重组装和贝叶斯概率模型:在活性区域(active region)对reads进行局部重组装生成候选单倍型,然后通过PairHMM计算读段与单倍型的似然,最终贝叶斯推断基因型。DeepVariant将比对数据编码为pileup图像,使用深度卷积神经网络分类每个位点的基因型(hom-ref/het/hom-alt)。v1.8.0起引入"小模型"机制(small model先筛选简单位点,复杂位点再用完整模型),速度提升约1.7倍。DeepVariant在benchmark中通常accuracy更高,特别是对indel的检测。
Q2: WGS中为什么需要BQSR?可以跳过吗?¶
A: BQSR校正测序仪报告的碱基质量值中的系统性偏差(如末端质量衰减、特定序列context下的质量偏差)。对GATK而言BQSR能改善HaplotypeCaller的基因型概率计算。但对DeepVariant,BQSR的增益不显著,因为CNN自行学习了质量模式。如果使用DeepVariant,Google官方也推荐跳过BQSR节省时间。
Q3: WGS数据30x覆盖度够不够?¶
A: 对germline SNV/InDel检测,30x是标准覆盖度,基因组>95%区域能达到可靠检测。但SV检测通常需要更高覆盖度(40-50x)才能获得足够的支持读段。对于体细胞变异检测(如肿瘤),肿瘤样本通常需要60-100x,正常对照30-40x。对于CNV检测,30x通常足够。
Q4: Manta和DELLY的差异与适用场景?¶
A: Manta速度快、对中等大小SV(50bp-数Mb)检测灵敏度高,特别擅长缺失和插入的检测。DELLY更全面,支持所有SV类型(DEL/DUP/INV/BND),且内置CNV检测模块。实际应用中推荐同时运行两者,用SURVIVOR取交集以提高精确度,或取并集以提高灵敏度。
Q5: VQSR与硬过滤(hard filtering)如何选择?¶
A: VQSR需要足够数量的变异来训练高斯混合模型,通常需要WGS级别(>30万SNV)。对单样本WES或小panel,变异数不够,需改用硬过滤。硬过滤推荐阈值:SNP(QD<2, FS>60, MQ<40, MQRankSum<-12.5, ReadPosRankSum<-8),InDel(QD<2, FS>200, ReadPosRankSum<-20)。
Q6: 如何评估WGS变异检测结果的质量?¶
A: 关键指标包括:(1) Ti/Tv比值(全基因组约2.0-2.1,外显子区约2.8-3.0);(2) het/hom比值(约1.5-2.0);(3) 与已知数据集的一致性(如Genome in a Bottle NA12878 truth set);(4) dbSNP已知比例(SNP>95%);(5) 变异数量在正常范围(WGS全基因组约4-5M SNP)。
Q7: T2T参考基因组相比GRCh38有什么优势?¶
A: T2T-CHM13是第一个真正完整的人类基因组参考,填补了GRCh38中约200Mb的gap(着丝粒、端粒、rDNA等重复区域)。使用T2T参考可以在以前不可及的区域检测变异,减少假阳性(GRCh38 gap周围常有比对假象),并改善高度重复区域(如segmental duplications)的变异检测。
易错点¶
1. Read Group信息缺失或错误¶
BWA比对时忘记添加@RG信息,导致后续GATK MarkDuplicates和HaplotypeCaller报错。必须确保每个BAM文件都有正确的SM(样本名)、LB(文库名)、PL(平台)字段。
2. 参考基因组版本不一致¶
比对用hg38,BQSR已知位点文件用hg19,这种版本混用会导致坐标不匹配。所有步骤必须使用同一版本的参考基因组和配套注释文件。
3. 跳过去重步骤¶
PCR-free建库理论上不需要去重,但目前大多数WGS仍使用PCR扩增建库。即使是PCR-free数据,也建议运行MarkDuplicates标记光学重复(optical duplicates)。
4. VQSR训练集不匹配¶
使用错误的训练资源文件(如hg19版本的HapMap/1000G)进行hg38的VQSR,或样本量太少导致模型收敛失败。小样本量时应改用硬过滤。
5. SV检测忽略BAM排序要求¶
SV检测工具(Manta/DELLY)要求BAM文件按坐标排序(coordinate-sorted)并建立索引。使用name-sorted BAM会导致工具报错或结果异常。
6. 忽略性别染色体的特殊处理¶
男性样本的X/Y染色体为单倍体(PAR区域除外),HaplotypeCaller默认按二倍体调用。可通过-ploidy 1参数处理,或在GATK 4.5+版本中使用新增的--ploidy-regions参数指定不同区域的倍性(如PAR区域二倍体、非PAR区域单倍体),否则X染色体变异会产生大量错误的杂合调用。
7. 多样本合并时忽略批次效应¶
不同测序批次的样本直接联合分型(joint genotyping),测序深度和文库制备差异可能引入批次效应。应检查PCA结果是否按批次而非生物学因素聚类,必要时校正。
补充知识¶
WGS数据存储与计算需求¶
- 30x WGS每个样本:FASTQ约90GB,BAM约70GB,CRAM约30GB
- 计算时间(32核):比对约2-4小时,HaplotypeCaller约6-12小时,DeepVariant约2-4小时
- 建议存储使用CRAM格式(比BAM节省30-50%空间)
新兴工具与流程¶
- DRAGEN:Illumina商业加速方案,FPGA硬件加速,全流程1小时内
- Sentieon:商业高性能替代GATK,结果一致但速度提升数倍
- Parabricks:NVIDIA GPU加速版GATK+BWA-MEM
- PEPPER-Margin-DeepVariant:长读段(ONT/PacBio)专用变异检测
- DeepVariant v1.8+:新增泛基因组感知变异检测(pangenome-aware)和小模型加速机制
质控工具推荐¶
- mosdepth:快速覆盖度统计
- Picard CollectWgsMetrics:WGS质控指标汇总
- MultiQC:多样本QC报告整合
- rtg vcfeval:VCF精确度/灵敏度benchmark
引用推荐¶
- BWA-MEM2: Vasimuddin et al., IPDPS, 2019
- GATK Best Practices: Van der Auwera & O'Connor, O'Reilly, 2020
- DeepVariant: Poplin et al., Nature Biotechnology, 2018
- Manta: Chen et al., Bioinformatics, 2016
- DELLY: Rausch et al., Bioinformatics, 2012