线虫胚胎谱系三维追踪 — 一分为二的五百次

4 条序列、每个时间点三十余层堆栈、单帧间隔 1 至 1.5 分钟

来源 Cell Tracking Challenge / Masaryk University CBIA url: https://celltrackingchallenge.net/3d-datasets/发布时间: 2026-10-29最后更新: 2026-10-29 阅读 6
线虫胚胎谱系三维追踪 — 一分为二的五百次

信息速览

数据集名称线虫胚胎谱系三维追踪 — 一分为二的五百次
数据类型4 条 3D+t 序列,训练包 3.1GB,单帧 708×512×35,1-1.5 分钟一帧,8-bit TIFF 堆栈
规模不涉及人类(每条序列为一个秀丽隐杆线虫胚胎)
接入方式Cell Tracking Challenge / Masaryk University CBIA url: https://celltrackingchallenge.net/3d-datasets/
AI 就绪度

秀丽隐杆线虫是唯一一种细胞数量少到可以逐个点清的动物。它的成体总共九百来个细胞,其中神经元三百零二个、其余多为体细胞;而这一切的起点是一个受精卵。从一枚受精卵到一个能在培养皿里爬行的个体,中间要经历约五百多次精确到个位的细胞分裂,每一次分裂产生的两个子细胞叫什么、在什么位置、活多久、走向什么命运,都有据可查。这份记录叫做细胞谱系,它在 1983 年由 Sulston 等人用显微镜一只一只盯出来,是全生物学界最早、也最完整的一份发育史。

但盯着看是有极限的。一个人可以在胚胎还只有几十个细胞时逐帧记录,等到细胞数上百、核直径缩到两三个微米、每小时还要分裂几十次的时候,肉眼就跟不上了。于是从 2000 年代初开始,有人尝试把这件工作交给机器:用组蛋白-GFP 把细胞核染亮,用共聚焦显微镜每隔一分钟扫一遍整个胚胎,剩下的交给软件。Fluo-N3DH-CE 就是这条技术路线留下的一段公开影像——秀丽隐杆线虫胚胎的三维延时序列,四条,来自华盛顿大学 Waterston 实验室,被 Cell Tracking Challenge 收纳为三维追踪赛道的给定考题。

一屏速览见下表。

项目 内容
规范名称 Fluo-N3DH-CE(Fluo = 荧光,N = 细胞核,3D = 三维,H = 高密度,CE = C. elegans)
提供方 Waterston Lab,华盛顿大学基因组科学系
基准维护方 Cell Tracking Challenge(马萨里克大学 CBIA)
已公开序列数 4(训练 2 + 测试 2)
每条序列帧数 训练两条各 250 帧;测试两条分别为 190 帧与 140 帧
单帧堆栈尺寸 训练序列一 708×512×35,序列二 712×512×31(宽×高×层数)
相邻帧间隔 训练序列一分钟一帧,测试序列 1.5 分钟一帧
体素尺寸 0.09×0.09×1.0 微米(xy 与 z 各向异性约 11 倍)
位深与格式 8-bit TIFF,逐时间点一组 z 层文件
追踪标注粒度 每个细胞核一个标记点 + 一个数值 track_id + 父子关系
谱系名 无(不含 ABala 这类 Sulston 式字符串)
金标准追踪标注 覆盖全部细胞实例(针对真实数据的官方口径)
分割标注 金标准仅覆盖极少数细胞;另有银标准分割(训练集)
下载体积 训练包 3.1 GB,测试包 1.7 GB
许可 研究免费;非 CTC 用途、商业用途与克隆再分发须获许可
站内同类资源 Cell Tracking Challenge 全貌

§1 数据集速览:它到底是什么

1.1 一句话定位

Fluo-N3DH-CE 是一组「把一枚胚胎的每一次分裂都编成号」的三维影像考题:四条序列,每条两百多帧,每一帧是一个完整的三维体积,体积里每一个细胞核都被打了标记、编了号,并且知道自己上一帧属于谁、分裂后变成了哪两个。

它要回答的问题不是「胚胎长什么样」,而是:

给你一段只有亮点的三维视频,你能不能把每一个点在时间轴上一路跟下去,并且在它一分为二的那一刻认出来?

这件事在机器视觉里叫多目标追踪,难点在于目标会增殖。常规追踪里,物体数量恒定,最多有进出画面;胚胎里,细胞数量单调递增,每隔几帧就有若干个细胞分裂成两个,新出现的两个目标与旧目标没有外观差异,只能靠位置连续性、体积减半和分裂的近距关系来判定。荧光还会随分裂衰减,核越分越小,背景噪声相对越来越强。

1.2 为什么它不是「又一个显微图像数据集」

库内已有的细胞影像资源大多在做「一张图里有哪些细胞、边界在哪」这件事,也就是实例分割。Fluo-N3DH-CE 把它们推到了时间轴上,并且把问题切成三块互相咬合的:

任务 输入 输出 评分指标
检测 单帧三维体积 每个细胞核的中心点 DET
分割 单帧三维体积 每个细胞核的体素区域 SEG
追踪 整条序列 每帧标记 + 跨帧链接 + 分裂事件 TRA

三个任务共用同一批影像,却要三份不同的参考标注,而这三份标注的「真值等级」并不一致:追踪标注是人类专家做的(金标准),覆盖全部细胞但只给点不给区域;分割标注只覆盖极少数细胞,却给的是区域。这种「覆盖完整则精度差,精度好则覆盖差」的先天缝隙,是这套数据最容易被误读的地方,也是 §4 要展开的核心。

1.3 决策卡:你的处境与它能帮什么

左列是使用者的处境,不是数据集的功能清单。

你的处境 Fluo-N3DH-CE 能帮你什么
在写细胞追踪算法,需要一个「有分裂事件」的硬骨头测试集 4 条序列全部含大量分裂事件,官方评测脚本按月打分,可与历史榜单直接比
想做三维各向异性体素的分割,需要先验证前处理是否失真 z 向 1.0 微米对 xy 向 0.09 微米,一比十一,任何各向同性处理都会被这套数据的分数立刻暴露
想复现 2006 年前后那批自动谱系追踪工作的输入长什么样 这是 StarryNite/AceTree 路线在公开基准里的影像侧剪影,影像风格与原论文一致
需要一个「细胞会增殖」的多目标追踪练手集 4 条序列体积不大,训练包 3.1 GB,单卡机器可以完整跑完
想研究胚胎发育的谱系规律 不合适。请移步带谱系名的完整胚胎数据集,见 §1.4

1.4 不适合谁

如果你的需求是「拿到一份像家谱一样、每个细胞都有名字的胚胎发育树」,那这套序列给不了你。它确实有谱系,但谱系是用整数编号表达的:1 号细胞在某帧死后分裂出 17 号和 18 号,17 号又在某帧分裂出 43 号和 44 号。你能重建出一棵完整的二叉树的形状,却无法从数据本身读出「43 号是 ABala」——因为谱系名要靠外部映射表,而这套数据不提供。

