mcpField
C
clinpgx-database

clinpgx-database

github.com/jackspace数据与数据库1638 次安装12 周前更新
代码仓库

关于 clinpgx-database

ClinPGx Database 技能为临床药物基因组学研究提供数据库查询指引,覆盖基因、药物、基因-药物关系及临床指南,适用于精准用药和相关研究。

主要功能

  1. 01查询基因与药物信息
  2. 02检索基因-药物关系
  3. 03访问 CPIC 临床指南
  4. 04查询等位基因与变异注释
  5. 05查看临床注释及证据等级
  6. 06检索药品标签与代谢通路

适用场景

  1. 01查找基因型相关的用药建议
  2. 02评估药物的遗传毒性风险
  3. 03整理药物基因组学基因面板
  4. 04比较不同人群的等位基因频率

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jackspace/claudeskillz --skill clinpgx-database

安装后在 Claude Code 中输入/clinpgx-database确认已加载。

附带文件SKILL.json

详细介绍

ClinPGx 数据库

概述

ClinPGx(临床药物基因组学数据库)是一个全面的临床药物基因组学信息资源,是 PharmGKB 的后继项目。它整合了 PharmGKB、CPIC 和 PharmCAT 的数据,提供经过整理的信息,说明遗传变异如何影响药物反应。可查询基因-药物配对、临床指南、等位基因功能和药品说明书,为精准医疗应用提供支持。

何时使用此技能

以下场景应使用此技能:

  • 基因-药物相互作用:查询遗传变异如何影响药物代谢、疗效或毒性
  • CPIC 指南:访问基于证据的药物遗传学临床实践指南
  • 等位基因信息:获取等位基因功能、频率和表型数据
  • 药品说明书:查阅 FDA 及其他监管机构的药物基因组学药品标注
  • 药物基因组学注释:访问经过整理的基因-药物-疾病关系文献
  • 临床决策支持:使用 PharmDOG 工具进行表型转换和自定义基因型解读
  • 精准医疗:在临床实践中实施药物基因组学检测
  • 药物代谢:了解 CYP450 和其他药物基因的功能
  • 个性化给药:查找基因型指导的给药建议
  • 药物不良反应:识别药物毒性的遗传风险因素

安装和设置

Python API 访问

ClinPGx REST API 提供对所有数据库资源的程序化访问。基本设置:

pip install requests
API 端点
BASE_URL = "https://api.clinpgx.org/v1/"

速率限制:

  • 每秒最多 2 个请求
  • 请求过多将导致 HTTP 429(请求过多)响应

身份验证:基本访问无需身份验证

数据许可:知识共享署名-相同方式共享 4.0 国际许可协议

如需大量使用 API,请通过 [email protected] 联系 ClinPGx 团队

核心功能

1. 基因查询

检索基因信息,包括功能、临床注释和药物基因组学意义:

import requests

# Get gene details
response = requests.get("https://api.clinpgx.org/v1/gene/CYP2D6")
gene_data = response.json()

# Search for genes by name
response = requests.get("https://api.clinpgx.org/v1/gene",
                       params={"q": "CYP"})
genes = response.json()

重要的药物基因:

  • CYP450 酶:CYP2D6、CYP2C19、CYP2C9、CYP3A4、CYP3A5
  • 转运蛋白:SLCO1B1、ABCB1、ABCG2
  • 其他代谢酶:TPMT、DPYD、NUDT15、UGT1A1
  • 受体:OPRM1、HTR2A、ADRB1
  • HLA 基因:HLA-B、HLA-A
2. 药物和化学物质查询

检索药物信息,包括药物基因组学注释和作用机制:

# Get drug details
response = requests.get("https://api.clinpgx.org/v1/chemical/PA448515")  # Warfarin
drug_data = response.json()

# Search drugs by name
response = requests.get("https://api.clinpgx.org/v1/chemical",
                       params={"name": "warfarin"})
drugs = response.json()

