跳转至

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 conflictClinVar中同一变异有矛盾分级查看最新提交,以专家评审为准

速查表

# 临床生信质控标准
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:  医疗器械注册(体外诊断试剂)
人遗条例: 人类遗传资源管理
数据安全法: 医疗数据跨境限制