854. 临床生信分析规范
一句话概述:临床生信 = 把测序数据变成医生能用的诊断报告——必须遵循严格的质控标准、认证规范和可追溯流程,错一个变异可能影响患者治疗决策。
核心知识点速查表
| 维度 | 说明 |
|---|
| 认证标准 | CAP/CLIA (美国)、ISO 15189 (国际) |
| 数据质量 | 覆盖深度≥100x(Panel)、≥30x(WGS) |
| 变异分级 | ACMG/AMP 5级分类系统 |
| 报告内容 | 致病变异、用药指导、临床意义 |
| 合规要求 | 数据加密、访问控制、审计日志 |
| 中国法规 | 《人类遗传资源管理条例》、NMPA审批 |
一、临床WGS/WES分析流程
# 临床级别WGS/WES分析流程(GATK Best Practices)
# 与科研流程的区别:更严格的质控、版本锁定、完整记录
# 0. 环境要求(版本必须锁定!)
# 临床分析必须用固定版本,不能用latest
GATK_VERSION="4.5.0.0" # 锁定GATK版本
REF_VERSION="hg38_v0" # 锁定参考基因组版本
DBSNP_VERSION="155" # 锁定dbSNP版本
# 1. 数据质控(比科研更严格)
fastp \
-i raw_R1.fq.gz \ # 原始R1
-I raw_R2.fq.gz \ # 原始R2
-o clean_R1.fq.gz \ # 质控后R1
-O clean_R2.fq.gz \ # 质控后R2
-q 20 \ # Q20质量阈值
-l 50 \ # 最短50bp
-j qc_report.json \ # JSON报告
-h qc_report.html # HTML报告
# 质控标准(临床级):
# - Q30碱基比例 ≥ 80%
# - 平均测序深度 ≥ 100x (Panel) / ≥ 30x (WGS)
# - 目标区域覆盖率 ≥ 98% (≥20x)
# - 重复率 < 20%
# - 性别一致性检查 PASS
# 2. 比对(必须记录所有参数)
bwa mem \
-t 16 \ # 16线程
-R "@RG\tID:${SAMPLE_ID}\tSM:${SAMPLE_NAME}\tPL:ILLUMINA\tLB:lib1" \
${REF} \ # 参考基因组
clean_R1.fq.gz clean_R2.fq.gz \ # 质控后reads
| samtools sort -@ 8 \ # 排序
-o ${SAMPLE_ID}.sorted.bam # 输出BAM
# 3. 标记重复序列
gatk MarkDuplicates \
-I ${SAMPLE_ID}.sorted.bam \ # 输入BAM
-O ${SAMPLE_ID}.dedup.bam \ # 去重BAM
-M ${SAMPLE_ID}.dedup_metrics.txt \ # 重复率指标
--VALIDATION_STRINGENCY STRICT # 严格验证模式
# 4. 碱基质量重校准(BQSR)
gatk BaseRecalibrator \
-R ${REF} \ # 参考基因组
-I ${SAMPLE_ID}.dedup.bam \ # 去重BAM
--known-sites dbsnp_${DBSNP_VERSION}.vcf.gz \ # 已知变异
--known-sites Mills_and_1000G.vcf.gz \ # 已知INDEL
-O ${SAMPLE_ID}.recal_table # 校准表
gatk ApplyBQSR \
-R ${REF} \
-I ${SAMPLE_ID}.dedup.bam \
--bqsr-recal-file ${SAMPLE_ID}.recal_table \
-O ${SAMPLE_ID}.final.bam # 最终BAM
# 5. 变异检测
gatk HaplotypeCaller \
-R ${REF} \
-I ${SAMPLE_ID}.final.bam \
-O ${SAMPLE_ID}.g.vcf.gz \ # 输出gVCF
-ERC GVCF # GVCF模式(可联合分析)
二、ACMG变异分级
# ACMG/AMP变异分级系统(2015标准,2024更新)
# 5级分类:每个变异必须按照证据评级
# ACMG证据类型
evidence_criteria = {
# 致病性证据(Pathogenic)
"PVS1": "无义突变/移码导致功能丧失(LoF)", # 非常强
"PS1": "已知致病突变的同一氨基酸位置", # 强
"PS2": "de novo突变(父母验证)", # 强
"PS3": "功能实验证实致病", # 强
"PM1": "位于热点区域或功能域", # 中等
"PM2": "在正常人群中极低频(<0.01%)", # 中等
"PP1": "与疾病共分离", # 支持
"PP3": "多个计算预测为有害", # 支持
# 良性证据(Benign)
"BA1": "人群频率>5%", # 独立良性
"BS1": "人群频率高于预期", # 强
"BS2": "在健康纯合子中观察到", # 强
"BP1": "错义突变在截断致病的基因中", # 支持
"BP4": "多个计算预测为良性", # 支持
}
# ACMG 5级分类规则(简化版)
def classify_variant(evidence_list):
"""根据证据组合判断变异致病性"""
pvs = sum(1 for e in evidence_list if e.startswith("PVS")) # 非常强
ps = sum(1 for e in evidence_list if e.startswith("PS")) # 强
pm = sum(1 for e in evidence_list if e.startswith("PM")) # 中等
pp = sum(1 for e in evidence_list if e.startswith("PP")) # 支持
ba = sum(1 for e in evidence_list if e.startswith("BA")) # 独立良性
bs = sum(1 for e in evidence_list if e.startswith("BS")) # 强良性
bp = sum(1 for e in evidence_list if e.startswith("BP")) # 支持良性
# 致病 (Pathogenic)
if (pvs >= 1 and ps >= 1) or \
(ps >= 2) or \
(pvs >= 1 and pm >= 1):
return "Pathogenic(致病)"
# 可能致病 (Likely Pathogenic)
if (pvs >= 1 and pm >= 1) or \
(ps >= 1 and pm >= 1) or \
(ps >= 1 and pp >= 2):
return "Likely Pathogenic(可能致病)"
# 良性 (Benign)
if ba >= 1 or bs >= 2:
return "Benign(良性)"
# 可能良性 (Likely Benign)
if (bs >= 1 and bp >= 1) or bp >= 2:
return "Likely Benign(可能良性)"
# 意义不明 (VUS)
return "VUS(意义不明变异)"
# 示例
variant_evidence = ["PVS1", "PM2", "PP3"] # LoF + 低频 + 计算预测有害
result = classify_variant(variant_evidence)
print(f"分级结果: {result}")
# → Pathogenic(致病)
三、变异注释流程
# 临床变异注释(多数据库交叉注释)
# 1. ANNOVAR注释
perl table_annovar.pl \
variants.vcf \ # 输入VCF
humandb/ \ # 注释数据库目录
-buildver hg38 \ # 基因组版本
-out annotated \ # 输出前缀
-protocol refGene,gnomad40_genome,clinvar_20240917,dbnsfp42a \
-operation g,f,f,f \ # g=基因注释 f=过滤注释
-nastring . \ # 缺失值用.表示
-vcfinput # VCF格式输入
# 注释数据库说明:
# refGene: 基因功能注释(外显子/内含子/UTR)
# gnomAD: 人群频率(全球各族群)
# ClinVar: 临床意义(致病/良性/VUS)
# dbNSFP: 计算预测分数(SIFT/PolyPhen/CADD等)
# 2. VEP注释(Ensembl官方工具)
vep \
--input_file variants.vcf \ # 输入VCF
--output_file vep_output.vcf \ # 输出
--cache \ # 使用本地缓存
--dir_cache ~/.vep \ # 缓存目录
--assembly GRCh38 \ # 基因组版本
--vcf \ # VCF格式输出
--everything \ # 所有注释
--plugin CADD,whole_genome_SNVs.tsv.gz \ # CADD评分
--plugin SpliceAI,snv=spliceai.vcf.gz # 剪接预测
# 3. 临床过滤策略
# 过滤掉不太可能致病的变异
bcftools filter \
-i 'INFO/gnomAD_AF < 0.01' \ # 人群频率<1%
annotated.vcf \ # 注释后VCF
| bcftools filter \
-i 'INFO/CADD_phred > 20' \ # CADD>20(前1%有害)
> clinical_candidates.vcf # 候选致病变异
四、临床报告生成
# 临床检测报告核心要素(简化示例)
report_template = {
"patient_info": { # 患者信息
"name": "***", # 脱敏
"sample_id": "CL2026-001", # 样本编号
"sample_type": "外周血", # 样本类型
"collection_date": "2026-01-15" # 采样日期
},
"quality_metrics": { # 质控指标
"mean_depth": "150x", # 平均深度
"coverage_20x": "99.2%", # 20x覆盖率
"Q30_ratio": "92.5%", # Q30比例
"duplicate_rate": "8.3%" # 重复率
},
"findings": [ # 检测结果
{
"gene": "BRCA1", # 基因
"variant": "c.5266dupC", # 变异描述
"protein": "p.Gln1756fs", # 蛋白变化
"zygosity": "杂合", # 杂合/纯合
"classification": "致病", # ACMG分级
"clinical_significance": "乳腺癌/卵巢癌高风险", # 临床意义
"drug_guidance": "PARP抑制剂(奥拉帕利)敏感" # 用药指导
}
],
"limitations": "本检测仅覆盖目标区域编码区及剪接位点±10bp", # 局限性
"methodology": "Illumina NovaSeq 6000, GATK4 Best Practices" # 方法学
}
常见报错与解决
| 报错信息 | 原因 | 解决方法 |
|---|
Coverage below threshold | 目标区域覆盖不足 | 检查文库质量,考虑补测 |
Gender mismatch | 样本性别与登记不一致 | 核实样本是否混淆 |
High contamination | 样本间交叉污染 | 用VerifyBamID检测污染比例 |
Ti/Tv ratio abnormal | 变异检测质量差 | Ti/Tv应约2.0-2.1(WGS),偏离需排查 |
ACMG conflict | ClinVar中同一变异有矛盾分级 | 查看最新提交,以专家评审为准 |
速查表
# 临床生信质控标准
Panel: 深度≥100x, 覆盖≥98%(≥20x)
WES: 深度≥100x, 覆盖≥95%(≥20x)
WGS: 深度≥30x, 覆盖≥95%(≥15x)
Ti/Tv: WGS~2.0-2.1, WES~2.8-3.2
重复率: <20%
Q30: ≥80%
# ACMG 5级分类
P: Pathogenic(致病)
LP: Likely Pathogenic(可能致病)
VUS: Variant of Uncertain Significance(意义不明)
LB: Likely Benign(可能良性)
B: Benign(良性)
# 临床注释数据库
ClinVar: 临床变异数据库(金标准)
gnomAD: 人群频率数据库
OMIM: 遗传病数据库
PharmGKB: 药物基因组数据库
HGMD: 人类基因突变数据库(付费)
# 中国临床基因检测法规
NMPA: 医疗器械注册(体外诊断试剂)
人遗条例: 人类遗传资源管理
数据安全法: 医疗数据跨境限制