如果你的需求是「统计线虫胚胎细胞分裂的时间分布」,它也给不了你。四条序列、两个实验室条件、其中两条还没有标注,这个样本量做不了群体统计。真正做这件事的是另一类资源:同一实验室对上百枚胚胎做批量追踪后汇总的分裂事件表,那是纯表格而非影像。

如果你的需求是「覆盖整个胚胎发育到孵化」,同样给不了。每条序列只有两百多帧,按一分钟一帧算约四小时,覆盖的是从早期卵裂到大约数百细胞的中间段,不是全流程。

只要你的目标是算法而不是生物学规律,这套数据就是对的;反之,请把它们当成路标而不是终点。

1.5 名字怎么读

名字本身是一张规格表,拆开看就知道它属不属于你要找的东西。

片段 含义 判断价值
Fluo 荧光显微,细胞核被打亮,背景暗 与明场/相差序列的处理路径完全不同
N 目标是细胞核(nuclei),不是整个细胞 只给核边界,不给膜边界
3D 每个时间点是一个三维体积 内存与算力需求比二维高一个量级
H 高密度,目标多且相互贴近 分割难度显著高于稀疏场景
CE 物种秀丽隐杆线虫 与果蝇、斑马鱼序列可直接对照

同类命名里还有 Fluo-N3DL-DRO(果蝇,光片,低密度),以及 Fluo-N3DH-CHO(仓鼠卵巢细胞,高密度)。命名规则是一套可组合的语法,不是随意的代号,读懂了就能在官网一长串列表里快速筛掉不相关项。

§2 数据构成与规格

2.1 完整统计

四条序列的规格并不完全一致,差异本身就是信息:训练集用一分钟间隔采集,测试集用 1.5 分钟间隔采集。

序列 归属 宽×高 z 层数 帧数 帧间隔 标注
01 训练 708×512 35 250 1 分钟 金标准追踪 + 金标准分割 + 银标准分割
02 训练 712×512 31 250 1 分钟 金标准追踪 + 金标准分割 + 银标准分割
01 测试 712×512 31 190 1.5 分钟 不公开
02 测试 712×512 31 140 1.5 分钟 不公开

单帧体素数在两者之间相差约一成,总采集时长则相差更多:训练序列 250 帧 × 1 分钟约 4.2 小时;测试序列一 190 帧 × 1.5 分钟约 4.8 小时,测试序列二 140 帧 × 1.5 分钟约 3.5 小时。三条时长接近、帧率不同,这个设计让算法无法靠「帧数即阶段」这种捷径蒙混。

2.2 采集条件

同一排规格数字背后,是一整套固定下来的物理条件。这些条件决定了影像的纹理,也决定了什么样的算法会失败。

条件 取值 它带来的后果
显微镜平台 蔡司 LSM 510 Meta 点扫描共聚焦 逐点扫描成像,帧率受限于扫描速度
物镜 63 倍油镜,数值孔径 1.4 横向分辨率高,但景深浅,必须逐层扫
横向像素 0.09 微米 单个核直径约三十个像素,细节充足
z 向步进 1.0 微米 一个核只占三到四层,纵向细节严重不足
层数 三十一层至三十五层 覆盖约三十余微米的深度
通道 单通道荧光(核标记) 没有膜通道,无法做细胞级分割
位深 8-bit 动态范围窄,亮核易饱和
时间步长 一分钟或 1.5 分钟 快于此间隔的分裂中间态不可见

把这张表和 §3 的采样几何对照看,会发现两条约束是叠加的:物镜数值孔径高导致景深浅,所以必须多层扫描;层数有限导致纵向覆盖不足,所以贴顶贴底的核会被切掉。这些条件没有一个可以在后处理阶段修复,只能通过算法设计去容忍。

单通道这一点常被忽略。它意味着这套数据只能产出「核的谱系」,不能产出「细胞的谱系」。核与细胞是两个不同的对象:一个细胞在分裂之前核已经完成分裂,此后两个核共处一个细胞质内数十秒,此时核计数比细胞计数多一个。做细胞级分析必须补膜通道,而补膜通道需要另一次双色采集,这套序列没有。

2.3 目录结构与文件形态

官方压缩包解压后是固定层级,训练与测试两包只在有无标注目录上不同。

Fluo-N3DH-CE/
├── 01/                 #-- 原始影像,逐时间点一个 TIFF
│   ├── t000.tif        #-- 第 0 帧,一个 708x512x35 的 8-bit 体数据
│   ├── t001.tif
│   └── ...             #-- 训练序列共 250 个
├── 01_GT/              #-- 金标准(仅训练集有)
│   ├── SEG/            #-- 分割标注:完整区域,但只覆盖极少数细胞
│   │   ├── man_seg000.tif
│   │   └── ...
│   └── TRA/            #-- 追踪标注:全部细胞,但只是标记点
│       ├── man_track000.tif   #-- 每帧一张,像素值 = 该细胞在本帧的 track_id
│       ├── man_track001.tif
│       └── man_track.txt      #-- 一张表,一行一条轨迹
├── 01_ST/              #-- 银标准分割(多数算法投票得出的多数意见)
│   └── SEG/
├── 02/                 #-- 第二条训练序列,结构同上
├── 02_GT/
└── 02_ST/

一个细节值得单独指出:影像是一个时间点一个 TIFF 文件,每个文件内部是一个三维数组,而不是「一层一个文件」。这与很多人对显微数据的默认印象相反——共聚焦显微镜逐层扫描,直觉上应该是一层一张。打包者把同一时间点的所有层压进一个文件,是为了让「一帧 = 一个体数据」这个语义在文件系统层面就成立。

2.4 一条轨迹逐行解剖

追踪标注的核心是 man_track.txt,四列,无表头,每行描述一个细胞从出现到消失的完整生命。

#-- 从训练序列 01 的追踪标注里看前几行
head -5 01_GT/TRA/man_track.txt
#-- 输出形如:
#-- 1    0  218    0      <- 谱系根:第 0 帧出生,第 218 帧消失,无父
#-- 2    0  103    0      <- 另一条根,早期就终结
#-- 3    0   30    0
#-- 4   31  141    3      <- 父是 3:第 3 号在第 30 帧结束后分裂成 4 号与 5 号
#-- 5   31  145    3

四列的含义分别是:轨迹编号、出生帧、消失帧、父轨迹编号。

前三列是位置,第四列是拓扑。有了第四列,一张扁平的轨迹表立刻变成一棵树:编号为 0 的是根(极体或残留),父列为 0 表示非分裂产生的起点。任何一条「同一父亲、同一出生帧」的两行,就是一次分裂的两个产物。整棵树不需要额外文件,从四列数字里就能重建。

#-- 从 man_track.txt 重建分裂树并统计,无需影像即可运行
from collections import defaultdict

rows = []
with open("01_GT/TRA/man_track.txt") as fh:
    for line in fh:
        tid, t_birth, t_end, parent = (int(x) for x in line.split())
        rows.append((tid, t_birth, t_end, parent))

