DepMap – Cancer Dependency Map
Überblick
Das Cancer Dependency Map (DepMap)-Projekt des Broad Institute charakterisiert systematisch genetische Abhängigkeiten in Hunderten von Krebszelllinien mittels genomweiter CRISPR-Knockout-Screens (DepMap CRISPR), RNA-Interferenz (RNAi) und Verbindungssensitivitätstests (PRISM). DepMap-Daten sind essenziell für:
- Identifizierung, welche Gene für bestimmte Krebsarten essenziell sind
- Auffinden von krebsspezifischen Abhängigkeiten (therapeutische Ziele)
- Validierung von onkologischen Wirkstoffzielen
- Entdeckung synthetisch-letaler Interaktionen
Wichtige Ressourcen:
- DepMap-Portal: https://depmap.org/portal/
- DepMap-Daten-Downloads: https://depmap.org/portal/download/all/
- Python-Paket:
depmap(oder Zugriff über API/Downloads) - API: https://depmap.org/portal/api/
Wann dieses Skill verwendet werden sollte
Verwenden Sie DepMap, wenn:
- Zielvalidierung: Ist ein Gen für das Überleben von Krebszelllinien mit einer bestimmten Mutation (z. B. KRAS-Mutation) essenziell?
- Biomarker-Entdeckung: Welche genomischen Merkmale sagen die Sensitivität gegenüber dem Knockout eines Gens voraus?
- Synthetische Letalität: Finden Sie Gene, die selektiv essenziell sind, wenn ein anderes Gen mutiert/deletiert ist
- Arzneimittelsensitivität: Welche Zelllinienmerkmale sagen die Reaktion auf eine Verbindung voraus?
- Pankrebs-Essenzialität: Ist ein Gen breit über alle Krebsarten hinweg essenziell (schlechtes Ziel) oder selektiv essenziell?
- Korrelationsanalyse: Welche Genpaare haben korrelierte Abhängigkeitsprofile (Ko-Essenzialität)?
Kernkonzepte
Abhängigkeitswerte
| Wert | Bereich | Bedeutung |
|---|---|---|
| Chronos (CRISPR) | ~ -3 bis 0+ | Negativer = essenzieller. Häufige Schwelle beim üblichen essenziellen Gen: −1. Pan-essenzielle Gene ~−1 bis −2 |
| RNAi DEMETER2 | ~ -3 bis 0+ | Ähnliche Skala wie Chronos |
| Gen-Effekt | normalisiert | Normalisierter Chronos; −1 = Median-Effekt von üblichen essenziellen Genen |
Wichtige Schwellenwerte:
- Chronos ≤ −0,5: wahrscheinlich abhängig
- Chronos ≤ −1: stark abhängig (Bereich üblicher essenzieller Gene)
Zelllinien-Annotationen
Jede Zelllinie hat:
DepMap_ID: eindeutige Kennung (z. B.ACH-000001)cell_line_name: lesbarer Nameprimary_disease: Krebsartlineage: breite Gewebelinielineage_subtype: spezifischer Subtyp
Kernfunktionen
1. DepMap-API
import requests
import pandas as pd
BASE_URL = "https://depmap.org/portal/api"
def depmap_get(endpoint, params=None):
url = f"{BASE_URL}/{endpoint}"
response = requests.get(url, params=params)
response.raise_for_status()
return response.json()
2. Gen-Abhängigkeitswerte
def get_gene_dependency(gene_symbol, dataset="Chronos_Combined"):
"""CRISPR-Abhängigkeitswerte für ein Gen über alle Zelllinien abrufen."""
url = f"{BASE_URL}/gene"
params = {
"gene_id": gene_symbol,
"dataset": dataset
}
response = requests.get(url, params=params)
return response.json()
# Alternativ den /data-Endpunkt verwenden:
def get_dependencies_slice(gene_symbol, dataset_name="CRISPRGeneEffect"):
"""Ein Gen-Abhängigkeitsslice aus einem Datensatz abrufen."""
url = f"{BASE_URL}/data/gene_dependency"
params = {"gene_name": gene_symbol, "dataset_name": dataset_name}
response = requests.get(url, params=params)
data = response.json()
return data
3. Download-basierte Analyse (Empfohlen für große Abfragen)
Für umfangreiche Analysen DepMap-Datendateien herunterladen und lokal analysieren:
import pandas as pd
import requests, os
def download_depmap_data(url, output_path):
"""Eine DepMap-Datendatei herunterladen."""
response = requests.get(url, stream=True)
with open(output_path, 'wb') as f:
for chunk in response.iter_content(chunk_size=8192):
f.write(chunk)
# DepMap 24Q4-Datendateien (Version bei Bedarf aktualisieren)
FILES = {
"crispr_gene_effect": "https://figshare.com/ndownloader/files/...",
# ODER herunterladen von: https://depmap.org/portal/download/all/
# Verfügbare Dateien:
# CRISPRGeneEffect.csv - Chronos-Gen-Effekt-Werte
# OmicsExpressionProteinCodingGenesTPMLogp1.csv - mRNA-Expression
# OmicsSomaticMutationsMatrixDamaging.csv - Mutations-Binärmatrix
# OmicsCNGene.csv - Kopienzahl
# sample_info.csv - Zelllinien-Metadaten
}
def load_depmap_gene_effect(filepath="CRISPRGeneEffect.csv"):
"""
DepMap CRISPR-Gen-Effekt-Matrix laden.
Zeilen = Zelllinien (DepMap_ID), Spalten = Gene (Symbol (EntrezID))
"""
df = pd.read_csv(filepath, index_col=0)
# Spaltennamen zu reinen Gen-Symbolen umbenennen
df.columns = [col.split(" ")[0] for col in df.columns]
return df
def load_cell_line_info(filepath="sample_info.csv"):
"""Zelllinien-Metadaten laden."""
return pd.read_csv(filepath)
4. Identifizierung selektiver Abhängigkeiten
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):
"""Zelllinien finden, die selektiv von einem Gen abhängig sind."""
# Werte für das Zielgen abrufen
if target_gene not in gene_effect_df.columns:
return None
scores = gene_effect_df[target_gene].dropna()
dependent = scores[scores <= threshold]
# Zelllinien-Informationen hinzufügen
result = pd.DataFrame({
"DepMap_ID": dependent.index,
"gene_effect": dependent.values
}).merge(cell_line_info[["DepMap_ID", "cell_line_name", "primary_disease", "lineage"]])
if cancer_type:
result = result[result["primary_disease"].str.contains(cancer_type, case=False, na=False)]
return result.sort_values("gene_effect")
# Beispielverwendung (nach Laden der Daten)
# df_effect = load_depmap_gene_effect("CRISPRGeneEffect.csv")
# cell_info = load_cell_line_info("sample_info.csv")
# deps = find_selective_dependencies(df_effect, cell_info, "KRAS", cancer_type="Lung")
5. Biomarker-Analyse (Gen-Effekt vs. Mutation)
import pandas as pd
from scipy import stats
def biomarker_analysis(gene_effect_df, mutation_df, target_gene, biomarker_gene):
"""
Testen, ob eine Mutation im Biomarker-Gen die Abhängigkeit vom Zielgen vorhersagt.
Args:
gene_effect_df: CRISPR-Gen-Effekt-DataFrame
mutation_df: Binärer Mutations-DataFrame (1 = mutiert)
target_gene: Gen, dessen Abhängigkeit bewertet werden soll
biomarker_gene: Gen, dessen Mutation die Abhängigkeit vorhersagen könnte
"""
if target_gene not in gene_effect_df.columns or biomarker_gene not in mutation_df.columns:
return None
# Zelllinien abgleichen
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]
mutated = scores[mutations == 1]
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
}
6. Ko-Essenzialitätsanalyse
import pandas as pd
def co_essentiality(gene_effect_df, target_gene, top_n=20):
"""Gene mit am stärksten korrelierten Abhängigkeitsprofilen (Ko-Essenzialitätspartner) finden."""
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)
# Ko-essenzielle Gene teilen oft biologische Komplexe oder Signalwege
Abfrage-Workflows
Workflow 1: Zielvalidierung für eine Krebsart
CRISPRGeneEffect.csvundsample_info.csvherunterladen- Zelllinien nach Krebsart filtern
- Mittleren Gen-Effekt für das Zielgen in der Krebsart vs. alle anderen berechnen
- Selektivität berechnen: Wie spezifisch ist die Abhängigkeit für Ihre Krebsart?
- Mit Mutations-, Expressions- oder CNA-Daten als Biomarker abgleichen
Workflow 2: Synthetisch-Letalitäts-Screening
- Zelllinien mit Mutation/Deletion im interessierenden Gen identifizieren (z. B. BRCA1-mutierte)
- Gen-Effekt-Werte für alle Gene in mutierten vs. WT-Linien berechnen
- Gene identifizieren, die in mutierten Linien signifikant essenzieller sind (synthetisch-letale Partner)
- Nach Selektivität und Effektgröße filtern
Workflow 3: Verbindungssensitivitätsanalyse
- PRISM-Verbindungssensitivitätsdaten herunterladen (
primary-screen-replicate-treatment-info.csv) - AUC/log2(Fold-Change) der Verbindung mit genomischen Merkmalen korrelieren
- Prädiktive Biomarker für Verbindungssensitivität identifizieren
DepMap-Datendateien-Referenz
| Datei | Beschreibung |
|---|---|
CRISPRGeneEffect.csv | CRISPR-Chronos-Gen-Effekt (primäre Abhängigkeitsdaten) |
CRISPRGeneEffectUnscaled.csv | Unskalierte CRISPR-Werte |
RNAi_merged.csv | DEMETER2 RNAi-Abhängigkeit |
sample_info.csv | Zelllinien-Metadaten (Abstammung, Krankheit etc.) |
OmicsExpressionProteinCodingGenesTPMLogp1.csv | mRNA-Expression |
OmicsSomaticMutationsMatrixDamaging.csv | Schädliche somatische Mutationen (binär) |
OmicsCNGene.csv | Kopienzahl pro Gen |
PRISM_Repurposing_Primary_Screens_Data.csv | Arzneimittelsensitivität (Repurposing-Bibliothek) |
Alle Dateien herunterladen von: https://depmap.org/portal/download/all/
Best Practices
- Chronos-Werte verwenden (nicht DEMETER2) für aktuelle CRISPR-Analysen – besser kontrolliert bezüglich Schneideeffizienz
- Pan-essenzielle von krebsspezifischen unterscheiden: Zielgene mit geringer Varianz (in allen Linien essenziell) sind schlechte Wirkstoffziele
- Mit Expressionsdaten validieren: Ein in einer Zelllinie nicht exprimiertes Gen wird unabhängig von seiner eigentlichen Funktion als nicht-essenziell eingestuft
- DepMap-ID verwenden für die Zelllinienidentifikation –
cell_line_namekann mehrdeutig sein - Kopienzahl berücksichtigen: Amplifizierte Gene können aufgrund des Kopienzahl-Effekts (Junk-DNA-Hypothese) als essenziell erscheinen
- Mehrfachtest-Korrektur: Bei genomweiten Biomarker-Assoziationen FDR-Korrektur anwenden
Zusätzliche Ressourcen
- DepMap-Portal: https://depmap.org/portal/
- Daten-Downloads: https://depmap.org/portal/download/all/
- DepMap-Publikation: Behan FM et al. (2019) Nature. PMID: 30971826
- Chronos-Publikation: Dempster JM et al. (2021) Nature Methods. PMID: 34349281
- GitHub: https://github.com/broadinstitute/depmap-portal
- Figshare: https://figshare.com/articles/dataset/DepMap_24Q4_Public/27993966