349_致病性变异分类ACMG标准¶
一句话说明¶
ACMG标准是遗传变异的"打分规则书"——把每个变异按证据分成5个等级(致病/可能致病/意义未明/可能良性/良性),是临床遗传报告的国际通用语言。
核心知识点¶
要点1:ACMG五级分类体系¶
白话类比:就像法庭判案——确定有罪(Pathogenic)、疑似有罪(Likely Pathogenic)、证据不够(VUS)、疑似无罪(Likely Benign)、确定无罪(Benign)。 专业解释:ACMG/AMP 2015标准定义5级: - P(Pathogenic/致病):强证据支持致病 - LP(Likely Pathogenic/可能致病):较强证据,90%+概率致病 - VUS(Variant of Uncertain Significance/意义不明):证据不足 - LB(Likely Benign/可能良性):较强证据支持良性 - B(Benign/良性):强证据支持良性
要点2:证据分类框架(28条标准)¶
白话类比:就像给一份证据清单打分——每条证据有强弱之分,积累足够的"有罪"证据才能判定致病。 专业解释:致病性证据:PVS1(无效变异)、PS1-4(强致病)、PM1-6(中等致病)、PP1-5(支持致病)。良性证据:BA1(等位基因频率很高)、BS1-4(强良性)、BP1-7(支持良性)。分类规则:P/LP需组合多条证据达到阈值,B/LB需足够良性证据,否则为VUS。
要点3:关键证据条目详解¶
白话类比:理解最常用的几张"判决书"——PVS1(基因功能破坏)、PS3(功能实验)、PM2(频率很低)。 专业解释: - PVS1(Very Strong Pathogenic):无效变异(无义突变、剪接位点、起始密码子、移码)在致病基因中。需注意:基因确实是通过该机制致病(非功能获得型) - PS3(Strong Pathogenic):体外/体内功能实验证明有害 - PM2(Moderate Pathogenic):gnomAD中频率极低(或缺失),但注意2020年ClinGen SVI降级为PM2_Supporting - PP3(Supporting Pathogenic):多种预测软件(SIFT、PolyPhen、CADD)预测有害 - BA1(Stand Alone Benign):gnomAD MAF≥5%(直接判定良性)
要点4:VUS的困境与解决¶
白话类比:VUS就像"疑似嫌疑人"——证据既不够定罪也不够无罪释放,是临床报告中最棘手的情况。 专业解释:VUS比例在WES中可达30-50%(取决于基因和疾病)。降低VUS的策略:①功能实验(升级到PS3);②更多家系数据(PP1共分离);③随时间reclassification(数据库更新);④疾病特异性VCEP标准(ClinGen专家组对特定基因细化标准,减少VUS);⑤更大人群频率数据。
要点5:ClinGen专家组对ACMG的细化更新¶
白话类比:2015年的通用规则太粗糙,不同疾病需要"专科解释"——ClinGen各疾病VCEP(专家组)不断细化每条标准的具体应用。 专业解释:ClinGen SVI工作组关键更新(2020-2024):①PM2降级为PM2_Supporting(2020);②PP3/BP4计算工具校准(2023);③PP1/BS4共分离证据具体计分规则(2023);④PP1+PP4组合上限为Strong+Supporting(2024,Biesecker等);⑤splicing变异的PVS1(RNA)特殊处理(2023)。
实战命令/代码¶
# ========== 使用InterVar自动化ACMG分类 ==========
# InterVar是目前最广泛使用的自动化ACMG分类工具
# 安装:pip install intervar 或从GitHub下载
import subprocess # 调用命令行
import pandas as pd # 数据处理
def run_intervar(annotated_vcf, output_prefix):
"""
运行InterVar自动ACMG分类
annotated_vcf: ANNOVAR注释后的VCF文件
"""
cmd = [
"python", "Intervar.py",
"-b", "hg38", # 参考基因组版本
"-i", annotated_vcf, # 输入注释VCF
"--input_type", "VCF", # 输入类型
"-o", output_prefix, # 输出前缀
"-d", "humandb/", # ANNOVAR数据库目录
"--table_annovar", "table_annovar.pl", # ANNOVAR脚本路径
"--convert2annovar", "convert2annovar.pl" # 格式转换脚本
]
result = subprocess.run(cmd, capture_output=True, text=True)
print("InterVar运行完成" if result.returncode == 0 else f"错误: {result.stderr}")
# 读取InterVar结果
def parse_intervar_results(intervar_output):
"""
解析InterVar输出,提取ACMG分类信息
"""
df = pd.read_csv(intervar_output, sep='\t', header=0)
# 提取ACMG分类列
acmg_col = [col for col in df.columns if 'InterVar' in col][0]
# 统计各等级变异数量
classification_counts = df[acmg_col].value_counts()
print("ACMG分类统计:")
for cls, count in classification_counts.items():
print(f" {cls}: {count}") # 输出各级别数量
# 提取P/LP变异
pathogenic = df[df[acmg_col].str.contains('Pathogenic', na=False)]
print(f"\n致病/可能致病变异: {len(pathogenic)}")
return df, pathogenic
# 使用示例
# run_intervar("patient.vcf", "patient_intervar")
# df, pl_variants = parse_intervar_results("patient_intervar.hg38_multianno.txt.intervar")
# ========== 手动ACMG规则应用(核心规则示例)==========
def classify_variant_acmg(variant_info):
"""
根据变异信息应用核心ACMG规则
variant_info: 字典,包含变异相关信息
"""
pathogenic_evidence = [] # 致病证据
benign_evidence = [] # 良性证据
# ===== 致病性证据检查 =====
# PVS1: 无效变异在已知致病基因中
if variant_info.get('consequence') in ['stop_gained', 'frameshift',
'splice_donor', 'splice_acceptor',
'start_lost']:
if variant_info.get('gene_known_lof_disease', False):
pathogenic_evidence.append(('PVS1', 'Very Strong')) # 最强致病证据
# PS3: 功能实验证明有害(需要实验数据)
if variant_info.get('functional_study_harmful', False):
pathogenic_evidence.append(('PS3', 'Strong')) # 强致病证据
# PM2: 人群频率极低(2020年后降为Supporting)
gnomad_af = variant_info.get('gnomad_af', 0)
if gnomad_af < 0.0001 or gnomad_af == 0: # 极低频或未见
pathogenic_evidence.append(('PM2_Supporting', 'Supporting'))
# PP3: 计算预测工具预测有害
cadd = variant_info.get('cadd_phred', 0)
if cadd >= 20:
pathogenic_evidence.append(('PP3', 'Supporting')) # 支持致病证据
# PP5: ClinVar已知致病报告(多个提交者)
clinvar_sig = variant_info.get('clinvar_significance', '')
if 'Pathogenic' in clinvar_sig:
pathogenic_evidence.append(('PP5', 'Supporting'))
# ===== 良性证据检查 =====
# BA1: 人群频率>=5%(直接良性)
if gnomad_af >= 0.05:
benign_evidence.append(('BA1', 'Stand Alone')) # 独立良性证据
# BS1: 频率高于预期(疾病频率)
elif gnomad_af >= 0.01:
benign_evidence.append(('BS1', 'Strong')) # 强良性证据
# BP4: 计算预测工具预测良性
sift = variant_info.get('sift_score', 1.0)
if sift > 0.5: # SIFT >0.5认为耐受
benign_evidence.append(('BP4', 'Supporting'))
# ===== 综合分类 =====
classification = classify_by_rules(pathogenic_evidence, benign_evidence)
return {
'pathogenic_evidence': pathogenic_evidence,
'benign_evidence': benign_evidence,
'classification': classification
}
def classify_by_rules(path_ev, benign_ev):
"""根据ACMG规则组合进行分类"""
# 简化版规则(实际分类需完整规则表)
path_strength = {'Very Strong': 4, 'Strong': 3, 'Moderate': 2, 'Supporting': 1}
# 计算致病证据总分
path_score = sum(path_strength.get(s, 0) for _, s in path_ev)
# 良性证据存在Stand Alone直接良性
if any(s == 'Stand Alone' for _, s in benign_ev):
return 'Benign (B)'
# 分类逻辑
if path_score >= 8:
return 'Pathogenic (P)' # 致病
elif path_score >= 6:
return 'Likely Pathogenic (LP)' # 可能致病
elif len(benign_ev) >= 2:
return 'Likely Benign (LB)' # 可能良性
else:
return 'VUS' # 意义未明
# ========== ClinVar查询确认已知分类 ==========
# 使用E-utilities API查询ClinVar
# 示例:查询特定变异的ClinVar记录
# 方法1:直接API查询(基于rsID)
curl -s "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?\
db=clinvar&term=rs80357906[RS]&retmax=5&retmode=json" \
| python3 -c "import json,sys; data=json.load(sys.stdin); \
print('ClinVar ID:', data['esearchresult']['idlist'])" # 输出ClinVar ID
# 方法2:使用ClinVar API搜索(推荐)
python3 << 'EOF'
import requests # HTTP请求
import json # JSON解析
# 搜索BRCA1 c.5266dupC(常见BRCA1致病变异)
url = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi"
params = {
"db": "clinvar",
"term": "BRCA1[GENE] AND 5266dupC[VARIANT]", # 搜索条件
"retmax": 5,
"retmode": "json"
}
response = requests.get(url, params=params, timeout=30)
data = response.json()
print("ClinVar搜索结果ID:", data['esearchresult']['idlist']) # 打印结果ID
EOF
面试常问点¶
★ Q1:说出ACMG的5个分类和28条规则框架。
5分类:P、LP、VUS、LB、B。28条规则分为致病组(PVS1×1 + PS1-4×4 + PM1-6×6 + PP1-5×5 = 16条)和良性组(BA1×1 + BS1-4×4 + BP1-7×7 = 12条)。记忆口诀:PVS=Very Strong(最强),PS=Strong(强),PM=Moderate(中),PP=Supporting(支持致病);BA=Stand Alone,BS=Strong良性,BP=Supporting良性。
★ Q2:VUS如何处理?报告还是不报告?
VUS在临床报告中确实需要报告,但需注明"意义未明,不建议单独用于临床决策"。处理策略:①记录在案,定期(每年)重评估;②告知患者后续数据库更新可能reclassification;③可以追加功能实验(如有研究条件);④通过患者注册(ClinVar共享)促进数据积累。临床不建议因VUS做预防性手术或干预(不同于P/LP)。
★ Q3:PM2在2020年后为什么降级?有什么影响?
PM2原本是"Moderate致病证据"(低频率=可能致病),但ClinGen SVI工作组发现:随着gnomAD数据库扩增(从数万到>730,000人),大量罕见变异在正常人群中被发现,PM2的"低频=致病"逻辑不够严格。2020年降为PM2_Supporting后,单独的低频证据权重减轻,需要配合其他证据才能升级到LP,减少了VUS被过度升级为LP的情况。
★ Q4:PP3(计算预测)的具体规则是什么?哪些工具算有效?
ClinGen 2023年PP3/BP4校准更新:推荐使用经过校准的综合预测工具,特别是BayesDel、REVEL(missense综合分)。REVEL>0.932→PP3 Strong,REVEL 0.644-0.931→PP3 Moderate/Supporting。CADD>25→PP3 Supporting。注意:多个预测工具预测同一方向不叠加(不能用5个预测工具得5个PP3),只能算1个PP3/BP4。
★ Q5:PVS1的应用条件是什么?所有无义突变都适用吗?
PVS1(无效变异致病)的三个前提条件:①基因的致病机制是LOF(功能丧失),而非功能获得(GOF,如FGFR3在软骨发育不全中是GOF,无义突变反而保护);②变异不位于最后外显子或距终止密码子<50bp(避免NMD逃逸,可能只影响部分蛋白);③基因没有大量良性LOF变异记录(提示LOF能被耐受)。分析时需查询gnomAD LOF constraints(pLI/LOEUF值评估基因对LOF的敏感性)。
速查表¶
| 证据代码 | 强度 | 含义 | 常见应用 |
|---|---|---|---|
| PVS1 | Very Strong | 无效变异(LOF基因) | 无义、移码、剪接 |
| PS1 | Strong | 同氨基酸改变已知致病 | 相同位置不同核苷酸改变 |
| PS3 | Strong | 功能实验有害 | 体外功能研究 |
| PM2 | Supporting* | 人群极低频 | gnomAD未见或极低频 |
| PP3 | Supporting | 计算预测有害 | REVEL/CADD/SIFT |
| BA1 | Stand Alone | 人群频率≥5% | gnomAD AF≥5% |
| BS1 | Strong | 人群频率高于预期 | gnomAD AF≥1% |
*注:PM2在2020年ClinGen SVI降为Supporting
| 分类组合示例 | 结论 |
|---|---|
| PVS1 + PS3 | Pathogenic |
| PVS1 + PM2 | Likely Pathogenic |
| PS3 + PP3×2 | Likely Pathogenic |
| PP3 alone | VUS |
| BA1 | Benign |
| BS1 + BP4 | Likely Benign |