by_tid = {r[0]: r for r in rows}
children = defaultdict(list)
for tid, _, _, parent in rows:
    if parent != 0:
        children[parent].append(tid)

#-- 每个父轨迹应当恰好有两个子(偶有多于两个,属于终止+重播的修正)
splits = [(p, sorted(c)) for p, c in children.items() if len(c) == 2]
roots = [r[0] for r in rows if r[3] == 0]
print(f"轨迹 {len(rows)} 条,分裂 {len(splits)} 次,根 {len(roots)} 个")
print(f"最长存活 {max(r[2] - r[1] for r in rows)} 帧")

这段代码是整个数据集最实用的一段:不加载一个体素,就能拿到分裂次数、树深、各分支寿命。多数论文里的「谱系拓扑分析」其实就是这几行。

2.5 与同类资源横向比较

资源 形态 谱系粒度 覆盖范围 许可
Fluo-N3DH-CE 4 条三维延时序列 数值 track_id,无名字 每条约 4 小时,数百细胞 研究免费,其他用途须许可
Waterston 系完整胚胎谱系 逐核位置表 + 影像 有 Sulston 名,可到数百细胞 单胚胎全流程 分散在各实验室站点与附录
单细胞分辨率基因表达图谱 表达矩阵 与谱系名对齐 数百个细胞 随论文
胚胎形态学图谱(4D 分割) 分割后的细胞表面 与谱系名对齐 全胚胎 随论文与站点
全脑钙成像(成年) 逐帧神经元活动 神经元名 头部神经节 见对应词条

读法是一句话:要算法,用这一套;要生物学命名,用另外几种。 这一条界线在 §6 还会再划一次,因为它是误用率最高的一处。

§3 第一层:影像侧——它拍下了什么,没拍下什么

3.1 这一层回答的问题

做视觉算法的人第一个问题永远是「图像长什么样」。这一层不谈谱系,只谈原始数据——因为超过一半的失败案例不是算法不够强,而是对成像先验的判断就错了。

3.2 采样几何:为什么各向异性是关键

横向像素 0.09 微米,z 向步进 1.0 微米,比例一比十一。这意味着一个球形细胞核在这样的采样下会变成一个被压扁的椭球:xy 平面上看起来直径三十来个像素,沿 z 只有三到四层。三维各向同性核卷积(比如常见的 3×3×3)会把 z 向的邻近层混在一起,等于对每一层的邻层做了大幅模糊。

处理路径因此分两派:

路线 做法 代价 何时选它
各向异性卷积 用 3×3×1 之类的非对称核 需改动网络结构 z 层数少、细胞核扁,这是最忠实的一派
重采样到各向同性 z 向插值放大约十一倍 体素数暴涨,内存压力大 已有成熟的三维网络且不想改结构
逐层二维处理再缝合 每层单独分割,跨层用连通域合并 层间断裂多 只想做检测不做分割

这三派在同一份数据上的分数差异,很大一部分来自采样几何而非网络能力。这一点在比对榜单时必须记住:不同年份的提交,前处理未必一样。

3.3 信号衰减:一个被低估的失败源

荧光在细胞核每次分裂时被摊薄到两个子核里,核体积也相应变小。结果是同一胚胎在序列前段和后段的信噪比完全不同:

  • 前段:核大而亮,相邻核之间有明确暗隙;
  • 中段:核变小,暗隙收窄,两个刚分裂的姐妹核常常粘连;
  • 后段:部分核的信号弱到与背景噪声同量级,靠形状已不可分,只能靠时间连续性推断。

公开文献在描述这套数据时提到,其信噪比约 6.74 dB,并且明确点出「荧光在细胞分裂时会衰减,细胞越变越小」这两条难点。这两条不是可选的注解,而是算法设计的硬约束:任何只用单帧信息的方法,都会在后段系统性失败。

3.4 视野与边界

z 层数三十五层、层距一微米,加上横向约 0.09 微米,可算出一个约 64×46×35 微米的三维视野。这个体积能否装下整个胚胎?早期胚胎可以,到了细胞数增多、胚胎被卵壳撑到接近百微米时,边缘细胞可能贴住视野边界甚至被切掉。

边界类型 表现 对算法的后果
z 向上下截断 贴近顶/底的核只出现半个 体积特征失效,按体积过滤会误删
xy 四周贴边 核中心在视野内、核体在视野外 分割指标被低估
卵壳反射 边缘处有弧形亮带 可能被误检为细胞
视野外的分裂 分裂发生在视野外,两个子核都不完整 追踪断开,计为漏检

这四类都不是算法能修的,只能靠预处理时把边界区标出来、在评估时单独处理。官方评测脚本对边界有专门规定,这也是提交前必须读评测文档的原因。

3.5 位深与动态范围的取舍

8-bit 意味着每像素只有 256 级。对荧光数据来说,这意味着动态范围被压得很窄:亮核的峰值容易饱和,暗背景的噪声又占了最低几级。

由此引出的实操建议:

  • 归一化不要用固定阈值(如 0 到 255 线性拉伸),要按分位数裁切,因为不同序列的整体亮度不同;
  • 后段暗核需要局部对比度增强,但全局增强会把背景噪声一起抬起来;
  • 若做多序列联合训练,必须逐序列归一化,否则模型会学到「哪个序列更亮」这种无意义特征。

3.6 这一层的边界小结

影像侧的核心事实可以压成三句:采样是各向异性的,信号是随时间衰减的,边界是有截断的。 三条都不在标注里,只能从原始数据本身读出来。任何只用标注做实验、不看影像的人,都会在这三处翻车。

§4 第二层:标注侧——三种真值,三种残缺

4.1 这一层回答的问题

有了影像,第二个问题是「标准答案在哪、有多可信」。这一层的答案不在某个文件里,而在官方那套定义里:同一份数据有三种不同性质的标注,各自残缺的方向不同。理解它们的残缺方向,比理解它们的格式更重要。

4.2 三种真值的定义

官方的说法很清楚,把它们排在一起看:

名称 制作方式 覆盖 精度 用于评测什么
金标准追踪标注 人类专家共识或多专家多数意见 真实数据下覆盖全部细胞实例 只到标记点,区域信息很差 检测 DET、追踪 TRA
金标准分割标注 人工逐核勾画 只覆盖极少数细胞 区域精确 分割参考
银标准分割标注 多届参赛算法结果的多数意见 覆盖良好 区域信息有限 补足分割覆盖不足

关键在那句「真实数据的金标准追踪标注覆盖全部细胞实例,但区域信息很差」。翻译成实务语言:

你可以相信每一个细胞都被数到了,但不能相信任何一个细胞的轮廓是准的。

反方向的银标准则是:轮廓大致可用,但它是算法投票的产物,不是人工裁定,遇到算法集体出错的地方会一起错。

4.3 一个分裂事件的完整解剖

用一个具体场景说明三种标注如何咬合。假设某胚胎在第 118 帧时,编号 57 的细胞核分裂。

帧 117:man_track117.tif 中,该位置像素值 = 57(一个标记点)
帧 118:man_track118.tif 中,同一区域出现两个不同的值,例如 131 与 132
同时 man_track.txt 新增两行:
    131   118   190   57
    132   118   175   57

