mcpField
A
alterlab-depmap

alterlab-depmap

github.com/alterlab-ieuデータ・データベース7868 回インストール5 週間前に更新
リポジトリ

alterlab-depmap について

alterlab-depmapは、DepMapのがん細胞株依存性データを解析する、標的検証やバイオマーカー研究向けのスキルです。公開リリースの行列をダウンロードしてローカルで解析し、遺伝子依存性、薬剤感受性、共必須性を調べます。

主な機能

  1. 01Figshare経由でリリースファイルを取得
  2. 02CRISPR遺伝子効果行列の読み込み
  3. 03がん選択的依存性の特定
  4. 04変異と依存性の関連解析
  5. 05遺伝子共必須性の算出
  6. 06PRISM薬剤感受性の解析

活用シーン

  1. 01がん種ごとの候補標的の検証
  2. 02合成致死関係の探索
  3. 03依存性を予測するバイオマーカーの特定
  4. 04ゲノム特徴と化合物感受性の関連付け

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alterlab-ieu/alterlab-academic-skills --skill alterlab-depmap

インストール後、Claude Code で/alterlab-depmapを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

evals/
evals.json
references/
dependency_analysis.md
scripts/
query_depmap.py

詳細

DepMap — がん依存性マップ

概要

Broad Institute が運営する Cancer Dependency Map(DepMap)プロジェクトでは、ゲノム規模の CRISPR ノックアウトスクリーニング(DepMap CRISPR)、RNA 干渉(RNAi)、化合物感受性アッセイ(PRISM)を用いて、数百のがん細胞株における遺伝子依存性を体系的に特性評価しています。DepMap のデータは、次の目的に不可欠です。

  • 特定のがん種でどの遺伝子が必須かを特定する
  • がん選択的な依存性(治療標的)を見つける
  • がん治療薬の標的を検証する
  • 合成致死相互作用を発見する

主なリソース:

