gene-knowledge-integration
community[skill]
Given a gene symbol (e.g. TPMT), query 3 public databases (ClinGen CAR, PharmGKB, Monarch) to obtain gene registry info, FDA drug labels, clinical annotations, and gene-phenotype associations. Save all results into a JSON file.
$
/plugin install InnoClawdetails
Gene Knowledge Integration
Usage
1. Tool Descriptions
This skill chains 3 public genomics/pharmacogenomics database APIs sequentially to build a comprehensive pharmacogenomics profile for a given gene.
Tool 1: ClinGen CAR — Gene Registry Info
Query ClinGen Allele Registry API to get gene registration information.
API: GET https://reg.genome.network/gene?HGNC.symbol={gene_symbol}
Args:
gene_symbol (str): HGNC gene symbol (e.g. "TPMT")
Return:
Gene record (dict): Contains @id (GN id), locus (genomic coordinates),
externalRecords (HGNC id/name/symbol, NCBI gene id, MANE transcripts).
Tool 2: PharmGKB (ClinPGx) — Gene Info, FDA Labels & Clinical Annotations
Query PharmGKB ClinPGx API to get pharmacogenomics information.
API (gene): GET https://api.clinpgx.org/v1/data/gene?symbol={gene_symbol}&view=base
API (labels): GET https://api.clinpgx.org/v1/data/label?source=fda&relatedGenes.symbol={gene_symbol}&view=base
API (clin): GET https://api.clinpgx.org/v1/data/clinicalAnnotation?location.genes.symbol={gene_symbol}&view=base
Args:
gene_symbol (str): HGNC gene symbol (e.g. "TPMT")
Return:
gene: PharmGKB gene record with accession id, alternate names, cross-references.
labels: FDA drug labels mentioning this gene (drug name, source, testing level).
clinicalAnnotations: Clinical annotations linking genotype to phenotype
(level of evidence, related chemicals, phenotype categories).
Tool 3: Monarch Initiative — Gene-Phenotype Associations
Query Monarch Initiative API to get gene-to-phenotype associations.
API: GET https://api-v3.monarchinitiative.org/v3/api/entity/{hgnc_id}/biolink:GeneToPhenotypicFeatureAssociation
Args:
hgnc_id (str): HGNC identifier (e.g. "HGNC:12014" for TPMT)
Return:
items (list): Each item contains subject (gene), object (phenotype HP term),
object_label (phenotype name), evidence_types, publications.
2. Gene Knowledge Integration
Query 3 databases (ClinGen CAR → PharmGKB → Monarch) for a given gene symbol, then save all results into a single JSON file {gene_symbol}_knowledge.json.
import requests
import json
from datetime import datetime
gene_symbol = "TPMT"
results = {"query_gene": gene_symbol, "timestamp": datetime.now().isoformat()}
# ── Step 1: ClinGen CAR — 基因注册信息 ──
# 调用 ClinGen Allele Registry API,获取基因的 GN id、基因组坐标、
# HGNC/NCBI 外部记录和 MANE 转录本信息。
car_url = f"https://reg.genome.network/gene?HGNC.symbol={gene_symbol}"
car_resp = requests.get(car_url, headers={"Accept": "application/json"}, timeout=30)
car = car_resp.json()
results["clingen_car"] = car
hgnc_id = car.get("externalRecords", {}).get("HGNC", {}).get("id", "")
print(f"[ClinGen CAR] 基因={gene_symbol}, GN_id={car.get('@id','')}, HGNC={hgnc_id}")
# ── Step 2a: PharmGKB — 基因信息 ──
# 调用 PharmGKB ClinPGx API,获取基因的药物基因组学基本信息。
pgx_gene_url = f"https://api.clinpgx.org/v1/data/gene?symbol={gene_symbol}&view=base"
pgx_gene_resp = requests.get(pgx_gene_url, timeout=30)
pgx_gene = pgx_gene_resp.json()
results["pharmgkb_gene"] = pgx_gene
print(f"[PharmGKB] 基因信息获取成功")
# ── Step 2b: PharmGKB — FDA 药物标签 ──
# 查询与该基因相关的 FDA 药物标签,了解哪些药物的说明书提到了该基因。
pgx_label_url = (
f"https://api.clinpgx.org/v1/data/label"
f"?source=fda&relatedGenes.symbol={gene_symbol}&view=base"
)
pgx_labels_resp = requests.get(pgx_label_url, timeout=30)
pgx_labels = pgx_labels_resp.json()
results["pharmgkb_fda_labels"] = pgx_labels
print(f"[PharmGKB] FDA药物标签获取成功")
# ── Step 2c: PharmGKB — 临床注释 ──
# 查询该基因相关的临床注释,包含基因型-表型关联的证据等级。
pgx_clin_url = (
f"https://api.clinpgx.org/v1/data/clinicalAnnotation"
f"?location.genes.symbol={gene_symbol}&view=base"
)
pgx_clin_resp = requests.get(pgx_clin_url, timeout=30)
pgx_clin = pgx_clin_resp.json()
results["pharmgkb_clinical_annotations"] = pgx_clin
print(f"[PharmGKB] 临床注释获取成功")
# ── Step 3: Monarch — 基因表型关联 ──
# 调用 Monarch Initiative API,获取该基因关联的表型(HPO terms),
# 需要使用 Step 1 中获取的 HGNC id。
if hgnc_id:
monarch_url = (
f"https://api-v3.monarchinitiative.org/v3/api/entity/{hgnc_id}"
f"/biolink:GeneToPhenotypicFeatureAssociation"
)
monarch_resp = requests.get(monarch_url, timeout=30)
monarch = monarch_resp.json()
items = monarch.get("items", [])
results["monarch_phenotypes"] = {
"association_count": len(items),
"associations": items
}
phenotypes = [i.get("object_label", "") for i in items[:5]]
print(f"[Monarch] 表型关联数={len(items)}, 前5个={phenotypes}")
else:
results["monarch_phenotypes"] = {"error": "HGNC id not found from ClinGen CAR"}
print("[Monarch] 跳过: 未获取到 HGNC id")
# ── 保存结果到 JSON 文件 ──
output_file = f"{gene_symbol}_knowledge.json"
with open(output_file, "w", encoding="utf-8") as f:
json.dump(results, f, indent=2, ensure_ascii=False)
print(f"\n✓ 所有结果已保存: {output_file}")
technical
- github
- SpectrAI-Initiative/InnoClaw
- stars
- 374
- license
- Apache-2.0
- contributors
- 16
- last commit
- 2026-04-20T01:27:21Z
- file
- .claude/skills/gene-knowledge-integration/SKILL.md