把四件事拆开看:

  1. 位置信息:标记点落在哪个体素,就是算法预测中心点应该命中的位置;
  2. 身份信息:57 变成 131 与 132,编号的连续性不表示空间连续性,不能靠编号接近猜关系;
  3. 拓扑信息:131 与 132 的父都是 57,这构成一次二分叉,是谱系树的一条边;
  4. 时间信息:出生帧 118、消失帧 190 与 175,说明两个姐妹细胞此后寿命不同。

四件事里,只有第 2、3 项是人工确认过的;第 1 项是「一个点」,不是「一块区域」;第 4 项里的消失不一定是死亡,也可能是移出视野或信号消失。消失帧不等于凋亡时刻,这是最常被误读的一条。

4.4 为什么金标准分割的覆盖极少

这条设计不是为了省事。真实数据里,人工勾画一个三维核的边界,从阈值试错到逐层修正,一个核要若干分钟;一条序列二百五十帧、每帧上百个核,全勾完是几万核的工作量。银标准的出现正是为了分摊这件事:用多届算法的多数意见替代人工,覆盖上去了,权威性下来了。

于是形成了一个必须接受的不对称:

想做的事 该信哪种标注 风险
训练分割网络 银标准(覆盖够) 学到的是多数算法的共识偏差
精修分割结果 金标准(精度高) 只能评估极少数细胞,泛化存疑
训练/评测追踪 金标准追踪(覆盖全) 只有点,边界得自己抠
评估分裂识别 金标准追踪的父子关系 分裂与「新生」可能混淆

4.5 与 name 体系的落差

由星形树可见,整个谱系是纯拓扑的。这套数据没有任何字符串形式的谱系名。而生物学界通用的谱系名体系(如 AB、P1、EMS、MS、E、C、D、P4 这些始祖细胞及其后代的拼接名)在这里完全缺席。

这意味着两件事:

  • 做拓扑分析没问题:树形结构、分支度、深度、寿命分布,都能从 track_id 直接算出;
  • 做生物学解释有问题:要知道「第 131 号是谁」,必须靠外部映射。而外部映射需要同一胚胎的完整谱系名文件,这套序列不提供。

映射的可行性还受限于第四条约束:不同胚胎的谱系名虽然一致,但 track_id 的编号规则与胚胎无关,两条序列的 131 号未必同名。跨序列对齐是另一个独立问题。

4.6 谱系树的四种读法

一棵只有编号的树,能读出哪些东西?至少有四个维度,它们对应四类不同的生物学问题。

读法 怎么算 对应的问题 常见陷阱
深度 从根到叶的最长祖先链长度 发育到第几层,胚胎走到哪个阶段 根可能不止一个,深度要按根分别算
分支时刻 每条子轨迹的出生帧 每次分裂发生在第几分钟 出生帧是帧号,乘以帧间隔才是真实时间
寿命分布 消失帧减出生帧 不同谱系的细胞周转速度差异 末期细胞的消失帧被序列截断,寿命被低估
对称性 姐妹两枝的最终细胞数之比 一次分裂是否等分 需要把「最终」定义为序列末仍存活的分支末端

四个维度里,对称性最容易做、也最容易做错。线虫胚胎的分裂并不总是等分:早期某些分裂产生一个大的前体与一个小的子代,两者的后代数量相差数倍。如果直接用「两个子枝的细胞数之比」衡量对称性,得到的数字混杂了「分裂是否等分」与「分支是否被截断」两件事,必须先把被序列截断的分支排除掉。

#-- 按根分别算深度与末端细胞数,绕开截断分支
from collections import defaultdict

rows = [(int(a), int(b), int(c), int(d)) for a, b, c, d in
        (l.split() for l in open("01_GT/TRA/man_track.txt") if l.strip())]
kids = defaultdict(list)
for tid, _, _, par in rows:
    if par:
        kids[par].append(tid)
span = {r[0]: (r[1], r[2]) for r in rows}
last_frame = max(r[2] for r in rows)

def walk(node, depth, out):
    #-- 只统计在序列末仍存活的末端,截断分支不计入对称性
    if not kids[node]:
        if span[node][1] >= last_frame - 1:
            out.append(depth)
        return
    for c in kids[node]:
        walk(c, depth + 1, out)

depth_of_leaves = []
for tid, _, _, par in rows:
    if par == 0:
        walk(tid, 0, depth_of_leaves)
print("最大深度", max(depth_of_leaves) if depth_of_leaves else 0)
print("完整末端数", len(depth_of_leaves))

这段代码只依赖那张四列表,不碰影像,可以在几毫秒内跑完。它给出的「最大深度」就是胚胎在序列结束时走过了多少轮分裂。

4.7 两条序列之间能不能对齐

不能。track_id 是逐序列各自编号的产物,同一枚胚胎的两条序列之间不存在编号对应。若要对齐,只有三条路可走,且每条都有代价。

对齐方式 做法 代价
时间对齐 按帧号直接配对 两条序列起点不同,帧号无共同基准
几何对齐 用早期细胞位置做刚体配准 胚胎在卵壳内会翻转,中期以后失效
拓扑对齐 按树的形状匹配 形状相似的分支极多,歧义严重

这也解释了为什么基准评测从不在序列之间做细胞对应:评测的单位是每条序列独立的追踪质量,而不是「同一细胞在两条序列里是否被认成同一个」。理解这一点,就不会花力气去做对齐——那是一个这套数据没有准备回答的问题。

§5 第三层:工具侧——怎么取、怎么算、怎么提交

5.1 这一层回答的问题

拿到影像与标注之后,实际动手会遇到一串琐碎但必答的问题:去哪下、怎么读、怎么用官方脚本算分、测试集怎么提交。这一层就是把这些答案固定下来。

5.2 下载与校验

#-- 两个包都必须下:训练包带标注,测试包只有影像
curl -O https://data.celltrackingchallenge.net/training-datasets/Fluo-N3DH-CE.zip
curl -O https://data.celltrackingchallenge.net/test-datasets/Fluo-N3DH-CE.zip

#-- 解压后先确认目录层级符合官方约定,否则评测脚本会找不到标注
unzip -q Fluo-N3DH-CE.zip -d train && unzip -q Fluo-N3DH-CE.zip -d test
ls train/Fluo-N3DH-CE/01_GT/TRA/man_track.txt
ls test/Fluo-N3DH-CE/01/t000.tif

注意两个包的目录名相同,解压到不同父目录才能并存。官方明确禁止克隆或再分发数据集及其标注,需要证明数据存在时应给出原始下载链接而不是镜像。

5.3 读取一个体数据

#-- 训练序列一第 0 帧:一个 8-bit 三维数组,形状为 (35, 512, 708)
import tifffile, numpy as np

vol = tifffile.imread("train/Fluo-N3DH-CE/01/t000.tif")
print(vol.shape, vol.dtype)          #-- (35, 512, 708) uint8
print(vol.min(), vol.max())

