遗传变异致病性预测¶
一句话概述¶
利用CADD、REVEL、AlphaMissense和SpliceAI等计算工具对遗传变异进行致病性评估和优先级排序,是临床基因组学中从海量变异中筛选致病突变的核心分析步骤。
核心知识点表格¶
| 知识点 | 关键内容 | 常用工具 |
|---|---|---|
| 综合评分 | 整合多种特征的meta-predictor | CADD, REVEL, MetaSVM |
| 错义变异 | 氨基酸替换的功能影响预测 | AlphaMissense, PolyPhen-2, SIFT |
| 剪接变异 | 剪接位点破坏/创建预测 | SpliceAI, MaxEntScan |
| 保守性 | 进化保守位点更可能致病 | phyloP, phastCons, GERP++ |
| 蛋白结构 | 结构对变异功能影响 | AlphaFold+变异分析 |
| 群体频率 | 致病变异通常在群体中罕见 | gnomAD, ClinVar |
| 临床分级 | ACMG/AMP五级分类标准 | InterVar, Franklin |
| 基因不耐受性 | 基因对LoF变异的耐受程度 | pLI, LOEUF, s_het |
各步骤详解¶
第一步:理解变异致病性评估框架¶
白话解释: 每个人的基因组与参考序列相比大约有400-500万个变异。其中绝大多数是良性的,只有极少数可能导致疾病。致病性预测工具就像"筛子",帮助从海量变异中筛选出最可能致病的候选变异。这些工具利用进化保守性、蛋白质功能、群体频率等多维信息进行综合评分。
技术细节: - ACMG/AMP标准:5级分类(致病、可能致病、意义不明、可能良性、良性) - 28条证据标准:PM/PP/BA/BS/PVS等 - 计算预测只是证据之一(PP3/BP4),不能单独定性 - 不同类型变异需要不同工具:错义→REVEL/AlphaMissense,剪接→SpliceAI,同义→SpliceAI+保守性
第二步:CADD综合致病性评分¶
白话解释: CADD (Combined Annotation Dependent Depletion) 是最广泛使用的综合评分工具。最新版本v1.7(2024年发表于Nucleic Acids Research)整合了超过100种注释特征(保守性、蛋白影响、调控功能等),包括新增的蛋白语言模型(Meta ESM-1v)和调控区深度卷积神经网络预测,用机器学习模型区分"有害变异"(已被自然选择清除的)和"中性变异"。PHRED-scaled分数越高越可能有害,通常>20认为"可能有害",>30认为"很可能有害"。
技术细节: - 训练数据:模拟的有害变异(derived alleles) vs 模拟的中性变异 - 特征包括:SIFT, PolyPhen, GERP++, phyloP, GC content, splice site distance, ESM-1v蛋白语言模型分数, Zoonomia保守性等 - PHRED分数:-10*log10(rank/total), 20表示top 1%, 30表示top 0.1% - 适用于所有类型变异(SNV+InDel),包括非编码区 - 官方网站:https://cadd.gs.washington.edu/ 或 https://cadd.bihealth.org/
代码示例:
# 方法1: 使用CADD在线服务
# https://cadd.gs.washington.edu/score
# 上传VCF文件获取评分
# 方法2: 本地安装CADD
# 下载预计算分数(全基因组SNV约80GB)
wget https://krishna.gs.washington.edu/download/CADD/v1.7/GRCh38/whole_genome_SNVs.tsv.gz
wget https://krishna.gs.washington.edu/download/CADD/v1.7/GRCh38/whole_genome_SNVs.tsv.gz.tbi
# 查询特定变异的CADD分数
tabix whole_genome_SNVs.tsv.gz 1:942451-942451
# 输出: chr, pos, ref, alt, RawScore, PHRED
# 方法3: 使用CADD脚本评分自定义变异
git clone https://github.com/kircherlab/CADD-scripts.git
cd CADD-scripts
# 安装依赖和下载数据
./install.sh
# 对VCF文件评分
./CADD.sh -g GRCh38 -v v1.7 -o scored_variants.tsv.gz input.vcf
# 解析CADD分数
zcat scored_variants.tsv.gz | awk '$6 >= 20' > cadd_deleterious.tsv
# PHRED >= 20: top 1% most deleterious
# PHRED >= 30: top 0.1%
# 方法4: 使用Python/R注释
# Python
import pandas as pd
from pysam import TabixFile
cadd = TabixFile("whole_genome_SNVs.tsv.gz")
records = cadd.fetch("1", 942450, 942451)
for r in records:
fields = r.split("\t")
print(f"Chr:{fields[0]} Pos:{fields[1]} Ref:{fields[2]} Alt:{fields[3]} PHRED:{fields[5]}")
第三步:REVEL错义变异评分¶
白话解释: REVEL专门针对错义变异(氨基酸替换),它集成了13种独立预测工具的结果(包括SIFT、PolyPhen-2、MutationAssessor等),用随机森林训练了一个meta-predictor。比任何单一工具都更准确。分数0-1,越高越可能致病,通常>0.5作为初步筛选阈值。
代码示例:
# 下载REVEL预计算分数
wget https://sites.google.com/site/revelgenomics/downloads/revel-v1.3_all_chromosomes.zip
unzip revel-v1.3_all_chromosomes.zip
# 格式: chr, hg19_pos, grch38_pos, ref, alt, aaref, aaalt, REVEL
# 查询特定变异
zcat revel_all_chr.csv.gz | awk -F',' '$1=="1" && $3==942451'
# 批量注释VCF文件(使用VEP + REVEL插件)
vep --input_file variants.vcf \
--output_file annotated.vcf \
--format vcf \
--vcf \
--assembly GRCh38 \
--cache \
--plugin REVEL,revel_scores.tsv.gz \
--plugin CADD,whole_genome_SNVs.tsv.gz \
--plugin SpliceAI,snv=spliceai_scores.raw.snv.hg38.vcf.gz,indel=spliceai_scores.raw.indel.hg38.vcf.gz \
--everything \
--fork 8
# 解析VEP输出,提取高分变异
grep -v "^#" annotated.vcf | \
awk '{if ($0 ~ /REVEL=/) {match($0, /REVEL=([0-9.]+)/, a); if (a[1] > 0.5) print}}' \
> high_revel_variants.vcf
# R中使用REVEL注释
library(tidyverse)
# 读取REVEL数据
revel <- read_csv("revel_all_chr.csv.gz",
col_names=c("chr","hg19_pos","grch38_pos","ref","alt",
"aaref","aaalt","REVEL"))
# 读取候选变异
variants <- read_tsv("candidate_variants.tsv")
# 合并注释
annotated <- variants %>%
left_join(revel, by=c("chr","pos"="grch38_pos","ref","alt"))
# 筛选高致病性变异
# ClinGen校准阈值(Pejaver et al., 2022, AJHG):
# PP3_Supporting: >= 0.644
# PP3_Moderate: >= 0.773
# PP3_Strong: >= 0.932
# BP4_Moderate: <= 0.183
pathogenic <- annotated %>%
filter(REVEL >= 0.644) %>% # ClinGen PP3_Supporting阈值
arrange(desc(REVEL))
cat("REVEL >= 0.644 (PP3 Supporting) 的变异数:", nrow(pathogenic), "\n")
第四步:AlphaMissense深度学习预测¶
白话解释: AlphaMissense是Google DeepMind开发的最新工具,利用AlphaFold的蛋白质语言模型来预测错义变异的致病性。它学习了蛋白质序列进化和结构知识,不需要显式的结构特征输入。在最新benchmark中表现优于REVEL和CADD。
代码示例:
# 下载AlphaMissense预计算分数
# https://zenodo.org/record/8208688
# 文件: AlphaMissense_hg38.tsv.gz (约4.5GB)
import pandas as pd
# 读取AlphaMissense分数
am_scores = pd.read_csv("AlphaMissense_hg38.tsv.gz",
sep="\t", comment="#",
names=["CHROM","POS","REF","ALT","genome","uniprot_id",
"transcript_id","protein_variant","am_pathogenicity","am_class"])
# am_class: 'likely_pathogenic', 'likely_benign', 'ambiguous'
# am_pathogenicity: 0-1 连续分数
#
# 重要阈值说明:
# - 0.564 = 原始论文默认阈值(90%精度),但ClinGen校准表明此阈值
# 未达到PP3 Supporting的证据强度,不建议直接用于临床分类
# - ClinGen校准阈值(Bergquist et al., Genetics in Medicine, 2025):
# PP3_Supporting: >= 0.719
# PP3_Moderate: >= 0.898
# PP3_Strong: >= 0.978
# BP4_Moderate: <= 0.070(较少变异达到此区间)
# - 临床变异分类应使用ClinGen校准阈值,而非原始论文阈值
# 查询特定变异
query = am_scores[(am_scores["CHROM"]=="chr1") &
(am_scores["POS"]==942451)]
print(query)
# 统计全基因组分类分布
print(am_scores["am_class"].value_counts())
# likely_benign: ~50M
# likely_pathogenic: ~18M
# ambiguous: ~22M
# 筛选致病候选
pathogenic_am = am_scores[am_scores["am_class"] == "likely_pathogenic"]
# 与VCF文件合并
import cyvcf2
vcf = cyvcf2.VCF("patient_variants.vcf.gz")
results = []
for variant in vcf:
chrom = f"chr{variant.CHROM}"
pos = variant.POS
ref = variant.REF
alt = variant.ALT[0]
match = am_scores[(am_scores["CHROM"]==chrom) &
(am_scores["POS"]==pos) &
(am_scores["REF"]==ref) &
(am_scores["ALT"]==alt)]
if not match.empty:
results.append({
"variant": f"{chrom}:{pos}{ref}>{alt}",
"am_score": match.iloc[0]["am_pathogenicity"],
"am_class": match.iloc[0]["am_class"],
"protein_change": match.iloc[0]["protein_variant"]
})
results_df = pd.DataFrame(results)
print(results_df.sort_values("am_score", ascending=False).head(20))
第五步:SpliceAI剪接变异预测¶
白话解释: SpliceAI是一个深度学习模型,专门预测变异是否会影响RNA剪接。它能检测变异对附近剪接位点(供体/受体)的影响,包括现有剪接位点的破坏和新剪接位点的创建。对编码区和非编码区变异都适用。
代码示例:
# 安装SpliceAI
pip install spliceai
# 使用预计算分数(推荐,大约30GB)
# 下载地址: https://basespace.illumina.com/s/otSPW8hnhaZR
# spliceai_scores.raw.snv.hg38.vcf.gz
# spliceai_scores.raw.indel.hg38.vcf.gz
# 查询预计算分数
tabix spliceai_scores.raw.snv.hg38.vcf.gz chr1:942451-942451
# 或实时计算(适合少量变异)
spliceai -I input.vcf \
-O output.vcf \
-R /ref/hg38.fa \
-A grch38 \
-D 500 # 考虑距离剪接位点500bp范围
# 输出VCF中的SpliceAI注释:
# SpliceAI=ALLELE|SYMBOL|DS_AG|DS_AL|DS_DG|DS_DL|DP_AG|DP_AL|DP_DG|DP_DL
# DS: Delta Score (0-1) DP: Delta Position (距离)
# AG: Acceptor Gain, AL: Acceptor Loss
# DG: Donor Gain, DL: Donor Loss
# 解读:
# DS >= 0.2: 可能影响剪接
# DS >= 0.5: 很可能影响剪接
# DS >= 0.8: 高置信度影响剪接
# Python中使用SpliceAI
from keras.models import load_model
import numpy as np
# 或更实用地解析预计算结果
import cyvcf2
vcf = cyvcf2.VCF("output_spliceai.vcf.gz")
splice_variants = []
for variant in vcf:
info = variant.INFO.get("SpliceAI")
if info:
fields = info.split("|")
allele, gene = fields[0], fields[1]
ds_ag, ds_al, ds_dg, ds_dl = [float(x) for x in fields[2:6]]
max_ds = max(ds_ag, ds_al, ds_dg, ds_dl)
if max_ds >= 0.2:
splice_variants.append({
"chrom": variant.CHROM,
"pos": variant.POS,
"ref": variant.REF,
"alt": variant.ALT[0],
"gene": gene,
"max_delta_score": max_ds,
"acceptor_gain": ds_ag,
"acceptor_loss": ds_al,
"donor_gain": ds_dg,
"donor_loss": ds_dl
})
splice_df = pd.DataFrame(splice_variants)
print(f"影响剪接的变异: {len(splice_df)}")
print(splice_df.sort_values("max_delta_score", ascending=False).head(10))
第六步:整合评估与ACMG分类¶
白话解释: 单一工具的预测不够可靠,需要整合多种证据。ACMG/AMP标准提供了系统的变异分类框架,结合计算预测(PP3/BP4)、群体频率(BA1/PM2)、功能研究(PS3/BS3)等证据综合判断。
代码示例:
# 综合变异注释与分级
import pandas as pd
def classify_variant(row):
"""简化的变异分级逻辑"""
evidence = {"pathogenic": [], "benign": []}
# 1. 群体频率
if row.get("gnomAD_AF", 0) > 0.05:
evidence["benign"].append("BA1") # 良性, standalone
elif row.get("gnomAD_AF", 0) < 0.0001:
evidence["pathogenic"].append("PM2") # 罕见
# 2. 计算预测(ClinGen校准阈值,Pejaver et al., 2022)
# REVEL PP3: >=0.644(Supporting), >=0.773(Moderate), >=0.932(Strong)
# REVEL BP4: <=0.183(Moderate), <=0.016(Strong)
if row.get("REVEL", 0) >= 0.932:
evidence["pathogenic"].append("PP3_Strong")
elif row.get("REVEL", 0) >= 0.773:
evidence["pathogenic"].append("PP3_Moderate")
elif row.get("REVEL", 0) >= 0.644:
evidence["pathogenic"].append("PP3") # Supporting
elif row.get("REVEL", 0) <= 0.183:
evidence["benign"].append("BP4") # Moderate
# 3. 蛋白截断变异
if row.get("consequence") in ["stop_gained", "frameshift"]:
if row.get("pLI", 0) > 0.9: # 基因对LoF不耐受
evidence["pathogenic"].append("PVS1")
# 4. ClinVar已知
if row.get("ClinVar_class") == "Pathogenic":
evidence["pathogenic"].append("PS1_like")
# 5. SpliceAI
if row.get("SpliceAI_max", 0) > 0.5:
evidence["pathogenic"].append("PP3_splice")
# 简化分类(实际应遵循ACMG完整规则)
path_count = len(evidence["pathogenic"])
benign_count = len(evidence["benign"])
if "BA1" in evidence["benign"]:
return "Benign"
elif "PVS1" in evidence["pathogenic"] and path_count >= 2:
return "Pathogenic"
elif path_count >= 3:
return "Likely_Pathogenic"
elif benign_count >= 2:
return "Likely_Benign"
else:
return "VUS"
# 应用分级
variants_df["ACMG_class"] = variants_df.apply(classify_variant, axis=1)
print(variants_df["ACMG_class"].value_counts())
# 使用InterVar自动ACMG分类
# pip install intervar
# 或命令行:
python InterVar.py \
-b hg38 \
-i input.vcf \
--input_type=VCF \
-o intervar_output \
-d /db/intervar/
# 使用VEP + 多插件一站式注释
vep -i input.vcf -o annotated.vcf --vcf --assembly GRCh38 --cache \
--plugin CADD,cadd_snvs.tsv.gz \
--plugin REVEL,revel.tsv.gz \
--plugin SpliceAI,snv=spliceai_snv.vcf.gz,indel=spliceai_indel.vcf.gz \
--plugin AlphaMissense,file=AlphaMissense.tsv.gz \
--plugin gnomADc,gnomad.genomes.vcf.gz \
--everything --fork 8
实战命令¶
#!/bin/bash
# === 变异致病性评估完整流程 ===
VCF="patient_wes.vcf.gz"
REF="/ref/hg38.fa"
THREADS=8
# 1. VEP注释(一站式)
vep -i $VCF -o vep_annotated.vcf --vcf --assembly GRCh38 --cache \
--plugin CADD,cadd.tsv.gz \
--plugin REVEL,revel.tsv.gz \
--plugin SpliceAI,snv=spliceai_snv.vcf.gz,indel=spliceai_indel.vcf.gz \
--sift b --polyphen b --af_gnomade --everything --fork $THREADS
# 2. 过滤候选致病变异
# 保留: 罕见(AF<0.01) + 蛋白影响 + 高CADD/REVEL
bcftools query -f '%CHROM\t%POS\t%REF\t%ALT\t%INFO/CSQ\n' vep_annotated.vcf | \
python3 filter_pathogenic.py > candidate_pathogenic.tsv
# 3. InterVar ACMG分级
python InterVar.py -b hg38 -i $VCF --input_type=VCF -o acmg_classified
面试常问点¶
Q1: CADD、REVEL和AlphaMissense各自的优势和适用范围? A: CADD(v1.7):适用范围最广(编码+非编码+InDel),v1.7新增蛋白语言模型和调控区CNN,综合性强但对错义变异不是最准。REVEL:专注错义变异,集成13种工具,ClinGen推荐的四个PP3/BP4工具之一(另三个为BayesDel、MutPred2、VEST4)。AlphaMissense:DeepMind开发,利用AlphaFold蛋白语言模型,ClinGen 2024年校准后也可达Strong级别PP3证据,但只覆盖错义变异。注意:ClinGen要求每个实验室/基因预先选定一个工具使用,不建议多工具取最高分。
Q2: 为什么计算预测不能单独决定变异分类? A: 虽然ClinGen 2022年校准后PP3/BP4可达Strong级别证据(不再限于Supporting),但计算预测仍不能单独定性。原因:1)所有工具都有假阳性/假阴性;2)同一变异只能使用一个工具的PP3/BP4证据,不能叠加多个工具;3)训练数据有偏(常见基因过度代表);4)不考虑基因型-表型关联和遗传模式;5)ACMG分类需要多条独立证据的组合才能达到Pathogenic/Likely Pathogenic。必须结合临床表型、家系共分离、功能实验等多方面证据。
Q3: SpliceAI的delta score如何解读? A: Delta score = 变异引起的剪接概率变化(0-1)。分四类:供体/受体 × 获得/丧失。≥0.2为可能影响,≥0.5为很可能,≥0.8为高置信度。注意:远离剪接位点的深度内含子变异也可能有高分(创建新剪接位点)。同一变异可能同时丧失旧位点和获得新位点。
Q4: gnomAD在变异解读中的作用? A: gnomAD v4.1(2024年发布)包含约73万外显子组和7.6万全基因组(共约80.7万个体),比v2/v3合计大5倍。核心用途:1)频率>5%的变异几乎不致显性疾病(BA1证据);2)罕见变异(AF<0.01%)更可能致病(PM2,注意ClinGen已建议将PM2降级为Supporting);3)pLI/LOEUF评估基因对LoF的不耐受性(v4引入转录本级别constraint指标);4)区分人群特异多态性;5)v4新增GroupMax Filtering Allele Frequency (FAF)替代旧版PopMax。
Q5: 基因pLI/LOEUF分数的含义? A: pLI (probability of LoF intolerance): 基因对功能丧失变异不耐受的概率。pLI>0.9表示该基因的LoF变异被强烈选择清除,LoF很可能致病。LOEUF (LoF observed/expected upper fraction): 更新的指标,越低越不耐受。LOEUF<0.35的基因LoF变异高致病风险。
易错点¶
单一工具定性:只用一个工具的分数决定致病性是错误的。必须多工具交叉验证+临床综合判断。
忽略基因组版本:CADD/REVEL/SpliceAI有GRCh37和GRCh38两个版本,混用会导致注释错误。
对VUS的过度解读:大量变异被分类为VUS(意义不明),不能被当作致病或良性处理。
遗传模式忽略:AR疾病中杂合LoF变异不致病(需要双等位基因变异);AD疾病中de novo变异权重更高。
非编码变异被忽略:大部分变异在非编码区,CADD能评分但不如编码区可靠。调控区变异需要特殊工具(RegulomeDB、DANN)。
群体频率数据库选择不当:gnomAD不含严重早发疾病患者,但含有迟发/隐性携带者。对于晚发病,频率阈值需要更宽松。
补充知识¶
预测工具推荐组合¶
错义变异: REVEL(>=0.644) 或 AlphaMissense(>=0.719) + CADD(>25)
注意:ClinGen要求每个实验室/基因预先选定一个工具,不能混用取最高分
截断变异: pLI(>0.9)/LOEUF(<0.35) + NMD预测 + 最后外显子规则
剪接变异: SpliceAI(>0.5) + MaxEntScan + dbscSNV
非编码: CADD(>15) + DANN + RegulomeDB + ENCODE注释
同义变异: SpliceAI + 密码子使用频率变化 + ESE/ESS影响
ACMG证据强度与计算工具¶
| 证据 | 强度 | 对应工具/数据源 |
|---|---|---|
| PVS1 | Very Strong | LoF + pLI>0.9/LOEUF<0.35 |
| PS1 | Strong | ClinVar同位置已知致病 |
| PM1 | Moderate | 热点区域/功能域 |
| PM2 | Supporting* | gnomAD AF<0.01%(*ClinGen建议降级为Supporting) |
| PP3 | Supporting→Strong | REVEL: >=0.644(Sup), >=0.773(Mod), >=0.932(Str) |
| PP3 | Supporting→Strong | AlphaMissense: >=0.719(Sup), >=0.898(Mod), >=0.978(Str) |
| BA1 | Standalone | gnomAD AF>5% |
| BP4 | Supporting→Strong | REVEL: <=0.183(Mod), <=0.016(Str) |
| BP7 | Supporting | 同义+无剪接影响 |
注:PP3/BP4不再限于Supporting,ClinGen 2022年校准后可达Strong(Pejaver et al., AJHG 2022)。 2024年Bergquist等进一步校准了AlphaMissense、ESM1b、VARITY三个新工具。