alterlab-primekg について
alterlab-primekgは、PrimeKG医学知識グラフを検索するスキルで、創薬や生物医学ネットワーク分析を行う人向けです。エンティティ検索、疾患関連情報の要約、薬剤と疾患の経路検索に対応し、PrimeKG研究の再現・比較に使えます。新規分析では上流がOptimusKGを推奨しています。
主な機能
- 01遺伝子・薬剤・疾患ノードの検索
- 02エンティティの直接関連の取得
- 03疾患関連遺伝子と表現型の要約
- 04薬剤・疾患関連経路の検索
活用シーン
- 01疾患の標的と機序の調査
- 02ドラッグリポジショニング候補の探索
- 03表現型・疾患・遺伝子の関連分析
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alterlab-ieu/ alterlab-academic-skills --skill alterlab-primekgインストール後、Claude Code で/alterlab-primekgを入力して読み込まれたか確認します。
同梱ファイルevals/evals.jsonscripts/query_primekg.py
詳細
PrimeKG ナレッジグラフスキル
概要
PrimeKG(Chandak、Huang、Zitnik、Scientific Data 2023;mims-harvard/PrimeKG)は、20 の主要なリソースを統合した精密医療ナレッジグラフです。30 種類のエッジタイプと 10 種類のノードタイプにわたって、129,375 個のノードと 4,050,249 本のエッジを含み、薬剤と標的、疾患と遺伝子、疾患と表現型の関連などが含まれます。公開されている Dataverse ファイルは、2022 年の固定スナップショットです。
上流で後継に置き換えられています。 PrimeKG のメンテナーは、PrimeKG は OptimusKG(同じ研究室による、より新しいデータを含むスーパーセット。190,531 個のノード、2,180 万本のエッジ、26 種類の関係タイプ)に置き換えられたと表明しており、新しい作業のほぼすべてで OptimusKG を推奨しています。新しい分析には OptimusKG を使用してください(
uv pip install optimuskg、Python ≥ 3.12;import optimuskg; nodes, edges = optimuskg.load_graph(lcc=True)またはG = optimuskg.load_networkx(lcc=True);データ:Harvard Dataverse doi:10.7910/DVN/IYNGEV、ドキュメント:https://optimuskg.ai)。公開済みの PrimeKG の結果やベンチマークを再現または比較する場合は、この PrimeKG ワークフローを使用してください。
主な機能:
- ノード(遺伝子、タンパク質、薬剤、疾患、表現型)を検索します
- 直接の隣接ノード(関連するエンティティと臨床的エビデンス)を取得します
- 疾患の局所的なコンテキスト(関連する遺伝子、薬剤、表現型)を分析します
- 薬剤から疾患への経路(転用の可能性)を特定します
データアクセス: scripts/query_primekg.py を使用してプログラムからアクセスします。Harvard Dataverse で公開されている kg.csv を読み込むようにローダーを設定してください。PRIMEKG_DATA_PATH 環境変数で指定できます(デフォルトはスクリプトからの相対パス ../data/kg.csv です)。すべての関数は、kg.csv の x_*/y_*/relation/display_relation 列を操作します。
このスキルを使用する場面
以下の場合にこのスキルを使用してください。
- 知識ベースの創薬: 疾患の標的やメカニズムを特定します。
- 薬剤の転用: 新たな適応症へのエビデンスがある可能性のある既存薬を探します。
- 表現型分析: 症状や表現型が疾患や遺伝子とどのように関連するかを把握します。
- マルチスケール生物学: 分子標的(遺伝子)と臨床転帰(疾患)の隔たりを埋めます。
- ネットワーク薬理学: 薬剤と標的の相互作用がネットワーク全体に及ぼす影響を調査します。
起動しないケース
| シナリオ | 代わりに使用 |
|---|---|
| 標的に関するスコア付きの標的と疾患のエビデンス、創薬可能性、既知の薬剤 | alterlab-opentargets |
| 種をまたぐ疾患と遺伝子と表現型の関連(HPO、OMIM、Orphanet) | alterlab-monarch |
| 薬剤の完全な記録:薬理作用、相互作用、標的、添付文書 | alterlab-drugbank |
| リンク予測のための知識グラフ埋め込みモデル(TransE/RotatE)のトレーニング | alterlab-torchdrug |
基本的なワークフロー
スキルのディレクトリから uv run python で実行してください(これにより scripts/ をインポートできます)。または、scripts/ ディレクトリを sys.path に追加してください。PRIMEKG_DATA_PATH に kg.csv のパスを設定します。
1. エンティティを検索する
遺伝子、薬剤、疾患の識別子を検索します。node_type には PrimeKG の正確なタイプ文字列を渡してください(以下のノードタイプを参照)。たとえば、"gene" ではなく "gene/protein" を指定します。
from scripts.query_primekg import search_nodes
# Search for Alzheimer's disease nodes
results = search_nodes("Alzheimer", node_type="disease")
# Returns: [{"id": <MONDO id>, "type": "disease", "name": "...",
# "source": "MONDO" | "MONDO_grouped"}, ...]
# Disease ids are MONDO ids; PrimeKG groups diseases, so one name can map to
# several MONDO ids. Use the returned id with get_neighbors.
2. 隣接ノードを取得する(直接の関連)
接続されているすべてのノードと関係タイプを取得します。
from scripts.query_primekg import get_neighbors
# Get all neighbors of a specific disease ID (the MONDO id from search_nodes)
neighbors = get_neighbors(disease_id, relation_type="disease_protein")
# Returns: List of neighbors like
# {"neighbor_name": "APOE", "neighbor_type": "gene/protein",
# "relation": "disease_protein", "display_relation": "associated with", ...}
3. 疾患のコンテキストを分析する
疾患の関連を要約する高水準の関数です。
from scripts.query_primekg import get_disease_context
# Comprehensive summary for a disease
context = get_disease_context("Alzheimer")
# Access: context['associated_genes'], context['associated_drugs'],
# context['phenotypes'], context['related_diseases']
4. 薬剤から疾患への経路をたどる(転用)
グラフに基づく転用のエビデンスとして、深さ 2 の経路(薬剤 -> 共通の遺伝子/タンパク質標的 -> 疾患)を検索します。
from scripts.query_primekg import find_paths
# drug_id and disease_id come from search_nodes
paths = find_paths(drug_id, disease_id, max_depth=2)
# Each path is a list of edge dicts; a drug -> gene/protein -> disease path is a
# candidate new-indication hypothesis. For deeper traversal, load kg.csv into networkx.
PrimeKG のノードタイプとリレーションタイプ
kg.csv で使われている正確な文字列です。フィルタリング時には完全に一致させてください。
ノードタイプ(x_type/y_type、全10種類):gene/protein、drug、disease、
effect/phenotype、biological_process、molecular_function、cellular_component、
pathway、anatomy、exposure。注:遺伝子には gene ではなく gene/protein を、
表現型には phenotype ではなく effect/phenotype を使います。
主なリレーション(relation、全30種類)。エッジは無向です。両方の端点を確認してください。
protein_protein:物理的なタンパク質間相互作用(PPI)drug_protein:薬剤と標的/作用機序の関連disease_protein:疾患と遺伝子/タンパク質の関連(disease_geneはありません)indication、contraindication、off-label use:薬剤と疾患の3種類のリレーション (単一のdrug_diseaseはありません)disease_phenotype_positive/disease_phenotype_negative:表現型の有無bioprocess_protein、pathway_protein、molfunc_protein、cellcomp_protein:GO/ パスウェイのアノテーションanatomy_protein_present/anatomy_protein_absent、exposure_*:解剖学的構造/曝露の関連
ベストプラクティス
- 具体的な ID を使用する:
get_neighborsを使うときは、search_nodesで正しい ID を取得していることを確認してください(疾患 ID は MONDO ID です)。 - まずコンテキストを確認する: 特定の遺伝子や薬剤を詳しく調べる前に、
get_disease_contextを使って概要を把握してください。 - リレーションをフィルタリングする:
get_neighborsのrelation_typeフィルターを使って、特定のエビデンスに絞り込んでください(例:drug_proteinのみ、または治療の関連にはindication)。上記のリストにある正確なリレーション文字列を使用してください。 - 疾患のグループ化に注意する: PrimeKG では、約22,000件の MONDO 概念が約17,000件のグループ化された疾患ノードに集約されます。そのため、1つの疾患名が、同じ
node_indexを共有する複数の MONDO ID に対応する場合があります。
リソース
スクリプト
scripts/query_primekg.py:主要な関数 —search_nodes、get_neighbors、find_paths、get_disease_context。
データパス
- データ:
kg.csv(PRIMEKG_DATA_PATHを設定。デフォルトは../data/kg.csv)、Harvard Dataverse 提供(doi:10.7910/DVN/IXA7BM)。ダウンロード:wget -O kg.csv https://dataverse.harvard.edu/api/access/datafile/6180620。または、PyTDC にローダーが含まれています(from tdc.resource import PrimeKG)。 - 129,375個のノード、4,050,249本のエッジ、10種類のノードタイプ、30種類のエッジタイプ。
- pandas(
pd.read_csv、low_memory=True)で読み込みます。kg.csv は約0.98 GB(981,751,236 bytes)です。各関数で再読み込みされるため、クエリを繰り返す場合は DataFrame をキャッシュするか、実際のグラフストアを使用してください。
AlterLab Academic Skills スイートの一部です。