#-- 用分位数裁切代替线性拉伸,避免少数饱和体素压暗整体
lo, hi = np.percentile(vol, [1, 99.5])
norm = np.clip((vol - lo) / max(hi - lo, 1e-6), 0, 1)

形状的轴序是 z、y、x,这一点从 TIFF 的维度顺序直接来,不需要推测。若用常见的 xy 优先思维去 reshape,会把层与列搞反,得到一张有条纹的怪图。

5.4 用 track 表做一次完整验证

写算法之前,先验证自己读标注的代码是对的。

#-- 交叉验证:man_track.txt 的轨迹集合,应等于所有标记 TIFF 中出现的像素值集合
import pathlib, tifffile, numpy as np

tra_dir = pathlib.Path("train/Fluo-N3DH-CE/01_GT/TRA")
tracks_in_table = {int(l.split()[0]) for l in (tra_dir / "man_track.txt").read_text().splitlines() if l.strip()}

ids_in_masks = set()
for p in sorted(tra_dir.glob("man_track*.tif")):
    ids_in_masks |= set(np.unique(tifffile.imread(p)).tolist())
ids_in_masks.discard(0)          #-- 0 是背景

print(len(tracks_in_table), len(ids_in_masks))
print("只在表里:", sorted(tracks_in_table - ids_in_masks)[:10])
print("只在掩膜里:", sorted(ids_in_masks - tracks_in_table)[:10])

如果两边数量完全一致,说明标注内部自洽;若不一致,多半是某帧的掩膜被覆盖或编号溢出(16-bit 掩膜的编号上限是 65535,这套数据远未触及,但换到别的高密度序列就要当心)。

5.5 评测与提交

官方对每个数据集提供评估程序,输出 DET、SEG、TRA 三个原始指标与两个组合操作分(检测加追踪、分割加追踪)。提交走在线评测:把结果按约定目录结构打包上传,服务端在测试序列上跑同样的脚本。

三条实操提醒:

事项 说明
结果目录命名 必须与官方约定一致,01_RES 对应测试序列 01
提交频率 历史上有次数限制,超限会被拒;先本地在训练集上跑通再提交
榜单解读 不同年份的提交前处理不同,跨年份比分数只能定性看,不能精确比较

5.6 三个指标各自惩罚什么

官方给的三个指标不是三种「准确率」,而是三种不同性质的损失函数。把它们混着看,会得出错误结论。

指标 惩罚什么 放过什么 什么时候会异常低
检测 该有的核没被发现,或凭空多出来一个 两个核粘在一起算成一个(算一次漏检) 后段暗核消失
分割 预测区域与参考区域的交并比不足 区域略偏但重心正确 各向异性未处理,z 向过分割
追踪 跨帧链接错误、分裂未识别、轨迹断裂 单帧内的分割误差(只罚点) 分裂密集段
检测+追踪组合 以上两类各占一半 — 分裂漏识
分割+追踪组合 同上 — 两者都差时

一条实用的读法:先看检测,再看追踪。 检测低说明找不到核,追踪再高也没有意义;检测高而追踪低,说明问题集中在跨帧关联与分裂识别,这与后段信号衰减直接相关。两个组合分不要单独看,它们只是把两个原始指标平均了一次。

还有一个容易忽略的细节:追踪指标基于「标记点」计算,因此一个核的分割区域再差,只要重心对了,追踪分数不受影响。这意味着用分割+追踪组合分横向比较不同方法时,分割能力被追踪能力稀释了一半。要谈分割,就看分割指标本身。

5.7 与前代工具的关系

这套数据的影像风格与 StarryNite/AceTree 时代一脉相承:同一实验室(Waterston Lab)、同样的核标记策略、接近的层数与帧率。它的原始出处论文正是这条自动化路线的方法学论文。因此有一个容易被忽略的用法:

把 Fluo-N3DH-CE 当作 StarryNite 输出的「影像侧剪影」来看。

StarryNite 的产物是一长串逐帧逐核文本记录,外人很难直观理解它吃进去的是什么;而这套公开序列给出了同一时代、同一平台的原始影像,配合可读的 track 表,可以让后来者明白那套流水线面对的是什么样的困难——低信噪比、各向异性、分裂衰减,一样不少。

#-- StarryNite 的输入命名约定(每帧每层一个文件),与这里的打包方式不同
#-- tif/081505_t056_p14.tif 表示序列 081505 的第 56 帧第 14 层
#-- 若要把两者互通,需先按该约定把体数据拆层,再转回 ACE 可读的中间格式
python - <<'PY'
import tifffile, numpy as np, pathlib
vol = tifffile.imread("train/Fluo-N3DH-CE/01/t000.tif")
out = pathlib.Path("tif"); out.mkdir(exist_ok=True)
#-- 注释记号固定为 #--,与本文体例一致
for z in range(vol.shape[0]):
    tifffile.imwrite(out / f"ce_t000_p{z:02d}.tif", vol[z])
print("拆出", vol.shape[0], "层")
PY

§6 三条线的分工:胚胎谱系、连接组与全脑钙成像

6.1 库内已有的两条线

库内已有两条与秀丽隐杆线虫高度相关的资源,它们与这一条构成三角形的三个顶点,缺一不可。

资源 观测对象 时间维度 回答的问题
秀丽隐杆线虫连接组 成年个体的 302 个神经元及其化学突触与电连接 静态(跨若干发育阶段重建) 神经系统是怎么连的
秀丽隐杆线虫全脑钙成像 自由活动个体的头部神经元钙信号 秒级动态 神经活动在做什么
Fluo-N3DH-CE(本词条) 胚胎期全部细胞核的分裂史 分钟级动态 这具身体是怎么长出来的

三者的观测单位完全不同:一个是突触,一个是动作电位代理信号,一个是细胞核的分裂事件。把三者混谈是常见的错位。

6.2 一条时间轴上的三段时间

把三条线放到同一条生命时间轴上,分工立刻清楚:

受精卵 ── 胚胎期(本词条)──> 孵化 ── 幼虫期 ──> 成虫
          分裂 约五百次             │            │
          分钟级分辨率              │            ├── 连接组(静态结构)
                                    │            └── 全脑钙成像(秒级功能)

本词条的覆盖区间在最左端:受精后约数小时,细胞以分钟为单位不断翻倍。这一段里,神经还谈不上「活动」,最多是少数细胞在分化;连接组描述的是右端的成熟布线;钙成像则是在成熟布线上看信号如何流动。

有个细节值得点出:连接组的官方描述里提到其重建跨越了出生后若干发育阶段,也就是说连接组本身带有发育成分。但它记的是「连接随发育如何变化」,不是「细胞如何产生」。前者是布线演化,后者是细胞增殖,不是同一件事。

6.3 中间那条鸿沟:从细胞到回路

三者之间有一个真实存在、但很少有资源去填的空档:从最后一个分裂事件到第一条可测神经活动之间的那段。

