DepMap — Mapa de Dependência do Câncer
Visão Geral
O projeto Cancer Dependency Map (DepMap), conduzido pelo Broad Institute, caracteriza sistematicamente as dependências genéticas em centenas de linhagens celulares de câncer usando triagens genômicas com CRISPR (DepMap CRISPR), RNA de interferência (RNAi) e ensaios de sensibilidade a compostos (PRISM). Os dados do DepMap são essenciais para:
- Identificar quais genes são essenciais para tipos específicos de câncer
- Encontrar dependências seletivas ao câncer (alvos terapêuticos)
- Validar alvos de medicamentos oncológicos
- Descobrir interações letais sintéticas
Recursos principais:
- Portal DepMap: https://depmap.org/portal/
- Downloads de dados DepMap: https://depmap.org/portal/download/all/
- Pacote Python:
depmap(ou acesso via API/downloads) - API: https://depmap.org/portal/api/
Quando Usar Este Skill
Use o DepMap quando:
- Validação de alvo: Um gene é essencial para a sobrevivência em linhagens celulares de câncer com uma mutação específica (ex.: mutante de KRAS)?
- Descoberta de biomarcadores: Quais características genômicas predizem sensibilidade ao knockout de um gene?
- Letalidade sintética: Encontre genes que são seletivamente essenciais quando outro gene é mutado/deletado
- Sensibilidade a medicamentos: Quais características da linhagem celular predizem resposta a um composto?
- Essencialidade pan-câncer: Um gene é amplamente essencial em todos os tipos de câncer (mau alvo) ou seletivamente essencial?
- Análise de correlação: Quais pares de genes têm perfis de dependência correlacionados (co-essentialidade)?
Conceitos Principais
Pontuações de Dependência
| Pontuação | Intervalo | Significado |
|---|---|---|
| Chronos (CRISPR) | ~ -3 a 0+ | Mais negativo = mais essencial. Limiar comum de essencialidade: −1. Genes pan-essenciais ~−1 a −2 |
| RNAi DEMETER2 | ~ -3 a 0+ | Escala similar ao Chronos |
| Efeito Gênico | normalizado | Chronos normalizado; −1 = efeito mediano de genes comuns essenciais |
Limiares principais:
- Chronos ≤ −0,5: provavelmente dependente
- Chronos ≤ −1: fortemente dependente (intervalo de essencial comum)
Anotações de Linhagens Celulares
Cada linhagem celular possui:
DepMap_ID: identificador único (ex.:ACH-000001)cell_line_name: nome legívelprimary_disease: tipo de câncerlineage: linhagem tecidual amplalineage_subtype: subtipo específico
Capacidades Principais
1. API DepMap
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. Pontuações de Dependência Gênica
def get_gene_dependency(gene_symbol, dataset="Chronos_Combined"):
"""Obtém pontuações de dependência CRISPR para um gene em todas as linhagens celulares."""
url = f"{BASE_URL}/gene"
params = {
"gene_id": gene_symbol,
"dataset": dataset
}
response = requests.get(url, params=params)
return response.json()
# Alternativamente, use o endpoint /data:
def get_dependencies_slice(gene_symbol, dataset_name="CRISPRGeneEffect"):
"""Obtém uma fatia de dependência de um gene a partir de um conjunto de dados."""
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. Análise Baseada em Download (Recomendado para Consultas Grandes)
Para análises em larga escala, baixe os arquivos de dados do DepMap e analise localmente:
import pandas as pd
import requests, os
def download_depmap_data(url, output_path):
"""Baixa um arquivo de dados do DepMap."""
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)
# Arquivos de dados DepMap 24Q4 (atualize a versão conforme necessário)
FILES = {
"crispr_gene_effect": "https://figshare.com/ndownloader/files/...",
# OU baixe de: https://depmap.org/portal/download/all/
# Arquivos disponíveis:
# CRISPRGeneEffect.csv - Pontuações de efeito gênico Chronos
# OmicsExpressionProteinCodingGenesTPMLogp1.csv - Expressão de mRNA
# OmicsSomaticMutationsMatrixDamaging.csv - Matriz binária de mutações
# OmicsCNGene.csv - Número de cópias
# sample_info.csv - Metadados de linhagens celulares
}
def load_depmap_gene_effect(filepath="CRISPRGeneEffect.csv"):
"""
Carrega a matriz de efeito gênico CRISPR do DepMap.
Linhas = linhagens celulares (DepMap_ID), Colunas = genes (Símbolo (EntrezID))
"""
df = pd.read_csv(filepath, index_col=0)
# Renomeia colunas para apenas símbolos de genes
df.columns = [col.split(" ")[0] for col in df.columns]
return df
def load_cell_line_info(filepath="sample_info.csv"):
"""Carrega metadados de linhagens celulares."""
return pd.read_csv(filepath)
4. Identificando Dependências Seletivas
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):
"""Encontra linhagens celulares seletivamente dependentes de um gene."""
# Obtém pontuações para o gene alvo
if target_gene not in gene_effect_df.columns:
return None
scores = gene_effect_df[target_gene].dropna()
dependent = scores[scores <= threshold]
# Adiciona informações da linhagem celular
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")
# Exemplo de uso (após carregar os dados)
# 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. Análise de Biomarcadores (Efeito Gênico vs. Mutação)
import pandas as pd
from scipy import stats
def biomarker_analysis(gene_effect_df, mutation_df, target_gene, biomarker_gene):
"""
Testa se a mutação no gene biomarcador prediz dependência no gene alvo.
Args:
gene_effect_df: DataFrame de efeito gênico CRISPR
mutation_df: DataFrame binário de mutações (1 = mutado)
target_gene: Gene para avaliar a dependência
biomarker_gene: Gene cuja mutação pode predizer dependência
"""
if target_gene not in gene_effect_df.columns or biomarker_gene not in mutation_df.columns:
return None
# Alinha linhagens celulares
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. Análise de Co-Essencialidade
import pandas as pd
def co_essentiality(gene_effect_df, target_gene, top_n=20):
"""Encontra genes com perfis de dependência mais correlacionados (parceiros co-essenciais)."""
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)
# Genes co-essenciais frequentemente compartilham complexos ou vias biológicas
Fluxos de Trabalho de Consulta
Fluxo 1: Validação de Alvo para um Tipo de Câncer
- Baixe
CRISPRGeneEffect.csvesample_info.csv - Filtre linhagens celulares por tipo de câncer
- Calcule o efeito gênico médio para o gene alvo no câncer vs. todos os outros
- Calcule a seletividade: quão específica é a dependência para o seu tipo de câncer?
- Referencie cruzadamente com dados de mutação, expressão ou CNA como biomarcadores
Fluxo 2: Triagem de Letalidade Sintética
- Identifique linhagens celulares com mutação/deleção no gene de interesse (ex.: BRCA1-mutante)
- Calcule as pontuações de efeito gênico para todos os genes em linhagens mutantes vs. WT
- Identifique genes significativamente mais essenciais em linhagens mutantes (parceiros letais sintéticos)
- Filtre por seletividade e tamanho do efeito
Fluxo 3: Análise de Sensibilidade a Compostos
- Baixe os dados de sensibilidade a compostos PRISM (
primary-screen-replicate-treatment-info.csv) - Correlacione AUC/log2(fold-change) do composto com características genômicas
- Identifique biomarcadores preditivos para sensibilidade ao composto
Referência de Arquivos de Dados DepMap
| Arquivo | Descrição |
|---|---|
CRISPRGeneEffect.csv | Efeito gênico CRISPR Chronos (dados primários de dependência) |
CRISPRGeneEffectUnscaled.csv | Pontuações CRISPR não escaladas |
RNAi_merged.csv | Dependência RNAi DEMETER2 |
sample_info.csv | Metadados de linhagens celulares (linhagem, doença, etc.) |
OmicsExpressionProteinCodingGenesTPMLogp1.csv | Expressão de mRNA |
OmicsSomaticMutationsMatrixDamaging.csv | Mutações somáticas prejudiciais (binário) |
OmicsCNGene.csv | Número de cópias por gene |
PRISM_Repurposing_Primary_Screens_Data.csv | Sensibilidade a medicamentos (biblioteca de reaproveitamento) |
Baixe todos os arquivos em: https://depmap.org/portal/download/all/
Melhores Práticas
- Use pontuações Chronos (não DEMETER2) para análises CRISPR atuais — melhor controle para eficiência de corte
- Distinga pan-essencial de câncer-seletivo: Genes alvo com baixa variância (essenciais em todas as linhagens) são maus alvos de medicamentos
- Valide com dados de expressão: Um gene não expresso em uma linhagem celular será pontuado como não essencial, independentemente da função real
- Use o DepMap ID para identificação de linhagens celulares — cell_line_name pode ser ambíguo
- Considere o número de cópias: Genes amplificados podem parecer essenciais devido ao efeito de número de cópias (hipótese do DNA lixo)
- Correção para testes múltiplos: Ao calcular associações de biomarcadores em todo o genoma, aplique correção FDR
Recursos Adicionais
- Portal DepMap: https://depmap.org/portal/
- Downloads de dados: https://depmap.org/portal/download/all/
- Artigo DepMap: Behan FM et al. (2019) Nature. PMID: 30971826
- Artigo Chronos: 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