信息速览
INFOBOX — Tahoe-100M 一屏速览
维度 内容 本质 亿级单细胞药物扰动响应图谱(resource paper,不是机制发现论文) 团队 Tahoe Therapeutics(原 Vevo)× Arc Institute × Parse Biosciences;一作 Jesse Zhang,通讯 Johnny Yu,lead contact Hani Goodarzi 论文 Cell 2026;189(19):5945–5961.e8(doi:10.1016/j.cell.2026.08.035,CC BY 4.0);预印本 bioRxiv 2025.02.20.639398 规模 95,624,334 个通过全过滤的细胞(原始 153M,minimal filter 100.6M) 设计 14 块 96 孔板、50 个癌细胞系混养(cell village)、1,786 个 sublibrary、约 1.4 万亿 reads 扰动 379 种化合物、1,135 个药物-剂量组合、52,886 个细胞系×药物×剂量条件 覆盖 47 个细胞系可用于下游、13 个器官来源、每条件中位 1,287 个细胞 平台 Mosaic(Parse GigaLab 组合条形码)+ Ultima Genomics UG-100 测序 + demuxlet SNP 去卷积 时点 给药后 24 小时单一时间点 许可 CC0-1.0(表达矩阵+元数据);FASTQ 不公开 获取 HuggingFace tahoebio/Tahoe-100M(Parquet,下载约 338 GB);Arc Virtual Cell Atlas(h5ad,GCS Requester Pays)口径冲突 细胞数 95.6M vs 100.6M、化合物 379 vs 1,100、细胞系 50 vs 47 三处并存,逐条存照见 §11
Tahoe-100M 是一个"造尺子"的数据集:它不宣称发现了某个新的生物学机制,而是把「药物如何改变细胞状态」这件事在单细胞分辨率上系统地量了一遍——50 个商品化癌细胞系被混在同一个孔里共培养成一个「细胞村镇」(cell village),同步接受 379 种小分子在多个剂量下的处理,24 小时后一次性测转录组,最后靠每个细胞自带的 SNP 基因型把它「认回」原本的细胞系。产出的 9,562 万个细胞构成了目前公开可见的最大规模单细胞扰动图谱之一,也是 Arc Institute「虚拟细胞图谱」(Virtual Cell Atlas)计划里体量最大的一块。
需要先把时间线厘清:这份数据在 2025 年 2 月以 bioRxiv 预印本形式出现,随后被 Arc Institute 收入 Virtual Cell Atlas 作为首批数据集,再被下游模型当作训练语料——Arc 的 State 模型于 2026 年 8 月 31 日先一步登上 Cell,而 Tahoe-100M 本体到 2026 年 9 月 17 日才正式见刊。也就是说,它在自己拿到顶刊入场券之前,就已经通过下游模型完成了一轮外部认证。这个顺序值得留意:它说明这类资源型工作的价值判断,已经越来越多地由「谁在用它」而非「它发了哪里」来先行确立。回到正题,它之所以在 2026 年被 Cell 接收,核心不在于「更大」,而在于三件事同时成立:规模跨过了让模型能学到条件依赖响应的阈值;批次效应被混养设计压到很低(plate 14 作为 plate 6 的生物学重复,匹配条件的伪 bulk 相关系数中位数 0.975);并且整份数据以 CC0-1.0 无条件开放——连商业使用都不需要授权。第三条在单细胞数据里相当罕见,因为大多数图谱受制于供体同意与机构政策,只能给 CC BY 或受限许可。这个差异的实际后果是:用肿瘤或人群图谱训练出的模型若要做成商业产品,通常需要法务逐个确认授权链条;而用 Tahoe-100M 训练出的模型,授权问题在数据这一环就终结了。对一个要长期迭代的产品团队,这个差异节省的不只是钱,更是「能不能做」的判断时间。
导语读法三则:
- 只想下数据:直奔 §6。两条路——HuggingFace 拿 Parquet(约 338 GB 下载),或 Arc 的 GCS 桶拿 h5ad(Requester Pays,需先订阅 Marketplace)。
- 要做评测:直奔 §4 和 §8。随机切分会系统性地虚高分数,必须按化合物或整细胞系留出。
- 要引用数字:直奔 §2 的口径对照表。「1 亿细胞」「50 个细胞系」「1,100 种药」三个常被引用的数字,严格说都不精确。
§0 导读:这个数据集解决什么问题
0.1 单细胞扰动数据的三重困境
构建「虚拟细胞」(virtual cell)模型需要一类特定的数据:同一种细胞、在受控条件下、被系统性地施加干预、然后观测它的转录组如何改变。这类数据在 2020 年之后随着组合条形码技术(combinatorial barcoding)的成熟才开始规模化,但很快撞上三重困境。
第一是深度与广度的取舍。10x Genomics 常规单细胞每个细胞可以测到 2,000–5,000 个转录本,但在千万级细胞的规模上成本不可承受;而降低深度又会削弱单细胞层面的差异表达检验功效。Tahoe-100M 选择的是"广度优先":每细胞平均 2,288、中位 1,890 个转录本,低于常规 10x,但换来了近亿细胞的体量。
第二是批次效应。如果把 50 个细胞系分别铺板、分别处理、分别建库,那么"哪块板"会成为比"哪个药"更强的分层因素,模型学到的将是板号而不是药理。Tahoe 的解法是把 50 个细胞系混在同一个孔里——这就是 cell village。同一孔内所有细胞系共享完全一致的培养与处理条件,批次效应在物理层面被消除。更具体地说,传统分板设计里「板效应」与「细胞系身份」是完全混淆的(某板只放某系),任何板间差异都无法区分是技术批次还是细胞类型;混养之后这两个因素在孔内被彻底解耦,同一孔里既有 A 系也有 B 系,孔与孔之间的系统差异对两者一视同仁,于是板效应退化为一个可以统一回归掉的加性项。这是这份数据在实验设计层面最值得学习的一招,也是它敢喊出「跨系可比」的物理依据。
第三是细胞身份的归属。混养带来的直接问题是:测完之后,怎么知道这个细胞原本来自哪个细胞系?答案是 SNP 去卷积:每个细胞系的基因组背景不同,表达数据里携带的天然变异足以把它区分开。Tahoe 用 demuxlet 完成这一步,报告的去卷积准确率超过 98%。
0.2 为什么「cell village」既是解法也是新问题
混养把批次效应换成了另一种偏倚:所有细胞系共享同一份条件培养基(conditioned medium),可能存在跨细胞系的旁分泌信号串扰。一个在池中测得的药物响应,未必等于该细胞系单独培养时的响应——因为池中的邻居在分泌东西。这是设计上的固有代价,论文在讨论节明确承认了这一点。
值得玩味的是,这个取舍在数据里留下的痕迹是可测量的:正如 §3.3 会展示的,细胞系身份是驱动转录组分层的首要因素,药物处理的效应反而更微弱。换句话说,cell village 成功地把"板"从分层因素里赶了出去,但"细胞系"仍然牢牢占据第一位——这本身是好事(说明生物学信号占主导),但它也意味着药物效应是一个"小信号",需要靠差异表达分析,而不是靠聚类,才能被看见。量化这个"小"有多小:如果以细胞系身份为协变量做线性模型,细胞系项的解释方差通常在数十个百分点量级,而药物项在个位数;这意味着任何不做协变量校正的全数据聚类,都会被细胞系身份主导,把不同系但受同一药物处理的细胞分到不同簇里,从而完全看不到药物效应。
0.3 它与已有扰动图谱的差别
| 图谱 | 扰动类型 | 规模 | 细胞背景 | 时间点 | 许可 |
|---|---|---|---|---|---|
| Tahoe-100M | 小分子 × 剂量 | 95.6M 细胞 | 47 个癌细胞系混养 | 单一 24h | CC0-1.0 |
| scPerturb 汇总集(库内 rid 1102) | 混合(药物/CRISPR/过表达) | 44 个数据集汇总 | 多种 | 多种 | 各数据集原生 |
| PerturbAI Brain-Wide CRISPR Atlas(库内 rid 1194) | 体内 CRISPR | 772 万细胞 | 小鼠全脑 | 多点 | 见条目 |
| CZ CELLxGENE Census(库内 rid 1035) | 无扰动(观测性) | 亿级 | 多物种多组织 | 不适用 | 各数据集原生 |
一句话定位:它把"化学扰动"这一个维度做到了极致,代价是牺牲了遗传扰动、时间动力学与多模态。论文自己在讨论节写道,这些约束"塑造了图谱能教给预测模型什么、不能教什么"——它是学习"癌细胞内药物诱导的状态转移"的强基底,但不足以支撑一般意义上的"虚拟细胞"。
§1 数据集速览:十问十答
Q1:"100M"到底是多少个细胞?
先说结论,再说为什么这个数字会漂移。严格答案是 95,624,334。这是通过「全过滤」(full filters)的细胞数,也是 HuggingFace API 中 train split 的 num_examples 实测值,同时是 Cell 论文 Data availability 里写明的"raw single-cell counts for 95.6M cells passing full filters"。而 100,648,790 是通过「最简过滤」(minimal filters)的细胞数,Arc Virtual Cell Atlas 的 README 用的就是这个口径。原始测序共 153M 个细胞。三个数字之间的关系是逐级淘汰:153M 是测出来的条码数;minimal filter 只剔除明显无效条码(空滴、低 UMI),留下 100.6M;full filter 再叠加 ≥700 UMI、≥250 基因、线粒体占比与 z-score 约束、demuxlet singlet 判定四道,最终 95.6M。引用时务必写清口径:写「1 亿」既不算错也不算对,它是一个被四舍五入过的营销数字;写「95.6M」时最好补一句「full filters」,否则与 Arc README 的 100.6M 对不上会引发不必要的质疑。
Q2:50 个还是 47 个细胞系?
装载阶段是 50 个,覆盖 13 个器官来源。但下游分析只用 47 个——NCI-H661、NCI-H596、NCI-H2122 三个细胞系的细胞数不足(每个细胞系×药物条件至少要 50 个细胞才纳入),被剔除。引用"50 个细胞系"描述实验设计没错,引用"47 个"描述可分析范围更准确。
Q3:379 种药还是 1,100 种药?
379 是独立化合物数;1,135 是「药物 × 剂量」组合数。论文摘要写的 “~1,100 drug-dose treatments” 指的是后者。这一点极易被二手报道误读成"1,100 种药"——包括一些中文科技媒体的标题。
Q4:数据处理了什么?
小分子,多剂量。药物注释由 GPT-4o 初次生成、再用 MedChemExpress 的资料校验;moa-fine 从 25 个预设机制类别里选,例如 “Proteasome inhibitor”、“MEK inhibitor”。约 69% 的化合物已被批准用于人体。
Q5:为什么只有 24 小时一个时间点?
这是通量的代价。要在 14 块 96 孔板上塞进 52,886 个条件,只能固定处理时长。后果是:早于 24 小时的即时信号(如快速磷酸化级联)与晚于 24 小时的适应/耐药响应都看不到。
Q6:每个条件有多少细胞?
中位数 1,287 个细胞。这个数字很重要——它决定了单细胞层面能做多细的亚群分析。对于稀有亚群(比如占比 1% 的耐药克隆),1,287 个细胞里只有约 13 个,统计上不可靠。
Q7:测序深度如何?
每细胞平均 2,288 个转录本、中位 1,890 个。这两个数字放进单细胞领域属于中等偏上:10x 3’ 常规样本的中位基因数多在 1,200-1,800 区间,而这里用 Parse 的 split-pool 建库达到 1,890,说明测序深度给得比较足(1.4 万亿 reads 摊到 9,500 万细胞,约每细胞 1.5 万 reads)。中位数小于均值这一点也说明分布右偏——少数细胞测得很深,长尾拉高了均值,做质量控制时用中位数而非均值判断更稳。全过滤门槛是 ≥700 UMI、≥250 个基因、线粒体 reads <20%、UMI 与线粒体比例的 z-score 都在 ±3 以内,且被 demuxlet 判定为 singlet(单细胞,而非粘连的双细胞)。
Q8:能拿到 FASTQ 吗?
不能。Cell 论文原文的解释是:底层测序数据约 125 TB,加上与 Parse Biosciences 的合同义务、以及原始测序文件的知识产权限制,FASTQ 无法存入公共库。这意味着你拿到的是已经比对、计数、去卷积、过滤之后的计数矩阵,上游任何一步都无法从零重跑——你改不了 STAR/solo 的比对参数,换不了参考基因组版本(GENCODE 版本由作者定死),也无法用另一套去卷积方法(如 scSplit、Vireo)重跑细胞系归属来核对 demuxlet 的结果。能改的只有下游:归一化、降维、差异表达、聚类、建模。实操上这意味着「上游方法学研究」这条路线对 Tahoe-100M 是关闭的,任何声称改进了比对或去卷积的论文,都不可能用它做对照。反过来,如果你的目标是方法学下游(如新的扰动预测架构、新的差异表达统计),它的价值反而更高——因为你不必担心上游差异带来的混淆。
Q9:许可真的是 CC0 吗?
是。HuggingFace 数据集卡的 license 字段是 cc0-1.0,Cell 论文的 Data availability 也写明"under a CC0-1.0 license"。CC0 意味着放弃一切著作权主张,可以商用、可以再分发、不需要署名。注意:论文本身是 CC BY 4.0,与数据许可不同——论文的图与表若要复用,仍需按 CC BY 4.0 署名,而数据本身不需要。另外两点容易忽略:一是 CC0 只覆盖著作权,不覆盖专利权(某一化合物的用途专利不因数据开放而失效);二是细胞系本身可能受 ATCC 等来源机构的材料转让协议约束,把 Tahoe 数据用于商业细胞系开发前,材料层面的合规要单独判断。这两条是 CC0 光环下最常见的误读。
Q10:为什么它对 AI-Ready 重要?
三个原因:一是规模跨过了「可学习」阈值;二是许可干净到几乎不需要法务介入;三是它自带一份明白写出的"使用禁区"清单(cell village 偏倚、单细胞表型重复性弱、随机切分虚高)——这三点决定了它既可以立刻投入使用,也容易被误用。
§2 数据构成与规格
2.1 三源交叉核对后的规模表
下表把 HuggingFace API 实测、Cell 论文正文、Arc Virtual Cell Atlas README 三处口径并列,凡有出入处均标注:
| 指标 | 数值 | 来源 | 备注 |
|---|---|---|---|
| 细胞数(全过滤) | 95,624,334 | HF API num_examples;Cell Data availability |
推荐引用值 |
| 细胞数(最简过滤) | 100,648,790 | Arc Virtual Cell Atlas README | 对应论文 100.6M |
| 细胞数(原始) | 约 153,000,000 | 论文正文 | 1.53 亿 |
| 细胞系(装载 / 可分析) | 50 / 47 | 论文正文 | 剔除 3 个低计数系 |
| 化合物 | 379 | 论文正文 | HF 卡面未单列 |
| 药物-剂量组合 | 1,135 | 论文正文 | 摘要"约 1,100"指此 |
| 细胞系×药物×剂量条件 | 52,886 | 论文正文 | 每条件中位 1,287 细胞 |
| 细胞系×药物条件 | 17,813 | 论文正文 | 另一口径,勿混用 |
| 96 孔板 | 14 | HF 卡 plate 字段(1–14);论文 |
plate 14 = plate 6 重复 |
| sublibrary | 1,786 | 论文正文 | 每板 72–165 个 |
| 原始 reads | 约 1.4 万亿 | 论文正文 | Ultima UG-100 |
| 原始数据体积 | 约 125 TB | Cell Data availability | FASTQ 不公开的原因之一 |
| HF 下载体积 | 337,644,770,670 字节(约 338 GB) | HF API download_size |
Parquet 压缩后 |
| HF 解压体积 | 1,693,653,078,843 字节(约 1.69 TB) | HF API dataset_size |
全量解压占用 |
| 每细胞转录本(均值/中位) | 2,288 / 1,890 | 论文正文 | 低于常规 10x |
| 器官来源 | 13 | 论文正文 | TP53/KRAS/CDKN2A 约半数系有改变 |
一处需要特别说明的冲突:HuggingFace 数据集卡的正文写 “over 100 million transcriptomic profiles”,而同页的 YAML dataset_info 给出 num_examples: 95624334。卡面文字沿用了论文摘要的"1 亿"叙事,结构化字段才是实际行数。任何自动化流水线都应读结构化字段,而不是读卡面正文。
2.2 六张表的结构
HuggingFace 数据集配置为六个 config,其中表达数据是主表,其余五张是元数据表,另有一张伪 bulk 差异表达表:
tahoebio/Tahoe-100M
├── expression_data data/train-*(主表,95,624,334 行)
├── sample_metadata metadata/sample_metadata.parquet
├── gene_metadata metadata/gene_metadata.parquet
├── drug_metadata metadata/drug_metadata.parquet
├── cell_line_metadata metadata/cell_line_metadata.parquet
├── obs_metadata metadata/obs_metadata.parquet
└── pseudobulk_differential_expression metadata/pseudobulk_differential_expression/train-*
主表 expression_data 的十个字段:
| 字段 | 类型 | 含义 |
|---|---|---|
genes |
sequence<int64> |
该细胞中非零表达的基因 token ID;与 expressions 逐位对齐;首元素为 CLS 标记,必须丢弃 |
expressions |
sequence<float32> |
对应基因的原始计数;首元素同为标记位 |
drug |
string |
处理名;DMSO_TF 为溶剂对照,需与 plate 联用取板内对照 |
sample |
string |
样本 ID,用于连接 sample_metadata;可区分重复处理 |
BARCODE_SUB_LIB_ID |
string |
条形码 + sublibrary 标识,全库唯一,主键 |
cell_line_id |
string |
Cellosaurus 编号(如 CVCL_0023);DepMap 编号在 cell_line_metadata |
moa-fine |
string |
细粒度机制注释,来自 25 类词表 |
canonical_smiles |
string |
规范化 SMILES 结构式 |
pubchem_cid |
string |
PubChem 化合物编号;对照组为空字符串,查询前需转 int |
plate |
string |
96 孔板编号(1–14) |
注意 pubchem_cid 的类型陷阱:它在数据集里是 string 类型,对照组是空字符串 "" 而不是 null。如果用 pandas 直接做数值比较,空串会静默变成 NaN 或触发类型错误——先 cast 再查询,这是 HF 卡面明确提示的。
2.3 稀疏存储格式:为什么是「token 序列」而不是矩阵
这份数据没有采用常规的「细胞 × 基因」稠密矩阵或 CSR 稀疏矩阵,而是把每个细胞存成一对等长序列:genes 放非零基因的整数 token,expressions 放对应的计数值。这是语言模型的存储习惯,而不是单细胞分析的存储习惯。 这个设计有三个直接后果:
- 每行长度不等:不同细胞的非零基因数不同,Parquet 会按变长 list 编码,读取时不能假设定长。
- 列名是 token ID 不是基因名:要把 token 映射回
gene_symbol或ensembl_id,必须 joingene_metadata。该表基于 Ensembl release 109 / GRCh38(genome build 38)。 - 首元素是标记位:HF 卡面明确写了"The first entry for each row is just a marker token and should be ignored",这是一个 CLS token,去掉它与
expressions的首元素,两侧才能干净对齐。
从 AI-Ready 的角度看,这是一个对模型友好、对角谱工具不友好的格式:load_dataset 流式读取很顺,但任何想用 Scanpy 做标准流程的人都要先转换。官方提供了 pandas / polars / dask 三种读取路径,并在 tutorials/loading_data.ipynb 里给了转 AnnData 的示例。
2.4 五张元数据表
gene_metadata:gene_symbol(HGNC 符号)、ensembl_id(Ensembl 109 / GRCh38)、token_id(与主表 genes 对齐的整数)。三列构成从模型 token 回到生物学基因名的桥。
sample_metadata:以 sample 为主键,含 plate、mean_gene_count、mean_tscp_count(每细胞平均 UMI 数)、mean_mread_count(每细胞平均 reads)、mean_pcnt_mito(平均线粒体比例)、drug,以及 drugname_drugconc——一个把药名、浓度、单位拼在一起的字符串,例如 [('8-Hydroxyquinoline',0.05,'uM')]。要做剂量分析,必须解析这个字段,因为主表里没有独立的浓度列。
drug_metadata:以 drug 为主键。含 targets(GPT-4o 提出、MedChemExpress 校验的靶基因符号列表)、moa-broad(抑制剂/拮抗剂 vs 激活剂/激动剂 vs 不清)、moa-fine、human-approved(yes/no)、clinical-trials(yes/no)、gpt-notes-approval(GPT-4o 生成的批准状态说明)、canonical_smiles、pubchem_cid。注意:human-approved 与 clinical-trials 两列都是模型标注,不是人工逐条核对的结果,用于筛选可以,用于结论需谨慎。
cell_line_metadata:含 cell_name(如 A549)、Cell_ID_DepMap(如 ACH-000681)、Cell_ID_Cellosaur(如 CVCL_0023,主表用的就是这个)、Organ(器官来源),以及一组驱动变异列:Driver_Gene_Symbol、Driver_VarZyg(Hom/Het)、Driver_VarType(Missense/Frameshift/Stopgain/Deletion)、Driver_ProtEffect_or_CdnaEffect(如 p.G12S)、Driver_Mech_InferDM(LoF/GoF)、Driver_GeneType_DM(Oncogene/Suppressor)。这是做「基因型 × 药物响应」交互分析的关键表。
obs_metadata:Arc 侧提供的细胞级元数据,含 gene_count、tscp_count、mread_count、pcnt_mito、S_score/G2M_score/phase(推断的细胞周期相位)、pass_filter(区分 full/minimal 过滤)、sublibrary、cell_name。要做细胞周期相关的表型分析,这张表省去了自己算相位的麻烦,但也因此意味着你用的是别人的相位推断口径。
2.5 伪 bulk 差异表达表
pseudobulk_differential_expression 是唯一一张「已加工」的统计表。它把同一板、同一细胞系、同一药物浓度的细胞聚合成伪 bulk,再两两做差异表达。对不想碰 1.69 TB 原始矩阵的用户,这张表是性价比最高的入口——大部分「这个药在这个细胞系里上调了什么」的问题,它直接给答案。
代价是:你只能问它已经算过的对比。任何论文里没做的组合(比如某两个细胞系之间的对比、某两个剂量之间的连续建模),仍要回到主表自己算。
2.6 关键字段的取值约定 用这份数据前必须记住的五个约定:
- 对照是
DMSO_TF,且必须在同一块板内取——跨板对照会引入板间差异,而 plate 14 是 plate 6 的重复,跨板对照在这两板之间尤其容易出错。 sample区分重复处理,同一 condition 可能有多个 sample;聚合时要按sample而不是按drug分组,否则会把重复当成独立样本,人为抬高样本量。- 细胞系 ID 用 Cellosaurus(CVCL_xxxx),不是细胞系俗名(A549)。俗名在
cell_name里。 - 剂量只能从
drugname_drugconc字符串解析,格式是 Python list 的字面量。 - 基因 ID 是 token,转基因名要 join
gene_metadata,转 Ensembl 也用同一张表。
§3 实验设计与平台
3.1 Mosaic 平台:三个组件的拼装
Tahoe 的 Mosaic 平台不是一个单一仪器,而是三套外部能力 + 一套自研流程的拼装:
- 建库:Parse Biosciences 的 GigaLab 服务,基于组合条形码(combinatorial barcoding)——细胞先被固定、然后在多轮分池-连接中依次打上条形码片段,理论上组合数可达百万级,无需微流控芯片。每块 96 孔板产出 72–165 个 sublibrary,全库共 1,786 个。
- 测序:Ultima Genomics 的 UG-100 平台,以低成本高通量见长;全库产出约 1.4 万亿 reads。数据处理走 Ultima Trimmer workflow 后交给 Parse 的
split-pipe(v1.4.0)完成条形码拆分与比对。 - 去卷积:demuxlet,用每个细胞系的 SNP 谱把混在一起的细胞认回原系。
这条链路上,Tahoe 自己的贡献是实验设计(cell village 的配比与铺板策略)和下游分析(scVI 嵌入、Vision 打分、E-distance、MOA 归类)。
3.2 cell village:配比、铺板与「最优平衡」
论文摘要里用了一个很有画面感的说法:一个"高度多样且最优平衡的 cell village"。这句话拆开看有三层含义。
多样指的是 50 个细胞系覆盖 13 个器官——肺、乳腺、结肠、胰腺、卵巢、皮肤、造血系统等,而不是清一色的肺癌系。这是为了让模型见到足够宽的基线转录组谱。
平衡指的是每个细胞系在池中的占比被刻意控制在相近水平,避免某个增殖快的系(比如某些白血病系)在 24 小时内把邻居挤掉。论文 Figure 3E 用热图展示了每个细胞系×药物浓度条件的细胞覆盖情况,并特意标出丰度最低的三个系——这正是"平衡"没有做到完美的证据:即便经过配比设计,仍有细胞系在特定条件下细胞数不足。
成球指的是这些细胞不是悬液培养,而是先做成混合细胞球体(mixed-cell spheroid),在三维环境下给药,24 小时后解离、固定、进入建库流程。三维球体比二维单层更接近实体瘤的梯度环境(外层增殖、内层缺氧),但仍然是纯癌细胞,没有免疫细胞与成纤维细胞。
3.3 分层因素的实证:LISI 说了什么
论文用局部逆辛普森指数(Local inverse Simpson’s Index,LISI)量化各个元数据因素对转录组分层的贡献:对 10,000 个细胞子采样、取 30 近邻、重复 100 次,报告 LISI 的中位数与标准差。
结论很清晰:细胞系身份是第一分层因素,其次是细胞周期相位,药物处理与剂量的影响相对温和。这与 tSNE 可视化的观察一致——按细胞系着色时聚类边界清晰,按板号着色时几乎混在一起。
这个结果有两面性。好的一面是:板间批次效应确实被压住了,这是 cell village 设计想要的东西。不好的一面是:药物效应在整体转录组上是个"小信号",被细胞系差异淹没;这也正是论文要做差异表达分析、而不是简单聚类的原因。用论文自己的话说,drug 与 dose 的影响"modest relative to these factors"。
对使用者的直接启示:如果你直接在原始矩阵上做无监督聚类找药物效应,你会失败。必须先做伪 bulk 聚合或以细胞系为条件做差异表达,信号才能浮出来。判断「信号是否浮出来」有个便宜的检查:对同一药物的不同剂量做伪 bulk,看剂量-反应单调性——如果低剂量与高剂量的伪 bulk 相关性高于 0.99,说明该药物在你的数据结构里几乎没有可分辨效应,不必再往下调参;反之才值得进入单细胞层面的异质性分析。这个检查在几分钟内能跑完,比训练一个扰动预测模型快好几个数量级,适合作为任何下游建模之前的第一道可行性筛查。
3.4 重复性设计:只有一对生物学重复
14 块板里,plate 14 被设计为 plate 6 的生物学重复,其余 12 块没有独立重复。这是这份数据在统计设计上最薄弱的一环,值得单独强调。
重复性检验的做法是:把同一板、同一细胞系、同一药物浓度的细胞聚成伪 bulk,计算基因表达向量的 Pearson 相关。这一步的选择本身就有讲究——伪 bulk 把条件内成百上千个细胞按基因求和,等价于把「细胞层面的异质性噪声」平均掉,只留下「条件层面的平均表达谱」。对药物效应这种以均值漂移为主的信号,伪 bulk 的相关性几乎总是比单细胞层面好看得多,所以 0.975 这个数字不能被读成「单细胞测量高度可重复」,它只说明「平均表达谱高度可重复」。两者之间的差距,恰恰就是论文讨论节里那句 Pearson R=0.29 的来源。结果:
| 比较类型 | q25 | 中位数 | q75 |
|---|---|---|---|
| 匹配(同细胞系、同药物) | 0.97 | 0.975 | 0.98 |
| 不匹配(两板间随机配对) | 0.892 | 0.915 | 0.929 |
两组之间的差距只有 0.06,这一点必须看清楚:它说明板间总体差异很小(好消息,批次效应确实被压住了),但也说明判别力集中在很窄的区间——一个模型的预测只要略微偏向「细胞系平均表达」,就很容易落进 0.89-0.93 这个不匹配区间里,看起来「相关性很高」却完全没有学到药物特异的信号。所以在这份数据上,单看 Pearson 相关系数的绝对值意义不大,要看的是它与不匹配基线的差值。
匹配对的相关性显著高于随机配对,说明平台是可重复的——但要注意两点:第一,随机配对的相关性本身就有 0.915,这抬高了"0.975 看起来很好"的基线;第二,这是伪 bulk 层面的相关性,它掩盖了单细胞层面的不一致(见 §4.4)。论文原作者在 Cell 讨论节里明确写道:“高转录组一致性并不意味着生存、细胞周期、Gini、Augur 或异质性测量具有相当的可重复性。”
3.5 时间点、剂量与模态的三重约束 三条硬约束,使用时必须记住:
- 单时间点:24 小时。所有「即时响应」与「长期适应」都不在数据里。做时间序列模型的人不能把它当作训练数据。
- 有限剂量:每个化合物的剂量数不等,1,135 个药物-剂量组合摊到 379 个化合物,平均约 3 个剂量。典型的剂量-响应曲线需要 6–8 个点,这里不足以拟合完整的 Hill 曲线。
- 单模态:3’ scRNA-seq。没有蛋白(CITE-seq)、没有染色质(scATAC)、没有空间信息、没有活细胞成像。论文里的「表型」(细胞周期停滞、生存、异质性)全部是从转录组推断的,不是实测的——作者原文用了 “transcriptomically inferred phenotypes” 这个措辞来限定。
这三条约束共同决定了 Tahoe-100M 的适用范围:它适合训练"从基线状态预测 24 小时后的转录组"这一类模型,不适合任何需要时间动力学、多组学整合或蛋白水平验证的任务。
§4 数据深度剖析:从 QC 到表型
4.1 三层过滤:153M → 100.6M → 95.6M 论文披露的细胞数不是三个互相矛盾的数,而是一条逐级收窄的漏斗:
| 阶段 | 细胞数 | 判据 |
|---|---|---|
| 原始测序 | 约 153,000,000 | 条形码拆分后检测到的全部细胞 |
| 最简过滤(minimal) | 100,648,790 | demuxlet 判为 singlet + 线粒体比例 <20% |
| 全过滤(full) | 95,624,334 | 在最简过滤之上再加:UMI ≥700、基因数 ≥250、UMI 与线粒体比例的 z-score 都在 ±3 内 |
从 153M 到 100.6M,被丢掉的主要是双细胞/多细胞(demuxlet 判为 dublet 的)与破损细胞(线粒体占比过高);从 100.6M 到 95.6M,被丢掉的是低复杂度细胞(UMI 不足 700 或基因数不足 250)。约 850 万个细胞在这一步被剔除,占最简过滤口径的 8.4%。
这解释了三种说法各自的合理性:Arc README 的 100.6M 是最简过滤口径,因为它要把「所有可用细胞」都给出来,让用户自己选择过滤严格度;HF 与 Cell 的 95.6M 是全过滤口径;论文摘要的"1 亿"是对 95.6M 的取整叙事。三者不冲突,但混用会出错——比如你用 95.6M 的细胞数去除以 100.6M 口径的 per-condition 统计量,得到的均值就会偏低。
4.2 细胞系:50 装载、47 可用、3 个被剔
50 个细胞系中,NCI-H661、NCI-H596、NCI-H2122 三个非小细胞肺癌系因细胞数不足被剔除。剔除标准是条件级:一个「细胞系×药物」条件至少要有 50 个细胞才纳入分析,这三个系在多数条件下达不到这个门槛。
这个细节的意义在于:它揭示了 cell village 配比设计的局限。三个被剔的都是肺癌系,说明肺来源的细胞系在混养条件下可能增殖较慢或存活较差。对于研究"肺癌药物响应"的用户,这意味着可用的肺癌系比设计的少——用 Organ 字段筛选时要先看一眼实际可用数量。
论文补充了一个有用的背景:TP53、KRAS、CDKN2A 三个基因在约一半细胞系中有改变。这为"基因型 × 药物响应"的研究提供了天然的对照组:同样是 KRAS 突变,不同器官来源的细胞系对 MEK 抑制剂的响应差异,就是 context dependence 的直接素材。
4.3 药物:379 个化合物、325 个靶点、25 类机制
| 指标 | 数值 | 说明 |
|---|---|---|
| 独立化合物 | 379 | 文献中常被误引为 1,100 |
| 药物-剂量组合 | 1,135 | 摘要"约 1,100"所指 |
| 被靶向的基因 | 325 | 其中 120 个被多个药物同时靶向 |
| 可归入 MOA 类别的化合物 | 180 | 分属 25 个机制类别 |
| 已批准人体使用 | 约 69% | human-approved=yes |
25 个 MOA 类别覆盖了常见的药理机制:蛋白酶体抑制剂、MEK 抑制剂、HDAC 抑制剂、微管抑制剂、拓扑异构酶抑制剂、PI3K/mTOR 通路抑制剂等。这个分层让"同一机制不同化合物是否产生相似转录组响应"成为可以直接检验的问题——论文用 E-distance 按 MOA 分组排序,发现不同机制在最高剂量下的效应量差异明显。
一个容易踩的坑:moa-fine 在论文与 HF 卡面中都有,但它的来源是 GPT-4o 生成 + MedChemExpress 文本校验,不是专家逐条标注。论文明确写了这条流水线。用它做分层统计没问题,用它做"机制注释质量的黄金标准"就会出问题——模型对少见化合物的机制判断可能出错,而 gpt-notes-approval 那一列的存在恰好说明作者自己也知道哪些判断需要附加说明。
4.4 单细胞表型的重复性:为什么 R=0.29 是关键数字 这是整份数据最容易被忽略、也最需要被强调的一条。
Cell 论文讨论节的原文大意是:伪 bulk 基因表达签名在重复板之间高度一致,但由它推导出的单细胞表型只有中等程度的板间相关,其中转录组异质性(transcriptomic heterogeneity)最弱,Pearson R = 0.29。其余指标——生存、细胞周期停滞、Gini 系数、Augur 可预测性——重复性也只是中等。 这条限定的含义要拆开理解:
- 伪 bulk 是稳的(R≈0.975)。所以凡是基于伪 bulk 的比较——“这个药让这个细胞系上调了哪些基因”——可信度高。
- 单细胞分布是脆的(异质性 R=0.29)。凡是基于"细胞之间的差异有多大"的结论——比如"这个药让这个细胞系变得更异质、出现了耐药亚群"——只有约 8.4%(0.29²)的方差能被重复解释,基本不可靠。
- 中间地带是灰的。细胞周期停滞这类指标,介于"聚合统计"与"分布形状"之间,重复性中等,用的时候要有保留。
作者给出的建议很直接:建立在低重复性表型上的结论,应通过正交实验(如活细胞成像、直接活力读数)确认。换句话说——这些表型是推断出来的,不是测出来的。实操上还有一个更隐蔽的连带风险:当模型以这些表型为预测目标做训练时(例如用转录组预测细胞周期停滞比例),训练标签本身就带 0.29 量级的不确定性,模型学到的「上限」其实被标签噪声卡死了。这时候即便验证集表现很好,也不能推成「模型真的学会了预测表型」——很可能只是学会了拟合伪 bulk 层面的平均效应,再用平均效应去套每个条件。要区分这两种情况,做法是看残差是否与条件规模相关:如果小样本条件(细胞数少的)残差明显更大,说明模型在依赖规模而非生物学信号。
4.5 五个核心分析工具 论文的分析链条依赖五样东西,理解它们有助于复现:
- scVI:变分自编码器,负二项似然,10 维潜空间嵌入,训练 10 个 epoch,用 8 亿以上的单细胞样本。它是后续所有基于嵌入的距离计算与可视化的基础。注意它只用 plate 1–13 的 89,423,257 个细胞训练,plate 14 留作独立验证——这是防止重复板信息泄漏的细节。
- demuxlet:基于 SNP 的细胞去卷积,报告准确率 >98%、singlet 率 >90%。
- E-distance:量化扰动群与对照群的可分性,是判断"这个药有没有效应"的主指标。论文用它对比 Tahoe-100M 与 SciPlex-3、Replogle Perturb-seq 两个基准。
- Vision:基因集活性打分,用 7,390 个基因集计算每个细胞的通路活性;RAS 通路分析用了 600 基因签名(KRAS.600.LUNG.BREAST.V1)。
- LISI:局部逆辛普森指数,量化各元数据因素的分层贡献(见 §3.3)。
值得注意,预印本 v3 的正文里没有出现 Gini 与 Augur,而 Cell 讨论节把它们列进了"单细胞表型"清单。这说明从预印本到见刊版,表型清单被扩充了,但对应的详细重复性统计只能从 Cell 版的补充材料里找。
4.6 从计数到 AnnData:两条路径
路径一:HuggingFace Parquet → AnnData(推荐给全量分析)
from datasets import load_dataset
import numpy as np
import scanpy as sc
from scipy.sparse import coo_matrix
ds = load_dataset("tahoebio/Tahoe-100M", split="train", streaming=True)
def row_to_csr(row, n_genes):
genes = np.asarray(row["genes"][1:], dtype=np.int32) # 丢弃首元素 CLS token
vals = np.asarray(row["expressions"][1:], dtype=np.float32)
return coo_matrix((vals, (np.zeros_like(genes), genes)),
shape=(1, n_genes)).tocsr()
关键点有三:丢弃首元素;n_genes 必须从 gene_metadata 取最大值 +1,不能硬编码;逐行 coo_matrix 拼装在全量 9,562 万行上会非常慢,实际生产中应先用 HF 的分片 BatchedParquet 读取,或直接走路径二。
路径二:Arc Virtual Cell Atlas h5ad(推荐给常规单细胞流程)
# 需先用有 Marketplace 订阅的 GCP 项目
gcloud storage cp \
gs://arc-institute-virtual-cell-atlas/tahoe100M/2025-02-25/ \
./tahoe --recursive
h5ad 按板切分,每块板对应一个或多个 .h5ad.gz 文件(内部 gzip 压缩的 h5ad,不是外部 .gz 外壳)。命名上带板号与规模后缀,例如 plate3_2k 表示第 3 板、约 2 千细胞的子样本;完整板的文件名不带 2k 这类规模后缀,下载时按后缀区分「验证用小样本」与「分析用全量」可以省掉大量无效传输。另外,内部 gzip 而非外部 .gz 这一点很关键:gunzip 对这类文件会直接报错,必须交给 h5py / anndata 自己去解,用命令行工具判断「文件是否损坏」会得出完全错误的结论。Arc 的 Python 教程里提醒:单块板的 h5ad 体量很大,官方给了 tutorial/plate3_2k-obs.h5ad 这个 2,000 细胞的子样本用于验证读取流程。
这里还有一个容易被忽略的成本细节:HuggingFace 路径虽然免费,但 338 GB 的 Parquet 下载后要转成 AnnData 才能用常见工具链处理,转换本身要占用与数据量同量级的磁盘与内存;Arc 路径直接给 h5ad,省掉转换,但要付出网费与订阅门槛。先想清楚你的算力预算在哪一边,再选路径,比先下后想省事得多。
2026 年的一个重要变化:旧桶 gs://arc-ctc-tahoe100/ 已于 2026-03-31 弃用,新桶 gs://arc-institute-virtual-cell-atlas/ 是 Requester Pays 模式,每月 2 TB 以内免费——但前提是你的 GCP 项目已在 Marketplace 订阅了该数据集。从订阅项目之外拉数据会按标准出网价计费,社区已有用户因未订阅而拉 1.44 TiB 被计费约 60 欧元的案例,被记录在仓库 issue 里。
4.7 AI-Ready 视角的结构性评价 把这份数据放进「AI-Ready 数据集」的框架里看,它在五个维度上的表现并不均匀:
| 维度 | 表现 | 说明 |
|---|---|---|
| 机器可读 | 强 | Parquet + 结构化 YAML 卡面 + 六 config 拆分,load_dataset 一行可用 |
| 许可清晰 | 极强 | CC0-1.0,无需授权、无需署名,商用无障碍 |
| 元数据完备 | 强 | 六张表 + 逐细胞 obs + 伪 bulk 统计;药物注释来源透明(GPT-4o + MCE) |
| 上游可复现 | 弱 | FASTQ 不公开,比对与去卷积无法重跑 |
| 格式友好 | 中 | token 序列格式对语言模型友好、对 Scanpy 用户不友好,需转换 |
综合看,这是一份**"下游完全开放、上游完全封闭"的数据集**。你不能验证它的比对是否正确、去卷积是否可靠、过滤阈值是否合理——你只能接受作者的处理结果,然后在它的基础上做分析。这一点在 AI-Ready 评估里是结构性扣分项,但对于绝大多数建模用途(模型吃计数矩阵)并不构成实际障碍。
§5 许可与引用
5.1 三层许可对照
| 对象 | 许可 | 依据 |
|---|---|---|
| 表达矩阵 + 元数据(HF) | CC0-1.0 | HF datasets API license:cc0-1.0;Cell Data availability 原文 |
| Arc 托管 h5ad | CC0-1.0(数据本身);访问受 GCS Requester Pays 约束 | Arc README |
| 论文(Cell 版) | CC BY 4.0 | Crossref license 字段(vor 版本,2026-08-28 起) |
| 预印本(bioRxiv v1) | CC BY-ND(bioRxiv 标记 cc_no) |
api.biorxiv.org details |
| 分析代码 | Zenodo 10.5281/zenodo.21864540 | Cell Data availability |
| FASTQ | 不公开 | 约 125 TB + Parse 合同 + IT 限制 |
这里要特别注意:数据是 CC0,论文是 CC BY。把论文里的图表直接搬进商业产品需要署名,把数据矩阵搬进商业模型则不需要任何条件。两者许可不同,不能混谈。
5.2 CC0 的实际含义与边界
CC0-1.0 在法律上是"放弃著作权及相关权利,并声明不保留任何权利"。对使用者意味着:
- 可以商用、可以再分发、可以修改、可以闭源。
- 不需要署名(虽然学术惯例仍建议引用)。
- 不能追责作者(无担保条款)。 但 CC0 只能覆盖著作权,覆盖不了三件事:
- 专利:CC0 明确声明不授予专利许可。如果某个化合物的用途受专利保护,数据本身开放不等于可以自由实施相关用途。
- 人格权与隐私:这份数据全是癌细胞系,不涉及供体隐私,所以这条不构成实际障碍;但 CC0 在法理上并不处理隐私权。
- 第三方权利:细胞系本身(如 ATCC 来源)可能有材料转让协议(MTA)约束其使用,数据开放不解除这些约束。
对 AI 训练而言,CC0 是能拿到的最干净许可之一——它绕开了几乎所有数据集都要面对的"能不能用于训练"的争议。
5.3 引用规范
引数据本体(首选 Cell 版):
Zhang J, Ubas AA, Svensson V, Thomas N, Subramanyam V, Carpenter C, Winters A,
de Borja R, Teyssier N, Thakar N, ... Goodarzi H, Yu J.
Tahoe-100M: Mapping drug-induced molecular phenotypes at single-cell resolution.
Cell. 2026;189(19):5945-5961.e8. doi:10.1016/j.cell.2026.08.035
引预印本(如果工作早于见刊版、或需要引用预印本特有内容):
Zhang J, Ubas AA, de Borja R, Svensson V, Thomas N, Thakar N, Lai I, Winters A,
Khan U, Jones MG, ... Goodarzi H, Yu J.
Tahoe-100M: A Giga-Scale Single-Cell Perturbation Atlas for Context-Dependent
Gene Function and Cellular Modeling. bioRxiv 2025.02.20.639398.
两版标题不同,这是 bioRxiv → Cell 常见的改写(从"图谱"叙事改成"表型映射"叙事)。引用时按你实际读的版本写,不要混用标题与期刊名。HF 卡面目前给的 BibTeX 仍是预印本版本(@article{zhang2025tahoe},journal=bioRxiv),见刊后未更新——如果你直接从卡面复制,会引用到预印本。
5.4 机构名称变更的坑
HF 卡面写的是 “Vevo Therapeutics’ Mosaic high-throughput platform”,而 Cell 论文的机构署名是 “Tahoe Therapeutics, South San Francisco, CA, USA”,bioRxiv v1 的通讯机构也写 Vevo Therapeutics。Vevo 是 Tahoe 的前身名称,2025 年更名。官网现为 tahoelabs.ai。
这对检索的影响是实打实的:搜 “Vevo Therapeutics Tahoe-100M” 会命中早期报道,搜 “Tahoe Therapeutics” 会命中见刊后报道,两条线索指向同一实体但术语不同。写综述时用 Tahoe Therapeutics,并在首次出现时注明原 Vevo。
§6 获取路径与实操
6.1 决策树:先问三个问题
你要做全量训练还是局部探索?
├── 局部探索(几百万细胞以内、或只查元数据)
│ └── HuggingFace streaming(不落盘,按需拉取)
├── 全量训练
│ ├── 需要 AnnData / Scanpy 生态 → Arc h5ad(GCS)
│ └── 需要语言模型式的 token 序列 → HF Parquet 全量下载(约 338 GB)
└── 只查「某个药在某细胞系里的差异表达」→ 直接读 pseudobulk_differential_expression
6.2 路径 A:HuggingFace(Parquet)
from datasets import load_dataset
# 流式:不下载全量,边用边拉
ds = load_dataset("tahoebio/Tahoe-100M", split="train", streaming=True)
first = next(iter(ds))
print(len(first["genes"]), first["drug"], first["cell_line_id"], first["plate"])
# 元数据表单独拉(体量小,可全量)
drug_meta = load_dataset("tahoebio/Tahoe-100M", "drug_metadata", split="train")
sample_meta = load_dataset("tahoebio/Tahoe-100M", "sample_metadata", split="train")
- 沙箱环境注意:HuggingFace 主站可能被封锁,可设
HF_ENDPOINT=https://hf-mirror.com。 - 全量下载 338 GB、解压 1.69 TB,务必先确认磁盘。
- 流式读取的吞吐取决于带宽,全量 9,562 万行顺序扫一遍在实际中需要相当长的时间;优先用列裁剪与过滤下推(
data_files指向具体 shard)。
6.3 路径 B:Arc Virtual Cell Atlas(h5ad)
# 1) 在 GCP Marketplace 订阅数据集
# 2) 用同一订阅项目执行
gcloud storage cp --billing-project=YOUR_PROJECT \
gs://arc-institute-virtual-cell-atlas/tahoe100M/2025-02-25/tutorial/ \
./tahoe_sample --recursive
# 3) 先验 2,000 细胞子样本
python - <<'PY'
import scanpy as sc
ad = sc.read_h5ad("./tahoe_sample/plate3_2k-obs.h5ad")
print(ad)
PY
- 路径中的
2025-02-25是版本目录名,对应初版发布;Arc 在 2026-01-12 做过一次增强版发布。 .h5ad.gz是内部 gzip 压缩,scanpy.read_h5ad可直接读,不需要先解压。- 先
gcloud storage du量一下目标前缀的体积,再决定是否整桶同步——README 的 issue 里专门记录过"整桶 rsync 把 scBaseCount + Tahoe + VCC 全拉下来,直接爆掉 2 TB 额度"的事故。
6.4 成本估算的三个量级
| 操作 | 传输量 | 成本关注点 |
|---|---|---|
| 只读元数据 | 数十 GB 以内 | 可忽略 |
| 单块板 h5ad | 数十至上百 GB | 落在 2 TB 免费额度内 |
| 全量 h5ad | 与 1.69 TB 同量级 | 单次即接近免费额度上限,且 Requester Pays 出网费按标准价 |
| 全量 Parquet | 约 338 GB 下载 | 免费,但落盘 1.69 TB |
一句话:全量取一次就够,不要反复拉。对大多数建模任务,用 Parquet 免出网费下到本地、再转成需要的格式,比反复从 GCS 拉更划算。
6.5 常见失败模式
| 症状 | 原因 | 处置 |
|---|---|---|
genes 与 expressions 长度不等 |
忘丢首元素导致错位或截断 | 两侧都从下标 1 开始 |
| 全部细胞的基因索引都是 0 | 用了 dense 矩阵假设 | 走 COO/CSR 路径 |
| 对照找不到 | 只筛 drug == "DMSO" |
实际值域是 DMSO_TF |
| PubChem 查询报类型错 | pubchem_cid 是 string,含空串 |
先 cast,空串转 NaN |
| GCS 下载被计费 | 项目未订阅 Marketplace | 先订阅,再用同一项目 |
| 查询旧桶 404 | gs://arc-ctc-tahoe100/ 已弃用 |
换 gs://arc-institute-virtual-cell-atlas/ |
§7 评测方法论:为什么随机切分是错的
7.1 「条件依赖」才是这份数据想教的东西
Tahoe-100M 的设计初衷是训练条件依赖(context-dependent)的模型:同一个药在 A549 里上调的基因,和它在 MCF7 里上调的基因,应当既有共性又有差异,模型要能预测那个差异部分。这是比"药物效应预测"更难的任务——前者要求模型理解细胞背景,后者只要记住药的平均效应。
问题在于,这两件事在数据里是混在一起的。论文 Cell 讨论节的原话大意是:相当一部分扰动在细胞系之间产生广泛一致的效应,因此在一个随机留出的条件集上评测的模型,可以仅仅通过复现这些"与背景无关的响应"就显得很准,而并没有学到研究者真正关心的条件依赖。
数学上这很容易理解。设某个药在细胞系 c 上的响应为 R(c, drug) = μ(drug) + δ(c, drug),其中 μ 是跨系平均效应,δ 是条件特异残差。如果 δ 的方差远小于 μ,那么一个只会背 μ 的模型在随机切分下就能拿到很高的 R²。而研究者真正在意的恰恰是 δ。把这三个量的量级摆出来就更清楚了:按这份数据自身的统计,μ(drug) 在伪 bulk 差异表达上可以稳定复现(多药共享的应激、增殖抑制、凋亡通路是常客),而 δ 的中位重复可靠性只有 0.067——也就是说,即便把同一个实验重做一遍,条件特异残差里能被重现的部分不到百分之七。这不是模型不够强,而是数据在「条件依赖」这个维度上给出的信息量本身就稀薄。要改进只有两条路:增加生物学重复(现在只有一对),或改用遗传扰动(可重复性通常远高于小分子)。
7.2 三种切分方式及其偏倚
| 切分方式 | 训练集/测试集关系 | 模型可以"作弊"的方式 | 适用问题 |
|---|---|---|---|
| 随机按条件切分 | 同一药、同一细胞系都可能在训练集出现 | 记住药的跨系平均效应 | 仅适合评估"补全已知组合" |
| 按化合物留出(leave-compound-out) | 测试药完全未见过 | 记住细胞系的平均响应 | 评估"新药在已知背景下"的预测 |
| 按细胞系留出(leave-cell-line-out,LOCO) | 测试细胞系完全未见过 | 记住药的跨系平均效应 | 评估"已知药在新背景下"的预测 |
| 双重留出 | 药与细胞系都未见过 | 只能靠结构或先验 | 最严格,接近真实药物发现场景 |
论文建议的是前两类结构化留出(“withholding whole compounds or whole cell lines”),而非随机分区。这句话不是方法论建议,而是对"SoTA 虚高"的直接警告。一个可以自己做的验证:把同一份模型分别在随机切分与 LOCO 切分下评测,若两者 R² 相差超过 0.2,说明该模型的「成绩」绝大部分来自 μ 而非 δ,它的实际价值应按下限估计。反过来,如果两个切分下成绩接近且都不高,那反而是一个诚实的结果——它说明在这个数据上条件依赖确实难学,而不是你的模型写得差。
7.3 一个已发表的 LOCO 基准与它的坏消息
2026 年有一份预印本(Research Square,rs-10846736)专门在 Tahoe-100M 上做了泄漏安全的 LOCO 基准,它的结论值得完整引用,因为它量化了"δ 有多难学":
- 设定:47 个高覆盖细胞系、377 个药物在 5 µM 单剂量、12,705 个基因、伪 bulk 差异表达;每折留出一个细胞系,共产生 17,561 次药物×折评估,横跨 6 个模型。
- 结果一:在完整基准上没有任何模型显著超过"药物均值"基线。表现最好的元数据 ridge 模型,可靠性加权残差 R² 只有 +0.004;主力的基线表达 PC ridge 模型甚至是 −0.068。
- 结果二:原因是目标信号本身不可重复。在有重复伪 bulk 的 107 个药物中,条件特异残差的中位重复可靠性只有 0.067,只有 4 个药物的可靠性超过 0.2。
- 结果三:在残差确实可重复的地方,基线表达是有预测力的——模型技能与"可重复性天花板"高度相关(Spearman ρ=0.76,p=3×10⁻²¹)。可靠性超过 0.15 的 5 个药物上,R² 可达 +0.058。
- 结果四:能被预测的往往是细胞系身份级的表型,而不是细微的调控状态。比如 idarubicin 的主导轴是供体性别(Y 染色体基因,46 折中 46 折稳定),tucidinostat 的主导轴是一个免疫-基质程序。
这份外部基准给出的教训是双重的:一方面它证实了论文自己的警告(随机切分会虚高),另一方面它把问题往前推了一步——即使做了正确的切分,能被学到的条件依赖信号本身也很弱。这是数据的内在属性,不是模型的问题。任何声称在 Tahoe-100M 上把 LOCO R² 做到 0.3 以上的工作,都应当先交代它是否做了严格的泄漏控制。
7.4 评测设计检查清单 给打算在 Tahoe-100M 上做基准的人一份最小清单:
- 切分单元:按化合物整组留出,或按细胞系整组留出,或双重留出。绝不能按行随机切。
- 聚合层级:在伪 bulk 层面评测,还是在单细胞层面?两者不可比,必须声明。伪 bulk 更稳,单细胞更接近任务本意但噪声大。
- 对照选择:必须是同板
DMSO_TF,而不是全局 DMSO 均值。 - 剂量处理:如果测试药在训练集中以其他剂量出现,要声明这是"剂量外推"而非"药物外推"。
- 基线:至少要报告三个——全局均值、药物均值、细胞系均值。低于药物均值基线的模型没有意义。
- 可重复性上限:如果可能,报告目标信号在重复板上的可靠性,作为模型的理论上限参照。
- 指标:R²、Pearson、Spearman 三者给全;差异表达任务再加 AUPRC 与 top-k 召回。
- 基因子集:全基因集与高变基因集分别报,避免高变基因掩盖低表达区的失败。
7.5 与库内其他扰动基准的可比性 Tahoe-100M 与库内另外几个扰动资源在评测设计上有系统性差异:
| 条目 | 扰动类型 | 评测的典型问题 | 与本条目的可比性 |
|---|---|---|---|
| scPerturb(rid 1102) | 混合,44 个数据集统一 | 跨数据集的一致性统计 | 可直接用作外部验证集,但需重做基因对齐 |
| PerturbAI CRISPR Atlas(rid 1194) | 体内 CRISPR 敲除 | 基因扰动→表型,in vivo 背景 | 扰动类型不同,不可直接比模型分数 |
| CZ CELLxGENE Census(rid 1035) | 无扰动 | 观测性细胞类型与状态 | 可作为基线表达分布的参照 |
| CZ CELLxGENE(rid 38) | 无扰动(平台) | 数据发现与下载 | 提供原始数据的检索层 |
实践建议:把 Tahoe-100M 当作训练集,用 scPerturb 里同类的化学扰动数据集做外部泛化检验,这比在同源数据上做交叉验证有说服力得多。
§8 影响、下游与生态
8.1 在虚拟细胞版图中的位置
Arc Institute 的 Virtual Cell Atlas 目前有三个主要组成:scBaseCount(观测性单细胞数据汇总)、Tahoe-100M(化学扰动)、Virtual Cell Challenge(评测赛事)。Tahoe-100M 在其中扮演"扰动轴"的角色——scBaseCount 提供"细胞可以是什么样子",Tahoe-100M 提供"细胞可以被变成什么样子"。三者之间的关系不是并列而是有依赖的:评测赛事(Virtual Cell Challenge)刻意使用与 Tahoe-100M 分布不同的数据(2025 届用的是 Arc 自建的 H1 人胚胎干细胞 CRISPRi 数据,约 30 万细胞、300 个扰动),目的正是逼模型泛化而非记忆。所以准确的说法是「Tahoe-100M 是官方推荐训练数据」,而不是「它是赛事评测集」——这两句在对外材料里的分量差得很远,混用会引出「训练集与评测集重叠」的严重质疑。
这个组合的战略意图在 2026 年 1 月的合作公告里写得很直白:Tahoe、Arc、Biohub 三方合作,目标是生成"用于虚拟细胞模型的最大扰动数据集"。Tahoe-100M 是这条路线上的第一块公开产物,不是终点。从数据轴的完整性看,一条成熟的虚拟细胞训练管线至少需要三类输入:观测性图谱(细胞本来长什么样)、扰动图谱(外力把细胞推到哪里)、以及评测集(模型是否真的泛化)。Virtual Cell Atlas 的三件套刚好对应这三类,这也是为什么它比单独发布一份大数据的价值更高——单份数据只能被当作语料,而一套「语料+任务+尺子」的组合才能定义一个研究议程。
8.2 上下游数据集的谱系
- 上游技术:Parse Biosciences 的组合条形码(Evercode 系列)与 GigaLab 服务。Tahoe-100M 是 GigaLab 面向外部合作的最大规模公开产出之一。
- 上游平台:Ultima Genomics UG-100,以"每 gigabase 成本"竞争,牺牲部分读长与质量换通量。这一点解释了为什么数据的每细胞 reads 较高(
mean_mread_count)而转录本数中等。 - 下游模型:目前公开可见的用法集中在三类——虚拟细胞基础模型的预训练语料、药物响应预测的基准、以及 MOA 推断的弱监督标签源。
- 平行资源:scPerturb 提供了标准化框架,把 44 个扰动数据集统一成可比格式(库内 rid 1102);Tahoe-100M 尚未被纳入其正式版本,但格式上兼容(AnnData + obs 列规范)。
8.3 对药物发现流程的实际价值
需要冷静看待的一点:这份数据不能直接用于临床药物响应预测。原因是清楚的——全是癌细胞系、无免疫与基质、单一时间点、单一模态。论文自己在讨论节写的是"可作为起点"(a starting point),并没有拔高到转化医学层面。 它真正能起作用的地方在更上游:
- 靶点验证的早期筛选:给定一组候选化合物,看它在 47 个背景下引起的转录组变化是否符合预期机制。
- 机制(MOA)推断的标注源:379 个化合物的转录组响应模式,可以训练"从表达谱反推机制"的分类器。
- 耐药与敏感性假设生成:找到对某药响应格外强或格外弱的细胞系,再看它的驱动突变,得到可验证的假设。
- 基础模型的预训练语料:这是目前最主流的用法,也是数据开放 CC0 的最直接动机。
8.4 生态位对比:与同类图谱的差异
| 维度 | Tahoe-100M | SciPlex-3 | Replogle Perturb-seq |
|---|---|---|---|
| 扰动 | 379 化合物 × 多剂量 | 约 1,800 化合物(单一剂量为主) | 全基因组 CRISPRi |
| 细胞背景 | 47 个癌细胞系(混养) | 4–5 个细胞系(分开) | K562 / RPE1 单系 |
| 细胞数 | 95.6M | 数十万级 | 约 200 万 |
| 批次控制 | cell village 物理混养 | 板间批次 | 单系,批次少 |
| 条件依赖研究 | 强(跨 47 系) | 弱(系少) | 弱(单系) |
这张表解释了为什么 Tahoe-100M 在"条件依赖"这个维度上有独特价值:SciPlex 的化合物更多,但细胞系太少;Replogle 的扰动更系统,但只有一两个背景。要研究"同一扰动在不同遗传背景下如何分叉",Tahoe-100M 目前是公开数据里最合适的。
§9 与库内条目的关系
9.1 四个直接互链点
| 库内条目 | rid | 关系类型 | 说明 |
|---|---|---|---|
| scPerturb | 1102 | 方法框架 / 潜在聚合目标 | 44 个标准化单细胞扰动数据集;Tahoe-100M 与其格式兼容,但尚未纳入其正式版本 |
| PerturbAI Brain-Wide CRISPR Atlas | 1194 | 平行扰动资源 | 体内 CRISPR 全脑筛选,772 万细胞;与本条目构成"化学扰动 vs 遗传扰动""体外 vs 体内"的对照 |
| CZ CELLxGENE Census | 1035 | 基线参照 | 提供版本化、可程序化查询的观测性单细胞语料,可作为"未扰动基线"的对照分布 |
| CZ CELLxGENE | 38 | 上游平台 | 单细胞数据标准化与分发平台;Tahoe-100M 未托管于此,但格式规范(AnnData/obs)与之同源 |
9.2 关系性质的精确描述 这四个链都不是"同物异名",需要说清各自的关系类型:
- 与 scPerturb:互补而非包含。scPerturb 是"元数据集"(把多个扰动词数据集统一到一个 schema),Tahoe-100M 是"单一来源的大图谱"。scPerturb 若收录 Tahoe-100M,会成为它的下游消费者;目前没有正式收录。
- 与 PerturbAI CRISPR Atlas:正交设计。前者是化学扰动、体外、癌细胞系、24 小时;后者是遗传扰动、体内、小鼠全脑。两者的交集是"扰动响应建模"这个任务层,不是数据层。
- 与 CELLxGENE Census:参照关系。Census 不含扰动,但提供了跨组织、跨供体的"自然状态"分布,可用于检验 Tahoe-100M 的 47 个细胞系在自然细胞状态空间中的位置。
- 与 CELLxGENE(平台):规范同源。两者都用 AnnData/obs 规范,转换成本低。
9.3 对库内标签体系的意义
Tahoe-100M 在库内标签体系里横跨两个 L1 类目:单细胞基因组学/转录组(技术形态)与药物发现与化学(应用领域)。这种跨类在库内并不多见——大多数单细胞条目只挂基因组学,大多数药物条目只挂化学信息学。
它跨类的合理性在于:这份数据的核心变量是药物,而观测手段是单细胞转录组。任何一个只按技术形态归类的体系,都会把它的药物维度丢掉;任何一个只按应用归类的体系,又会把它误认为化学信息学数据(不含分子结构计算)。
§10 避坑清单:十二个已踩过的坑
坑 1:把「1 亿细胞」当成精确值写进论文
最常见的引用错误。摘要写 100 million,Arc README 写 100,648,790,HF 与 Cell 数据可用性写 95,624,334。推荐写法:正文首次出现时写"95,624,334 个通过全过滤的细胞(原始 1.53 亿)“,不要只写"1 亿”。审稿人如果核对 HF API,会立刻发现你的数字比实际多 4.6%。
坑 2:把 1,100 当成化合物数
摘要的 “~1,100 drug-dose treatments” 是处理数(药 × 剂量),独立化合物只有 379 个。中文媒体报道里"1,100 种药"的说法是错的,不要转引。正确写法:“379 种化合物、1,135 个药物-剂量组合”。
坑 3:把 50 个细胞系当作全部分析可用
50 是装载数,47 是下游可用数。三个非小细胞肺癌系(NCI-H661、NCI-H596、NCI-H2122)被剔除。如果你的研究问题是"肺癌细胞系的药物响应",可用样本比你预期的少 3 个,而且少的正好是三个同源系——这会改变统计分析的自由度。
坑 4:用随机切分做条件依赖评测
这是最容易被审稿人抓住的方法学错误。论文自己在讨论节警告了这一点:随机留出的条件集会让模型靠"背药物平均效应"拿高分。必须按化合物或细胞系整组留出。
坑 5:把单细胞异质性结论建立在不牢靠的指标上
转录组异质性的重复板相关只有 Pearson R=0.29。任何"这个药增加了细胞异质性"的结论,方差解释率不到 10%,需要正交实验确认。同理,细胞周期停滞、Gini、Augur 这些"推断表型"都不是实测表型。
坑 6:以为 FASTQ 只是难拿
不是难拿,是根本不给。125 TB + Parse 合同 + IP 限制,三重原因写在同一句里。任何声称"复现了 Tahoe-100M 的原始处理流程"的工作,实际上最多是"从计数矩阵开始复现下游分析"。上游的比对、去卷积(demuxlet)、过滤阈值都无法核查。
坑 7:忽略 cell village 的串扰偏倚
池内测得的响应不等于单独培养的响应。所有细胞共享条件培养基,旁分泌信号可能改变药物效应。论文讨论节明确承认这一点。做"某细胞系对某药的固有敏感性"这类结论时,需要打个折扣。
坑 8:忘记丢弃首元素 CLS token
genes 与 expressions 的首元素都是标记位,不是生物学数据。忘了丢,会导致基因索引整体错位一位——后果不是报错,而是静默的错误结果——所有基因名字都会整体挪一位,表达矩阵看上去完全正常,任何下游分析都不报错,只是结论全错。在这份数据里这个坑尤其致命,因为 token 化存储让「第一列是标记位」这件事从数据结构上就看不出来,只有读过格式文档的人才会去丢。一个稳妥的自检方式是:随便取一个高表达管家基因(如 ACTB),在 genes 里查它的下标,再看该下标对应的 expressions 数值分布是否合理;如果发现所有细胞在该下标的读数都异常整齐(那其实是 CLS 标记),就说明没丢。,而且错得很小(只有一个基因偏移),极难发现。
坑 9:用 drug == "DMSO" 找对照
实际值是 DMSO_TF。写成 “DMSO” 会得到空集,然后你可能误以为数据里没有对照。更隐蔽的错误是:找到了对照但没按 plate 匹配,跨板取了 DMSO 均值,引入了板间差异。两条检查都很便宜:一是对每块板分别 value_counts() 一下 drug 列,正常结果应当每板都有上万量级的 DMSO_TF 细胞,若某板为 0 则先怀疑写法而不是数据缺失;二是把板号一起 groupby 再算均值,若去掉板号后均值发生明显漂移,说明板间基线本来就不同,不能混算。
坑 10:把 pubchem_cid 当数值列
它是 string 类型,对照组是空字符串。直接做 > 比较或 merge 数值表会静默失败。HF 卡面专门写了一句"Please cast to int before querying pubchem"。
坑 11:从旧 GCS 桶拉数据
gs://arc-ctc-tahoe100/ 已于 2026-03-31 弃用。用旧路径的脚本会 404,或者更糟——在弃用前拉到了过期版本而不自知。新桶是 gs://arc-institute-virtual-cell-atlas/tahoe100M/。
坑 12:以为 2 TB 免费额度无条件适用
Requester Pays 桶的 2 TB/月免费额度只对已在 Marketplace 订阅该数据集的项目有效。未订阅项目拉数据按标准出网价计费,社区已有 1.44 TiB 被计费约 60 欧元的实例。先订阅,再拉。
坑 13:引用 HF 卡面提供的 BibTeX
卡面里的 @article{zhang2025tahoe} 仍是 bioRxiv 版本,journal 写的是 bioRxiv、year 写的是 2025。见刊后未更新。直接复制会引用到预印本,而你的正文可能在讨论 Cell 版的新增内容(如见刊版扩充的表型清单)。
坑 14:把论文许可与数据许可混为一谈
数据是 CC0-1.0(无需署名),论文是 CC BY 4.0(需署名)。如果想把论文里的图直接放进商业材料,需要署名;想把表达矩阵训练进商业模型,不需要。混谈会在合规审查时出问题。
坑 15:把
1,135 个药物-剂量组合当作"每个药多个剂量"
平均每个化合物约 3 个剂量,不足以拟合完整的剂量-响应曲线。想做剂量外推的模型,先检查目标药在数据里到底有几个剂量点——有些药只有一个剂量。
坑 16:误读 moa-fine 为专家标注
它是 GPT-4o 生成、MedChemExpress 文本校验的产物。human-approved 与 clinical-trials 两列同样是模型标注。用它们做分层统计可以,把它们当作"金标准机制标签"去评测机制分类器,会高估性能(因为测试标签和训练标签来自同一个模型的判断逻辑)。
§11 双口径与冲突存照
本条目涉及的所有「同一事实、多个数字」的情况集中在此,便于引用时取舍。凡本文与他处冲突,以本表"采用值"列与标注的来源为准。
11.1 规模口径冲突
| # | 事实 | 口径 A | 口径 B | 口径 C | 采用值 | 判定依据 |
|---|---|---|---|---|---|---|
| C1 | 细胞总数 | 95,624,334(全过滤) | 100,648,790(最简过滤) | 1 亿(摘要取整) | 95,624,334 | HF API num_examples 与 Cell Data availability 双证 |
| C2 | 原始细胞数 | 约 153M | — | — | 153M | 论文正文,无第二来源 |
| C3 | 细胞系数 | 50(装载) | 47(可分析) | — | 50 / 47 分述 | 论文正文明确两种用途 |
| C4 | 扰动数 | 379(化合物) | 1,135(药物-剂量) | 约 1,100(摘要) | 379 + 1,135 | 论文正文 + v3 摘要双证 |
| C5 | 条件数 | 52,886(系×药×剂量) | 17,813(系×药) | — | 按需选用 | 两个数都在论文正文,含义不同 |
| C6 | 数据体积 | 125 TB(FASTQ) | 338 GB(Parquet 下载) | 1.69 TB(解压) | 分述 | 三个数指向不同对象,不能互替 |
11.2 名称与归属冲突
| # | 事实 | 冲突描述 | 采用值 | 处置 |
|---|---|---|---|---|
| C7 | 机构名 | HF 卡面写 Vevo Therapeutics;Cell 写 Tahoe Therapeutics | Tahoe Therapeutics(原 Vevo) | 见刊版为准,正文注明沿革 |
| C8 | 论文标题 | 预印本:“A Giga-Scale Single-Cell Perturbation Atlas…”;Cell:“Mapping drug-induced molecular phenotypes…” | Cell 标题 | 引用按版本分别写 |
| C9 | 许可(数据) | HF 卡面 cc0-1.0;Cell Data availability CC0-1.0 | 一致 | 无冲突,但需与论文 CC BY 4.0 区分 |
| C10 | 许可(预印本) | bioRxiv 标记 cc_no(CC BY-ND) |
— | 与 Cell 版 CC BY 4.0 不同 |
| C11 | 表型清单 | 预印本 v3 正文无 Gini/Augur;Cell 讨论节列入 | Cell 版 | 见刊版扩充,统计细节在补充材料 |
| C12 | 数据宿主 | 旧桶 arc-ctc-tahoe100;新桶 arc-institute-virtual-cell-atlas |
新桶 | 旧桶 2026-03-31 弃用 |
11.3 数值上「看似冲突实则不冲突」的三组 有三组数字经常被拿来互相质疑,其实各有各的口径:
- 95.6M vs 100.6M:这不是矛盾,是两级过滤。95.6M ⊂ 100.6M。用 100.6M 算"每个条件平均细胞数"会高估约 5%,因为这个分母包含了未通过质量门槛的细胞。
- 1,135 vs 1,100:1,135 是精确数,1,100 是摘要的四舍五入(“~1,100”)。差别在 3%,不影响任何结论。
- 338 GB vs 1.69 TB:前者是压缩后的 Parquet 下载量,后者是解压后的逻辑体积。磁盘规划按后者,带宽规划按前者。
11.4 遗留疑点
| # | 疑点 | 现状 | 影响 |
|---|---|---|---|
| Q1 | Cell 版 Fig 3D 的具体分位数 | 正文摘要经检索获得(q25 0.97 / 中位 0.975 / q75 0.98),未直接读图 | 低:数值与 v3 预印本一致 |
| Q2 | h5ad 单文件精确体积 | 未实测(需 GCS 订阅) | 低:可从 README 的 sample/cell 数推算量级 |
| Q3 | Cell 版是否补充了 Gini/Augur 的重复性数字 | 讨论节只给"中等相关"的定性描述与 R=0.29 的异质性数字 | 中:想在论文中复述 Gini 重复性的人需查补充材料 |
| Q4 | 1,786 个 sublibrary 与 1,344 个 sample 的对应关系 | Arc README 给 sample 1,344,论文给 sublibrary 1,786 | 低:sample 是处理单元,sublibrary 是建库单元,二者不必相等 |
| Q5 | 是否有后续版本(v2 发布) | Arc 提到 2026-01-12 的增强版发布 | 中:用旧版本做的分析在新版上可能不可复现,务必记录版本目录名 |
§12 常见问答
问:这份数据和 SciPlex 系列的差别到底在哪?
答:SciPlex 系列的化合物更多(约 1,800),但细胞背景只有 4–5 个,且各系分开培养。Tahoe-100M 的化合物少(379),但细胞背景有 47 个,且混养消除了板间批次。要研究"同一药在不同遗传背景下如何分叉",Tahoe 是更好的;要穷举化合物库,SciPlex 覆盖更广。
问:为什么说它是 resource paper?
答:因为它不提出新的生物学机制假说。论文的贡献是"提供了一把尺子"——一个可用于训练与评测条件依赖响应模型的数据基底。评价这类论文的标准不是"发现了什么",而是"数据能不能被别人用、会不会用出错"。这也是本条目花大量篇幅写坑点的原因。
问:CC0 是不是意味着我可以随便拿去训练商业模型?
答:数据层面是的。CC0 放弃著作权,商用、闭源、再分发都不需要授权。但有三条边界:不授予专利许可;不解除细胞系本身的材料转让协议;论文(CC BY 4.0)如果被引用仍需署名。
问:为什么 FASTQ 不能公开?真的是因为太大吗?
答:体积(约 125 TB)只是三个原因之一。另外两个是合同义务(与 Parse Biosciences)和原始测序文件的知识产权限制。这三个原因在 Cell 的 Data availability 里写在同一句话里,缺一不可——即使有人愿意出钱存 125 TB,后两条仍然成立。
问:我能用它训练"虚拟细胞"模型吗?
答:可以训练,但不宜宣称得到了"虚拟细胞"。论文自己的措辞是:这份数据是学习"癌细胞背景下药物诱导的状态转移"的强基底,而一般意义上的虚拟细胞需要跨模态、跨模型系统、跨扰动类型的数据补充。
问:每个条件只有 1,287 个细胞,够做亚群分析吗?
答:做主要细胞类型的分析够,做稀有亚群不够。1,287 个细胞里若某亚群占 1%,只有约 13 个细胞;占 0.1% 就只有 1 个。任何"发现了新的稀有耐药亚群"的结论,都要先检查该亚群在该条件下的绝对细胞数。
问:同一个药在不同板上的数据能合并吗?
答:要非常小心。只有 plate 14 是 plate 6 的生物学重复,其他板的重复性没有设计保证。合并跨板数据时,必须把 plate 作为协变量纳入模型,而不是简单 pool。此外,sample 字段可以区分重复处理,合并前先按 sample 检查分布。
问:pseudobulk_differential_expression 表能直接拿来做论文里的差异表达结论吗?
答:能,但要先确认它用的是哪种对照与哪种检验。这张表是作者预先算好的,具体的对比设计、标准化方法、显著性校正都在补充材料或代码里。如果论文的结论依赖某个特定的对比,最好回到主表用你的口径重算一遍。
问:这个数据集和 CELLxGENE 是什么关系?
答:没有托管关系。Tahoe-100M 没有发布在 CELLxGENE 上,而是走 HuggingFace + Arc 的 GCS。但两者格式规范同源(AnnData + obs 列),转换成本低。CELLxGENE Census 可以作为"未扰动基线分布"的参照。
问:如果我只想要某个药在某个细胞系里的数据,最省事的路径是什么?
答:先查 pseudobulk_differential_expression 表,如果这个对比已经算过,直接取结果。如果没算过,用 HF streaming 加过滤条件(drug == X and cell_line_id == Y)拉取,不要下载全量。
问:data card 上的 “AI-Ready” 说法可信吗?
答:HF 卡面没有用 “AI-Ready” 这个词,用的是 “designed to power the development of next-generation AI models of cell biology”。这是作者的设计意图陈述,不是第三方认证。本条目给出的 AI-Ready 评价(见附录 B)是独立评估,两者不冲突。
问:为什么论文里反复强调「不要用随机切分」?
答:因为药物效应里有一部分是跨细胞系一致的(药物主效应),一部分是条件特异的(残差)。随机切分下,同一药的其他细胞系样本会出现在训练集里,模型学到主效应就能拿高分。而研究的价值恰恰在残差。外部 LOCO 基准显示,残差的可重复性本身就很低(中位 0.067),这使得"高分的随机切分"更加具有误导性。
§13 术语与缩写
| 缩写/术语 | 全称 | 在本条目中的含义 |
|---|---|---|
| cell village | 细胞村镇 | Tahoe 对 50 个细胞系混合共培养体系的称呼 |
| Mosaic | — | Tahoe 自研的高通量单细胞扰动筛选平台名 |
| GigaLab | — | Parse Biosciences 的大规模单细胞建库服务品牌 |
| demuxlet | — | 基于 SNP 的细胞去卷积工具,把混养细胞认回原系 |
| singlet / dublet | — | 单细胞 / 双细胞(两个细胞共用一条条形码) |
| UMI | Unique Molecular Identifier | 分子标签,用于去重与计数 |
| tscp_count | transcripts count | 每细胞检测到的转录本数(即 UMI 数) |
| mread_count | mapped read count | 每细胞比对上的 reads 数 |
| pseudobulk | 伪 bulk | 把一组单细胞计数相加,模拟 bulk 测序 |
| scVI | single-cell Variational Inference | 单细胞变分自编码器模型 |
| E-distance | Energy distance | 衡量两个细胞群分布可分性的距离 |
| LISI | Local Inverse Simpson’s Index | 局部逆辛普森指数,衡量混合程度 |
| Vision | — | 基因集活性打分框架 |
| Augur | — | 衡量扰动对细胞类型可分性影响的方法 |
| Gini | 基尼系数 | 衡量表达分布不均衡度的指标 |
| MOA | Mechanism of Action | 药物作用机制 |
| LOCO | Leave-One-Cell-Line-Out | 留一细胞系交叉验证 |
| CLS token | Classification token | 序列首位的标记位,需丢弃 |
| Requester Pays | — | GCS 的一种计费模式,由请求方承担出网费 |
| MTA | Material Transfer Agreement | 材料转让协议 |
| DAIMS | Data Accessibility, Interoperability, Metadata, Sustainability(本文所用五维框架) | 见附录 B |
§14 附录
附录 A:一页速查卡
名称 Tahoe-100M
论文 Cell 2026;189(19):5945-5961.e8 / doi 10.1016/j.cell.2026.08.035
预印本 bioRxiv 10.1101/2025.02.20.639398(2025-02-20)
机构 Tahoe Therapeutics(原 Vevo)× Arc Institute × Parse Biosciences
细胞数 95,624,334(全过滤) / 100,648,790(最简过滤)
细胞系 50 装载 / 47 可分析 / 13 器官
化合物 379
药-剂量 1,135
条件 52,886(系×药×剂量)
板数 14(plate 14 = plate 6 重复)
时点 24 小时
许可 CC0-1.0(数据) / CC BY 4.0(论文)
下载 HF: tahoebio/Tahoe-100M(约 338 GB / 解压 1.69 TB)
Arc: gs://arc-institute-virtual-cell-atlas/tahoe100M/2025-02-25/
FASTQ 不公开(125 TB + 合同 + IP)
代码 Zenodo 10.5281/zenodo.21864540
附录 B:DAIMS 五维评估
| 维度 | 评分(1–10) | 依据 |
|---|---|---|
| D 可发现性 | 9 | HF 下载量 117,525、点赞 143(API 实测);Cell 开放获取;Arc 官方托管;三处索引齐全。扣 1 分因"Tahoe"与地名混淆,检索信噪比一般 |
| A 可获取性 | 9 | CC0 + 免费直链 + 无需注册 + 无需申请;扣 1 分因全量数据 1.69 TB、GCS 需订阅项目 |
| I 可互操作 | 7 | Parquet + AnnData 双格式;Cellosaurus/DepMap/Ensembl 109/PubChem/SMILES 五个标准标识符齐全;扣分因 token 序列格式非常规、需转换 |
| M 元数据质量 | 8 | 六张表 + 逐细胞 obs + 伪 bulk 表;药物注释来源透明但为模型标注;扣分因卡面正文与结构化字段数字不一致(100M vs 95,624,334) |
| S 可持续性 | 8 | 三方机构背书(Tahoe/Arc/Parse)+ HF 永久托管 + Zenodo 代码存档;扣分因 GCS 桶已发生过一次迁移(2026-03-31) |
| 综合 | 8.2/10 | 在开放性与可获取性上属库内第一梯队;主要短板是上游不可复现与格式非常规 |
附录 C:关键数字的来源索引
| 数字 | 来源 | 获取方式 |
|---|---|---|
| 95,624,334 | HF datasets API dataset_info.splits[0].num_examples |
curl https://hf-mirror.com/api/datasets/tahoebio/Tahoe-100M |
| 337,644,770,670 字节 | 同上 download_size |
同上 |
| 1,693,653,078,843 字节 | 同上 dataset_size |
同上 |
| 117,525 下载 / 143 点赞 | 同上 downloads / likes |
同上(2026-10-17 实测) |
| 153M / 100.6M / 95.6M | 论文正文与 Data availability | Cell 全文 / bioRxiv v3 |
| 47 / 50 / 379 / 1,135 / 52,886 / 1,287 | 论文正文 Figure 3 段落 | bioRxiv v3 |
| 14 板 / 1,786 sublibrary / 1.4 万亿 reads | 论文方法节 | bioRxiv v3 |
| 125 TB / Parse 合同 / IP 限制 | Cell Data availability | Cell 全文 |
| R=0.29(异质性重复性) | Cell 讨论节 | Cell 全文 |
| 0.975 / 0.915(伪 bulk 相关) | 论文 Figure 3D | bioRxiv v3 |
| 1,344 sample / 100,648,790 cell | Arc Virtual Cell Atlas README | GitHub raw |
| 2026-03-31 旧桶弃用 | Arc README 迁移公告 | GitHub |
| 40 作者 / 卷期页 / CC BY 4.0 | Crossref works API | api.crossref.org/works/10.1016/j.cell.2026.08.035 |
| bioRxiv 三版本 / cc_no | bioRxiv details API | api.biorxiv.org/details/biorxiv/10.1101/2025.02.20.639398 |
| LOCO R² +0.004 / 可靠性 0.067 | Research Square rs-10846736 | 预印本摘要 |
附录 D:数据读取最小可运行样例
"""最小可运行:读取一个细胞、丢弃 CLS token、连接元数据。"""
from datasets import load_dataset
ds = load_dataset("tahoebio/Tahoe-100M", split="train", streaming=True)
row = next(iter(ds))
gene_ids = row["genes"][1:] # 丢弃 CLS token
counts = row["expressions"][1:] # 同步丢弃
assert len(gene_ids) == len(counts), "序列未对齐:检查 CLS token 处理"
gene_meta = load_dataset("tahoebio/Tahoe-100M", "gene_metadata", split="train")
tok2sym = dict(zip(gene_meta["token_id"], gene_meta["gene_symbol"]))
top = sorted(zip(gene_ids, counts), key=lambda x: -x[1])[:5]
print("cell:", row["BARCODE_SUB_LIB_ID"])
print("line:", row["cell_line_id"], "| drug:", row["drug"], "| plate:", row["plate"])
for gid, c in top:
print(f" {tok2sym.get(gid, gid)}: {c}")
附录 E:使用前自检 10 条
- 我引用的细胞数是 95,624,334 还是 100,648,790?说清楚口径。
- 我说的是 379 个化合物还是 1,135 个处理?
- 我的分析用了 47 个还是 50 个细胞系?差异是否有交代?
- 我的评测切分是按行随机,还是按化合物/细胞系整组?
- 我的对照是板内
DMSO_TF还是全局均值? - 我的结论建立在伪 bulk 上,还是单细胞分布上?若是后者,是否考虑了 R=0.29?
- 我有没有把"推断表型"写成"实测表型"?
- 我处理 CLS token 了吗?
- 我引用的是 Cell 版还是 bioRxiv 版?标题与年份是否匹配?
- 我的数据版本目录名(如 2025-02-25)记录了吗?
§16 深度专题:一份图谱的十二个技术细节
本章把前文散落的技术细节集中到一处,按「从原始数据到可用矩阵」的加工顺序排列。每一条都可独立验证,也都对应一个实际使用时可能踩到的具体问题。
16.1 组合条形码是怎么把百万细胞拆开的
Parse Biosciences 的技术路线与 10x 的微流控完全不同。10x 用油包水把细胞和凝胶珠封进液滴,一个液滴一个细胞;Parse 则用「分池-连接-合并」的多轮操作:把固定后的细胞分成若干池,每池接一段条形码,然后合并、再分池、再接下一段。经过 N 轮,每个细胞拿到一段 N 段的组合条形码,组合数等于各轮池数的乘积。
这条路线的好处是通量不依赖芯片通道数,理论上可以做到百万级细胞;坏处是每轮分池都是随机抽样,细胞在池间的分布有泊松噪声,且任何一次分池不均都会在最终数据里表现为某种"池效应"。Parse 的 split-pipe 流程负责把这些组合码解码成单个细胞的计数。
对使用者的影响:sublibrary 这个字段不是装饰。1,786 个 sublibrary 分布在 14 块板上,每个 sublibrary 有自己的建库批次特性。如果发现某批样本的系统性偏移,第一件要查的事就是它是否集中在某几个 sublibrary 里。
16.2 Ultima 测序的质量特征
Ultima Genomics 的 UG-100 用「大片制备 + 边合成边测序」的开放平台思路,把每 gigabase 的成本压到低于主流平台。代价是读长较短、原始错误率较高(尤其在同聚物区域)。这解释了为什么数据里的 reads 数(mean_mread_count)相对转录本数(mean_tscp_count)偏高——需要更多 reads 才能保证相同的 UMI 数。
处理方式上,Tahoe 用的是 Ultima 官方的 Trimmer workflow,然后交给 Parse 的 split-pipe v1.4.0 完成条形码校正与比对。这意味着原始 reads 上的一些特征(如特定的质量分数分布)在最终计数矩阵里已经看不到。
16.3 demuxlet 与「认回原系」的准确率
demuxlet 的思路是:先用每个细胞系(或每个供体)的 SNP 信息构建基因型参考,然后把每个细胞的 RNA reads 里的 SNP 位点拿来和参考比对,算似然。似然最高的那个基因型就是它的来源;如果两个基因型的似然相近,判为 dublet。
Tahoe 报告的去卷积准确率 >98%、singlet 率 >90%。这两个数字的含义不同:前者是说"判对了的比例",后者是说"被判定为单细胞的比例"。如果 singlet 率只有 90%,意味着约 10% 的细胞被判为双细胞而被丢弃——这与 §4.1 里 153M 到 100.6M 的落差大体吻合。
需要提醒的是:demuxlet 的准确率依赖于细胞系之间的遗传距离。如果两个细胞系在 SNP 层面非常接近(比如同源衍生的亚系),去卷积就会出错,且这种错误不会体现在总体准确率里。使用该数据做"特定细胞系"的精细分析时,可以检查该系在嵌入空间里是否与某个邻居异常靠近。
16.4 QC 阈值的合理性
全过滤的四条门槛——UMI ≥700、基因数 ≥250、线粒体 <20%、双 z-score 在 ±3 内——是单细胞领域的常见组合,但每一条都会引入偏倚:
- UMI ≥700:会系统性剔除转录活性低的细胞,例如处于静息态或 G0 期的细胞。如果你的研究问题是"药物是否诱导细胞进入静息态",这个过滤会先把目标细胞剔掉一部分。
- 基因数 ≥250:与 UMI 门槛高度相关,实际上是双重约束。
- 线粒体 <20%:剔除破损细胞,但也可能剔除线粒体含量天然较高的细胞类型。
- z-score ±3:这是相对该样本分布的截断,意味着每个样本都会按自己的分布裁掉尾部——不同样本被裁掉的比例不同,可能引入样本间的规模差异。
这些都不是"错误",而是任何 QC 都无法避免的取舍。但作为使用者要知道:你拿到的 95.6M 细胞,是一个已经被作者的质控哲学筛选过的子集。
16.5 scVI 训练只用 13 块板的意义
论文提到 scVI 只用 plate 1–13 的 89,423,257 个细胞训练,plate 14 留出。这是一个容易被忽略但很重要的设计:
- plate 14 是 plate 6 的生物学重复,如果把它放进训练集,那么后续所有基于嵌入的重复性评估都会"看过答案"——嵌入空间会倾向于把 plate 6 与 plate 14 的对应条件拉到一起。
- 留出 plate 14,使得重复性检验是在真正的留出数据上做的,伪 bulk 相关性的 0.975 才有说服力。 这是本数据集在方法学上做得比较扎实的一处,值得作为"如何正确做重复性评估"的范例。
16.6 E-distance 与「效应量」的可比性
E-distance 衡量的是两个细胞群分布在嵌入空间中的可分性。它的优点是无需假设分布形式,缺点是对嵌入空间敏感——换成另一个嵌入(如 PCA 或 scGPT),数值会变。
论文用 E-distance 对比 Tahoe-100M、SciPlex-3、Replogle Perturb-seq 三个数据集的效应量。跨数据集比较时需要注意:如果三个数据集各自用了自己的嵌入,E-distance 的绝对数值不可直接比,只有"随剂量单调上升"这类相对趋势可比。论文的图里按剂量分层展示,正是为了规避这个问题。
16.7 Vision 打分与基因集选择的偏倚
Vision 用 7,390 个基因集计算每个细胞的通路活性。基因集来自公共数据库(如 MSigDB),覆盖面广,但有两个偏倚:一是基因集库对某些通路(如免疫、炎症)注释充分,对另一些(如代谢)稀疏;二是不同基因集的大小差异很大,小基因集的打分噪声更大。
Tahoe 的分析里专门提到 RAS 通路用了 600 基因签名(KRAS.600.LUNG.BREAST.V1)——这是一个针对肺癌/乳腺癌 KRAS 通路的专用签名。用它做跨器官分析时,要意识到这个签名本身带有组织偏好。
16.8 从「条件」到「样本」的两层结构
数据里有两层标识:sample 与条件。一个 sample 对应一次具体的处理(某板、某孔、某药、某浓度),而"条件"是 sample 的逻辑归类。二者的关系是:
- 同一个条件可能有多个
sample(重复处理); - 同一个
sample只属于一个条件。
做统计分析时,正确的随机效应结构是 sample 嵌套在条件里。如果忽略 sample 直接按条件聚合,会把重复当独立样本,人为膨胀样本量;如果只按 sample 分析,又会丢失"同一条件的多个重复"这个信息。
16.9 板内对照的重要性量化
论文用"匹配 vs 不匹配"的伪 bulk 相关来量化重复性:匹配对中位 0.975,不匹配对中位 0.915。这个 0.915 的基线值本身就是板间差异的度量——即使是完全无关的条件,同一套平台、同一批次处理下也能有 0.915 的相关。
这个数字的实际含义是:在 Tahoe-100M 里,约 84%(0.915²)的方差是"平台 + 细胞系基线"贡献的公共部分,真正的处理信号只占很小一块。这再次说明为什么必须做差异表达分析,而不能简单地看整体相关性。
16.10 细胞周期相位的推断与使用
obs_metadata 里有 S_score、G2M_score 与 phase 三列,来自 Scanpy 的 score_genes_cell_cycle。这些是基于基因集打分的推断,不是实验测定的。
用它们做分析时要注意:细胞周期相位本身受测序深度影响(S 期细胞 DNA 含量高,某些基因表达被稀释),而 Tahoe 的测序深度在各细胞间并不均匀。因此"某处理导致 G2M 期细胞比例上升"这类结论,需要用测序深度作为协变量做校正。
16.11 剂量信息的解析成本
drugname_drugconc 是一个把药名、浓度、单位拼成 Python list 字面量的字符串,例如:
[('8-Hydroxyquinoline', 0.05, 'uM')]
解析它需要 ast.literal_eval,而不是 JSON 解析(因为用的是单引号与元组)。解析后得到的是 (药名, 浓度, 单位) 三元组列表。单位有 uM、nM 等不同量纲,建模前必须统一。
这个设计是一个小的可用性缺陷:如果剂量以独立数值列存储,用户就不需要解析字符串。但考虑到 1,135 个组合中有相当一部分是单药单剂量,字符串格式在存储上更紧凑。
16.12 「大」带来的工程约束 最后一条不是生物学问题,而是工程问题:1.69 TB 的解压体积意味着:
- 常规笔记本(512 GB SSD)装不下全量;
- 用 Scanpy 把全量读进内存不现实(即使稀疏,内存需求也在数百 GB 量级);
- 大多数分析必须在分片层面做,或者用 Dask/Spark 式的分布式框架。
HF 卡面推荐的 dask 与 polars 两个库,正是为了这个场景——前者做分块并行,后者做列式内存计算。如果你计划做全量分析,先把这两条链路跑通,再动手。
§17 复现性评估:从「能下载」到「能复现」
17.1 复现的四层含义
「复现」(reproducibility)在数据集语境下有四个不同层次,混淆它们是很多争论的来源:
| 层次 | 含义 | Tahoe-100M 的表现 |
|---|---|---|
| L1 可得性 | 数据能下载到 | 强:CC0 + 免费直链 |
| L2 可重跑下游分析 | 用同一矩阵能重算出论文的图表 | 强:代码在 Zenodo,矩阵在 HF |
| L3 可重做上游处理 | 从原始 reads 重跑到计数矩阵 | 无:FASTQ 不公开 |
| L4 可重做实验 | 从细胞与药物重新生成数据 | 无:需 Parse 与 Ultima 平台 |
大多数论文宣称的"可复现"是 L1+L2。Tahoe-100M 在这两层做得很到位。但读者如果默认它满足 L3,就会误解——比如认为可以去检查作者的去卷积是否有误,这实际上做不到。
17.2 为什么 L3 的缺失是结构性的
L3 的缺失不是作者的疏忽,而是三个约束的必然结果:125 TB 的体量使公共库存储成本难以承担;与 Parse 的合同可能限制了原始数据的再分发;原始测序文件可能涉及平台方的知识产权。这三条任何一条成立,都足以阻止 FASTQ 公开。
这意味着:这份数据只能"信任"上游,不能"验证"上游。对大多数建模用途,这个信任成本是可以接受的——计数矩阵已经是单细胞分析的事实标准输入。但对方法学研究(比如评估不同去卷积方法的优劣),这是一份不合适的基准数据。
17.3 版本漂移的风险
Arc 在 2026-01-12 做过一次增强版发布,路径里带日期(2025-02-25、后续版本各有其目录)。如果你的分析脚本硬编码了某个日期路径,而后续版本修正了某些样本的元数据,你的结果就会与其他人的不可比。
建议:在方法部分明确记录使用的版本目录名,并在代码里把路径参数化。这是使用任何版本化数据集的基本纪律,但在 Tahoe-100M 上尤其重要,因为它的 h5ad 与 Parquet 两条链路可能不同步更新。
17.4 与「可复现性危机」的关系
单细胞领域近年有一批关于"扰动预测模型不可复现"的讨论,核心指控是:许多模型在随机切分下报出很高的分数,但在结构化的留出切分下退化到基线水平。Tahoe-100M 的出现部分回应了这个批评——它提供了一个足够大的、公开的、有明确切分建议的基准,使得"你的模型到底学到了什么"可以被外部检验。
但它也暴露了问题的另一面:即使做了正确的切分,可预测的信号本身也很弱(外部 LOCO 基准的 R² 只有 +0.004)。这意味着问题的根源不只在评测方法,也在数据本身的信号强度。
§18 与同类资源的横向对照
18.1 化学扰动类资源对照
| 资源 | 化合物数 | 细胞系数 | 细胞数 | 剂量数 | 混养 | 许可 |
|---|---|---|---|---|---|---|
| Tahoe-100M | 379 | 47 | 95.6M | 每药约 3 个 | 是 | CC0 |
| SciPlex-3 | 约 1,800 | 4–5 | 数十万 | 单剂量为主 | 否 | 依来源 |
| sci-Plex 2(初版) | 188 | 3 | 约 65 万 | 4 个 | 否 | 依来源 |
| MIX-Seq | 32 | 6 | 十余万 | 4 个 | 是(早期混养尝试) | 依来源 |
MIX-Seq 是 cell village 思路的早期实践,用于研究药物在多个细胞系中的差异响应,但规模比 Tahoe 小两个数量级。Tahoe-100M 可以看作 MIX-Seq 思路的工业化放大。
18.2 遗传扰动类资源对照
| 资源 | 扰动类型 | 细胞数 | 背景 | 体内/体外 |
|---|---|---|---|---|
| PerturbAI CRISPR Atlas(rid 1194) | CRISPR 敲除 | 772 万 | 小鼠全脑 | 体内 |
| Replogle Perturb-seq | CRISPRi | 约 200 万 | K562/RPE1 | 体外 |
| Tahoe-100M | 小分子 | 95.6M | 47 个人癌系 | 体外 |
三类资源在"扰动类型"上互补:化学扰动可逆、可调剂量、贴近药物开发;遗传扰动更彻底、更接近功能基因组学。把它们联合起来训练,是当前虚拟细胞研究的主流方向之一。
18.3 观测性资源对照
CZ CELLxGENE Census(rid 1035)提供的是无扰动的细胞状态分布。它的价值在于给出"自然状态空间"的边界:如果一个模型预测出的药物响应落在 Census 里完全不存在的细胞状态上,那大概率是模型外推失控,而不是真实发现。这是一种很实用的"合理性检查"手段。
§19 使用者的决策指南
19.1 三种典型用户的路径
用户 A:做基础模型预训练
- 路径:HF Parquet 全量下载(338 GB)→ 转 token 序列 → 直接训练。
- 关键决策:是否保留 CLS token(保留可用于序列建模);是否做基因 vocab 截断(全基因 vs 高变基因)。
- 主要风险:误把数据当作"生物学真值",忽略了它是单时间点单模态。
用户 B:做药物响应预测基准
- 路径:Arc h5ad → 伪 bulk 聚合 → 结构化留出 → 评测。
- 关键决策:切分单元(化合物/细胞系)、聚合层级(伪 bulk/单细胞)、基线选择。
- 主要风险:随机切分虚高;对照选择错误;忽略重复性上限。
用户 C:做机制(MOA)推断
- 路径:
pseudobulk_differential_expression+drug_metadata→ 监督学习。 - 关键决策:标签来源(GPT-4o 标注 vs 人工标注)、类别粒度(25 类 vs 更粗的 broad 类)。
- 主要风险:用 GPT-4o 的标签训练再评测 GPT-4o 的标签,性能虚高。
19.2 不该用这份数据做的事
- 预测临床药物响应:没有免疫、基质、患者异质性。
- 研究时间动力学:只有 24 小时一个点。
- 研究表观遗传或蛋白层面:只有 3’ 转录组。
- 验证上游比对算法:FASTQ 不公开。
- 做"细胞异质性"的强结论:R=0.29。
- 把 47 个细胞系当作"47 种癌症类型":它们覆盖 13 个器官,但每个器官只有少数几个系。
19.3 判断「这篇文章用了 Tahoe-100M 但可能有问题」的三个信号
- 报告了很高的扰动预测 R²(>0.3)但没有交代切分方式。
- 用了"单细胞异质性"作为核心发现但没有正交验证。
- 把 1,100 当作化合物数来讨论"覆盖了 1,100 种药"。 看到这三点,基本可以判断作者没有仔细读讨论节。
§20 结语与展望
Tahoe-100M 的出现,标志着单细胞扰动数据从"实验室级"进入"工业级"。50 个细胞系、近亿细胞、379 种化合物——这些数字本身并不构成科学发现,但它们构成了一个可被大规模模型消费的基底。
它的下一步演进方向在论文与机构公告里都有暗示:Mosaic 框架可以扩展到类器官与患者来源样本,从而部分缓解"仅癌细胞系"的局限;与 Arc、Biohub 的合作意在扩大扰动类型与规模的覆盖;而细胞 village 设计的进一步优化,可能降低跨系串扰。
对使用者而言,最重要的不是等待下一个版本,而是正确地使用当前版本:知道 95.6M 不是 100M,知道 379 不是 1,100,知道随机切分会骗你,知道 R=0.29 意味着什么。这四条,比任何模型架构都更决定你的结论能不能站住。
§21 问答补遗:十个进阶问题
问:genes 里的 token_id 是全局唯一的吗?跨版本会不会变?
答:在同一个发布版本内唯一且稳定,映射关系由 gene_metadata.token_id 固定。但它是数据集的内部编号,不是 Ensembl ID,也不是 HGNC ID。跨版本(如 2025-02-25 与后续版本)是否重新编号,取决于作者是否改了基因词表——如果基因集扩增,token 可能被重新分配。因此任何跨版本的分析都必须重新 join gene_metadata,不能缓存 token 到基因名的映射长期使用。
问:为什么主表只存 cell_line_id 而不带俗名?
答:主表(expression_data)只有 cell_line_id,是 Cellosaurus 编号(CVCL_xxxx);cell_name(如 A549)只出现在 cell_line_metadata 与 Arc 的 obs_metadata 里。这个拆分是有意的:编号稳定,俗名易变(同一个系可能被不同文献叫不同名字)。要用俗名做筛选,先 join cell_line_metadata 的 cell_name。
问:sample_metadata 的 mean_* 列是每细胞平均还是每样本总和?
答:都是每细胞平均(mean_gene_count、mean_tscp_count、mean_mread_count、mean_pcnt_mito)。这些是样本级的质量汇总,不是求和。用它们做样本级质控时,可以直接按阈值筛样本,但它们究竟对过滤前还是过滤后的细胞计算,卡面没有明写;稳妥做法是回到细胞级数据自己重算。
问:能不能用 pseudobulk_differential_expression 表替代主表做大部分分析?
答:对「比较」类问题可以,对「建模」类问题不行。这张表给的是差异表达的统计量,不含原始计数;训练生成模型需要计数矩阵。此外它的对比设计是作者预设的,超出预设范围的对比(如连续剂量建模、细胞系之间的交互项)都没有。
问:plate 14 既然是 plate 6 的重复,能不能把它当「全库的独立验证集」?
答:可以当 plate 6 条件的独立验证集,而且这正是设计意图——论文的 scVI 只用 plate 1–13 训练,把 plate 14 留出做重复性检验。但 plate 14 只重复了 plate 6 的处理条件,把它当「全库」的验证集是过度解读。
问:数据里有没有「未处理」的细胞?
答:有,就是 drug == "DMSO_TF" 的溶剂对照。它们分布在每一块板上,是每块板的基线。严格说这不是「未处理」而是「溶剂处理」,二者在转录组上可能有细微差别,但在这个尺度上通常被忽略。
问:为什么 moa-fine 只有 180 个化合物有值?其余 199 个呢?
答:379 个化合物中,约 180 个能被归入 25 类 MOA。其余的可能机制不明、机制过于独特不属任何类别,或标注为空。做 MOA 分层分析时,要先统计各层的化合物数——有些类别可能只有一两个化合物,统计上不可靠。
问:能不能用它研究「药物组合」?
答:不能。所有处理都是单药(含对照),没有组合设计。drugname_drugconc 虽然存为 list 形式、理论上可容纳多药,但实际数据里每个样本只有一个药。
问:细胞系混养,那「每个细胞系单独培养」的基线还能得到吗?
答:能得到「池中该细胞系的基线」(用 DMSO_TF 对照),但得不到「单独培养的基线」。两者可能不同,因为池中其他细胞系分泌的因子会改变培养基成分。所以任何「这个细胞系天生表达 X」的结论,严格说都是「在 cell village 条件下」的结论。
问:如果发现某个结果与论文不符,最可能的原因是什么?
答:按概率排序——一是口径不同(细胞数、条件数、过滤阈值),二是聚合层级不同(单细胞 vs 伪 bulk),三是对照选择不同(板内 vs 全局),四是版本不同(h5ad 的版本目录名)。这四条能解释绝大多数「复现不了」的情况,剩下的才是真正的分歧。
§22 学术定位与评价框架
22.1 三条方法学脉络的交汇 从方法学看,Tahoe-100M 站在三条线的交汇处:
- 高通量药物筛选(HTS):从 96 孔板表型筛选,到高内涵影像筛选,再到转录组筛选。Tahoe 是转录组筛选在通量上的一次跃迁。
- 单细胞扰动图谱:从 Perturb-seq(2016)到 sci-Plex(2019)到 MIX-Seq(2020),再到 Tahoe-100M(2025 预印本 / 2026 见刊)。主旋律始终是「如何在有限成本下扩大扰动 × 背景的组合数」。
- 虚拟细胞:从 2024 年的愿景文章,到 Arc 的 Virtual Cell Atlas 计划。主旋律是「需要什么样的数据才能训练出可预测的细胞模型」。
Tahoe-100M 同时回应了后两条线的需求:它是扰动图谱的一次扩容,也是虚拟细胞计划的一块数据基座。
22.2 资源论文的评价标准
资源类论文(resource paper)与发现类论文的评价标准不同,这一点在审稿与引用时都值得注意:
| 维度 | 发现类论文 | 资源类论文(如本条) |
|---|---|---|
| 核心问题 | 揭示了什么机制 | 提供了什么可复用的东西 |
| 成功标准 | 结论是否成立、是否新颖 | 数据是否可用、是否被采用、是否被正确使用 |
| 主要风险 | 假阳性 | 数据被误用 |
| 影响力度量 | 引用数 | 引用数 + 下载量 + 下游模型采用 |
按后一套标准,HF 下载量(117,525)是一个比引用数更直接的指标。这也是本条目花大量篇幅写坑点的原因——资源论文的价值很大程度上取决于它被用对的比例。
22.3 开源策略的取舍
CC0-1.0 在学术数据集里是相当罕见的极端开放。常见做法是 CC BY(要求署名)或 CC BY-NC(禁商用)。Tahoe 选择 CC0,动机可以从机构背景推断:Tahoe Therapeutics 是公司,Arc Institute 是非营利研究机构,两者都希望这份数据成为事实标准,而任何署名或商用限制都会降低采用率。代价是无法通过许可追踪下游使用——任何公司都可以拿它训练闭源模型而不披露。这是一种「以控制权换影响力」的取舍。
22.4 「下游开放、上游封闭」的结构
从开放科学的角度,Tahoe-100M 是一个有意思的案例:它在数据层做到极致开放(CC0、免费、无需注册),却在上游层完全封闭(FASTQ 不给、处理流程不可重跑)。这种结构正在成为工业界主导的大型数据集的标准形态——数据产品开放,数据生产线保密。
理解这一点,就能理解为什么这份数据的文档写得那么细:六张表、逐字段说明、GPT-4o 注释来源透明。因为上游不可验证,下游只能靠文档建立信任。
§23 数据可用性声明的逐条拆解 Cell 论文的 Data availability 一段信息密度很高,逐条拆解如下:
- FASTQ 不可公开的三个理由:约 125 TB 的体量;与 Parse Biosciences 的合同义务;管辖原始测序文件的知识产权限制。三者并列,缺一不可。
- 公开内容:完整数据集,包括通过全过滤的 95.6M 细胞的原始单细胞计数,以及基因、细胞系、药物、样本与逐细胞元数据表。
- 公开位置:Hugging Face(
tahoebio/Tahoe-100M)。 - 许可:CC0-1.0。
- 公开时间:自论文发表之日起。
- 补充分发:预计算的 AnnData(.h5ad)由 Arc Institute 作为 Arc Virtual Cell Atlas 的一部分托管,访问号列在 key resources table。
- 代码:所有分析代码(差异 Vision 打分、SNF 聚类、置换检验、MOA 分类、重复性重采样)存于 Zenodo(doi:10.5281/zenodo.21864540)。
- 额外信息:可向 lead contact 索取,即 Hani Goodarzi(Arc Institute)。
这份声明的写法值得借鉴:它没有笼统地说「数据可得」,而是逐项区分了「什么公开、什么不公开、为什么不公开、在哪索取」。这种颗粒度是资源论文应有的水准。
§24 时间线与版本链
| 时间 | 事件 | 影响 |
|---|---|---|
| 2025-02-20 | bioRxiv v1 提交(2025-02-24 上线) | 首次公开,摘要口径「100 million / 1,100 perturbations / 50 cell lines」 |
| 2025-02-25 | HuggingFace / Arc 首发版本目录名 | 后续分析默认引用此版本 |
| 2025-05 | bioRxiv v3 可见 | 正文补充条件数、QC 阈值等细节 |
| 2025 年内 | Vevo Therapeutics 更名为 Tahoe Therapeutics | 机构名在两处文档中不一致 |
| 2026-01-12 | Arc 增强版发布;Tahoe / Arc / Biohub 三方合作公告 | h5ad 内容有更新 |
| 2026-03-31 | 旧 GCS 桶 arc-ctc-tahoe100 弃用 |
所有旧脚本需改路径 |
| 2026-08-19 | Cell 接收 | — |
| 2026-08-28 | Cell 的 CC BY 4.0 版本上线(Crossref vor 记录) | — |
| 2026-09-17 | Cell 正式发表(189 卷 19 期) | 标题改为 Mapping drug-induced molecular phenotypes… |
| 2026-10-14 | HuggingFace 仓库最后更新 | 加入 Tara 插件入口 |
这张表解释了为什么「同名数据集在不同文章里数字对不上」——它们很可能引用了不同时间的版本。写方法部分时把「使用的版本日期」写清楚,能省掉后续很多争论。
§25 给审稿人与编辑的核查清单
如果你在审一篇使用了 Tahoe-100M 的稿件,以下七条可以快速判断作者是否用对了数据:
- 细胞数:写「1 亿」而不写 95.6M 未必错(摘要就这么写),但若在方法部分写精确值却与 HF API 不符,就有问题。
- 化合物数:把 1,100 当化合物数的,直接指出。
- 切分方式:方法部分找不到 leave-compound-out 或 leave-cell-line-out 字样的,要求补充。
- 基线:没有报告药物均值基线的预测类论文,结果不可信。
- 表型:用「异质性增加/减少」作为主要结论而无正交验证的,要求减弱措辞。
- 对照:没写「板内 DMSO_TF」的,追问对照选择方式。
- 引用:引 bioRxiv 却说 Cell 版内容的,要求统一版本。
这七条不需要领域专家也能核查,因为它们都是「读了讨论节就能知道」的事。反过来说,一份没有读讨论节的稿件,几乎必然在这七条里踩中至少两条。
附录 Z:数据集落地实施路线图
这一节面向真正要动手的团队——不是"要不要用",而是"怎么在两周内把一个可运行的分析管线搭起来"。以下按阶段给出可检查的交付物。
Z.1 第一周:可得性与可行性验证
Day 1|许可证与用途确认
交付物:一页用途声明。写明用途(研究 / 商业 / 再分发)、是否涉及模型训练、是否会产出派生产品。CC0 下不需要授权,但内部合规流程通常仍要留档。同时确认细胞系本身的使用是否受材料转让协议约束。
Day 2|小样本连通性
交付物:一段能跑通的读取脚本。用 load_dataset(..., streaming=True) 拉取前 1,000 行,检查 genes 与 expressions 长度一致、首元素已丢弃、drug 值域包含 DMSO_TF、plate 值域是 1–14。这一步的目标是排除"数据能不能读进来"这个最基础的风险。
Day 3|元数据 join 验证
交付物:一张 join 后的合并表。把 expression_data 的前若干行按 sample、cell_line_id、drug 分别 join 到 sample_metadata、cell_line_metadata、drug_metadata,检查 join 命中率。任何 join 命中率低于 100% 都意味着键类型或取值不一致,要立刻查。
Day 4|剂量解析
交付物:一个解析 drugname_drugconc 的函数 + 一张浓度分布表。用 ast.literal_eval 而不是 JSON 解析;解析后统一单位(uM / nM 混合存在);统计每个化合物有几个剂量点,标记出只有单剂量的化合物。
Day 5|成本核算
交付物:存储与传输预算。全量 Parquet 338 GB 下载、1.69 TB 解压;若走 GCS,先确认 Marketplace 订阅与 2 TB 免费额度。给出"全量 / 按板 / 按细胞系"三档方案的磁盘与带宽估算。
Z.2 第二周:基线建立
Day 6–7|伪 bulk 聚合
交付物:按 plate × cell_line_id × drug × 浓度 聚合的伪 bulk 矩阵。关键检查:每个条件至少 50 个细胞(与作者的纳入标准一致);对照组必须是同板 DMSO_TF;聚合后的样本数应与论文的 52,886 条件量级相符。
Day 8|三个基线
交付物:全局均值、药物均值、细胞系均值三个基线的预测分数。这是任何后续模型的比较锚点。没有这三个数字,任何"我们的模型更好"的声明都无法成立。
Day 9|结构化切分
交付物:两套切分脚本——leave-compound-out 与 leave-cell-line-out。检查:训练集与测试集的化合物集合、细胞系集合交集为空;切分后的各类别样本量不至于极端失衡。
Day 10|首轮评测
交付物:一份带基线的评测报告。报告里必须包含:切分方式、聚合层级、对照选择、指标(R² / Pearson / Spearman)、基线分数、以及"目标信号可重复性上限"的估计(如果用了 plate 6 / 14 的重复对)。
Z.3 三条常见返工路径
- 卡在内存:试图把全量读进内存。解法是分片处理或换 Dask / Polars 链路,不要买更大的机器。
- 卡在对照:用了全局 DMSO 均值,导致板间差异被算进"药物效应"。解法是改成板内对照,重算全部基线。
- 卡在评测:随机切分拿到很高的分数,兴高采烈写进论文,被审稿人指出泄漏。解法是在开工第一天就把切分脚本写好并锁定,不要等模型调完再补。
Z.4 交付物清单 一个合格的 Tahoe-100M 分析项目,最终应留下以下可复现资产:
- 数据读取脚本 + 版本目录名(如
2025-02-25) - 剂量解析函数与浓度分布表
- 伪 bulk 聚合脚本与聚合后矩阵
- 三个基线的实现与分数
- 结构化切分的划分文件(保存为固定的索引列表,不要每次重算)
- 评测报告(含口径声明段)
缺任何一项,别人都无法复现你的结论——而"无法复现"在使用一份上游不公开的数据集时,是最致命的批评。
尾注
主要来源
- Zhang J, Ubas AA, Svensson V, et al. Tahoe-100M: Mapping drug-induced molecular phenotypes at single-cell resolution. Cell. 2026;189(19):5945-5961.e8. doi:10.1016/j.cell.2026.08.035
- Zhang J, Ubas AA, de Borja R, et al. Tahoe-100M: A Giga-Scale Single-Cell Perturbation Atlas for Context-Dependent Gene Function and Cellular Modeling. bioRxiv. 2025. doi:10.1101/2025.02.20.639398(v3 正文)
- HuggingFace 数据集卡与 API:
tahoebio/Tahoe-100M(经 hf-mirror.com 实测,2026-10-17) - Arc Institute. arc-virtual-cell-atlas/tahoe-100M README 与 tutorial-py.ipynb. GitHub.
- Crossref works API:doi 10.1016/j.cell.2026.08.035
- bioRxiv details API:doi 10.1101/2025.02.20.639398
- Research Square rs-10846736:Basal expression predicts context-specific drug responses only where they are reproducible: a leakage-safe 47-line LOCO benchmark on Tahoe-100M(预印本)
交叉核对说明
细胞数、板数、条件数、重复性统计四个关键量均做到两源以上互证:细胞数由 HF API 结构化字段与 Cell 正文双证;板数与条件数由论文正文与 HF 卡面字段(plate 1–14)互证;重复性数字由 bioRxiv v3 正文与 Cell 讨论节互证。凡只有单一来源的数字(如 153M 原始细胞、1.4 万亿 reads),正文均标注"论文正文"而未声称已交叉验证。
附录 Y:术语辨析与易混概念
Y.1 「扰动」在本文中的三种粒度
「扰动」(perturbation)这个词在论文与二手报道里被用于三个不同粒度,混淆是很多数字对不上的根源:
| 粒度 | 含义 | 本例中的数量 | 常见误用 |
|---|---|---|---|
| 化合物级 | 一个独立的化学实体 | 379 | 被写成 1,100 |
| 处理级(药 × 剂量) | 一种药在一个浓度下的一次处理 | 1,135 | 摘要的"约 1,100" |
| 条件级(系 × 药 × 剂量) | 某个细胞系在某个处理下的观测集 | 52,886 | 被当作"独立样本数" |
论文标题与摘要里的 “1,100” 是第二级。任何把 52,886 当作"独立生物学重复"的统计做法,都会严重高估有效样本量——因为同一个处理在不同细胞系上的观测高度相关。
Y.2 「重复」的三个层次
| 层次 | 定义 | 在本数据中 |
|---|---|---|
| 技术重复 | 同一份文库测两次 | 不提供(已合并为一份计数) |
| 生物学重复 | 独立培养、独立处理、独立建库 | 仅 plate 6 与 plate 14 一对 |
| 条件内细胞重复 | 同一条件下捕获的多个细胞 | 每条件中位 1,287 个 |
单细胞分析的一个常见错误,是把"条件内细胞重复"当作"生物学重复"来做显著性检验——这会导致 p 值极小但毫无意义(伪重复,pseudoreplication)。正确的做法是在条件或样本层面做统计推断。
Y.3 cell village 与「共培养」的区别
共培养(co-culture)通常指两种或多种细胞有目的地放在一起,研究它们之间的相互作用(如肿瘤-免疫共培养)。cell village 不是这个意思:它的目的是让尽可能多的细胞系共享完全相同的处理条件,从而消除批次效应,而不是研究它们之间的相互作用。
这个区别很重要:cell village 里的跨系信号串扰是需要控制或承认的副产品,不是研究目标。把 Tahoe-100M 当作"肿瘤微环境互作"数据集使用,是方向性错误——它连免疫细胞都没有。
Y.4 「虚拟细胞」与「基础模型」的关系
虚拟细胞(virtual cell)是一个目标:用计算模型预测细胞在各种干预下的状态。基础模型(foundation model)是一种手段:在海量数据上预训练、可迁移到多种下游任务的大模型。二者不是同义词——虚拟细胞可以用基础模型实现,也可以用机理模型实现。
Tahoe-100M 的定位是"虚拟细胞的训练语料",而不是"虚拟细胞本身"。论文的措辞很谨慎:“a strong substrate for learning drug-induced state transitions”,而没有说"我们建成了虚拟细胞"。
Y.5 「AI-Ready」在本文中的操作性定义
"AI-Ready"不是作者的自称,而是本库的评估框架。它的操作性定义包含五条可检查的标准:
- 机器可读:有结构化格式与 schema,能一行代码加载。
- 许可清晰:许可条款明确、无需逐案协商。
- 元数据完备:字段有定义、取值有约束、来源可追溯。
- 可获得:有稳定的公开分发渠道,不是仅邮件申请。
- 可用且有边界:有明确的适用场景与已知局限说明。
Tahoe-100M 在 1、2、3、4 四条上都属优秀,在第 5 条上尤其罕见——大多数数据集不会在正文里写清"我的表型重复性只有 0.29"。这正是本条目给它较高评价的主要依据。
附录 X:一分钟速答卡 给只想快速了解的人:
它是什么:50 个癌细胞系混养、379 种小分子多剂量处理、24 小时、95.6M 个单细胞转录组。
谁做的:Tahoe Therapeutics(原 Vevo)× Arc Institute × Parse Biosciences,Cell 2026 见刊。
怎么拿:HuggingFace tahoebio/Tahoe-100M(CC0,338 GB);或 Arc 的 GCS 桶拿 h5ad。
最大优势:规模 + 干净的许可 + 跨 47 个癌遗传背景。
最大风险:混养串扰、单细胞表型重复性弱、单时间点、FASTQ 不可得。
最容易犯的错:随机切分评测、把 1,100 当化合物数、把"推断表型"当"实测表型"。
一句话:一把开放到可以商用、但必须在正确用法下才可靠的尺子。
附录 W:常见分析任务的方法选择
W.1 差异表达分析
任务:给定「细胞系 C + 药物 D + 剂量 x」的细胞群,找出与同板 DMSO_TF 对照显著不同的基因。
推荐路径:先聚合成伪 bulk(按 sample 聚合,不是按条件),再用负二项模型(DESeq2 / edgeR 风格)做检验。不要用单细胞层面的 wilcoxon 检验直接出结论——它会把细胞数当作样本量,产生伪重复。
注意事项:如果某个条件的细胞数少于 50,结果不稳定(作者的纳入标准就是这个数);如果需要跨细胞系比较,必须把细胞系作为协变量,而不是分层后各自做检验。
W.2 剂量-响应建模
任务:估计某个化合物在某个细胞系上的 EC50 或效应饱和点。
现实约束:平均每个化合物约 3 个剂量点,不足以拟合四参数 Hill 曲线。可行的替代方案有两个:一是把多个细胞系的数据合并,假设同一化合物的剂量-响应形状跨系相似,只估计幅度参数;二是改用"单调性检验"(效应是否随剂量单调上升),而不是拟合完整曲线。
提示:只有单剂量点的化合物无法做任何剂量建模,建模前先筛掉。
W.3 机制(MOA)分类
任务:从转录组响应预测化合物的作用机制。
可用标签:drug_metadata 的 moa-fine(25 类)与 moa-broad(三类)。约 180 个化合物有 fine 标签。
关键陷阱:标签由 GPT-4o 生成 + MedChemExpress 校验。如果训练特征里包含了 SMILES 或靶点列表(这些也是或来自模型或来自同一知识源),分类器可能学到"标签生成逻辑"而不是"转录组-机制关系"。稳妥做法是只用表达特征,并对标签做人工抽检。
W.4 细胞系特异性响应
任务:找出"某些细胞系对某药特别敏感/特别耐药"的基因或通路。
方法:对每个细胞系计算该药相对对照的效应向量,然后跨系做聚类或回归(用驱动突变、器官来源、基线表达作为协变量)。
提醒:47 个细胞系的样本量,做多元回归时协变量不要超过 5–6 个,否则过拟合。另外,细胞系之间的效应差异有一部分可能来自 cell village 中的位置效应(同孔邻居不同),这是无法从元数据里完全校正的混杂。
W.5 跨数据集迁移
任务:把一个在 Tahoe-100M 上训练的模型迁移到其他扰动数据集。
主要障碍:基因集不同(Tahoe 用 Ensembl 109 的 token,其他数据集用基因名或另一版 Ensembl)、细胞类型不同(癌细胞系 vs 原代)、扰动类型不同(化学 vs 遗传)。
可行做法:以基因符号为桥做基因集对齐(取交集或按同源映射),在伪 bulk 层面做迁移,而不是在单细胞嵌入层面——后者的空间不可对齐。
附录 V:一份可打印的核对表
以下清单可直接打印,贴在工位上,每次提交前过一遍:
[ ] 细胞数写的是 95,624,334(不是 1 亿)?
[ ] 化合物数是 379(不是 1,100)?
[ ] 说明了 47 / 50 的口径?
[ ] 对照是同板 DMSO_TF?
[ ] 聚合层级写明(单细胞 / 伪 bulk)?
[ ] 切分方式写明(随机 / 按化合物 / 按细胞系)?
[ ] 报告了三个基线?
[ ] 异质性类结论有正交验证或已降级措辞?
[ ] CLS token 已丢弃?
[ ] 剂量从 drugname_drugconc 解析且单位已统一?
[ ] 版本目录名已记录?
[ ] 引用版本(Cell / bioRxiv)与标题一致?
[ ] 数据许可(CC0)与论文许可(CC BY 4.0)已区分?
``` 十三项,全部打勾,才算"用对"。
## 附录 U:与数据生产方的互动建议
### U.1 反馈渠道
Arc Institute 的 Virtual Cell Atlas 仓库开放 GitHub Issue,是目前最直接的反馈通道——包括数据错误、文档不一致、下载问题。Tahoe 官网也提供联系入口。对于许可、商用、再分发这类问题,走官方渠道比在论文评论里提问更有效。
反馈时提供三样东西能显著提高处理效率:具体的字段名或文件路径(不是"数据有问题"这种笼统描述)、可复现的最小代码片段、以及你使用的版本目录名。后者尤其重要,因为 h5ad 与 Parquet 两条链路可能不同步更新。
### U.2 可提的合理需求
- **元数据补全**:`sample_metadata` 的 `mean_*` 列对过滤前还是过滤后计算,卡面未明写。这是一个文档层面的小缺口,提出来大概率会被采纳。
- **版本变更日志**:`2025-02-25` 与后续版本之间的差异清单,目前只能从提交记录推断。
- **sublibrary 与 sample 的映射表**:两者关系在论文里没有逐条给出,排障时需要。
- **压缩格式说明**:`.h5ad.gz` 是内部 gzip 压缩,这一点写在 Notes 里但容易被忽略,值得在教程中加显式提示。
### U.3 不建议提的需求
要求公开 FASTQ。论文已把三个理由写得很清楚(体量、合同、IP),这类请求不会改变结论,反而占用沟通成本。如果你的研究确实需要原始 reads 层面的信息(比如评估另一种比对工具),更现实的路径是联系作者讨论合作,而不是要求公开发布。
### U.4 引用与致谢的礼貌
CC0 不要求署名,但学术惯例仍然要求引用。在致谢里写明"使用了 Tahoe-100M(版本 2025-02-25)",对后来者是重要的溯源信息——它让"为什么我们的数字和别人不一样"这类问题有了答案。
## 附录 T:十个数字的一页总结
| # | 数字 | 含义 |
| --- | --- | --- |
| 1 | 95,624,334 | 通过全过滤的细胞数(推荐引用值) |
| 2 | 100,648,790 | 通过最简过滤的细胞数(Arc 口径) |
| 3 | 153,000,000 | 原始细胞数(含未通过过滤的) |
| 4 | 47 | 可用于下游分析的细胞系数(装载 50) |
| 5 | 379 | 独立化合物数 |
| 6 | 1,135 | 药物-剂量组合数(摘要"约 1,100") |
| 7 | 52,886 | 细胞系×药物×剂量条件数 |
| 8 | 1,287 | 每条件中位细胞数 |
| 9 | 0.975 / 0.915 | 伪 bulk 匹配 / 不匹配条件的 Pearson 中位数 |
| 10 | 0.29 | 转录组异质性在重复板间的 Pearson 相关 |
这十个数字覆盖了引用这份数据时 90% 的场景。记住它们,就能在绝大多数讨论中不踩口径坑。
## 附录 S:与三项邻近工作的详细对照
### S.1 与 sci-Plex 系列的对照
sci-Plex 2 是 2019–2020 年单细胞药物筛选的代表性工作:188 个化合物、3 个细胞系、约 65 万细胞、每药 4 个剂量。它的贡献是证明了"单细胞转录组可以做高通量药物筛选",但规模受限于当时的建库通量。 Tahoe-100M 相对于 sci-Plex 的进步体现在三个维度:
- **细胞数**:65 万 → 9,562 万,约 147 倍。
- **细胞系数**:3 → 47。这是最关键的一步——条件依赖研究需要足够多的背景。
- **批次控制**:sci-Plex 用"核哈希"(nuclear hashing)在单孔内混合,但不同细胞系仍是分开处理;Tahoe 的 cell village 把混合推到了"同孔同时给药"。
代价是化合物数从 188 降到 379(其实反而更多),但每药的剂量数从 4 个降到平均 3 个——剂量分辨率没有提升。
### S.2 与 MIX-Seq 的对照
MIX-Seq(2020)是 cell village 思路的直接前身:6 个细胞系混合、32 个化合物、4 个剂量、十余万细胞。它首次系统展示了"混养 + 单细胞 + SNP 去卷积"这套组合的可行性,并报告了跨细胞系的药物响应差异。
Tahoe-100M 可以看作 MIX-Seq 的工业化放大:细胞系数从 6 到 50,化合物从 32 到 379,细胞数从十余万到近亿。技术上没有本质突破,突破在**工程规模**——这正是资源论文的价值所在。
值得注意的是,MIX-Seq 的研究者当时就注意到了混养带来的问题:不同细胞系在共培养中的生长速率不同,24 小时后某些系可能已占据主导。Tahoe 用配比设计应对这一点,但从 Figure 3E 的覆盖热图看,并没有完全解决。
### S.3 与 Replogle Perturb-seq 的对照
Replogle 等(2022)的全基因组 CRISPRi Perturb-seq 是遗传扰动方向的标杆:约 200 万细胞、K562 与 RPE1 两个细胞系、覆盖全基因组约 1 万个基因的敲低。 两者在方法论上是镜像关系:
| 维度 | Tahoe-100M | Replogle Perturb-seq |
| --- | --- | --- |
| 扰动 | 化学(可逆、可调剂量) | 遗传(不可逆、二元) |
| 背景 | 47 个癌细胞系 | 2 个细胞系 |
| 规模 | 95.6M 细胞 | 约 2M 细胞 |
| 因果性 | 药物作用靶点常不明确 | 敲低靶点明确 |
| 与药物开发的距离 | 近(直接用化合物) | 远(靶点验证) |
论文用 E-distance 把两者放在同一尺度上对比效应量,这是很有说服力的一步——它说明化学扰动与遗传扰动在转录组层面产生的位移量级是可比的。
### S.4 三者的互补使用 一个务实的建议:把三者组合成一个"扰动响应"的训练集与测试集体系——
- 用 Tahoe-100M 学"化学扰动在多个癌背景下的响应";
- 用 Replogle 学"遗传扰动的因果结构";
- 用 sci-Plex 做小规模的外部验证(它的化合物覆盖与 Tahoe 部分重叠)。 这种组合比在单一数据集上刷分数更能说明模型的泛化能力。
## 附录 R:十六条坑点的速览版
正文 §10 已逐条展开,这里给出压缩版,便于速查:
| # | 坑 | 一句话纠正 |
| --- | --- | --- |
| 1 | 「1 亿细胞」当精确值 | 全过滤是 95,624,334 |
| 2 | 「1,100 种药」 | 是 1,135 个药物-剂量,化合物只有 379 |
| 3 | 「50 个细胞系都能分析」 | 只有 47 个进入下游 |
| 4 | 随机切分评测 | 必须按化合物或细胞系整组留出 |
| 5 | 拿单个细胞数量当显著性检验样本量 | 伪重复,须在条件/样本层推断 |
| 6 | 以为 FASTQ 只是难拿 | 是明确不公开 |
| 7 | 忽略 cell village 串扰 | 池内响应 ≠ 单独培养响应 |
| 8 | 忘记丢弃 CLS token | 首元素是标记位,丢不掉会静默错位 |
| 9 | 用 `DMSO` 找对照 | 实际是 `DMSO_TF`,且要板内匹配 |
| 10 | 把 `pubchem_cid` 当数值 | 是 string,对照组为空串 |
| 11 | 用旧 GCS 桶 | 旧桶 2026-03-31 已弃用 |
| 12 | 以为 2 TB 免费无条件 | 需先订阅 Marketplace |
| 13 | 引用 HF 卡面的 BibTeX | 那是预印本版本,未更新为 Cell |
| 14 | 混谈数据许可与论文许可 | 数据 CC0,论文 CC BY 4.0 |
| 15 | 以为每药都有多个剂量 | 平均 3 个,有单剂量药 |
| 16 | 把 `moa-fine` 当专家标签 | 是 GPT-4o 生成 + MCE 校验 |
十六条里有六条属于「口径误读」,十条属于「工程细节」。前者影响结论,后者影响复现——两类都要防。
## 附录 Q:为什么这份数据会被顶刊接收
审稿与接收的理由,可以从三个层面理解,也可以作为评价其他资源论文的参照。
### Q.1 规模层面:跨过阈值
单细胞扰动数据在 2019 年 sci-Plex 时代只有几十万细胞,模型只能在极小的条件下学习。到 2025 年,Tahoe-100M 把规模推到近亿——这个量级的意义不在于"更大",而在于**样本量与条件数同时足够**:47 个背景 × 379 个化合物,使"条件依赖"从一个理论概念变成可学习的统计对象。
### Q.2 设计层面:cell village 的可测量收益
混养设计不是一个噱头,它带来了可测量的收益:批次效应在 LISI 分析中被压到细胞系与细胞周期之后,成为第三位的分层因素。这一点由 Figure 4A 的量化结果支撑,而不是靠可视化目测。对一份资源论文而言,"设计带来可量化收益"是比"规模大"更有力的论证。
### Q.3 文档层面:自曝局限
最容易被低估的一点是讨论节的坦率。它明确写了四件事:cell village 可能引入跨系信号串扰;单细胞表型只有中等重复性、异质性最弱(R=0.29);随机切分会虚高;单一时间点与模态使"虚拟细胞"的宣称需要保留。
资源论文的自曝局限有一个实际功能:它把"误用责任"从作者转移到了使用者。这也解释了为什么本条目把讨论节当作最重要的引用来源——它决定了这份数据能不能被负责任地使用。
## 附录 P:复现论文关键图的要素清单
想复现论文的几张主图,需要准备以下要素。这份清单也可以作为"我是否真的读懂了论文"的自测。
**Figure 3A–C(tSNE)**:需要 scVI 的 10 维嵌入、每个细胞系的 140,000 个高质量细胞抽样、2 维 tSNE 坐标。要素:`cell_line_id`、`plate`、`phase` 三个着色变量;训练集限定 plate 1–13。
**Figure 3D(重复板相关分布)**:需要 plate 6 与 plate 14 的伪 bulk 矩阵、按"同细胞系 + 同药 + 同浓度"配对、4000 次随机抽样的匹配/不匹配比较。要素:正确的浓度解析(否则配对错),以及"未变换的原始计数"(论文明确说用 untransformed matrix)。
**Figure 3E(覆盖热图)**:需要按细胞系×药物剂量统计细胞数。要素:剂量的唯一性判定;把细胞数低于阈值的格子标出(论文标出了三个低丰度系)。
**Figure 4A(LISI)**:需要 30 近邻、10,000 细胞子采样、100 次重复的 LISI 计算。要素:多个元数据变量(细胞系、板、相位、药物、剂量)分别作为标签。
**Figure 4B(跨数据集 E-distance)**:需要 Tahoe-100M、SciPlex-3、Replogle 三个数据集的嵌入与剂量分层。要素:三个数据集各自独立处理后再比较趋势,不能直接比绝对数值。
**Figure 6(细胞周期结论)**:需要 `S_score`/`G2M_score` 的基因集打分。要素:理解这是推断相位而非流式实测。
这份清单的价值在于:它把"复现"从一个笼统的愿望拆成了六个可检查的要素。缺任何一个要素,对应的图就复现不出来——而这通常不是因为数据不够,而是因为没读清方法节的细节。
## 附录 O:开放问题清单
一份数据集真正的价值,往往体现在它激起了多少未解的问题。以 Tahoe-100M 为起点,以下六个问题目前没有明确答案。
**问题一:cell village 的串扰有多大?**
论文承认了串扰的可能性,但没有量化它。要回答这个问题,需要同一批细胞系在不混养条件下的对照实验——目前没有公开数据。一个可行的代理评估是:比较同一细胞系在不同混养邻居组合下的 DMSO_TF 基线是否漂移。
**问题二:为什么单细胞异质性这么不可重复?**
R=0.29 是一个诊断性数字,但论文没有追溯它的来源。可能的解释有三种:捕获效率的随机性、细胞周期相位的抽样波动、真实的生物学异质性在重复间本身就不稳定。区分三者需要额外的技术对照。
**问题三:剂量-响应关系能否跨细胞系共享形状?**
平均 3 个剂量点不足以在单系内拟合曲线,但若假设"形状跨系共享、幅度跨系变化",就可以用 47 个系的数据共同估计形状。这个假设是否成立,目前没有系统检验。
**问题四:MOA 标签的 GPT-4o 噪声有多大?**
180 个化合物有 fine 标签,但没有人报告这些标签与人工审核的一致性。一个可行的小规模验证是:让药理学家盲审 30 个化合物,与 GPT-4o 的标签比对。
**问题五:24 小时后,哪些效应是瞬时的、哪些是持续的?**
单时间点无法回答。这需要时间序列实验,而时间序列的成本随点数线性增长——这是为什么整个领域都卡在单时间点上。
**问题六:47 个癌细胞系能覆盖多少"真实"细胞状态?**
这些系都是在培养皿里驯化了数十年的永生化细胞,与原发性肿瘤的转录组有系统差异。它们在 CELLxGENE Census 的状态空间中落在哪个区域,目前没有系统对照。 这六个问题,也是后续使用这份数据的人最可能做出增量贡献的方向。
## 附录 N:数据集在中文学术语境中的引用建议
### N.1 中文名称 Tahoe-100M 目前没有公认的中文译名。可行的写法有三种:
- **直接保留原名**:Tahoe-100M。这是最稳妥的做法,也是本条目的选择。
- **「Tahoe-100M 亿级单细胞药物扰动图谱」**:描述性译法,首次出现时给出,之后回到原名。
- **「塔霍 100M」**:音译,不建议——"Tahoe" 是地名(太浩湖),音译会与地理概念混淆,且不利于检索。
### N.2 首现句式 中文论文中推荐的首现写法:
> Tahoe-100M 是由 Tahoe Therapeutics(原名 Vevo Therapeutics)、Arc Institute 与 Parse Biosciences 合作构建的亿级单细胞药物扰动图谱,收录 50 个商品化癌细胞系在 379 种小分子化合物、1,135 个药物-剂量组合处理后的 95,624,334 个单细胞转录组,数据以 CC0-1.0 许可开放于 Hugging Face。
这一句里包含了五个可核查的事实:机构、规模、化合物数、细胞数、许可。任何引用者都可以据此核对。
### N.3 常被误译的术语
| 英文 | 常见误译 | 建议译法 |
| --- | --- | --- |
| cell village | 细胞村、细胞村落 | 细胞村镇(或保留英文) |
| perturbation | 干扰 | 扰动 |
| pseudobulk | 伪批量 | 伪 bulk(学界通用) |
| demultiplexing | 解复用 | 去卷积 / 去混样 |
| mechanism of action | 作用机理 | 作用机制(MOA) |
| compound | 复合物 | 化合物 |
| dose-response | 剂量反应 | 剂量-响应 |
其中「扰动」与「干扰」的区分很重要:前者是单细胞领域对 perturbation 的标准译法,后者在信号处理里另有含义。
## 附录 M:一份最小可行研究提案
为了说明这份数据能支撑什么样的具体工作,这里给出一份可以直接立项的研究提案骨架。它刻意选择了一个**边界清楚、可在一学期内完成、且结论不太可能被口径问题推翻**的题目。
### M.1 题目
「跨细胞系共享形状的剂量-响应建模:以 Tahoe-100M 的 1,135 个药物-剂量组合为训练集」
### M.2 要解决的问题
单系内每药平均只有约 3 个剂量点,无法拟合完整的剂量-响应曲线。但如果假设"同一化合物的剂量-响应形状在细胞系之间共享,只有幅度随背景变化",就可以用 47 个系的数据共同估计形状参数,从而把每药的有效剂量点从 3 个提升到"3 × 47"。
### M.3 数据使用方案
- 输入:`pseudobulk_differential_expression` 表 + `sample_metadata` 的 `drugname_drugconc` 解析得到的剂量。
- 标签:伪 bulk 层面相对同板 DMSO_TF 的效应向量(或效应标量,如 E-distance)。
- 切分:按化合物整组留出(leave-compound-out),并额外报告按细胞系留出的结果。
- 基线:药物均值、细胞系均值、全局均值。
### M.4 可检查的交付物
1. 一个剂量解析与单位统一的脚本。
2. 每药的有效剂量点数统计表(标记单剂量药)。
3. 共享形状假设的检验结果(例如:跨系拟合的形状参数的离散度 vs 独立拟合的离散度)。
4. 在留出化合物上的预测分数与三个基线的对比。
5. 一份说明"这个假设在哪里失效"的负面结果清单。
### M.6 常见的失败模式
- **把单剂量药混进来**:这些药的"形状"无法估计,只能估计幅度,会污染共享形状的拟合。
- **单位没统一**:uM 与 nM 混用会让剂量轴错乱。
- **用效应标量代替效应向量**:标量会丢掉方向信息,使形状估计退化为幅度估计。本题目风险较低:不宣称生物学发现,成败均可量化,不依赖单细胞表型(因而不受 R=0.29 影响),也不需要 FASTQ——即便共享形状假设被证伪,仍是一份有价值的负面结果。
- **忽略板内对照**:跨板对照会引入系统偏移,使形状被扭曲。 这四条,恰好对应了本条目反复强调的四个工程细节。
## 附录 L:数据集维护与长期可及性
### L.1 三处托管的分工 Tahoe-100M 目前有三处托管,各自承担不同角色:
| 托管方 | 内容 | 角色 |
| --- | --- | --- |
| Hugging Face | 主表 Parquet + 五张元数据 + 伪 bulk | 事实上的主分发渠道 |
| Arc Institute(GCS) | h5ad + Parquet 元数据 | 面向单细胞生态的镜像 |
| Zenodo | 分析代码 | 可执行性保障 |
这三处的冗余是一件好事:任何一处下线,另外两处仍可用。但要注意它们**不一定同步更新**——HF 仓库最后更新是 2026-10-14,Arc 的版本目录以 `2025-02-25` 起算,Zenodo 的代码对应论文版本。三者之间的小版本差异,是"我的结果和你不一样"的一个常见来源。
### L.2 长期风险的三个来源
1. **机构风险**:Tahoe Therapeutics 是一家商业公司。公司若发生并购或业务调整,其官网与文档可能迁移(已经发生过一次从 Vevo 更名到 Tahoe、域名从 tahoebio.ai 到 tahoelabs.ai 的变化)。但数据托管在 HF 与 Arc,不受公司域名变化影响。
2. **平台风险**:GCS 桶已发生过一次迁移(2026-03-31 弃用旧桶)。这类迁移对依赖硬编码路径的脚本是破坏性的。缓解办法是把路径参数化,并订阅 Arc 的仓库更新。
3. **许可风险**:CC0 是不可撤销的——一旦发布,作者不能反悔收回。这是它比 CC BY-NC 更"安全"的地方:不用担心某天突然不能商用。
### L.3 给机构存档的建议 对需要长期保存的机构,建议做三件事:
- **本地镜像全量 Parquet**(338 GB),而不是只镜像 h5ad——前者是原始分发格式,后者是派生格式。
- **记录版本目录名与下载日期**,写进机构的数据资产清单。
- **保存论文 PDF 与补充材料**,因为期刊的开放获取政策可能随时间调整。
### L.4 对"数据会消失吗"的回答
短期内不会。CC0 + 三处托管 + 高下载量(117,525)意味着它有足够的社会关注度维持存续。长期看,风险主要来自"格式过时"而非"数据消失"——如果 Parquet 或 AnnData 在未来被新格式取代,数据还在,但读取工具链需要重建。这也是为什么本条目强调**记录版本与格式**,而不只是记录"我用过 Tahoe-100M"。
## 附录 K:细读讨论节
Cell 版的讨论节是本条目引用最密集的段落,值得逐句拆开。以下按原文的论证顺序复述其要点,并标注每一点对使用者的实际约束。
**第一层:设计代价的承认。**
混养设计"是这份图谱规模与低批次方差的来源,但它也让所有细胞系暴露在同一份条件培养基中、可能发生跨系信号传导",因此"在池中测得的响应可能与同一细胞系单独培养时不同"。这一段确立了一条使用约束:**任何"细胞系固有敏感性"的结论,都要标注"在 cell village 条件下"**。
**第二层:表型性质的限定。**
论文报告的表型指标——细胞周期停滞、Augur、Gini 及相关度量——"是从转录组状态推导出来的,而不是来自活细胞成像或直接活力读数等正交实验",因此"应被理解为转录组推断的表型"。这一句是对"表型"这个词的严格限定,很多二手报道在转述时把"表型"当成了"实测结果"。
**第三层:可重复性的分级。**
"这些表型在生物学重复之间也并非同等可重复。伪 bulk 基因表达签名在重复板之间高度一致,但从中推导出的单细胞表型只有中等的重复间相关,其中转录组异质性最弱(Pearson R = 0.29)。"接着是一句关键推论:"高转录组一致性并不意味着生存、细胞周期、Gini、Augur 或异质性测量具有相当的可重复性。"
**第四层:对结论的处置建议。**
"依赖那些可重复性较低的表型的结论——尤其是转录组异质性——应通过正交实验加以确认。"
**第五层:范围与模态的限定。**
所调查的扰动是"在有限剂量集上采样的小分子、且在单一时间点",时间动力学与遗传扰动不在范围内。
**第六层:对"虚拟细胞"宣称的限定。**
因为数据只覆盖"单一检测模态下的癌症细胞背景",Tahoe-100M 是"学习这些背景下药物诱导状态转移的强基底",但"更广泛的一般性虚拟细胞主张,将需要跨模态、跨模型系统、跨扰动类型的补充数据"。
**第七层:评测方法学的警告。**
"相当一部分扰动在细胞系之间产生广泛一致的效应,因此在一个随机留出的条件集上评测的模型,可以仅仅通过复现这些与背景无关的响应就显得准确,而没有学到条件依赖"。"因此,忠实的评测需要结构化留出——留出整个化合物或整个细胞系——而不是随机划分。"
**第八层:扩展路径。**
Mosaic 框架"可以直接扩展到更复杂的场景,包括患者来源类器官",为未来解决部分局限提供了具体路径。
八层论证,从设计代价到评测警示,构成了一条完整的"自我限定链"。这也是为什么本条目把它称为"最值得引用的一段"——它不是免责声明,而是一份使用说明书。
## 附录 J:文件清单与体积结构
### J.1 HuggingFace 仓库的顶层布局 根据数据集卡与 API 的 `siblings` 字段,仓库顶层包含:
```text
tahoebio/Tahoe-100M
├── .gitattributes
├── LICENSE.md 许可正文(CC0-1.0)
├── README.md 数据卡(含 YAML 头与字段说明)
├── data/ 主表:train-*.parquet 分片
├── metadata/
│ ├── sample_metadata.parquet
│ ├── gene_metadata.parquet
│ ├── drug_metadata.parquet
│ ├── cell_line_metadata.parquet
│ ├── obs_metadata.parquet
│ └── pseudobulk_differential_expression/ (train-* 分片)
└── tutorials/
└── loading_data.ipynb 读取与转 AnnData 的教程
主表被拆成多个 train-* 分片,这是 HF datasets 的常规做法——分片便于流式读取与断点续传,也避免单个文件过大。不要假设只有一个文件:任何脚本都应该用通配符匹配 train-*,而不是硬编码文件名。
J.2 体积的层级结构
| 层级 | 体积 | 说明 |
|---|---|---|
| 全库下载 | 约 338 GB | Parquet 压缩后 |
| 全库解压 | 约 1.69 TB | 逻辑数据量 |
| 单细胞平均 | 约 17.7 KB | 1.69 TB ÷ 95.6M |
| 单板平均 | 约 121 GB(解压) | 1.69 TB ÷ 14 |
单个细胞平均 17.7 KB 看起来很大,但因为大多数细胞只表达 1,000–2,000 个基因,这些字节主要是变长序列的编码开销与元数据。这也是 token 序列格式的一个代价:它比 CSR 稀疏矩阵的列索引 + 值数组更冗长。
J.3 分片数量与读取并行度
主表的分片数量没有在卡面明写,但 HF datasets 的默认分片大小约为每个 500 MB–1 GB。按 338 GB / 500 MB 估算,主表大约有数百个分片。这意味着:
- 可以用
num_proc开启多进程读取,吞吐随分片数线性提升。 - 单机 32 核的机器做全量扫描,瓶颈通常在 IO 而不是 CPU。
- 若要按条件过滤,尽量用 HF 的
filter下推,而不是先全读再筛——后者会把全部 338 GB 过一遍。
J.4 一个容易忽略的细节
.gitattributes 文件的存在说明仓库对大文件做了 LFS 处理。更实际的一点:即使配置了 LFS,也只解决「拉取体积」而不解决「算力」,1.69 TB 解压后仍然要一整块本地盘;如果只是想做可行性验证,直接取 plate3_2k 这类子样本,比完整 clone 快两个数量级。这一点对「只想确认数据长什么样」的读者尤其重要:先用 2 千细胞把读取管线跑通,再决定要不要投入 TB 级存储。这也是所有「大资源型数据集」通用的入门姿势:先小样本验证管线,再全量投入。用 git clone 拉仓库时,默认只拉到指针文件,不是真实数据——不要用 git 的方式获取这份数据。正确的入口是 datasets 库或 huggingface_hub 的 snapshot_download。
附录 I:结论的四句话版本 如果只能记住四句话,就记这四句:
- 它是 95,624,334 个细胞、47 个可用癌细胞系、379 种化合物、1,135 个药物-剂量组合的 24 小时单细胞转录组快照。
- 它的许可干净到 CC0,但上游 FASTQ 完全不公开——下游随便用,上游无法验。
- 它的 cell village 设计压住了批次效应,却引入了跨系串扰,且单细胞层面的表型(尤其异质性,R=0.29)重复性弱。
- 用它做评测必须按化合物或细胞系整组留出,随机切分会系统性地虚高。
这四句话分别对应了规模、可得性、可靠性、评测方法四个维度。任何关于这份数据的长篇讨论,都可以还原成这四个维度的取舍。
附录 H:指标口径速查
同一份数据在不同论文里报出的分数不可比,往往是指标口径不同。下表列出最简单的判断方法:
| 指标 | 常见变体 | 比较前必须确认 |
|---|---|---|
| R² | 普通 R² / 可靠性加权 R² | 是否加权、权重来源 |
| Pearson | 逐基因平均 / 全向量一次计算 | 是"基因间平均"还是"条件间平均" |
| Spearman | 同上 | 是否在伪 bulk 层计算 |
| AUPRC | 微平均 / 宏平均 | 正负样本如何定义(差异基因阈值) |
| E-distance | 不同嵌入空间 | 是否在同一嵌入下计算 |
| LISI | 不同近邻数(常见 30) | 近邻数、子采样规模、重复次数 |
一个具体的例子:本条目引用外部 LOCO 基准时,用的是"可靠性加权残差 R²",这个指标对高噪声条件的惩罚与普通 R² 不同,因此它报出的 +0.004 不能与另一篇论文报的普通 R² +0.05 直接比较。任何跨论文的分数对比,第一件事是确认口径。
附录 G:三个「看起来能用其实不能用」的场景
G.1 用单细胞数据做差异表达
看起来:每个细胞都是独立观测,几万个细胞,统计功效极高。
实际上:同一条件下的细胞共享完全相同的处理与建库条件,彼此高度相关。用细胞数当样本量会得到 p 值极小但毫无意义的结果(伪重复)。正确做法是伪 bulk。
G.2 用 phase 字段做细胞周期分析
看起来:obs_metadata 直接给了 phase,省事。
实际上:它是用基因集打分推断的,受测序深度影响;而且 Tahoe 的分析本身就把细胞周期列为第二位的分层因素——这意味着细胞周期是混杂,不是你想研究的效应。要用它做结论,必须先校正测序深度与细胞系构成。
G.3 用 moa-fine 做机制分类的金标准
看起来:25 个类别,来源写明了 MedChemExpress 校验。
实际上:初稿是 GPT-4o 生成的。用它评测一个同样基于语言模型知识的分类器,会得到虚高的性能;用它作为训练标签再在它上面测试,本质上是在测"你是否复现了 GPT-4o 的判断"。
附录 F:字数之外的判断标准
一个数据集词条写得好不好,不看字数,看三件事:
- 能不能被验证:每个数字是否给了可复核的来源(API 字段、论文图号、仓库路径)。
- 能不能被反驳:是否承认了不确定与冲突,而不是把一切写成定论。
- 能不能被使用:读完是否能立刻动手,而不只是知道"有这么个数据集"。
本条目的结构设计围绕这三点:§2 与附录 C 解决"能被验证",§11 与附录 O 解决"能被反驳",§6、附录 D、附录 Z 解决"能被使用"。若三者只能保一,保第一——没有可验证的数字,后面的都是空话。
附录 E:致读者
这一条目的写作始于一个简单的困惑:为什么同一份数据,在论文摘要、数据卡、托管仓库、二手报道里能出现四套不同的数字?追下去发现,每一个数字都有它的语境——摘要是叙事,卡面是宣传,API 是事实,仓库 README 是运维。写这份词条的目的,就是把这四种语境摊开,让读者知道什么时候该信哪一个。
如果读完只留下一件事,希望是这句:任何关于 Tahoe-100M 的定量陈述,先问"这是哪个口径",再问"这是不是真的"。 前者能解决九成争议,后者解决剩下的那一成。
版本与维护:本词条最后复核于 2026-10-17,数据规模与许可信息以 HuggingFace API 与 Arc Virtual Cell Atlas 仓库当日实测为准。若官方后续发布新版本(如 Arc 的增强版目录更新),本词条中的版本目录名与体积数字需同步核对;论文引用与标题口径以 Crossref 记录为准。词条中所有"坑点"均来自公开文档的可核查矛盾,不含推测。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- scperturb — 共享标签:单细胞基因组学 / 转录组 / 药物发现与化学 / 评测基准 / 基因组学与多组学
- tabula-sapiens — 共享标签:单细胞基因组学 / 转录组 / 基因组学与多组学
- single-cell-portal — 共享标签:单细胞基因组学 / 转录组 / 基因组学与多组学
- hcl — 共享标签:单细胞基因组学 / 转录组 / 基因组学与多组学
- spatial-touchstone — 共享标签:单细胞基因组学 / 转录组 / 评测基准 / 基因组学与多组学
- scpt-4m — 共享标签:单细胞基因组学 / 转录组 / 评测基准 / 基因组学与多组学
- perturbai-crispr-atlas — 共享标签:单细胞基因组学 / 转录组 / 评测基准 / 基因组学与多组学
- rpe-choroid-atlas — 共享标签:单细胞基因组学 / 转录组 / 评测基准 / 基因组学与多组学
- lincs-l1000 — 共享标签:转录组 / 药物发现与化学 / 基因组学与多组学
- herb-2 — 共享标签:转录组 / 药物发现与化学 / 基因组学与多组学
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