具有药物基因组学意义的药物类别:

  • 抗凝药(华法林、氯吡格雷)
  • 抗抑郁药(SSRIs、TCAs)
  • 免疫抑制剂(他克莫司、硫唑嘌呤)
  • 肿瘤药物(5-氟尿嘧啶、伊立替康、他莫昔芬)
  • 心血管药物(他汀类、β 受体阻滞剂)
  • 止痛药(可待因、曲马多)
  • 抗病毒药(阿巴卡韦)
3. 基因-药物配对查询

访问经过整理的基因-药物关系及其临床注释:

# Get gene-drug pair information
response = requests.get("https://api.clinpgx.org/v1/geneDrugPair",
                       params={"gene": "CYP2D6", "drug": "codeine"})
pair_data = response.json()

# Get all pairs for a gene
response = requests.get("https://api.clinpgx.org/v1/geneDrugPair",
                       params={"gene": "CYP2C19"})
all_pairs = response.json()

临床注释来源:

  • CPIC(临床药物遗传学实施联盟)
  • DPWG(荷兰药物遗传学工作组)
  • FDA(美国食品药品监督管理局)药品说明书
  • 同行评审文献摘要注释
4. CPIC 指南

访问基于证据的临床实践指南:

# Get CPIC guideline
response = requests.get("https://api.clinpgx.org/v1/guideline/PA166104939")
guideline = response.json()

# List all CPIC guidelines
response = requests.get("https://api.clinpgx.org/v1/guideline",
                       params={"source": "CPIC"})
guidelines = response.json()

CPIC 指南组成部分:

  • 涵盖的基因-药物配对
  • 按表型分类的临床建议
  • 证据等级和强度评级
  • 支持文献
  • 可下载的 PDF 和补充材料
  • 实施注意事项

指南示例:

  • CYP2D6-可待因(超快代谢者应避免使用)
  • CYP2C19-氯吡格雷(慢代谢者应选择替代疗法)
  • TPMT-硫唑嘌呤(中间代谢者/慢代谢者应减量)
  • DPYD-氟嘧啶类(根据活性调整剂量)
  • HLA-B*57:01-阿巴卡韦(阳性者应避免使用)
5. 等位基因和变异信息

查询等位基因功能和频率数据:

# Get allele information
response = requests.get("https://api.clinpgx.org/v1/allele/CYP2D6*4")
allele_data = response.json()

# Get all alleles for a gene
response = requests.get("https://api.clinpgx.org/v1/allele",
                       params={"gene": "CYP2D6"})
alleles = response.json()

等位基因信息包括:

  • 功能状态(正常、降低、无功能、增强、不确定)
  • 不同族群的群体频率
  • 定义性变异(SNP、indel、CNV)
  • 表型分配
  • PharmVar 和其他命名系统的参考信息

表型类别:

  • 超快代谢者(UM):酶活性增强
  • 正常代谢者(NM):酶活性正常
  • 中间代谢者(IM):酶活性降低
  • 慢代谢者(PM):酶活性极低或无酶活性
6. 变异注释

获取特定遗传变异的临床注释:

# Get variant information
response = requests.get("https://api.clinpgx.org/v1/variant/rs4244285")
variant_data = response.json()

# Search variants by position (if supported)
response = requests.get("https://api.clinpgx.org/v1/variant",
                       params={"chromosome": "10", "position": "94781859"})
variants = response.json()

变异数据包括:

  • rsID 和基因组坐标
  • 基因和功能后果
  • 等位基因关联
  • 临床意义
  • 群体频率
  • 文献参考信息
7. 临床注释

获取整理过的文献注释(以前称为 PharmGKB 临床注释):

# Get clinical annotations
response = requests.get("https://api.clinpgx.org/v1/clinicalAnnotation",
                       params={"gene": "CYP2D6"})
annotations = response.json()

# Filter by evidence level
response = requests.get("https://api.clinpgx.org/v1/clinicalAnnotation",
                       params={"evidenceLevel": "1A"})
high_evidence = response.json()

证据等级(由高到低):

  • Level 1A:高质量证据,CPIC/FDA/DPWG 指南
  • Level 1B:高质量证据,尚未纳入指南
  • Level 2A:来自设计良好的研究的中等证据
  • Level 2B:中等证据,存在一些局限
  • Level 3:有限或相互矛盾的证据
  • Level 4:病例报告或证据较弱
