🎯

clinpgx-database

🎯Skill

from ovachiever/droid-tings

VibeIndex|
What it does

Queries comprehensive pharmacogenomics data from ClinPGx, retrieving gene-drug interactions, clinical guidelines, and allele functions for precision medicine and personalized dosing decisions.

πŸ“¦

Part of

ovachiever/droid-tings(370 items)

clinpgx-database

Installation

PythonRun Python server
Python script with ready-to-use functions for common ClinPGx queries:
πŸ“– Extracted from docs: ovachiever/droid-tings
16Installs
20
-
AddedFeb 4, 2026

Skill Details

SKILL.md

"Access ClinPGx pharmacogenomics data (successor to PharmGKB). Query gene-drug interactions, CPIC guidelines, allele functions, for precision medicine and genotype-guided dosing decisions."

Overview

# ClinPGx Database

Overview

ClinPGx (Clinical Pharmacogenomics Database) is a comprehensive resource for clinical pharmacogenomics information, successor to PharmGKB. It consolidates data from PharmGKB, CPIC, and PharmCAT, providing curated information on how genetic variation affects medication response. Access gene-drug pairs, clinical guidelines, allele functions, and drug labels for precision medicine applications.

When to Use This Skill

This skill should be used when:

  • Gene-drug interactions: Querying how genetic variants affect drug metabolism, efficacy, or toxicity
  • CPIC guidelines: Accessing evidence-based clinical practice guidelines for pharmacogenetics
  • Allele information: Retrieving allele function, frequency, and phenotype data
  • Drug labels: Exploring FDA and other regulatory pharmacogenomic drug labeling
  • Pharmacogenomic annotations: Accessing curated literature on gene-drug-disease relationships
  • Clinical decision support: Using PharmDOG tool for phenoconversion and custom genotype interpretation
  • Precision medicine: Implementing pharmacogenomic testing in clinical practice
  • Drug metabolism: Understanding CYP450 and other pharmacogene functions
  • Personalized dosing: Finding genotype-guided dosing recommendations
  • Adverse drug reactions: Identifying genetic risk factors for drug toxicity

Installation and Setup

Python API Access

The ClinPGx REST API provides programmatic access to all database resources. Basic setup:

```bash

uv pip install requests

```

API Endpoint

```python

BASE_URL = "https://api.clinpgx.org/v1/"

```

Rate Limits:

  • 2 requests per second maximum
  • Excessive requests will result in HTTP 429 (Too Many Requests) response

Authentication: Not required for basic access

Data License: Creative Commons Attribution-ShareAlike 4.0 International License

For substantial API use, notify the ClinPGx team at api@clinpgx.org

Core Capabilities

1. Gene Queries

Retrieve gene information including function, clinical annotations, and pharmacogenomic significance:

```python

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()

```

Key pharmacogenes:

  • CYP450 enzymes: CYP2D6, CYP2C19, CYP2C9, CYP3A4, CYP3A5
  • Transporters: SLCO1B1, ABCB1, ABCG2
  • Other metabolizers: TPMT, DPYD, NUDT15, UGT1A1
  • Receptors: OPRM1, HTR2A, ADRB1
  • HLA genes: HLA-B, HLA-A

2. Drug and Chemical Queries

Retrieve drug information including pharmacogenomic annotations and mechanisms:

```python

# 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()

```

Drug categories with pharmacogenomic significance:

  • Anticoagulants (warfarin, clopidogrel)
  • Antidepressants (SSRIs, TCAs)
  • Immunosuppressants (tacrolimus, azathioprine)
  • Oncology drugs (5-fluorouracil, irinotecan, tamoxifen)
  • Cardiovascular drugs (statins, beta-blockers)
  • Pain medications (codeine, tramadol)
  • Antivirals (abacavir)

3. Gene-Drug Pair Queries

Access curated gene-drug relationships with clinical annotations:

```python

# 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()

```

Clinical annotation sources:

  • CPIC (Clinical Pharmacogenetics Implementation Consortium)
  • DPWG (Dutch Pharmacogenetics Working Group)
  • FDA (Food and Drug Administration) labels
  • Peer-reviewed literature summary annotations

4. CPIC Guidelines

Access evidence-based clinical practice guidelines:

```python

# 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 guideline components:

  • Gene-drug pairs covered
  • Clinical recommendations by phenotype
  • Evidence levels and strength ratings
  • Supporting literature
  • Downloadable PDFs and supplementary materials
  • Implementation considerations

Example guidelines:

  • CYP2D6-codeine (avoid in ultra-rapid metabolizers)
  • CYP2C19-clopidogrel (alternative therapy for poor metabolizers)
  • TPMT-azathioprine (dose reduction for intermediate/poor metabolizers)
  • DPYD-fluoropyrimidines (dose adjustment based on activity)
  • HLA-B*57:01-abacavir (avoid if positive)

5. Allele and Variant Information

Query allele function and frequency data:

```python

# 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()