胚胎末期细胞停止分裂、开始分化,神经元伸出轴突、寻找靶点、建立突触。这一段的影像学证据需要同时具备高分辨与长时间跨度,光学显微镜在这段往往失焦、光毒性与信号衰减都会累积。因此多数胚胎谱系研究止步于细胞数达到数百的时点,衔接后续发育需要靠幼虫期的独立成像。

这个空档的存在意味着:任何声称「从谱系直接推出连接组」的说法都缺少公开可查的中间证据链。三者能做的互补,是各管一段,而不是彼此推导。

6.4 检索路径

站内检索这三条线的最佳路径,按需求分:

你的问题 该进哪条
细胞分裂如何被自动追踪 本词条
神经如何跨突触传递 连接组
行为如何由神经活动编码 全脑钙成像
细胞追踪算法在通用基准上的排行 Cell Tracking Challenge
三维细胞核实例分割的做法 NucMM 三维神经元核
二维明场细胞分割 LIVECell
通用显微实例分割赛题 NeurIPS 2022 细胞分割挑战
细胞内部结构的参考尺度 Allen 细胞影像集合
单细胞层面的物种级图谱 小鼠细胞图谱

6.5 三条线的共同盲区

三条线共享一个盲区:都只覆盖实验室条件下的标准品系。胚胎谱系来自被筛选过的健康胚胎,连接组来自固定后的同源个体,钙成像来自几种转基因品系。野生型变异、环境交互、病理状态,三者都不覆盖。要做这类问题,得去找各自方向的专门资源。

§7 质量评估与已知局限

7.1 阅读本节前需要知道的一件事

不要用「机器学习数据集」的框架评价这套资源。 它既不是训练集也不是榜单冠军的垫脚石,它是一套考题——它的价值在于难度与不可替代性,不在于规模与标注密度。

两种最常见的错位评价:

错位评价 为什么错
「只有四条序列,太小了,没有训练价值」 它的定位是评测基准,四条固定序列正是为了让所有方法在同一块地上比
「标注只有点没有区域,质量不行」 三种真值各司其职,追踪评测本来就只需要点与拓扑,不需要区域

一旦接受了「这是考题」这个前提,接下来的局限评估才有意义。

7.2 逐条局限

规模局限。 四条序列,其中两条无标注。作为算法回归测试够用,作为统计样本远远不够。

时间局限。 每条约四小时,帧间隔 1 至 1.5 分钟。比帧间隔更快的分裂过程(核膜破裂到两个子核分离的中间态)在大部分情况下只体现为「上一帧一个、下一帧两个」,中间态不可见。

空间局限。 z 向一微米,层数三十余层。直径小于两微米的后期细胞核在 z 向只占两三层,体积测量误差极大。

标注局限。 追踪标注只给点,分割标注只给极少数细胞;消失帧不等于凋亡;银标准是算法共识而非人工裁定。

命名局限。 无 Sulston 式谱系名,跨序列 track_id 不可比。

许可局限。 研究免费但非 CTC 相关的公开科学使用须获许可;商业使用须同时取得主办方与数据提供方许可;禁止克隆再分发。这比常见的知识共享许可严格得多。

7.3 DAIMS 视角下的元数据成熟度

DAIMS(Data Management and Sharing)框架关注元数据的完整与可追溯,用它逐项过一遍,能看出这套资源的长处与短处。

维度 现状 判断
数据来源可追溯 官网列出实验室、显微镜型号、物镜、体素尺寸、时间步长、参考文献 强
许可可追溯 使用条款写在同一页面,逐条编号 强
版本可追溯 随基准版本更新,但单数据集无独立版本号与变更日志 弱
标注流程可追溯 有独立的过程文档与命名约定文档 较强
技术元数据完整 位深、尺寸、轴序可从文件读,但无独立元数据文件 中
标识符稳定 以数据集缩写为标识,无 DOI 级别的持久标识 弱
引用机制 要求引用基准论文并致谢,未提供 DataCite 式引用格式 中

这张表暴露的短处是持久标识:四条序列没有各自独立、可长期解析的标识符,一旦主办方站点迁移,引用链就断了。使用者在论文方法段最好同时写下数据集缩写、官网页面与引用论文三样,而不只是一个 URL。

7.4 外部验证矩阵

不同来源对同一事实的交叉印证,能判断哪些数字可信。

事实 官方页面 第三方文献 一致性
训练两条分别 250 帧 官网 3D 数据集页 多篇方法论文的表格 一致
序列尺寸 708×512×35 与 712×512×31 官网 方法论文表格 一致
帧间隔 官网标 1 分钟并注 1.5 分钟 文献述为每分钟或 1.5 分钟 一致(对应训练/测试之差)
体素 0.09×0.09×1.0 微米 官网 文献引用同值 一致
测试序列帧数 官网未直接列出 文献表列 190 与 140 单一来源,须谨慎
信噪比 6.74 dB 官网未列 一篇方法论文给出 单一来源
金标准追踪覆盖全部细胞 官网标注页面明示 通常未重复 官方口径

两条单一来源的数字(测试帧数、信噪比)在本文按「文献报告值」处理,不作为官方规格。这也是引用纪律的一部分:官方没写的,注明是谁写的。

7.5 一句话的质量判断

它是这类任务的标准难点之一:规模小到可以完整跑,难度大到不能靠调参蒙过,且被同一套评测脚本反复测量了十年以上。这三条合起来,构成了不可替代性。

§8 版本与生态

8.1 它从哪来

故事起点是 1983 年那一份全谱系图。Sulston 与同事用微分干涉显微镜一只一只胚胎盯着看,把每一个细胞的名字、出生时刻、分裂次数、命运记下来,写成了整个生物学界的经典。那份工作的局限也很清楚:它到细胞数达到数百时就到了人的眼力极限。

二十年后,有人决定用机器接管后半段。2006 年,Bao 等人发表了自动谱系追踪的完整流程:用组蛋白-GFP 标记核,每分钟采集一次完整三维堆栈,用 C 语言写的追踪程序把所有核在时间轴上串起来,再用 Java 写的树形浏览工具做人工校正。2008 年,同一团队把方法推到表达谱层面,并给出了本文所指的四条序列的原始采集;同年,这套数据被收进刚成立不久的细胞追踪基准。

8.2 它靠什么活着

三个支点:

  • 主办机构承载:马萨里克大学的一个专门研究组长期维护基准,有固定人员、固定评测服务器、固定的月度评估流程;
  • 评测机制闭环:提交、打分、榜单、复盘,参与者需要分数,主办方需要参与度,形成正反馈;
  • 下游依赖刚性:任何声称「在细胞追踪上有效」的方法,如果没有这套基准上的数字,审稿人会直接要求补。

还有一层不太显眼但很重要的:这套基准的方法论文本身被引用极广,数据集与论文绑在一起传播,等于每引用一次论文就提醒一次数据集的存在。

8.3 生态位

在细胞追踪的生态里,它占据「三维、高密度、天然增殖目标」这一格。

生态位 代表序列 特点
二维稀疏 多种二维荧光序列 入门难度
三维高密度、目标数恒定 培养细胞序列 分割难、追踪易
三维高密度、目标数递增 本词条 分割难、追踪难、还有分裂识别
光片、整胚胎 果蝇等序列 体积大、视野宽
合成数据 模拟序列 标注完美、真实度存疑