8. 药品标签

获取药品标签中的药物基因组学信息:

# Get drug labels with PGx information
response = requests.get("https://api.clinpgx.org/v1/drugLabel",
                       params={"drug": "warfarin"})
labels = response.json()

# Filter by regulatory source
response = requests.get("https://api.clinpgx.org/v1/drugLabel",
                       params={"source": "FDA"})
fda_labels = response.json()

标签信息包括:

  • 检测建议
  • 按基因型提供的给药指导
  • 警告和注意事项
  • 生物标志物信息
  • 监管机构来源(FDA、EMA、PMDA 等)
9. 通路

探索药代动力学和药效学通路:

# Get pathway information
response = requests.get("https://api.clinpgx.org/v1/pathway/PA146123006")  # Warfarin pathway
pathway_data = response.json()

# Search pathways by drug
response = requests.get("https://api.clinpgx.org/v1/pathway",
                       params={"drug": "warfarin"})
pathways = response.json()

通路图展示:

  • 药物代谢步骤
  • 参与其中的酶和转运蛋白
  • 影响各步骤的基因变异
  • 对下游疗效/毒性的影响
  • 与其他通路的相互作用

查询工作流

工作流 1:药物处方的临床决策支持
  1. 确定患者相关药物基因的基因型:

    # Example: Patient is CYP2C19 *1/*2 (intermediate metabolizer)
    response = requests.get("https://api.clinpgx.org/v1/allele/CYP2C19*2")
    allele_function = response.json()
    
  2. 查询目标药物的基因-药物配对:

    response = requests.get("https://api.clinpgx.org/v1/geneDrugPair",
                           params={"gene": "CYP2C19", "drug": "clopidogrel"})
    pair_info = response.json()
    
  3. 获取 CPIC 指南以了解给药建议:

    response = requests.get("https://api.clinpgx.org/v1/guideline",
                           params={"gene": "CYP2C19", "drug": "clopidogrel"})
    guideline = response.json()
    # Recommendation: Alternative antiplatelet therapy for IM/PM
    
  4. 查看药品标签中的监管指导:

    response = requests.get("https://api.clinpgx.org/v1/drugLabel",
                           params={"drug": "clopidogrel"})
    label = response.json()
    
工作流 2:基因面板分析
  1. 获取临床面板中的药物基因列表:

    pgx_panel = ["CYP2C19", "CYP2D6", "CYP2C9", "TPMT", "DPYD", "SLCO1B1"]
    
  2. 针对每个基因,获取所有药物相互作用:

    all_interactions = {}
    for gene in pgx_panel:
        response = requests.get("https://api.clinpgx.org/v1/geneDrugPair",
                               params={"gene": gene})
        all_interactions[gene] = response.json()
    
  3. 筛选符合 CPIC 指南级别的证据:

    for gene, pairs in all_interactions.items():
        for pair in pairs:
            if pair.get('cpicLevel'):  # Has CPIC guideline
                print(f"{gene} - {pair['drug']}: {pair['cpicLevel']}")
    
  4. 生成患者报告,列出可采取行动的药物基因组学发现。

工作流 3:药物安全性评估
  1. 查询药物的 PGx 关联:

    response = requests.get("https://api.clinpgx.org/v1/chemical",
                           params={"name": "abacavir"})
    drug_id = response.json()[0]['id']
    
  2. 获取临床注释:

    response = requests.get("https://api.clinpgx.org/v1/clinicalAnnotation",
                           params={"drug": drug_id})
    annotations = response.json()
    
  3. 检查 HLA 关联和毒性风险:

    for annotation in annotations:
        if 'HLA' in annotation.get('genes', []):
            print(f"Toxicity risk: {annotation['phenotype']}")
            print(f"Evidence level: {annotation['evidenceLevel']}")
    
  4. 从指南和药品标签中获取筛查建议。

