mcpField
C
clinpgx-database

clinpgx-database

github.com/ovachiever数据与数据库5647 次安装48 周前更新
代码仓库

关于 clinpgx-database

ClinPGx Database 是供研究人员和临床团队使用的药物基因组学资源,帮助了解遗传变异如何影响药物反应。其 REST API 整合了整理过的基因—药物关系、指南、等位基因数据、注释和药品标签。

主要功能

  1. 01查询基因、药物及基因—药物对
  2. 02获取 CPIC 临床指南
  3. 03查看等位基因功能与频率
  4. 04访问变异及临床注释
  5. 05检索药物基因组学标签
  6. 06探索药物相关通路

适用场景

  1. 01查找基因型指导的用药建议
  2. 02审查药物毒性的遗传因素
  3. 03比较不同人群的等位基因频率
  4. 04收集药物基因组学研究证据

安装

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

$npx skills add https://github.com/ovachiever/droid-tings --skill clinpgx-database

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

附带文件references/api_reference.mdscripts/query_clinpgx.py

详细介绍

ClinPGx 数据库

概述

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

何时使用此技能

以下场景应使用此技能:

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

安装和设置

Python API 访问

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

uv 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