```

Allele information includes:

  • Functional status (normal, decreased, no function, increased, uncertain)
  • Population frequencies across ethnic groups
  • Defining variants (SNPs, indels, CNVs)
  • Phenotype assignment
  • References to PharmVar and other nomenclature systems

Phenotype categories:

  • Ultra-rapid metabolizer (UM): Increased enzyme activity
  • Normal metabolizer (NM): Normal enzyme activity
  • Intermediate metabolizer (IM): Reduced enzyme activity
  • Poor metabolizer (PM): Little to no enzyme activity

6. Variant Annotations

Access clinical annotations for specific genetic variants:

```python

# 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()

```

Variant data includes:

  • rsID and genomic coordinates
  • Gene and functional consequence
  • Allele associations
  • Clinical significance
  • Population frequencies
  • Literature references

7. Clinical Annotations

Retrieve curated literature annotations (formerly PharmGKB clinical annotations):

```python

# 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()

```

Evidence levels (from highest to lowest):

  • Level 1A: High-quality evidence, CPIC/FDA/DPWG guidelines
  • Level 1B: High-quality evidence, not yet guideline
  • Level 2A: Moderate evidence from well-designed studies
  • Level 2B: Moderate evidence with some limitations
  • Level 3: Limited or conflicting evidence
  • Level 4: Case reports or weak evidence

8. Drug Labels

Access pharmacogenomic information from drug labels:

```python

# 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()

```

Label information includes:

  • Testing recommendations
  • Dosing guidance by genotype
  • Warnings and precautions
  • Biomarker information
  • Regulatory source (FDA, EMA, PMDA, etc.)

9. Pathways

Explore pharmacokinetic and pharmacodynamic pathways:

```python

# 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()

```

Pathway diagrams show:

  • Drug metabolism steps
  • Enzymes and transporters involved
  • Gene variants affecting each step
  • Downstream effects on efficacy/toxicity
  • Interactions with other pathways

Query Workflow

Workflow 1: Clinical Decision Support for Drug Prescription

  1. Identify patient genotype for relevant pharmacogenes:

```python

# Example: Patient is CYP2C19 1/2 (intermediate metabolizer)

response = requests.get("https://api.clinpgx.org/v1/allele/CYP2C19*2")

allele_function = response.json()

```

  1. Query gene-drug pairs for medication of interest:

```python

response = requests.get("https://api.clinpgx.org/v1/geneDrugPair",

params={"gene": "CYP2C19", "drug": "clopidogrel"})

pair_info = response.json()

```

  1. Retrieve CPIC guideline for dosing recommendations:

```python

response = requests.get("https://api.clinpgx.org/v1/guideline",

params={"gene": "CYP2C19", "drug": "clopidogrel"})

guideline = response.json()

# Recommendation: Alternative antiplatelet therapy for IM/PM

```

  1. Check drug label for regulatory guidance:

```python

response = requests.get("https://api.clinpgx.org/v1/drugLabel",

params={"drug": "clopidogrel"})

label = response.json()

```

Workflow 2: Gene Panel Analysis

  1. Get list of pharmacogenes in clinical panel:

```python

pgx_panel = ["CYP2C19", "CYP2D6", "CYP2C9", "TPMT", "DPYD", "SLCO1B1"]

```

  1. For each gene, retrieve all drug interactions:

```python

all_interactions = {}

for gene in pgx_panel:

response = requests.get("https://api.clinpgx.org/v1/geneDrugPair",

params={"gene": gene})

all_interactions[gene] = response.json()

```

  1. Filter for CPIC guideline-level evidence:

```python

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']}")

```

  1. Generate patient report with actionable pharmacogenomic findings.

Workflow 3: Drug Safety Assessment

  1. Query drug for PGx associations:

```python

response = requests.get("https://api.clinpgx.org/v1/chemical",

params={"name": "abacavir"})

drug_id = response.json()[0]['id']

```

  1. Get clinical annotations:

```python

response = requests.get("https://api.clinpgx.org/v1/clinicalAnnotation",

params={"drug": drug_id})

annotations = response.json()

```

  1. Check for HLA associations and toxicity risk:

```python

for annotation in annotations:

if 'HLA' in annotation.get('genes', []):

print(f"Toxicity risk: {annotation['phenotype']}")

print(f"Evidence level: {annotation['evidenceLevel']}")

```

  1. Retrieve screening recommendations from guidelines and labels.

Workflow 4: Research Analysis - Population Pharmacogenomics

  1. Get allele frequencies for population comparison:

```python

response = requests.get("https://api.clinpgx.org/v1/allele",

params={"gene": "CYP2D6"})

alleles = response.json()

```

  1. Extract population-specific frequencies:

```python

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

}

```

  1. Calculate phenotype distributions by population:

```python

# Combine allele frequencies with function to predict phenotypes

phenotype_dist = calculate_phenotype_frequencies(frequency_data)

```

  1. Analyze implications for drug dosing in diverse populations.

Workflow 5: Literature Evidence Review

  1. Search for gene-drug pair:

```python

response = requests.get("https://api.clinpgx.org/v1/geneDrugPair",

params={"gene": "TPMT", "drug": "azathioprine"})

pair = response.json()

```

  1. Retrieve all clinical annotations:

```python

