第2章 变异解读的基本流程:从原始数据到临床报告的完整步骤梳理

咱们今天聊聊变异解读的完整流程。从测序仪吐出来的原始数据,到最终交给临床医生的报告,中间要过好几道关卡。我处理过不少家系WES数据,通常一个样本从下机到出报告,需要3-5个工作日才能走完。你想想看,这里面每一步都可能踩坑。

第一步:数据接收与质量评估(QC)

原始数据到手,第一件事不是急着找变异,而是先做质量评估。我见过不少新手,数据还没检查就直接跑流程,结果白跑半天。为什么?因为有的样本测序深度不够,有的接头污染严重,这些都会直接影响后续结果。

QC主要看这几个指标:

  • 碱基质量分数(Q20/Q30):一般要求Q20 > 90%,Q30 > 85%
  • GC含量:偏离理论值太多,可能提示污染
  • 接头污染比例:残留接头会干扰比对
  • 重复率:PCR扩增导致的高重复率需要留意

我自己习惯用FastQC做初筛,然后再用MultiQC汇总多个样本。这是一个典型的命令流程:

# 运行FastQC
fastqc sample_R1.fastq.gz sample_R2.fastq.gz -o qc_output/

# 使用MultiQC汇总
multiqc qc_output/ -o multiqc_report/
提示:做家系数据时,我会额外检查父母-子样本的性别标记是否与实际一致。有次我在项目中遇到过样本标签弄混的情况,幸亏做了这个检查才及时发现。

第二步:比对与排序

QC通过后,就要把reads比对到参考基因组。我推荐用BWA-MEM,它处理短读长和长读长都表现稳定。比对后别忘了用Samtools排序并建立索引。

# BWA比对
bwa mem -t 8 hg38.fasta sample_R1.fastq.gz sample_R2.fastq.gz > aligned.sam

# 转换为BAM并排序
samtools view -bS aligned.sam | samtools sort -o sorted.bam
samtools index sorted.bam

比对完成后,需要评估比对质量:

指标 理想值 警告阈值
比对率 > 95% < 90%
覆盖深度 > 30X < 20X
覆盖均一性 > 0.8 < 0.6
注意:比对率低不一定全是样本问题,如果是重复区域多的基因(比如HLA区域),比对率偏低是正常的。但如果是全基因组范围都低,那就要检查是否有污染或者参考基因组选择是否合适。

第三步:变异识别(Variant Calling)

这一步是核心,也是大家最关心的。我个人习惯用GATK4的最佳实践流程,它比旧版本更稳定,也更好处理。

GATK流程分两步走:

  1. HaplotypeCaller:产生gVCF文件
  2. GenotypeGVCFs:合并多个样本并做联合基因分型
# 单样本模式
gatk HaplotypeCaller -R hg38.fasta -I sorted.bam -O sample.g.vcf.gz

# 联合基因分型(家系或群体模式)
gatk GenomicsDBImport -V sample1.g.vcf.gz -V sample2.g.vcf.gz --genomicsdb-workspace-path my_database
gatk GenotypeGVCFs -R hg38.fasta -V gendb://my_database -O cohort.vcf.gz

关键点:家系数据我建议用联合模式,能显著提高稀有变异的检出率。但群体数据超过100个样本时,联合模式的计算资源消耗太大,建议用单样本模式分别跑。

等一下,还有个容易忽略的地方——硬过滤。GATK会给每个变异打上质量标签,我习惯用这套参数做初步过滤:

# SNP硬过滤
gatk VariantFiltration -V cohort.vcf.gz -O filtered.vcf.gz \
    --filter-name "QD" --filter-expression "QD < 2.0" \
    --filter-name "FS" --filter-expression "FS > 60.0"

第四步:变异注释与过滤

拿到变异列表后,你会发现数量多得吓人。全外显子组数据一般有2-5万个变异,但真正有临床意义的可能只有几个。怎么缩小范围?靠注释和过滤。我一般用ANNOVAR或者VEP来做注释。

# 使用ANNOVAR进行注释
table_annovar.pl filtered.vcf.gz humandb/ -buildver hg38 \
    -out myanno -remove -protocol refGene,cytoBand,clinvar_20220320 \
    -operation g,r,f -nastring . -vcfinput

注释完成后,我会根据这几层过滤:

  • 频率过滤:gnomAD东亚人群频率 < 0.01(隐性遗传病甚至要 < 0.001)
  • 功能过滤:优先保留外显子区、剪接区的变异
  • 蛋白影响过滤:优先关注错义、无义、移码等改变
  • 数据库匹配:ClinVar、HGMD等已有记录的变异
避坑指南:我曾经在过滤时把频率阈值设得太严格(< 0.0001),结果把一个已知的致病位点给过滤掉了。后来才发现那个变异在gnomAD的某个亚群中频率偏高,但整体人群频率极低。所以我建议:频率过滤最好分人群做,至少区分东亚、欧洲、非洲三大群体。

第五步:解读与报告撰写

这一步才是真正的难点,也是各位ACMG解读专家需要发挥的领域。过滤后的候选变异,要根据ACMG标准逐条评估。

我的工作流程是:

  1. 确认变异的人群频率与ACMG的PM2规则匹配
  2. 检查变异是否在致病性数据库(ClinVar、HGMD)中有记录
  3. 看功能预测软件(SIFT、PolyPhen、CADD)的评分
  4. 如果有家系数据,检查是否与疾病表型分离
  5. 最后,把所有证据汇总,做出分类判定

举个简单的例子,比如你在MEFV基因上发现一个错义变异,频率极低,且在多个家系中都与家族性地中海热表型分离。那这个变异很可能就是致病性的。

特别注意:解读时要注意等位基因异质性问题。如果某个变异常规出现在控制样本中,但从未在病例中被报道,你就要谨慎了。我遇到过几次这种情况,最后发现是该基因的假基因区域导致的比对错误。

最终报告应该包含什么?

临床报告要简明易懂,但不能丢失关键信息。一份完整的变异解读报告通常包括:

部分 内容
基本信息 样本编号、送检单位、检测目的
方法学 测序平台、分析流程版本、参考基因组
结果 候选变异列表(基因、转录本、HGVS命名、分类)
解读 每个变异对应的ACMG证据和分类依据
建议 临床管理建议、是否需要验证或家系验证
警告:报告中的HGVS命名必须核对两遍以上。我见过因为少写了一个碱基而导致临床误解的情况。如果你用的注释工具版本不同,命名可能会有差异,建议直接使用VEP或ANNOVAR的官方格式。

好了,这就是完整的流程。从原始数据到报告,每一步都要用心。说实话,这个过程没有捷径,只能一步一步来。