目标数递增这一格是最稀缺的:真实生物发育都是增殖过程,但多数基准数据为了控制难度选用了不分裂或分裂极少的样本。这一格的存在,使得「分裂识别」成为一个可被公正比对的独立能力。

8.4 十年榜单告诉了我们什么

把历年提交按指标拉通看,有一条趋势相当稳定:检测指标的提升明显快于追踪指标。原因不难理解——检测是单帧问题,可以直接借用分割网络的进展;追踪是序列问题,需要处理分裂歧义,而分裂歧义在低信噪比后段几乎是不可判定的。

这解释了为什么这套数据至今仍在榜:单帧能力已经饱和,序列能力还没有。

8.5 与周边资源的衔接

它的上游是影像采集平台(共聚焦、光片、转盘),下游是各类三维跟踪与谱系分析工具。与它衔接最紧的两类资源是:

  • 同实验室的完整胚胎谱系数据(有谱系名,但分散在论文附录与实验室站点);
  • 后续的整胚胎形态学图谱(把核追踪扩展到细胞膜分割,得到细胞级而非核级的形态)。

后者是一个重要的演进:核追踪只能得到细胞核的位置与谱系,得不到细胞形状;补上膜通道之后,才能研究细胞如何挤压、如何排列、如何形成组织。这一步由后来的研究团队完成,也在别处公开。就本文所写的这四条序列而言,它们停在核级。

8.6 为何它能持续

一句话:它是一件基础设施,不是一份产品。 产品靠更新维系,基础设施靠依赖维系。只要还有人写细胞追踪算法,只要审稿人还会问「在这个基准上什么分数」,它就会一直在线。

§9 使用指引

9.1 三种角色的路径

角色 第一周该做什么 不该做什么
算法研究者 下载训练包,跑通官方脚本,拿一条平庸的基线分数 一上手就改网络结构
生物学研究者 先用 track 表重建谱系树,看分支与寿命分布 直接把 track_id 当谱系名写进论文
工程实现者 先把读取与验证代码写对(§5.4 那段),再谈模型 在没验证标注自洽前就训练

9.2 最小实现:从影像到谱系树

下面这段把「读一帧、合并成体、连通域打标、按 track 表建树」四步串起来,可完整运行。

#-- 依赖:numpy、tifffile、scipy
python - <<'PY'
import tifffile, numpy as np
from scipy import ndimage as ndi
from collections import defaultdict

root = "train/Fluo-N3DH-CE/01"
vol  = tifffile.imread(f"{root}/t120.tif").astype(np.float32)

#-- 分位数归一化后做阈值分割,得到候选核区域
lo, hi = np.percentile(vol, [2, 99.5])
mask = (vol - lo) / max(hi - lo, 1e-6) > 0.25

#-- 三维连通域打标;z 向按 1.0/0.09 缩放后做形态学开运算,减少层间断裂
st = np.zeros((3, 3, 3), bool); st[1, 1, :] = True; st[1, :, 1] = True; st[:, 1, 1] = True
lab, n = ndi.label(ndi.binary_opening(mask, st))
sizes = ndi.sum(mask, lab, range(1, n + 1))

#-- 体积下限按体素计:核半径约 1.5 微米时约 1600 体素,放宽到 300 容忍后段小核
keep = [i + 1 for i, s in enumerate(sizes) if s >= 300]
print(f"第 120 帧候选 {n} 个,按体积过滤后 {len(keep)} 个")

#-- 读 track 表,输出这一帧里仍存活的轨迹编号,供跨帧关联对照
alive = [int(l.split()[0]) for l in open(f"{root}_GT/TRA/man_track.txt")
         if int(l.split()[1]) <= 120 <= int(l.split()[2])]
print(f"这一帧金标准存活轨迹 {len(alive)} 条")
PY

输出的两个数字——候选数与金标准存活数——就是最粗的基线。二者差距往往在数十个量级,这个差距里既有漏检也有误检,是改进的起点。

9.3 在 AI 流程中的位置

在典型的三段式流程里,这套数据处在中间偏后:

合成数据预训练 → 本数据集微调与评测 → 真实实验影像部署
                      │
                      └── 通过官方脚本给出可比的 DET/SEG/TRA

它的作用是提供一个不可自说自话的参照。前段可以随便造数据,后段可以各家自定义评估,中间这一段必须是公共的,否则跨团队的方法无法比较。

9.4 五个容易踩的坑

坑 表现 绕法
轴序搞反 读出的体数据像条纹布 先打印 shape 并与官方页面尺寸对照
逐层二维处理 层间断裂,体积偏小 三维连通域或 z 向插值
用消失帧当凋亡 凋亡率虚高 结合视野边界与信号强度再判
跨序列比 track_id 结论完全错乱 只比拓扑,不比编号
用测试集调参 榜单分数虚高 测试集只在最终提交时用一次

9.5 如果只做一件事

把这四条序列当成回归测试。每次改动算法,跑一遍官方脚本,看三个指标是否退步。这件事不需要任何生物学知识,却能挡住绝大多数「改了反而更差」的改动。

§10 AI 使用声明

项目 说明
性质 公开的三维细胞追踪评测序列,非训练语料库
主要用途 三维细胞核检测、分割、跨帧追踪、分裂识别的训练与评测
不建议用途 谱系名映射、群体统计、跨物种泛化声明、商业再分发
AI 相关风险 track_id 被误当作生物学标识符写入结论
伦理 无人类数据;涉及动物实验伦理时按原始论文的实验规范引用
引用要求 引用基准论文并致谢数据来源;原始采集引用方法学论文
版本 以主办方当前打包为准,无独立版本号
状态 在线、可下载、持续接受提交与评估

常见误读

常见说法 实际情况 证据
「这是 C. elegans 的全胚胎发育记录」 每条序列约四小时,止于数百细胞段,未覆盖到孵化 帧数与帧间隔可算出总时长
「标注了谱系名,能直接查 ABala」 标注只有数值 track_id 与父子关系,无任何谱系名字符串 man_track.txt 四列格式
「track 表里消失就是细胞死了」 也包含移出视野、信号衰减无法追踪 官方只定义起止帧
「金标准分割能评估我的分割精度」 金标准分割只覆盖极少数细胞,评测分区要分清 官方标注页面明示覆盖极有限
「四条序列太少,没有训练价值」 定位是评测基准不是训练集,固定序列才能公平比较 基准设计原则
「这只是二维切片的堆叠」 每帧是真正的三维体积,分区与相邻层都有结构 文件维度与官网尺寸
「和连接组/钙成像是一回事」 观测单位分别是细胞核、突触、钙信号,时间尺度差几个数量级 三条线各自的元数据
「可以随意镜像给同事」 官方明令禁止克隆再分发,须给原始链接 使用条款第 5 条
「split 与 merge 是同一类错误」 分裂是正常生物学事件,须单独识别;合并是错误 追踪任务的评分定义