アクセス方法 — まずお読みください。 DepMap には、遺伝子レベルのクエリに対応する、文書化された安定した公開 REST API がありません。また、ポータル(depmap.org/portal/api/... やデータページを含む)は現在、スクレイピングをしないようユーザーに求める Cloudflare のブラウザー認証の背後にあります。スクリプトによるリクエストではデータではなく認証ページが返されます。サポートされているワークフローは、リリースの CSV マトリックスをダウンロードし、pandas を使ってローカルで分析する方法です。リリース 24Q4 までのファイルにプログラムからキーなしでアクセスするには、Figshare API を利用します(/articles/{id}/files?page_size=1000 で name と download_url が一覧表示されます。このエンドポイントにはページネーションがあり、デフォルトでは 1 ページあたり 10 ファイルです)。scripts/query_depmap.py がこの処理をラップします。新しいリリース(25Q2 以降、最新は 26Q1、2026 年 4 月)は、データページからブラウザーでダウンロードします。Sanger の Project Score CRISPR スクリーニングには、キー不要の JSON:API(https://api.cellmodelpassports.sanger.ac.uk)が用意されています(非商用利用)。

このスキルを使用する場面

次の場合に DepMap を使用します。

  • 標的の検証:特定の変異(例:KRAS 変異)を持つがん細胞株の生存に、その遺伝子は必須ですか?
  • バイオマーカーの発見:ある遺伝子のノックアウトに対する感受性を予測するゲノム特徴は何ですか?
  • 合成致死:別の遺伝子が変異または欠失している場合に、選択的に必須となる遺伝子を見つける
  • 薬剤感受性:化合物への反応を予測する細胞株の特徴は何ですか?
  • がん種横断的な必須性:ある遺伝子はすべてのがん種で広く必須ですか(標的として不適切)、それとも選択的に必須ですか?
  • 相関分析:依存性プロファイルに相関のある遺伝子ペアはどれですか(共必須性)?
該当しない場合
シナリオ代わりに使用
患者腫瘍における変異/CNA 頻度(TCGA、MSK-IMPACT)と生存率alterlab-cbioportal
体細胞変異のキュレーション済みカタログ、Cancer Gene Censusalterlab-cosmic
標的と疾患の集約されたエビデンス、創薬可能性、安全性alterlab-opentargets
精製標的に対する化合物の力価(IC50/Ki)alterlab-chembl

基本概念

依存性スコア
スコア範囲意味
Chronos(CRISPR)~ -3 to 0+より負の値ほど必須性が高い。一般的な必須性の閾値:−1。全般的に必須な遺伝子は ~−1 to −2
RNAi DEMETER2~ -3 to 0+Chronos と同様の尺度
Gene Effect正規化済み正規化された Chronos。−1 は一般的に必須な遺伝子の効果の中央値

主な閾値:

  • Chronos ≤ −0.5:依存性が高い可能性
  • Chronos ≤ −1:依存性が強い(一般的な必須性の範囲)
細胞株のアノテーション

Model.csv(現行リリース)にはモデルごとに 1 行あります。

  • ModelID:一意の識別子(例:ACH-000001) — すべてのマトリックスの行インデックス
  • CellLineName(および StrippedCellLineName):人が読み取れる名前
  • OncotreePrimaryDisease:がん種
  • OncotreeLineage:大まかな組織系統
  • OncotreeSubtype:特定のサブタイプ

2023 年以前のリリースには、DepMap_ID、cell_line_name、 primary_disease、lineage、lineage_subtype を含む sample_info.csv が付属していました。

主な機能

1. リリースファイルの解決とダウンロード(Figshare API、キー不要)

リリースのファイル一覧を取得し、名前からファイルのダウンロード URL を特定してから、ディスクにストリーミングします。記事 ID:24Q4 = 27993248、24Q2 = 25880521、23Q4 = 24667905。Figshare でのホスティングは 24Q4 の後に終了しました。新しいリリース(25Q2 以降)は https://depmap.org/portal/data_page/ から手動でダウンロードしてください。

import requests

FIGSHARE = "https://api.figshare.com/v2"

def list_release_files(article_id=27993248):
    """List {name, download_url} for every file in a DepMap release.

    The endpoint is paginated (default 10 files/page); request a large page so
    Model.csv and the Omics files are included.
    """
    r = requests.get(f"{FIGSHARE}/articles/{article_id}/files",
                     params={"page_size": 1000}, timeout=60)
    r.raise_for_status()
    return {f["name"]: f["download_url"] for f in r.json()}

def download_depmap_file(name, article_id=27993248, out_path=None):
    """Resolve `name` to its Figshare URL and stream it to disk."""
    url = list_release_files(article_id)[name]   # KeyError if name not in release
    out_path = out_path or name
    with requests.get(url, stream=True, timeout=300) as r:
        r.raise_for_status()
        with open(out_path, "wb") as f:
            for chunk in r.iter_content(chunk_size=1 << 16):
                f.write(chunk)
    return out_path

# download_depmap_file("CRISPRGeneEffect.csv")   # ~430 MB
# CLI equivalent: scripts/query_depmap.py (see end of file)

細胞株のメタデータは Model.csv(現行リリース)にあります。古いリリースでは sample_info.csv が使用されていました。列名もリリースによって変わっています(DepMap_ID → ModelID、primary_disease → OncotreePrimaryDisease、lineage → OncotreeLineage)。思い込みで進めず、ダウンロードしたバージョンのヘッダーを確認してください。

2. Gene Effect マトリックスの読み込み
import pandas as pd

def load_depmap_gene_effect(filepath="CRISPRGeneEffect.csv"):
    """
    Load DepMap CRISPR gene effect matrix.
    Rows = cell lines (ModelID, e.g. ACH-000001), Columns = genes ("SYMBOL (EntrezID)")
    """
    df = pd.read_csv(filepath, index_col=0)
    # Rename columns to gene symbols only
    df.columns = [col.split(" ")[0] for col in df.columns]
    return df

def load_cell_line_info(filepath="Model.csv"):
    """Load cell line metadata (older releases: sample_info.csv)."""
    return pd.read_csv(filepath)
3. 選択的依存性の特定
import numpy as np
import pandas as pd

def find_selective_dependencies(gene_effect_df, cell_line_info, target_gene,
                                 cancer_type=None, threshold=-0.5):
    """Find cell lines selectively dependent on a gene."""

    # Get scores for target gene
    if target_gene not in gene_effect_df.columns:
        return None

    scores = gene_effect_df[target_gene].dropna()
    dependent = scores[scores <= threshold]

    # Add cell line info (Model.csv column names; see Cell Line Annotations)
    result = pd.DataFrame({
        "ModelID": dependent.index,
        "gene_effect": dependent.values
    }).merge(cell_line_info[["ModelID", "CellLineName", "OncotreePrimaryDisease",
                             "OncotreeLineage"]])

    if cancer_type:
        result = result[result["OncotreePrimaryDisease"].str.contains(
            cancer_type, case=False, na=False)]

    return result.sort_values("gene_effect")

# Example usage (after loading data; adjust column names to your release header)
# df_effect = load_depmap_gene_effect("CRISPRGeneEffect.csv")
# cell_info = load_cell_line_info("Model.csv")
# deps = find_selective_dependencies(df_effect, cell_info, "KRAS", cancer_type="Lung")
4. バイオマーカー分析(Gene Effect と変異)
import pandas as pd
from scipy import stats

def biomarker_analysis(gene_effect_df, mutation_df, target_gene, biomarker_gene):
    """
    Test if mutation in biomarker_gene predicts dependency on target_gene.

    Args:
        gene_effect_df: CRISPR gene effect DataFrame
        mutation_df: OmicsSomaticMutationsMatrixDamaging (0 = none, 1 = damaging,
            2 = damaging with summed allele fraction > 0.95); rename its
            "SYMBOL (EntrezID)" columns to symbols as for the gene-effect matrix
        target_gene: Gene to assess dependency of
        biomarker_gene: Gene whose mutation may predict dependency
    """
    if target_gene not in gene_effect_df.columns or biomarker_gene not in mutation_df.columns:
        return None

    # Align cell lines
    common_lines = gene_effect_df.index.intersection(mutation_df.index)
    scores = gene_effect_df.loc[common_lines, target_gene].dropna()
    mutations = mutation_df.loc[scores.index, biomarker_gene]

    # Treat 1 and 2 as mutant — "== 1" would drop the (near-)homozygous lines.
    mutated = scores[mutations > 0]
    wt = scores[mutations == 0]

    stat, pval = stats.mannwhitneyu(mutated, wt, alternative='less')

    return {
        "target_gene": target_gene,
        "biomarker_gene": biomarker_gene,
        "n_mutated": len(mutated),
        "n_wt": len(wt),
        "mean_effect_mutated": mutated.mean(),
        "mean_effect_wt": wt.mean(),
        "pval": pval,
        "significant": pval < 0.05
    }
5. 共必須性分析
import pandas as pd

def co_essentiality(gene_effect_df, target_gene, top_n=20):
    """Find genes with most correlated dependency profiles (co-essential partners)."""
    if target_gene not in gene_effect_df.columns:
        return None

    target_scores = gene_effect_df[target_gene].dropna()

    correlations = {}
    for gene in gene_effect_df.columns:
        if gene == target_gene:
            continue
        other_scores = gene_effect_df[gene].dropna()
        common = target_scores.index.intersection(other_scores.index)
        if len(common) < 50:
            continue
        r = target_scores[common].corr(other_scores[common])
        if not pd.isna(r):
            correlations[gene] = r

    corr_series = pd.Series(correlations).sort_values(ascending=False)
    return corr_series.head(top_n)

# Co-essential genes often share biological complexes or pathways

クエリのワークフロー

ワークフロー 1:がん種の標的検証
  1. CRISPRGeneEffect.csv と細胞株のメタデータファイル(Model.csv、または古いリリースでは sample_info.csv)をダウンロードします
  2. がん種で細胞株をフィルタリングします
  3. がん種とそれ以外の全細胞株について、標的遺伝子の平均 gene effect を計算します
  4. 選択性を計算します。この依存性は、対象のがん種にどの程度特異的ですか?
  5. 変異、発現、または CNA データと照合し、バイオマーカーを調べます
ワークフロー 2:合成致死スクリーニング
  1. 対象遺伝子に変異または欠失がある細胞株を特定します(例:BRCA1 変異株)
  2. 変異株と WT 株について、全遺伝子の gene effect スコアを計算します
  3. 変異株で有意に必須性が高い遺伝子(合成致死パートナー)を特定します
  4. 選択性と効果量で絞り込みます
ワークフロー 3:化合物感受性分析
  1. PRISM 化合物感受性データをダウンロードします(データページにある個別の PRISM Repurposing データセットで、四半期ごとの CRISPR/Omics リリースには含まれていません)
  2. 化合物の AUC/log2(fold-change)とゲノム特性を相関させます
  3. 化合物感受性を予測するバイオマーカーを特定します

DepMap データファイルのリファレンス

ファイル説明
CRISPRGeneEffect.csvCRISPR Chronos gene effect(主要な依存性データ)
CRISPRGeneEffectUncorrected.csvコピー数補正もスケーリングも行っていない Chronos スコア
CRISPRGeneDependency.csv各細胞株において各遺伝子が依存性を持つ確率
Model.csv細胞株のメタデータ(系統、疾患など)。古いリリースでは sample_info.csv
OmicsExpressionProteinCodingGenesTPMLogp1.csvmRNA 発現
OmicsSomaticMutationsMatrixDamaging.csv有害な体細胞変異(0 はなし/1 は有害/2 は有害、合計 AF > 0.95)
OmicsCNGene.csv遺伝子ごとのコピー数

24Q4 のファイル一覧(73 ファイル)と照合済みです。DEMETER2 RNAi と PRISM 薬剤感受性データは、データページにある個別のデータセットで、四半期ごとのリリースには含まれていません。ファイル名はリリースごとに多少異なります。スクリプトを作成する前に、ファイル一覧(query_depmap.py list またはポータルのデータページ)で確認してください。

ベストプラクティス

  • 現行の CRISPR 分析には Chronos スコアを使用します(DEMETER2 ではなく)。切断効率がより適切に補正されています
  • 汎必須遺伝子とがん選択的な遺伝子を区別します:分散が小さい標的遺伝子(すべての細胞株で必須)は、薬剤標的として適していません
  • 発現データで検証します:細胞株で発現していない遺伝子は、実際の機能にかかわらず、非必須としてスコアリングされます
  • 細胞株の特定には DepMap ID を使用します。cell_line_name は曖昧な場合があります
  • コピー数を考慮します:増幅した遺伝子は、コピー数効果(ジャンク DNA 仮説)により必須に見えることがあります
  • 多重検定補正:ゲノム全体のバイオマーカー関連性を計算する場合は、FDR 補正を適用します

追加リソース

スクリプト

scripts/query_depmap.py — Figshare API を介して DepMap リリースのファイル一覧を表示し、ファイルのダウンロード URL を解決する、キー不要のヘルパーです(--article はサブコマンドより前に指定します)。

uv run --with requests python scripts/query_depmap.py --article 27993248 list
uv run --with requests python scripts/query_depmap.py --article 27993248 url CRISPRGeneEffect.csv

コメント