344_遗传病致病变异筛选流程¶
一句话说明¶
从测序数据中找出"真正导致遗传病的那个变异"——从几百万个基因组变异里层层过滤,最终锁定致病候选,是临床基因组学的核心工作流程。
核心知识点¶
要点1:为什么需要变异筛选?¶
白话类比:测序产生的数据就像一本有300万个"差异"的字典,绝大多数差异是正常个体变异,找到其中那几个真正"出错"的字,就是筛选的任务。 专业解释:全基因组测序平均产生4-5百万个SNV/Indel,全外显子测序约8-10万个。通过频率过滤、功能预测、遗传模式分析等步骤,最终锁定1-10个候选致病变异。
要点2:频率过滤(人群频率)¶
白话类比:如果10000个健康人中有1000人带着这个变异,它大概率是正常的,不会是罕见病的原因。 专业解释:使用gnomAD(>730,000人)数据库过滤高频变异。常用阈值:罕见病 MAF < 0.001(0.1%);显性遗传病更严格,MAF < 0.0001。注意使用人群匹配频率(亚洲人vs欧洲人)。
要点3:功能注释与预测¶
白话类比:变异落在基因的哪个"重要部位"?会不会破坏蛋白质功能? 专业解释:功能注释工具:ANNOVAR、VEP(Ensembl)。功能预测评分:SIFT(< 0.05 = 有害)、PolyPhen-2(> 0.908 = 可能有害)、CADD(> 20 = 前1%有害变异)、AlphaMissense(2023年新工具,精度更高)。
要点4:遗传模式过滤¶
白话类比:根据疾病的遗传规律来筛选——显性病需要杂合变异,隐性病需要两个等位都异常。 专业解释:常见遗传模式:①常染色体显性(AD):杂合变异,亲本之一携带;②常染色体隐性(AR):纯合或复合杂合,三人组分析(Trio);③X连锁:根据性别判断。工具:SolveSpace、Phenolyzer。
要点5:表型优先级排序¶
白话类比:已知患者的症状,反推"哪些基因变异才能解释这些症状"——用症状来帮助缩小候选范围。 专业解释:使用HPO(人类表型本体)编码患者症状,工具Exomiser整合表型相似性+基因变异优先级排序,给每个候选变异打分,同时考虑基因是否有已知遗传病关联(OMIM数据库)。
实战命令/代码¶
# ========== 第一步:变异注释(ANNOVAR)==========
# 下载ANNOVAR数据库(需要注册)
# perl annotate_variation.pl -buildver hg38 -downdb -webfrom annovar \
# refGene humandb/
# 运行ANNOVAR多库注释
perl table_annovar.pl \
input.vcf \ # 输入VCF文件
humandb/ \ # 数据库目录
-buildver hg38 \ # 参考基因组版本
-out annotated_result \ # 输出前缀
-remove \ # 删除中间文件
-protocol refGene,gnomad41_genome,clinvar_20240611,dbnsfp47a \ # 注释数据库
-operation gx,f,f,f \ # 操作类型:基因/频率/频率/频率
-nastring . \ # 缺失值填充
-vcfinput # 输入为VCF格式
# ========== 第二步:频率过滤 + 功能过滤 ==========
import pandas as pd # 数据框处理
# 读取ANNOVAR注释结果
df = pd.read_csv("annotated_result.hg38_multianno.txt", sep='\t', low_memory=False)
print(f"原始变异数量: {len(df)}") # 初始变异总数
# 步骤1:保留外显子区域变异
df = df[df['Func.refGene'].isin(['exonic', 'splicing'])]
print(f"外显子/剪接变异: {len(df)}") # 过滤后数量
# 步骤2:过滤同义突变(不改变氨基酸的变异)
df = df[~df['ExonicFunc.refGene'].isin(['synonymous SNV'])]
print(f"非同义变异: {len(df)}")
# 步骤3:人群频率过滤(MAF < 0.001)
# 将频率列转为数值型,'.'转为NaN
df['AF_gnomad'] = pd.to_numeric(df['AF'], errors='coerce')
# 保留低频或未见变异(gnomAD)
df = df[(df['AF_gnomad'] < 0.001) | df['AF_gnomad'].isna()]
print(f"低频变异: {len(df)}")
# 步骤4:功能预测有害(CADD > 20)
df['CADD'] = pd.to_numeric(df['CADD_phred'], errors='coerce')
df_candidate = df[df['CADD'] >= 20]
print(f"CADD>=20候选变异: {len(df_candidate)}") # 最终候选数
# ========== 第三步:ClinVar致病性注释 ==========
import re # 正则表达式
def parse_clinvar(clnsig):
"""解析ClinVar临床意义字段"""
if pd.isna(clnsig) or clnsig == '.':
return 'Unknown' # 无记录
# 标记致病变异
pathogenic_terms = ['Pathogenic', 'Likely_pathogenic',
'Pathogenic/Likely_pathogenic']
for term in pathogenic_terms:
if term in str(clnsig):
return 'Pathogenic' # 致病或可能致病
return 'Other' # 其他分类
# 应用ClinVar解析
df_candidate['ClinVar_class'] = df_candidate['CLNSIG'].apply(parse_clinvar)
# 优先展示ClinVar已知致病变异
priority = df_candidate[df_candidate['ClinVar_class'] == 'Pathogenic']
print(f"ClinVar致病变异: {len(priority)}")
# ========== 第四步:Exomiser表型驱动排序 ==========
# 准备Exomiser配置文件
cat > exomiser_config.yml << 'EOF'
analysis:
vcf: patient.vcf.gz # 输入VCF
proband: PATIENT_ID # 先证者样本ID
ped: family.ped # 家系系谱文件(三人组用)
hpoIds: # HPO表型编码(从patient症状得到)
- HP:0001250 # 癫痫
- HP:0000252 # 头围减小
- HP:0001263 # 整体发育迟缓
analysisMode: FULL # 全面分析模式
inheritanceModes:
AUTOSOMAL_DOMINANT: 0.001 # 显性遗传频率阈值
AUTOSOMAL_RECESSIVE: 0.001 # 隐性遗传频率阈值
outputOptions:
outputFormats: [TSV_GENE, TSV_VARIANT, HTML] # 输出格式
numGenes: 20 # 输出前20个候选基因
EOF
# 运行Exomiser
java -jar exomiser-cli-14.0.0.jar \
--analysis exomiser_config.yml \ # 配置文件
--output results/ # 结果目录
面试常问点¶
★ Q1:WES变异筛选的标准流程是什么?按步骤说。
①质控→②比对(BWA)→③变异检测(GATK HaplotypeCaller)→④注释(VEP/ANNOVAR)→⑤频率过滤(gnomAD MAF<0.001)→⑥功能过滤(exonic/splicing + 非同义)→⑦预测过滤(CADD≥20/SIFT/PolyPhen)→⑧遗传模式过滤(三人组)→⑨表型优先级(Exomiser)→⑩ACMG分类→⑪数据库核查(ClinVar/OMIM)。
★ Q2:gnomAD频率阈值为什么对不同遗传模式不同?
显性遗传病(AD):一个等位基因变异即致病,理论上健康人不携带,阈值更严格(MAF<0.0001)。隐性遗传病(AR):携带者(杂合)在人群中可能常见,阈值可宽松(MAF<0.001),但纯合/复合杂合组合需满足Hardy-Weinberg频率极低。
★ Q3:CADD评分的意义是什么?20分和30分的区别?
CADD(Combined Annotation Dependent Depletion)是整合多种功能注释的综合评分,Phred-scaled。CADD≥10 = 前10%有害变异,CADD≥20 = 前1%,CADD≥30 = 前0.1%。面试记住:20分是常用的"可疑有害"阈值,30分用于高置信度过滤。
★ Q4:Exomiser如何结合表型排序?
Exomiser使用HPO本体计算患者症状与已知遗传病表型的相似度分数(phenodigm算法),再与变异致病性分数、遗传模式符合度综合打分(Exomiser综合分0-1),优先级排序基因-变异组合。
★ Q5:什么是复合杂合(Compound Heterozygous)?
同一基因的两条染色体各有一个致病变异(一个来自父亲,一个来自母亲),每个亲本各携带一个,子女同时继承两个→导致常染色体隐性疾病。区别于纯合(同一变异在两条染色体上),需要三人组数据(Trio)来验证亲本来源。
速查表¶
| 过滤步骤 | 工具/数据库 | 阈值 | 变异保留率估计 |
|---|---|---|---|
| 区域过滤 | refGene注释 | exonic+splicing | ~1-2% |
| 功能过滤 | ExonicFunc | 排除synonymous | ~70-80% |
| 频率过滤 | gnomAD v4 | MAF<0.001 | ~10-30% |
| 功能预测 | CADD Phred | ≥20 | ~30-50% |
| 遗传模式 | Trio PED | AD/AR/XL | ~50-80% |
| 表型驱动 | Exomiser | 综合分排序 | 前20个候选 |
| 功能预测工具 | 有害阈值 | 特点 |
|---|---|---|
| SIFT | <0.05 | 基于氨基酸保守性 |
| PolyPhen-2 | >0.908 | 基于结构+保守性 |
| CADD | ≥20 (Phred) | 整合多维特征 |
| AlphaMissense | >0.564 | AlphaFold结构预测 |
| REVEL | >0.5 | 集成多预测器 |