附录 A 数据组织与文件格式

文件或目录 内容 格式 是否训练集独有
01/ 原始影像,逐时间点一个文件 8-bit TIFF 体数据 否
01_GT/SEG/ 金标准分割,覆盖极少细胞 TIFF 掩膜 是
01_GT/TRA/ 金标准追踪,标记点 TIFF 掩膜 是
01_GT/TRA/man_track.txt 轨迹表,四列 纯文本 是
01_ST/SEG/ 银标准分割 TIFF 掩膜 是
02/、02_GT/、02_ST/ 第二条训练序列 同上 是

关于格式的两点补充:掩膜编码用 16-bit,0 为背景,非零值为 track_id 或标签号;体数据的轴序为 z、y、x,与多数深度学习框架默认的通道优先不同,送入模型前必须转置一次。

附录 B 谱系命名与主键

概念 这套数据里 生物学惯例里
唯一主键 数值 track_id,序列内唯一 谱系名字符串,如 ABala
父子关系 man_track.txt 第四列 名字前缀本身编码祖先
跨序列可比性 不可比,编号各自独立 同名即同源
时间标识 帧号 分钟或细胞周期数
细胞类型 无 由谱系名与命运表给出

这张表说明了一个实务要点:在这套数据里,主键是纯粹的追踪编号,没有生物学含义。 任何把编号当名字用的写法,都会在跨序列分析时崩塌。

附录 C 术语表

术语 解释
谱系 从受精卵出发、由历次分裂构成的树
谱系名 由祖先名字拼接而成的细胞标识,如 ABalapp
金标准 人类专家共识形成的参考标注
银标准 多算法投票形成的多数意见标注
标记点 细胞核的位置点,不含区域
track_id 追踪编号,一个细胞从出生到消失的唯一标识
分裂事件 一个父细胞产生两个子细胞,在表里表现为两行同父
各向异性体素 三个方向的采样间距不同
帧间隔 相邻时间点之间的真实时间差
DET 检测准确度指标
SEG 分割准确度指标,基于区域重合
TRA 追踪准确度指标,含分裂与链接
体数据 一个时间点的完整三维体积
卵裂 早期胚胎的快速分裂阶段
极体 减数分裂遗留的小体,常被误检为细胞
分裂衰减 荧光被分摊到两个子核导致信号变弱
消失帧 轨迹在表中结束的帧,不必然等于死亡
测试集 标注不公开、只接受在线评测的序列

附录 D 常见误读 FAQ

Q1:这套序列能完整重建一棵谱系树吗?
能,但只能在拓扑层面。用 man_track.txt 的父子列可以完整重建二叉树的形状、深度与各分支寿命,无法得到谱系名。

Q2:为什么训练集和测试集的帧间隔不同?
官方在时间步长一栏同时写了 1 分钟与 1.5 分钟,对应训练与测试两批采集条件不同。这本身是一个刻意的异构设计,防止算法依赖固定帧率。

Q3:金标准分割只覆盖少数细胞,还怎么训练分割模型?
实际做法是用银标准训练、用金标准做精评,或者两者混合。官方的分割评测本身也分金标准分区与银标准分区。

Q4:测试集的标注能不能拿到?
不能。测试集只发影像,评测在主办方服务器上进行。这是榜单公平性的前提。

Q5:能用来做细胞类型分类吗?
不能。数据里没有细胞类型标签,也没有表达信息,只有核的位置与分裂关系。

Q6:和另一条 2D 的 HeLa 序列比,难度差多少?
不在一个量级。二维序列目标稀疏、无三维歧义;这一条要同时处理高密度、各向异性与分裂。

Q7:我可以把数据放进公司内部训练集群吗?
需要看用途。与基准参赛相关的内部使用通常被允许;商业用途须取得双重许可,先问再放。

Q8:为什么文档里强调「消失不等于死亡」?
因为轨迹结束的原因有四种:分裂、凋亡、移出视野、信号太弱。表中只记起止帧,不记原因。

Q9:这套数据适合做视频生成或预测模型吗?
可以作为数据来源,但没有为该任务设计的划分与指标,需自行建立评测协议。

Q10:有没有覆盖更晚阶段的同类公开序列?
有,但多为单一论文配套发布、格式各异,没有一个统一的稳定入口,这正是这套序列在公开基准中的位置所在。

附录 E 许可与引用

使用条款的关键句可以概括为五条:

条款 内容
引用义务 使用数据集产生的发表须引用基准论文并致谢来源
基准相关用途 参赛、准备提交、报告成绩,无需另行许可
非基准的公开科学使用 须取得主办方明确许可
商业使用 须取得主办方与数据提供方双方的许可
再分发 禁止克隆数据集或其任何部分,含参考标注;需说明存在时给原始链接

引用建议写法(同时给出数据集与两篇方法学论文):

Maska M, Ulman V, et al. The Cell Tracking Challenge: 10 years of objective
benchmarking. Nature Methods, 2023. doi:10.1038/s41592-023-01879-y

Murray JI, Bao Z, Boyle TJ, et al. Automated analysis of embryonic gene
expression with cellular resolution in C. elegans. Nature Methods, 2008;5(8):703-709.

数据来源:Cell Tracking Challenge, dataset Fluo-N3DH-CE,
https://celltrackingchallenge.net/3d-datasets/

最后一件事:如果论文里出现了谱系相关的结论,请明确写出「谱系以数值编号表示,未映射至经典谱系名」,否则审稿人有权要求补充映射表,而这份数据本身不提供。

编辑说明

核验时间:2026-10-29。核验方式:以 Cell Tracking Challenge 官方站点三页(3D 数据集页、标注说明页、数据集说明页)为主,辅以两篇第三方方法学论文的表格互校。序列尺寸、帧数、体素、时间步长取自官方页面;测试序列帧数与信噪比仅有第三方文献来源,正文已标注为文献报告值。未覆盖内容:未实际下载压缩包核对内部文件数与校验和(下载域名在本次核验环境下不可达);未逐帧统计细胞数量与分裂次数,因此正文不给出任何细胞总数的绝对值。


相关数据集导航

以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:

  • tabula-sapiens — 共享标签:基因组学与多组学 / 单细胞基因组学
  • single-cell-portal — 共享标签:基因组学与多组学 / 单细胞基因组学
  • hcl — 共享标签:基因组学与多组学 / 单细胞基因组学
  • single-cell-expression-atlas — 共享标签:基因组学与多组学 / 单细胞基因组学
  • cellsnvreg — 共享标签:基因组学与多组学 / 单细胞基因组学
  • cellxgene-census — 共享标签:基因组学与多组学 / 单细胞基因组学
  • hra-knowledge-graph — 共享标签:基因组学与多组学 / 单细胞基因组学
  • adrenal-gland-atlas — 共享标签:基因组学与多组学 / 单细胞基因组学
  • expression-atlas-legacy — 共享标签:基因组学与多组学 / 单细胞基因组学
  • expression-atlas — 共享标签:基因组学与多组学 / 单细胞基因组学

导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

返回 AI-Ready 数据集