跳转至

药物基因组学(PGx)分析

一句话概述:药物基因组学研究遗传变异如何影响药物反应(疗效和毒性),通过检测 CYP2D6、CYP2C19 等药物代谢酶基因的变异来指导个体化用药。


核心知识点速查表

概念白话解释
PGx药物基因组学,基因决定药物疗效/毒性
药物代谢酶分解药物的蛋白(如CYP450家族)
Star allele药物基因的变异命名系统(如 CYP2D6*4)
代谢表型UM/NM/IM/PM(超快/正常/中间/慢代谢)
CPIC临床药物基因组学实施联盟
PharmGKB最大的药物基因组学数据库
DPWG荷兰药物基因组工作组
PharmCAT药物基因组学临床注释工具

一、PGx 概念(白话版)

比喻:同样一杯咖啡,有人喝了精神百倍,有人喝了心跳加速——因为每个人"处理咖啡因的能力"不同。药物也一样:同一种药,有人吃了有效,有人没效,有人中毒。PGx 就是通过检查你的"药物处理基因"来预测你对药物的反应。

常见的 PGx 基因

基因相关药物临床意义
CYP2D6可待因、他莫昔芬超快代谢→毒性,慢代谢→无效
CYP2C19氯吡格雷、奥美拉唑慢代谢→氯吡格雷无效
CYP2C9华法林慢代谢→出血风险
VKORC1华法林影响华法林敏感性
HLA-B*5701阿巴卡韦(HIV药)携带→超敏反应
DPYD5-FU(化疗药)缺陷→致命毒性
TPMT硫唑嘌呤缺陷→骨髓抑制
UGT1A1伊立替康(化疗药)28/28→严重腹泻

二、分析流程

第 1 步:从 VCF 进行 Star Allele 分型

# PharmCAT 是 CPIC 推荐的标准 PGx 注释工具
# 安装
# 下载最新版 PharmCAT
wget https://github.com/PharmGKB/PharmCAT/releases/latest/download/pharmcat.jar

# 或 Docker
docker pull pgkb/pharmcat

# 准备输入:需要包含 PGx 位点的 VCF 文件
# PharmCAT 需要特定格式的 VCF

# 第 1 步:预处理 VCF(确保格式兼容)
java -jar pharmcat.jar \
    preprocess \                        # 预处理模式
    -vcf sample.vcf.gz \               # 输入VCF
    -refFasta reference.fa \           # 参考基因组
    -o preprocessed/                    # 输出目录

# 第 2 步:运行 PharmCAT 分析
java -jar pharmcat.jar \
    run \                               # 运行完整分析
    -vcf preprocessed/sample.vcf \     # 预处理后的VCF
    -reporterJson \                     # 输出JSON格式报告
    -o results/                         # 输出目录

# 输出文件:
# results/sample.report.html — HTML格式可视化报告
# results/sample.report.json — JSON格式详细结果
# 包含:基因分型、Star allele、代谢表型、CPIC用药建议

第 2 步:Stargazer(CYP 基因 Star Allele 分型)

# Stargazer 专门做复杂 CYP 基因的 star allele 分型
# 能处理 CYP2D6 的基因拷贝数变异(缺失/重复)

# 安装
pip install stargazer-genotyper  # pip安装

# 运行 Stargazer
stargazer \
    --target_gene cyp2d6 \            # 目标基因
    --control_gene vdr \               # 对照基因(用于标准化拷贝数)
    --data_type wgs \                  # 数据类型(wgs/ts/chip)
    --gdf sample.gdf \                # 基因深度文件
    --vcf sample.vcf.gz \             # VCF文件
    --output_dir stargazer_results/   # 输出目录

# CYP2D6 特别复杂的原因:
# 1. 有假基因 CYP2D7/CYP2D8 干扰
# 2. 存在基因缺失(*5)和基因重复(*1xN, *2xN)
# 3. 有混合型等位基因(gene conversion)

第 3 步:代谢表型推断

# ========== Python脚本:Star Allele → 代谢表型 ==========

# CPIC 活性评分系统
# 每个 star allele 有一个活性分数(Activity Score, AS)

# CYP2D6 活性评分表
cyp2d6_activity = {
    "*1": 1.0,    # 正常功能
    "*2": 1.0,    # 正常功能
    "*3": 0.0,    # 无功能(移码突变)
    "*4": 0.0,    # 无功能(剪接位点突变)
    "*5": 0.0,    # 基因缺失
    "*6": 0.0,    # 无功能
    "*9": 0.5,    # 功能降低
    "*10": 0.25,  # 功能降低(亚洲常见)
    "*17": 0.5,   # 功能降低
    "*41": 0.5,   # 功能降低
}

