target-prioritization について
target-prioritizationは、候補薬剤ターゲットの遺伝子リストから、根拠をまとめたドシエと総合順位を作るパイプラインです。タンパク質、遺伝学、創薬可能性、発現、安全性のデータを統合し、CSV、Markdown、対話型HTMLレポートを生成します。
主な機能
- 01CSV、テキスト、TSVの遺伝子リストに対応
- 02複数の生物医学データソースから根拠を取得
- 03設定可能な重みで遺伝子を採点・順位付け
- 04再利用用にAPI生データを保存
- 05CSV、Markdown、HTMLレポートを生成
活用シーン
- 01差次的発現解析から候補遺伝子を優先付け
- 02複数の根拠軸で候補ターゲットを比較
- 03重みを変更してターゲットを再順位付け
- 04対話型の遺伝子ドシエを共有
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ agents365-ai/ 365-skills --skill target-prioritizationインストール後、Claude Code で/target-prioritizationを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
weights.yamlprompts/rationale_template.mdreferences/api_endpoints.mdscripts/aggregate.pybuild_html_report.pyfetch_chembl.pyfetch_hpa.pyfetch_opentargets.pyfetch_pubmed.pyfetch_uniprot.pyorchestrate.py詳細
ターゲットの優先順位付け
順位付けされた遺伝子リストを対象とする、複数ソースを用いた創薬ターゲットのデューデリジェンスパイプラインです。
このスキルが実行される条件
ユーザーが候補遺伝子のリスト(通常は DE/DEG/scRNA-seq 解析から得られたもの)を持ち、複数のエビデンス軸にわたる遺伝子ごとの詳細情報と、複合スコアによる順位の再評価を求めている場合に実行されます。DE の統計的な順位はあくまで出発点です。最終的な優先順位は、タンパク質の生物学、遺伝学、創薬可能性、研究の成熟度を考慮して決定されます。
よくある入力形式:
gene列を含む CSV(expression_table_pass_either_1s.csvのような DE 出力)- プレーンテキストの遺伝子リスト(1 行に 1 シンボル)
- ユーザーのメッセージ内に直接記載されたシンボルのリスト
出力
<output_dir>/ 内に次の 4 つのファイルを出力します。
targets_report.md— 複合スコア順に並べた遺伝子ごとのセクション。LLM が簡潔な根拠と推奨する次のステップを記載しますtargets_report.html— 単体で動作するインタラクティブなレポート(並べ替え・検索可能なサマリーテーブル、階層でフィルターできる遺伝子ごとのカード、スコア構成要素のバー、UniProt リンク)。Claude が根拠欄とエグゼクティブサマリーを記入した後、最終ステップで.mdと.csvから生成されますtargets_summary.csv— Excel/pandas での並べ替え・フィルタリング用のフラットなテーブルraw_data/<source>.json— API の生レスポンス(監査証跡。今後の再スコアリングにも再利用可能)
パイプライン
input gene list
│
▼
scripts/orchestrate.py
│
├─► fetch_uniprot.py → protein localization, surface, MHC, coding
├─► fetch_opentargets.py → tractability, approved drugs, associated
│ diseases (subsumes GWAS Catalog via OT's
│ integrated genetics evidence), DepMap CRISPR
│ essentiality, gnomAD LOEUF / pLI constraint
├─► fetch_pubmed.py → paper counts (total + focus_disease + cell_context)
├─► fetch_hpa.py → HPA tissue / single-cell specificity + nCPM,
│ expression cluster, cancer prognostics
└─► fetch_chembl.py → top-potency tool compounds per gene (pIC50,
IC50 nM, mechanism) — dossier-only, no score
│
▼
scripts/aggregate.py
│
▼
output_dir/
├─ raw_data/*.json
├─ targets_summary.csv ← composite-score-ranked
└─ targets_report.md ← Claude fills the rationale sections
│
▼
scripts/build_html_report.py ← run AFTER Claude fills rationales
│
▼
output_dir/targets_report.html ← self-contained interactive report
実行方法
python3 ~/myagents/myskills/target-prioritization/scripts/orchestrate.py \
--input <gene_list.csv_or_txt> \
--output <output_dir> \
[--gene-col gene] \
[--top 50]
--inputは、CSV(--gene-colを指定。デフォルトはgene)、.txt/.tsv、または先頭列に遺伝子シンボルが含まれる任意のファイルを受け付けます。先頭のセルがgene/symbol(大文字と小文字を区別しない)の場合は、ヘッダーとしてスキップします。--topは詳細情報の対象を入力遺伝子の先頭 N 個に制限します(デフォルトは 50)。ここまでは入力順を維持し、その後に複合スコアで順位を付け直します。
orchestrate.py は 5 つのフェッチャーを並列実行します(すべての呼び出しが I/O 待ちのため、Python スレッドを使用)。各フェッチャーは自己完結型の JSON を <output_dir>/raw_data/<source>.json に書き込みます。次に aggregate.py がそれらをマージし、weights.yaml を使用して複合スコアを計算し、targets_summary.csv を書き込み、遺伝子ごとに 1 つのセクションを持つ targets_report.md のひな形を出力します。根拠とリスクの欄は空欄のままになっており、Claude が記入します。
複合スコア
重みは weights.yaml に記載されています。--weights を使って実行ごとに上書きできます。デフォルト値は、「創薬可能で、遺伝学的な裏付けがあり、安全域が良好で、対象細胞に発現するターゲットを見つける」ことを目的としています。
composite_score = w1 * druggability_score (approved drugs, tractability, clin trials)
+ w2 * disease_genetics_score (OpenTargets disease associations + focus-disease bonus)
+ w3 * tractability_bonus (surface or secreted vs intracellular)
+ w4 * tissue_specificity (HPA tissue tag — narrow expression = cleaner window)
+ w5 * cell_context_score (HPA single-cell nCPM rank in FOCUS_CELL_TYPES)
+ w6 * essentiality_score (DepMap CRISPR % essential, pan-essentials capped)
+ w7 * safety_constraint_score (gnomAD LOEUF — high = LoF tolerated → safer to inhibit)
+ w8 * expression_score (from input DE if present)
+ w9 * novelty_bonus (favors moderately studied)
- w10 * over_studied_penalty (PubMed total > cap → diminishing returns)
ChEMBL は詳細情報の列(chembl_target_id、chembl_best_pchembl、chembl_best_ic50_nm、chembl_top_compounds)に情報を提供しますが、スコアの構成要素には含まれません。ChEMBL の役割は、「推奨する次のステップ」欄で提示できる具体的なツール化合物を見つけることです。
各構成要素は [0, 1] に正規化されます。そのため、複合スコアのおおよその範囲は [-w7, sum(w1..w6)] となり、報告前に最小値と最大値に基づいて再スケーリングされます。現在のデフォルト値は weights.yaml を確認してください。
根拠の作成
aggregate.py が根拠欄を空欄にした targets_report.md を生成した後、Claude は遺伝子ごとの詳細情報を読み、各遺伝子について 2~3 文の根拠を記載します。prompts/rationale_template.md のテンプレートを使用してください。最も有力なエビデンスを 1 行、主なリスクを 1 行、推奨する次の実験ステップを 1 行で記載する構成が指定されています。
複合スコア上位 5~10 個の遺伝子については、レポート冒頭に短いエグゼクティブサマリーも記載してください。事実に基づき、詳細情報のデータを根拠としてください。JSON に含まれている内容を超えて、事実を捏造しないでください。
HTML レポートの作成(最終ステップ)
targets_report.mdの根拠欄とエグゼクティブサマリーを記入したら、build_html_report.pyを実行して、自己完結型のインタラクティブなHTMLレポートを生成します。
python3 ~/myagents/myskills/target-prioritization/scripts/build_html_report.py \
--report-dir <output_dir> \
[--title "Target Prioritization Report"] \
[--subtitle "<cohort / contrast description>"]
これが必ず最後のステップです。--report-dirからtargets_summary.csvとtargets_report.mdを読み込み、同じディレクトリにtargets_report.htmlを書き出します。出力は外部依存のない単一ファイルで、上部に並べ替え可能な概要テーブル、ライブ検索とティア絞り込みボタン、遺伝子ごとのカード(チップ付き:表面/分泌/MHC/対象疾患/承認済み薬剤)、完全なドシエのグリッド、各スコア要素の横棒グラフが含まれます。ブラウザーで直接開き、そのまま共有できます。
実行時に根拠欄がまだ空欄の場合、遺伝子ごとのカードの該当箇所には「未記入」と表示されます。レイアウトのプレビューには便利ですが、共有する前に根拠を記入するようユーザーに伝えてください。
データソースに関する注意
すべて無料で、API キーは不要です。レート制限は各フェッチャーで処理されます。
- UniProt REST — 100リクエスト/秒。
accessionクエリでバッチ処理します - OpenTargets GraphQL — 寛容な制限で、単一のエンドポイントです。統合された
associatedDiseasesを通じて、疾患の遺伝学的シグナルを提供します - PubMed E-utilities — キーなしでは3リクエスト/秒です。フェッチャーはこの制限を守ります
- Human Protein Atlas — シンボルからENSGへの変換には
search_download.phpを使用し、その後、ENSGごとに/<ENSG>.jsonを取得します。レート制限は明記されていません。フェッチャーは遺伝子ごとに0.15秒待機します - DepMap CRISPR必須性 — OpenTargets呼び出し内で
target.depMapEssentialityを通じて取得します(個別のエンドポイントはありません) - gnomADの制約 — OpenTargets呼び出し内で
target.geneticConstraintを通じて取得します(gnomADのAPIへの直接アクセスに対するWAFを回避します) - ChEMBL REST —
target/search.jsonの後にactivity.jsonを取得します。約5リクエスト/秒で、フェッチャーは遺伝子ごとに0.2秒待機します
APIの詳細やフィールドの対応関係については、references/api_endpoints.mdを参照してください。
対象疾患と細胞コンテキストの変更
このスキルには自己免疫疾患/T細胞のデフォルト設定が含まれていますが、特定の疾患に限定されないよう設計されています。焦点を変更するには、次の3か所を編集します。
scripts/fetch_opentargets.pyとscripts/aggregate.py—FOCUS_DISEASE_TERMSを、薬剤または疾患の関連を「対象範囲内」と判定する小文字の部分文字列に変更します(例:腫瘍領域なら("cancer", "carcinoma", "lymphoma")、神経変性疾患なら("alzheimer", "parkinson", "huntington", "als")、代謝性疾患なら("diabetes", "obesity", "fatty liver", "nash"))。scripts/aggregate.py—FOCUS_CELL_TYPESを、cell_context_scoreの算出に使うHPAのシングルセル型名に変更します。HPAの文字列と完全に一致させる必要があります(大文字と小文字を区別)。各領域の例については、このタプルの上にあるコメントブロックを参照してください。scripts/fetch_pubmed.py—CONTEXTS内のfocus_diseaseとcell_contextのクエリを調整します(これらはドシエ内のPubMed件数に使われます)。
ほかにコードを変更する必要はありません。CSVの列名には、すでに中立的なfocus_disease_*/cell_contextの接頭辞が使われています。
このスキルを使用しない場合
- 単一遺伝子の検索(過剰な方法です。Claudeにウェブ検索を依頼してください)
- ヒト以外の遺伝子(ほとんどのAPIはヒトのみを対象とするため、フェッチャーは何も返さずに終了します)
- 創薬ターゲットの選定を目的としない、文献のレビューのみの場合 — 代わりに
scholar-deep-researchまたはliterature-reviewを使用してください
繰り返し実行のヒント
このパイプラインは、低コストで再実行できるように設計されています。
- 生のJSONキャッシュを使うため、別の
weights.yamlで再スコアリングする場合も、aggregate.pyを再実行するだけで1秒で完了します - 新しいエビデンスソースを追加するには、同じ
{gene: {fields}}形式でraw_data/<source>.jsonを書き出すscripts/fetch_<source>.pyを追加し、aggregate.py::compute_composite_scoreに対応する項目を追加します。