理解虚拟细胞:初学者指南
原文来自:https://dirtyhands.hashnode.dev/understanding-the-virtual-cell-challenge-a-beginners-guide-to-predicting-gene-expression
什么是虚拟细胞挑战?
想象一下,你无需踏入实验室,就能预测细胞在调整某个基因后的状态!这就是 Arc 研究所 2025 年举办的虚拟细胞挑战赛的精彩世界。它就像一场游戏,你的 AI 模型扮演着“细胞算命”的角色,猜测基因沉默会如何改变细胞的活性。这篇博客将深入分析这项挑战,重点关注验证数据,并提供一些简单的例子,帮助你入门!
介绍
科学家可以使用 CRISPR 等工具来调整这些基因,以研究疾病或药物。但这需要时间和金钱。这项挑战要求我们构建 AI 模型来虚拟模拟这些变化,从而节省精力并加快发现速度:
- 目标:预测沉默一个基因会如何影响干细胞(H1 胚胎干细胞系)中的所有其他基因。
- 数据:获得训练数据(已知结果)和验证集(待解决的新难题)。
训练数据 adata_training.h5ad
这是训练模型的主要数据,这是一个很大的文件(15GB)。它包含了221,273个细胞,18,080个基因。下面是一些关键的元数据:
- obs:对于每个细胞,都有观测,包括target_gene(被扰动的gene名,non-targeting代表对照细胞)。guide_id(用于扰动的特定引导 RNA)。batch(实验批次)。
- var:对于每个gene,有一个gene_id。
在obs中,还有cell barcode,这是一个简短DNA序列,比如AAACAAGCAACCTTGT
对于non-target的细胞:non-target标识了 38,176 个对照细胞。这些是健康、未受干扰的细胞,可作为重要的基准。模型需要观察“非靶向”细胞才能理解什么是“正常”。只有这样,它才能理解当基因被靶向时细胞发生了多大的变化。
对于guide_id:这是用于靶向基因的分子工具(向导RNA)的更具体的标识符。有时,为了确保效果可靠,会使用多个不同的向导RNA来靶向同一个基因。
对于batch:来自不同批次的细胞在实验室条件下可能存在细微差异,而不是生物学差异。我们需要模型识别并忽略这些技术差异,仅关注由基因扰动引起的真实生物学变化。
核心数据X:这是数据集的核心。它是一个庞大的表格,包含 221,273 行(细胞)和 18,080 列(基因)。表格中的每个数字代表单个细胞中特定基因的表达水平。数字越大,基因越活跃。大多数人认为他们的 scRNA-seq 矩阵是原始的,其实不然。
首先了解UMI(Unique Molecular Identifier),它是在单细胞 RNA 测序(scRNA-seq)文库制备过程中添加到每个 RNA 分子的短随机条形码(例如 8-12 个核苷酸)。如果 Cell 1 中的 GeneA = 50 UMI → 则意味着存在大约 50 个 GeneA RNA 分子。
我们可以用表格表示:
归一化 sc.pp.normalize_total
通过将所有细胞缩放到相同的总计数数 (UMI) 来使它们具有可比性。对于每个细胞,归一化因子为:
举例:细胞1的总UMI=250,target=10,000,则Scale factor = 10,000 ÷ 250 = 40,对于其中的每个基因,则有:G1: 200 × 40 = 8,000;G2: 50 × 40 = 2,000;G3: 0 × 40 = 0
Log1p变换 sc.pp.log1p
压缩范围,这样非常高的计数就不会主导分析。
Cell 1举例:G1: log1p(8,000) ≈ 8.99;G2: log1p(2,000) ≈ 7.60;G3: log1p(0) = 0
我们可以直观感受:
现在我们可以了解一下这些值是如何存储在 X 矩阵中的。需要注意的是:
- 0 = 在该细胞中未检测到该基因的 RNA。
- 值越高 = RNA 分子越多(缩放后)。
- 并非原始计数——而是跨细胞表达的可比指标。
验证数据
验证集用于测试扰动 50 个新基因的表现。文件pert_counts.Validation.csv(1 KB,50 行)指明了扰动的50个基因。来看一个示例行:
- target_gene:示例:SH3BP4
- n_cells:2,925
- median_umi_per_cell:54,551
部分内容如下:
target_gene | n_cells | median_umi_per_cell |
---|---|---|
SH3BP4 | 2925 | 54551.0 |
ZNF581 | 2502 | 53803.5 |
这意味着:预测沉默 SH3BP4 将如何改变 2,925 个虚拟细胞中所有 18,080 个基因,每个细胞的典型总表达量为 54,551。
具体的预测任务
任务是创建一个类似训练数据的矩阵:
- 行:2,925 个虚拟细胞。
- 列:18,080 个基因。
- 数字:表达水平。
以3个细胞和3个基因为例,展示最简单的例子
比如只考虑3个细胞(1-3),3个基因(A-C),假设在细胞1中,沉默 SH3BP4基因 可使基因 A 减少 20%,使基因 B 增加 10%,并保持基因 C 不变。对照总数为 54,551 个UMI:
预测:
- 细胞 1:基因 A = 8,000,基因 B = 22,000,基因 C = 24,551(总计 = 54,551)
- 细胞 2:基因 A = 8,400,基因 B = 20,900,基因 C = 25,042(总计 = 54,342)
- 细胞 3:基因 A = 7,200,基因 B = 24,200,基因 C = 24,060(总计 = 55,460)
计算过程如下,不同细胞中基因的调控机制有些随机偏差:
细胞 1:
基因 A:10,000 × (1 - 0.20) = 8,000
基因 B:20,000 × (1 + 0.10) = 22,000
基因 C:24,551 × (1 + 0.00) = 24,551
总计:8,000 + 22,000 + 24,551 = 54,551
细胞 2(略有变化,例如噪声增加 5%):
基因 A:8,000 × 1.05 = 8,400
基因 B:22,000 × 0.95 = 20,900
基因 C:24,551 × 1.02 = 25,042
总计:8,400 + 20,900 + 25,042 = 54,342
细胞 3(变化更大,例如噪声减少 10%):
基因 A:8,000 × 0.90 = 7,200
基因 B:22,000 × 1.10 = 24,200
基因 C:24,551 × 0.98 = 24,060
总计:7,200 + 24,200 + 24,060 = 55,460
然后,生成 2,925 个虚拟细胞的预测,我们检查中位数:
- 列出所有 2,925 个细胞的总数(例如,54,551、54,342、55,460 等)。
- 对它们进行排序并找到中间值(中位数)。假设生成后,中位数为 53,000(假设)。
- 由于 53,000 低于 54,551,因此调整所有值。将每个细胞的表达式乘以 54,551 / 53,000 ≈ 1.03 以放大。
新的调整后总计可能变为:
- 细胞 1:54,551 × 1.03 ≈ 56,187
- 细胞 2:54,342 × 1.03 ≈ 55,972
- 细胞3:55,460 × 1.03 ≈ 57,124
中位数现在应该接近 54,551。