构建虚拟细胞需要系统地绘制扰动如何重塑每个细胞的状态、功能和行为。Tahoe-100M 是一个包含1亿个细胞,并测量了1100种小分子扰动中的每一种对50种癌细胞系中细胞的影响。高通量Mosaic平台由高度多样化且优化平衡的 “细胞村-cell village” 组成,可减少批次效应,并以前所未有的规模实现对数千种条件进行单细胞分辨率的并行分析。
作为迄今为止最大的单细胞数据集,Tahoe-100M能让 AI 驱动的模型学习依赖于环境背景的功能,捕捉基因调控和网络动态的基本原理。尽管利用癌症模型和药物化合物创建了这一资源,但Tahoe-100M从根本上是作为一个广泛适用的扰动图谱来设计的,有助于在多种组织和环境背景下更深入地理解细胞生物学。通过公开发布这个图谱,旨在加速为系统生物学创建和开发强大的AI框架,最终提升在广泛应用中预测和操控细胞行为的能力。
来自:Tahoe-100M: A Giga-Scale Single-Cell Perturbation Atlas for Context-Dependent Gene Function and Cellular Modeling
背景概述
细胞生物学的一个长期目标是构建具有预测性的机制模型,以解释细胞如何整合信号并执行精确的转录和表型反应。构建能够充分体现细胞行为的计算机模型,需要生成大量定量数据集,系统地描绘细胞状态(例如通过转录组图谱衡量)如何受到各种干预措施的重塑,这些干预措施包括基因、化学或环境扰动。扰动测量能够阐明基因之间的相互作用,从而揭示控制细胞行为和功能的潜在调控网络。基于现代高通量分析技术构建的扰动数据集,在以前所未有的分辨率揭示基本生物学过程方面非常强大,进而有助于构建细胞的计算机模型。
传统上,对细胞受扰动后的反应进行bulk转录组测量,为研究提供了有价值的见解,但这种方法常常掩盖了细胞群体中重要的异质性。这种异质性可能源于细胞周期阶段、基础转录程序或遗传背景的差异,导致即使在相同的外部条件下,细胞也会产生不同的结果。单细胞检测技术,如单细胞RNA测序(scRNA-seq),彻底改变了我们解析这种异质性的能力,使我们能够以前所未有的详细程度对单个细胞进行分子特征分析。利用scRNA-seq技术开展的研究,拓展了我们对细胞如何应对各种扰动的理解,这些扰动从小分子化合物到基于CRISPR的混合基因干预。
尽管取得了这些进展,但大规模、聚焦于扰动的单细胞数据集仍然有限。虽然一些图谱规模的研究已开始整合多项研究的数据,但诸如批次效应、实验方案不一致以及扰动覆盖范围有限等挑战依然存在。对于特定的细胞 - 扰动组合,观测数量较少限制了模型学习稳健模式的能力,尤其是对于感兴趣的细胞亚群。此外,现有数据基本只集中在一小部分扰动上,这些扰动通常与特定疾病研究或药物研发target相关,这使得关于更广泛扰动情况的许多问题仍未得到解答。
为了应对这些挑战并实现下一代细胞功能的计算建模,开发了Mosaic平台。Mosaic平台利用单细胞RNA测序(scRNA-seq)技术,并行捕获对数千种扰动的高分辨率转录组反应,在扩展到越来越多的扰动集的同时,大幅降低了批次效应。
利用Mosaic平台,生成了Tahoe-100M数据集,这是迄今为止最大的公开可用单细胞数据集,Tahoe-100M包含从50种癌细胞系中收集的超过1亿个单细胞转录组,这些癌细胞系受到了1100多种不同剂量的小分子扰动。虽然在此使用的是药物试剂,但底层框架广泛适用于各种扰动,既有助于细胞生物学的基础研究,也有利于药物发现等更具转化意义的应用。
数据集概述
细胞系多样性
测序后,获得总共1.53亿个细胞。每个细胞平均有2288个转录本(中位数为1890),由于测序深度的不同,每个子文库的转录本数量存在一定差异。按照Vevo的过滤标准进行处理后,得到了1.006亿个通过最低限度过滤的细胞,以及9560万个通过完全过滤的细胞。并使用后者进行展示涉及的所有下游分析。
在Tahoe-100M的50种细胞系中,有47种在不同条件下具有足够的代表性,可用于下游分析。这47种细胞系来源于13个不同的器官(主要来自肺、肠道、胰腺和皮肤),并携带多种驱动突变,约一半的细胞系中TP53、KRAS和CDKN2A基因发生了改变(图2A)。在该图谱中使用的379种不同药物中,180种被归类为25种作用机制(MOA),每种作用机制的药物数量中位数为5种(最多27种,最少3种)(图2B - C)。
这些药物中的大多数(69%)是已获批(approved)的药物,且化合物类别针对多种与癌症相关的通路。据报道,这些药物靶向325个基因,其中120个基因被不止一种药物靶向(图2C)。该数据集涵盖了17813种独特的细胞系-药物组合条件,与基准单细胞药物筛选相比,药物扰动条件的数量增加了31倍;与基准基因扰动筛选相比,每个条件下的观测数量增加了29倍(图2D)。
- 图2A:肿瘤突变图谱(oncoplot)展示了Tahoe-100M中按丰度排名前47个细胞模型中发现的前30个驱动突变的分布情况。这些突变进一步按类型分类,细胞模型则按起源器官分类。
- 图2 B) Tahoe-100M中379种药物扰动的作用机制分组,并根据临床试验状态进一步分层。C) Tahoe-100M中379种药物扰动的靶基因分组,同样根据临床试验状态进一步分层,展示了325个靶基因中前120个的情况。D) 将扰动数量、细胞模型数量和总细胞数与其他基准扰动单细胞RNA测序数据集进行比较。
全局的转录景观
通过使用scVI进行降维,开始对Tahoe-100M数据集进行分析,以获得每个细胞的10维嵌入表示。鉴于可视化包含1亿个细胞的数据集存在挑战,我们从47种细胞系中各抽取14万个高质量细胞(共计658万个细胞),计算2D t-SNE坐标,并随机选取20万个细胞进行绘图(图3A - C)。在tSNE可视化结果中也明显可以看出,在转录组空间里,细胞是基于其遗传特征(以及细胞周期阶段)而非来源平板清晰分开的,这表明在这个统一的约1亿个细胞的图谱中,不存在明显的批次效应(图3A - C)。
综上所述,经过质量控制(QC)筛选后,我们得到了一个数据集,该数据集包含47种细胞系、379种药物、1135种药物-剂量组合以及52886种独特的细胞系-药物-剂量条件,每个条件下的细胞数中位数为1287个。
- 图3 A) scVI模型的二维tSNE图,随机选取20万个细胞进行绘制,这些细胞均来自丰度排名前47的细胞系,且每个细胞系的贡献相等。图中的细胞簇标注了癌症模型的身份。B) 与 A)相同,但细胞按Mosaic肿瘤来源的96孔板进行标注。C) 与 A)相同,但细胞按其细胞周期阶段进行标注。
- D) 数据集中两块生物学重复的96孔板之间,成对基因表达向量相关性的皮尔逊相关值分布。匹配条件(相同细胞系和药物处理条件)下的皮尔逊相关值更高,这表明 Mosaic 平台具有较高的可重复性。
Tahoe-100M下载
安装conda环境,首先下载:
git clone https://github.com/ArcInstitute/arc-virtual-cell-atlas.git
然后进入目录:/arc-virtual-cell-atlas/tahoe-100
用conda安装:conda env create -q -f …/conda_envs/python.yml
初始化下载需要的设置:
import os
import io
import pandas as pd
import scanpy as sc
import pyarrow.dataset as ds
import gcsfs
# initialize GCS file system for reading data from GCS
fs = gcsfs.GCSFileSystem()
# GCS bucket path
gcp_base_path = "gs://arc-ctc-tahoe100/2025-02-25/"
我们可以快速汇总样本的元数据,Tahoe-100M被划分为一共1344个样本,以下是统计信息:
- Sample count: 1344
- Cell count: 100648790
# path to sample metadata
infile = os.path.join(gcp_base_path, 'metadata', 'sample_metadata.parquet')
ds.dataset(infile, filesystem=fs, format="parquet").to_table().to_pandas()
然后,可以获取细胞分辨率的元数据,即obs,这里我们只展示前10w的细胞:
# set the path to the obs_metadata file
infile = os.path.join(gcp_base_path, 'metadata', 'obs_metadata.parquet')
# read a subset of the metadata
obs_metadata = ds.dataset(infile, filesystem=fs, format="parquet").head(100000).to_pandas()
obs_metadata
这17个列的意义如下:
列名 | 描述 |
---|---|
plate | 平板标识符 |
BARCODE_SUB_LIB_ID | 细胞标识符 |
sample | 用于区分样本 |
gene_count | 至少有一个计数的基因数量 |
tscp_count | 转录本数量,即UMI(唯一分子标识符)计数 |
mread_count | 每个细胞的读数数量 |
drugname_drugconc | 药物名称、浓度及浓度单位 |
drug | 从“drugname_drugconc”字段解析出的药物名称 |
cell_line | 细胞系的Cellosaurus标识符 |
sublibrary | 子文库ID(与文库制备和测序相关) |
BARCODE | 条形码ID |
pcnt_mito | 线粒体读数的百分比 |
S_score | 推断的S期得分 |
G2M_score | 推断的G2M期得分 |
phase | 推断的细胞周期阶段 |
pass_filter | “完全”过滤在“gene_count”和“tscp_count”方面更为严格 |
cell_name | 常用的细胞名称(与“cell_line”字段相关) |
我们可以查看这10w细胞来自多少个样本:
# sample count
obs_metadata["sample"].nunique()
# 输出96
然后我们选择一个子集,读取该子集的h5ad:
# set the path to the plate metadata file
infile = "gs://arc-ctc-tahoe100/2025-02-25/tutorial/plate3_2k-obs.h5ad"
# read in the h5ad file
with fs.open(infile, 'rb') as f:
adata = sc.read_h5ad(f)
adata
"""
AnnData object with n_obs × n_vars = 2000 × 62710
obs: 'sample', 'gene_count', 'tscp_count', 'mread_count', 'drugname_drugconc', 'drug', 'cell_line', 'sublibrary', 'BARCODE', 'pcnt_mito', 'S_score', 'G2M_score', 'phase', 'pass_filter', 'cell_name', 'plate'
"""
# look at the obs metadata
print(adata.obs.shape)
adata.obs.head()
得到这个adata的时候就已经可以用来做一些下游任务了。
如果要下载所有数据集到本地,使用:
gsutil rsync gs://arc-ctc-tahoe100/2025-02-25/tutorial/ .