def predict_phenotype(allele1, allele2, cn1=1, cn2=1):
    """根据Star Allele预测代谢表型"""
    # 计算活性评分
    as1 = cyp2d6_activity.get(allele1, 1.0) * cn1    # 等位基因1的活性×拷贝数
    as2 = cyp2d6_activity.get(allele2, 1.0) * cn2    # 等位基因2的活性×拷贝数
    total_as = as1 + as2                               # 总活性评分

    # 根据CPIC指南判定表型
    if total_as > 2.25:
        phenotype = "Ultrarapid Metabolizer (UM)"      # 超快代谢
    elif total_as >= 1.25:
        phenotype = "Normal Metabolizer (NM)"          # 正常代谢
    elif total_as >= 0.25:
        phenotype = "Intermediate Metabolizer (IM)"    # 中间代谢
    else:
        phenotype = "Poor Metabolizer (PM)"            # 慢代谢

    print(f"基因型: {allele1}/{allele2}")
    print(f"活性评分: {as1} + {as2} = {total_as}")
    print(f"代谢表型: {phenotype}")
    return phenotype

# 示例
predict_phenotype("*1", "*4")     # NM/PM → IM (AS=1.0)
predict_phenotype("*4", "*4")     # PM/PM → PM (AS=0.0)
predict_phenotype("*1", "*1", cn1=2)  # *1x2/*1 → UM (AS=3.0)

三、CPIC 用药建议查询

# 从 PharmGKB API 查询用药建议
import requests

def query_cpic_guideline(gene, drug):
    """查询CPIC药物基因组学指南"""
    url = f"https://api.pharmgkb.org/v1/data/clinicalAnnotation"
    params = {
        "location.genes.symbol": gene,    # 基因名
        "relatedChemicals.name": drug,     # 药物名
    }
    response = requests.get(url, params=params)

    if response.status_code == 200:
        data = response.json()
        print(f"=== {gene} + {drug} ===")
        for ann in data.get("data", []):
            print(f"基因型: {ann.get('phenotypes', 'N/A')}")
            print(f"建议: {ann.get('annotation', 'N/A')}")
    else:
        print(f"查询失败: {response.status_code}")

# 常见查询
query_cpic_guideline("CYP2C19", "clopidogrel")  # 氯吡格雷
query_cpic_guideline("CYP2D6", "codeine")        # 可待因

四、常见报错与解决

问题原因解决方法
PharmCAT 无法识别基因型VCF中缺少关键位点确保Panel覆盖PGx位点
CYP2D6 分型不准拷贝数变异未检测用Stargazer或CYP2D6专用流程
Star allele 不在已知列表新变异组合报告为"novel",参考功能预测
不同工具结果不一致数据库版本不同以PharmCAT/CPIC为准

五、面试高频问题

Q1:PGx 分析和 ACMG 变异分类有什么不同?

ACMG 分类用于判断变异是否致病(疾病基因),PGx 分析判断变异如何影响药物代谢(药物基因)。两者使用不同的分类框架和证据标准。2024年ClinGen PGxWG正在开发PGx专用的变异分类框架。

Q2:CYP2D6 为什么分型困难?

(1) 存在高度同源的假基因(CYP2D7/CYP2D8);(2) 常见基因缺失(5)和多拷贝(1xN);(3) 存在基因转换(gene conversion)形成的混合等位基因;(4) 种族间频率差异大。

Q3:PM(慢代谢)对用药有什么影响?

两种情况:(1) 如果药物本身就是活性形式(如华法林),PM导致药物蓄积→毒性增加→需要减量;(2) 如果药物是前药(如可待因→吗啡),PM导致无法活化→药效降低→需要换药。


六、速查表

# === PGx 分析速查 ===

# PharmCAT(标准PGx工具)
java -jar pharmcat.jar preprocess -vcf sample.vcf.gz -refFasta ref.fa
java -jar pharmcat.jar run -vcf preprocessed/sample.vcf -o results/

# 代谢表型判定(CYP2D6活性评分):
# AS > 2.25  → UM (超快代谢)
# AS 1.25~2.25 → NM (正常代谢)
# AS 0.25~1.25 → IM (中间代谢)
# AS < 0.25  → PM (慢代谢)

# 重要PGx基因和药物:
# CYP2D6 — 可待因、他莫昔芬
# CYP2C19 — 氯吡格雷、奥美拉唑
# DPYD — 5-FU(缺陷可致命!)
# HLA-B*5701 — 阿巴卡韦(必检!)

# 数据库:
# CPIC — https://cpicpgx.org/
# PharmGKB — https://www.pharmgkb.org/
# PharmVar — https://www.pharmvar.org/

参考资料:CPIC Guidelines 2024、PharmCAT文档、ClinGen PGxWG (2024, Clinical Chemistry)、PharmGKB