response = requests.get("https://api.clinpgx.org/v1/clinicalAnnotation",

params={"gene": "TPMT", "drug": "azathioprine"})

annotations = response.json()

```

  1. Filter by evidence level and publication date:

```python

high_quality = [a for a in annotations

if a['evidenceLevel'] in ['1A', '1B', '2A']]

```

  1. Extract PMIDs and retrieve full references:

```python

pmids = [a['pmid'] for a in high_quality if 'pmid' in a]

# Use PubMed skill to retrieve full citations

```

Rate Limiting and Best Practices

Rate Limit Compliance

```python

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()

```

Error Handling

```python

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)

```

Caching Results

```python

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 Tool

PharmDOG (formerly DDRx) is ClinPGx's clinical decision support tool for interpreting pharmacogenomic test results:

Key features:

  • Phenoconversion calculator: Adjusts phenotype predictions for drug-drug interactions affecting CYP2D6
  • Custom genotypes: Input patient genotypes to get phenotype predictions
  • QR code sharing: Generate shareable patient reports
  • Flexible guidance sources: Select which guidelines to apply (CPIC, DPWG, FDA)
  • Multi-drug analysis: Assess multiple medications simultaneously

Access: Available at https://www.clinpgx.org/pharmacogenomic-decision-support

Use cases:

  • Clinical interpretation of PGx panel results
  • Medication review for patients with known genotypes
  • Patient education materials
  • Point-of-care decision support

Resources

scripts/query_clinpgx.py

Python script with ready-to-use functions for common ClinPGx queries:

  • get_gene_info(gene_symbol) - Retrieve gene details
  • get_drug_info(drug_name) - Get drug information
  • get_gene_drug_pairs(gene, drug) - Query gene-drug interactions
  • get_cpic_guidelines(gene, drug) - Retrieve CPIC guidelines
  • get_alleles(gene) - Get all alleles for a gene
  • get_clinical_annotations(gene, drug, evidence_level) - Query literature annotations
  • get_drug_labels(drug) - Retrieve pharmacogenomic drug labels
  • search_variants(rsid) - Search by variant rsID
  • export_to_dataframe(data) - Convert results to pandas DataFrame

Consult this script for implementation examples with proper rate limiting and error handling.

references/api_reference.md

Comprehensive API documentation including:

  • Complete endpoint listing with parameters
  • Request/response format specifications
  • Example queries for each endpoint
  • Filter operators and search patterns
  • Data schema definitions
  • Rate limiting details
  • Authentication requirements (if any)
  • Troubleshooting common errors

Refer to this document when detailed API information is needed or when constructing complex queries.

Important Notes

Data Sources and Integration

ClinPGx consolidates multiple authoritative sources:

  • PharmGKB: Curated pharmacogenomics knowledge base (now part of ClinPGx)
  • CPIC: Evidence-based clinical implementation guidelines
  • PharmCAT: Allele calling and phenotype interpretation tool
  • DPWG: Dutch pharmacogenetics guidelines
  • FDA/EMA labels: Regulatory pharmacogenomic information

As of July 2025, all PharmGKB URLs redirect to corresponding ClinPGx pages.

Clinical Implementation Considerations

  • Evidence levels: Always check evidence strength before clinical application
  • Population differences: Allele frequencies vary significantly across populations
  • Phenoconversion: Consider drug-drug interactions that affect enzyme activity
  • Multi-gene effects: Some drugs affected by multiple pharmacogenes
  • Non-genetic factors: Age, organ function, drug interactions also affect response
  • Testing limitations: Not all clinically relevant alleles detected by all assays

Data Updates

  • ClinPGx continuously updates with new evidence and guidelines
  • Check publication dates for clinical annotations
  • Monitor ClinPGx Blog (https://blog.clinpgx.org/) for announcements
  • CPIC guidelines updated as new evidence emerges
  • PharmVar provides nomenclature updates for allele definitions

API Stability

  • API endpoints are relatively stable but may change during development
  • Parameters and response formats subject to modification
  • Monitor API changelog and ClinPGx blog for updates
  • Consider version pinning for production applications
  • Test API changes in development before production deployment

Common Use Cases

Pre-emptive Pharmacogenomic Testing

Query all clinically actionable gene-drug pairs to guide panel selection:

```python

# Get all CPIC guideline pairs

response = requests.get("https://api.clinpgx.org/v1/geneDrugPair",

params={"cpicLevel": "A"}) # Level A recommendations

actionable_pairs = response.json()

```

Medication Therapy Management

Review patient medications against known genotypes:

```python

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

```

Clinical Trial Eligibility

Screen for pharmacogenomic contraindications:

```python

# 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

```

Additional Resources

  • ClinPGx website: https://www.clinpgx.org/
  • ClinPGx Blog: https://blog.clinpgx.org/
  • API documentation: https://api.clinpgx.org/
  • CPIC website: https://cpicpgx.org/
  • PharmCAT: https://pharmcat.clinpgx.org/
  • ClinGen: https://clinicalgenome.org/
  • Contact: api@clinpgx.org (for substantial API use)