DepMap — 癌症依赖图谱
概述
癌症依赖图谱 (Cancer Dependency Map, DepMap) 项目由博德研究所 (Broad Institute) 运行,利用全基因组 CRISPR 敲除筛选 (DepMap CRISPR)、RNA 干扰 (RNAi) 和化合物敏感性分析 (PRISM) 系统地描绘了数百种癌细胞系的遗传依赖性。DepMap 数据对于以下方面至关重要:
- 识别特定癌症类型必需的基因
- 寻找癌症选择性依赖性(治疗靶点)
- 验证肿瘤药物靶点
- 发现合成致死相互作用
关键资源:
- DepMap 门户网站:https://depmap.org/portal/
- DepMap 数据下载:https://depmap.org/portal/download/all/
- Python 包:
depmap(或通过 API/下载访问) - API:https://depmap.org/portal/api/
何时使用此技能
在以下情况使用 DepMap:
- 靶点验证:某个基因对于具有特定突变(例如,KRAS 突变)的癌细胞系的存活是否必需?
- 生物标志物发现:哪些基因组特征能预测对某个基因敲除的敏感性?
- 合成致死:当另一个基因发生突变/缺失时,寻找那些选择性必需的基因
- 药物敏感性:哪些细胞系特征能预测对某种化合物的反应?
- 泛癌必需性:一个基因在所有癌症类型中广泛必需(不良靶点)还是选择性必需?
- 相关性分析:哪些基因对具有相关的依赖性谱(共必需性)?
核心概念
依赖评分
| 评分 | 范围 | 含义 |
|---|---|---|
| Chronos (CRISPR) | ~ -3 到 0+ | 负值越大 = 越必需。常见必需基因阈值:-1。泛必需基因在 -1 到 -2 之间 |
| RNAi DEMETER2 | ~ -3 到 0+ | 与 Chronos 标度类似 |
| Gene Effect | 归一化 | 归一化的 Chronos;-1 代表常见必需基因的中位数效应 |
关键阈值:
- Chronos ≤ -0.5:可能存在依赖性
- Chronos ≤ -1:强烈依赖(常见必需基因范围)
细胞系注释
每个细胞系具有:
DepMap_ID:唯一标识符(例如,ACH-000001)cell_line_name:人类可读名称primary_disease:癌症类型lineage:广泛的组织谱系lineage_subtype:特定亚型
核心功能
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. 基因依赖评分
def get_gene_dependency(gene_symbol, dataset="Chronos_Combined"):
"""获取某个基因在所有细胞系中的 CRISPR 依赖评分。"""
url = f"{BASE_URL}/gene"
params = {
"gene_id": gene_symbol,
"dataset": dataset
}
response = requests.get(url, params=params)
return response.json()
# 或者,使用 /data 端点:
def get_dependencies_slice(gene_symbol, dataset_name="CRISPRGeneEffect"):
"""从数据集中获取某个基因的依赖切片。"""
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. 基于下载的分析(推荐用于大规模查询)
对于大规模分析,下载 DepMap 数据文件并在本地分析:
import pandas as pd
import requests, os
def download_depmap_data(url, output_path):
"""下载 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)
# DepMap 24Q4 数据文件(根据需要更新版本)
FILES = {
"crispr_gene_effect": "https://figshare.com/ndownloader/files/...",
# 或者从以下地址下载:https://depmap.org/portal/download/all/
# 可用文件:
# CRISPRGeneEffect.csv - Chronos 基因效应评分
# OmicsExpressionProteinCodingGenesTPMLogp1.csv - mRNA 表达
# OmicsSomaticMutationsMatrixDamaging.csv - 突变二元矩阵
# OmicsCNGene.csv - 拷贝数
# sample_info.csv - 细胞系元数据
}
def load_depmap_gene_effect(filepath="CRISPRGeneEffect.csv"):
"""
加载 DepMap CRISPR 基因效应矩阵。
行 = 细胞系 (DepMap_ID),列 = 基因 (Symbol (EntrezID))
"""
df = pd.read_csv(filepath, index_col=0)
# 将列重命名为仅基因符号
df.columns = [col.split(" ")[0] for col in df.columns]
return df
def load_cell_line_info(filepath="sample_info.csv"):
"""加载细胞系元数据。"""
return pd.read_csv(filepath)
4. 识别选择性依赖性
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):
"""查找对某个基因选择性依赖的细胞系。"""
# 获取目标基因的评分
if target_gene not in gene_effect_df.columns:
return None
scores = gene_effect_df[target_gene].dropna()
dependent = scores[scores <= threshold]
# 添加细胞系信息
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")
# 使用示例(加载数据后)
# 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. 生物标志物分析(基因效应 vs. 突变)
import pandas as pd
from scipy import stats
def biomarker_analysis(gene_effect_df, mutation_df, target_gene, biomarker_gene):
"""
检验 biomarker_gene 的突变是否能预测对 target_gene 的依赖性。
参数:
gene_effect_df: CRISPR 基因效应 DataFrame
mutation_df: 二元突变 DataFrame (1 = 已突变)
target_gene: 需要评估依赖性的基因
biomarker_gene: 其突变可能预测依赖性的基因
"""
if target_gene not in gene_effect_df.columns or biomarker_gene not in mutation_df.columns:
return None
# 对齐细胞系
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. 共必需性分析
import pandas as pd
def co_essentiality(gene_effect_df, target_gene, top_n=20):
"""查找具有最相关依赖性谱的基因(共必需伙伴)。"""
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)
# 共必需基因通常共享生物学复合体或通路
查询工作流程
工作流程 1:特定癌症类型的靶点验证
- 下载
CRISPRGeneEffect.csv和sample_info.csv - 按癌症类型过滤细胞系
- 计算靶点基因在目标癌症类型 vs. 所有其他类型中的平均基因效应
- 计算选择性:依赖性对您的癌症类型的特异性程度如何?
- 交叉参考突变、表达或 CNA 数据作为生物标志物
工作流程 2:合成致死筛选
- 识别具有目标基因突变/缺失的细胞系(例如,BRCA1 突变)
- 计算所有基因在突变型 vs. 野生型细胞系中的基因效应评分
- 识别在突变型细胞系中显著更必需的基因(合成致死伙伴)
- 根据选择性和效应大小进行过滤
工作流程 3:化合物敏感性分析
- 下载 PRISM 化合物敏感性数据 (
primary-screen-replicate-treatment-info.csv) - 将化合物 AUC/log2(倍数变化) 与基因组特征相关联
- 识别化合物敏感性的预测性生物标志物
DepMap 数据文件参考
| 文件 | 描述 |
|---|---|
CRISPRGeneEffect.csv | CRISPR Chronos 基因效应(主要依赖性数据) |
CRISPRGeneEffectUnscaled.csv | 未缩放的 CRISPR 评分 |
RNAi_merged.csv | DEMETER2 RNAi 依赖性 |
sample_info.csv | 细胞系元数据(谱系,疾病等) |
OmicsExpressionProteinCodingGenesTPMLogp1.csv | mRNA 表达 |
OmicsSomaticMutationsMatrixDamaging.csv | 有害体细胞突变(二元) |
OmicsCNGene.csv | 每个基因的拷贝数 |
PRISM_Repurposing_Primary_Screens_Data.csv | 药物敏感性(重定位库) |
所有文件均可从以下地址下载:https://depmap.org/portal/download/all/
最佳实践
- 使用 Chronos 评分(而非 DEMETER2)进行当前的 CRISPR 分析——更好地控制切割效率
- 区分泛必需基因与癌症选择性基因:低变异性的靶点基因(在所有细胞系中必需)是不良的药物靶点
- 用表达数据验证:一个在细胞系中不表达的基因,无论其实际功能如何,都会被评为非必需
- 使用 DepMap ID 进行细胞系识别——cell_line_name 可能具有歧义
- 考虑拷贝数:扩增的基因可能因为拷贝数效应而显得必需(垃圾 DNA 假说)
- 多重检验校正:当在全基因组范围内计算生物标志物关联时,应用 FDR 校正
其他资源
- DepMap 门户网站:https://depmap.org/portal/
- 数据下载:https://depmap.org/portal/download/all/
- DepMap 论文:Behan FM et al. (2019) Nature. PMID: 30971826
- 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