工作流 4:研究分析——群体药物基因组学
  1. 获取等位基因频率以进行群体比较:

    response = requests.get("https://api.clinpgx.org/v1/allele",
                           params={"gene": "CYP2D6"})
    alleles = response.json()
    
  2. 提取特定群体的频率:

    populations = ['European', 'African', 'East Asian', 'Latino']
    frequency_data = {}
    for allele in alleles:
        allele_name = allele['name']
        frequency_data[allele_name] = {
            pop: allele.get(f'{pop}_frequency', 'N/A')
            for pop in populations
        }
    
  3. 计算不同群体的表型分布:

    # Combine allele frequencies with function to predict phenotypes
    phenotype_dist = calculate_phenotype_frequencies(frequency_data)
    
  4. 分析其对不同群体药物给药的影响。

工作流 5:文献证据审查
  1. 搜索基因-药物配对:

    response = requests.get("https://api.clinpgx.org/v1/geneDrugPair",
                           params={"gene": "TPMT", "drug": "azathioprine"})
    pair = response.json()
    
  2. 获取所有临床注释:

    response = requests.get("https://api.clinpgx.org/v1/clinicalAnnotation",
                           params={"gene": "TPMT", "drug": "azathioprine"})
    annotations = response.json()
    
  3. 按证据等级和发表日期筛选:

    high_quality = [a for a in annotations
                    if a['evidenceLevel'] in ['1A', '1B', '2A']]
    
  4. 提取 PMID并获取完整参考信息:

    pmids = [a['pmid'] for a in high_quality if 'pmid' in a]
    # Use PubMed skill to retrieve full citations
    

速率限制和最佳实践

遵守速率限制
import time

def rate_limited_request(url, params=None, delay=0.5):
    """Make API request with rate limiting (2 req/sec max)"""
    response = requests.get(url, params=params)
    time.sleep(delay)  # Wait 0.5 seconds between requests
    return response

# Use in loops
genes = ["CYP2D6", "CYP2C19", "CYP2C9"]
for gene in genes:
    response = rate_limited_request(
        "https://api.clinpgx.org/v1/gene/" + gene
    )
    data = response.json()
错误处理
def safe_api_call(url, params=None, max_retries=3):
    """API call with error handling and retries"""
    for attempt in range(max_retries):
        try:
            response = requests.get(url, params=params, timeout=10)

            if response.status_code == 200:
                return response.json()
            elif response.status_code == 429:
                # Rate limit exceeded
                wait_time = 2 ** attempt  # Exponential backoff
                print(f"Rate limit hit. Waiting {wait_time}s...")
                time.sleep(wait_time)
            else:
                response.raise_for_status()

        except requests.exceptions.RequestException as e:
            print(f"Attempt {attempt + 1} failed: {e}")
            if attempt == max_retries - 1:
                raise
            time.sleep(1)
缓存结果
import json
from pathlib import Path

def cached_query(cache_file, api_func, *args, **kwargs):
    """Cache API results to avoid repeated queries"""
    cache_path = Path(cache_file)

    if cache_path.exists():
        with open(cache_path) as f:
            return json.load(f)

    result = api_func(*args, **kwargs)

    with open(cache_path, 'w') as f:
        json.dump(result, f, indent=2)

    return result

# Usage
gene_data = cached_query(
    'cyp2d6_cache.json',
    rate_limited_request,
    "https://api.clinpgx.org/v1/gene/CYP2D6"
)

PharmDOG 工具

PharmDOG(前身为 DDRx)是 ClinPGx 的临床决策支持工具,用于解读药物基因组学检测结果:

主要功能:

  • 表型转换计算器:针对影响 CYP2D6 的药物相互作用调整表型预测
  • 自定义基因型:输入患者基因型以获取表型预测
  • 二维码分享:生成可分享的患者报告
  • 灵活的指导来源:选择要应用的指南(CPIC、DPWG、FDA)
  • 多药物分析:同时评估多种药物

访问地址:https://www.clinpgx.org/pharmacogenomic-decision-support

使用场景:

  • 临床解读 PGx 检测面板结果
  • 为已知基因型的患者进行用药审查
  • 患者教育材料
  • 即时临床决策支持

资源

scripts/query_clinpgx.py

包含常用 ClinPGx 查询函数的 Python 脚本,可直接使用:

  • get_gene_info(gene_symbol) - 获取基因详情
  • get_drug_info(drug_name) - 获取药物信息
  • get_gene_drug_pairs(gene, drug) - 查询基因-药物相互作用
  • get_cpic_guidelines(gene, drug) - 获取 CPIC 指南
  • get_alleles(gene) - 获取某个基因的所有等位基因
  • get_clinical_annotations(gene, drug, evidence_level) - 查询文献注释
  • get_drug_labels(drug) - 获取药物基因组学药品标签
  • search_variants(rsid) - 根据变异 rsID 搜索
  • export_to_dataframe(data) - 将结果转换为 pandas DataFrame

请参考此脚本,了解有关合理速率限制和错误处理的实现示例。

references/api_reference.md

完整的 API 文档,包括:

  • 完整的端点列表及参数
  • 请求/响应格式规范
  • 每个端点的查询示例
  • 筛选运算符和搜索模式
  • 数据架构定义
  • 速率限制详情
  • 身份验证要求(如有)
  • 常见错误的故障排除

需要详细的 API 信息或构建复杂查询时,请参阅本文档。

重要说明

数据来源与集成

ClinPGx 整合了多个权威来源:

  • PharmGKB:经过整理的药物基因组学知识库(现已并入 ClinPGx)
  • CPIC:基于证据的临床实施指南
  • PharmCAT:等位基因判定和表型解读工具
  • DPWG:荷兰药物遗传学指南
  • FDA/EMA 标签:监管机构的药物基因组学信息

截至 2025 年 7 月,所有 PharmGKB URL 均会重定向到对应的 ClinPGx 页面。

临床实施注意事项
  • 证据等级:临床应用前务必检查证据强度
  • 人群差异:不同人群的等位基因频率差异显著
  • 表型转换:考虑影响酶活性的药物相互作用
  • 多基因效应:某些药物会受到多个药物基因的影响
  • 非遗传因素:年龄、器官功能和药物相互作用也会影响药物反应
  • 检测局限性:并非所有检测方法都能检测到所有具有临床意义的等位基因
数据更新
  • ClinPGx 持续根据新证据和指南进行更新
  • 查看临床注释的发布日期
  • 关注 ClinPGx Blog(https://blog.clinpgx.org/)获取公告
  • CPIC 指南会随着新证据的出现而更新
  • PharmVar 会提供等位基因定义的命名更新
API 稳定性
  • API 端点相对稳定,但在开发期间可能发生变化
  • 参数和响应格式可能会修改
  • 关注 API 更新日志和 ClinPGx 博客以获取更新信息
  • 对生产应用考虑固定版本
  • 在生产部署前,先在开发环境中测试 API 变更

常见使用场景

预先进行药物基因组学检测

查询所有具有临床可操作性的基因-药物组合,以指导检测面板选择:

# Get all CPIC guideline pairs
response = requests.get("https://api.clinpgx.org/v1/geneDrugPair",
                       params={"cpicLevel": "A"})  # Level A recommendations
actionable_pairs = response.json()
药物治疗管理

根据已知基因型审查患者用药:

patient_genes = {"CYP2C19": "*1/*2", "CYP2D6": "*1/*1", "SLCO1B1": "*1/*5"}
medications = ["clopidogrel", "simvastatin", "escitalopram"]

for med in medications:
    for gene in patient_genes:
        response = requests.get("https://api.clinpgx.org/v1/geneDrugPair",
                               params={"gene": gene, "drug": med})
        # Check for interactions and dosing guidance
临床试验资格

筛查药物基因组学禁忌:

# Check for HLA-B*57:01 before abacavir trial
response = requests.get("https://api.clinpgx.org/v1/geneDrugPair",
                       params={"gene": "HLA-B", "drug": "abacavir"})
pair_info = response.json()
# CPIC: Do not use if HLA-B*57:01 positive

其他资源

评论

支持 Markdown