信息速览
果蝇全脑功能成像没有单一官方库。Aimon 等人 2019 年的全脑成像、Mann 等人 2021 年的全脑活动图谱、Clandinin 实验室 2020 年起的一系列行走记录、以及 Janelia 与 Princeton 合作的视叶与中央脑长期记录,分散在期刊补充材料、实验室自建站点与两个不同的通用档案库里,彼此不覆盖,也没有一个机构在做跨库归并。想按「全脑 + 双光子 + 有行为」这个条件去搜,你会同时撞上十几份规模、格式、许可都不一样的资源。
本词条写的是其中目前体量最大、入口最稳定、元数据最完整的那一份:DANDI:000727,标题为 Mapping the Neural Dynamics of Locomotion across the Drosophila Brain。它来自斯坦福大学 Clandinin 实验室,覆盖 9 只头部固定、在气浮球形跑步机上行走的成年果蝇,每只一个体积双光子光生理文件加一个行为录像文件,共 18 个文件、609.6 GB,发布于 2024 年 1 月,许可 CC-BY-4.0,DOI 10.48324/dandi.000727/0.240106.0043。
选它的理由不是「它最有名」,而是三件事同时成立:有跨机构档案库托底的稳定入口(DANDI 的版本化与 DOI),有完整的 NWB 标准化封装(不依赖实验室自建站点是否还活着),以及一笔别处难以补上的能力——它的坐标空间可以被配准到 FlyWire 连接组。一屏速览见下表。
§1 数据集速览:它到底是什么
1.1 一句话定位
DANDI:000727 是一个实验室把「一只果蝇在跑步机上走路时整个脑子同时在发光」完整录下来并标准化成 NWB 的产物,一共九只。
它要回答的问题不是「果蝇的神经网络长什么样」——那是 FlyWire 的事,是电镜拍死细胞拍出来的静态接线图;也不是「某个蘑菇体神经元对气味怎么反应」——那是单细胞成像与电生理的事。它要回答的是:
当一只果蝇在黑暗中自己决定往前冲、转弯、停下的时候,它整个中央脑里哪些地方的活动在同时变?这些变化在空间上是怎么排布的,在时间上是先于、同步于还是滞后于动作?
这个问题在 2020 年之前没有人在任何一个物种上完整回答过。小鼠全脑有七千万个神经元、猕猴更多,光学显微镜一次只能看到其中一小片;果蝇约十四万神经元,尺寸刚好卡在「整个中央脑能塞进一个视野、又不至于简单到没有行为」的位置上。
1.2 为什么它不是「又一个神经影像数据集」
库内绝大多数脑影像资源回答「哪里激活了」,观测单位是毫米级或毫米级的体素,在一个人做任务的时候扫一遍。这份数据的观测单位是 2.6 微米的体素,观测对象是一只真实行走的昆虫,时间上每秒扫近两遍整个脑。
| 维度 | 典型人类脑影像 | DANDI:000727 |
|---|---|---|
| 物种 | 人 | 黑腹果蝇 |
| 神经元总数 | 约 860 亿 | 约 14 万 |
| 一次观测的覆盖比例 | 全脑,但体素毫米级 | 中央脑整体(不含视叶),体素 2.6 微米 |
| 时间分辨率 | 秒级(fMRI 的 TR 通常 1–2 秒) | 0.56 秒一个完整脑体积 |
| 单次录制长度 | 数分钟到数十分钟 | 30 分钟,九只加总约 270 分钟 |
| 行为同步 | 常缺失或只有离线录像 | 50 Hz 球体转动,逐帧对齐 |
| 能否知道每个单元的名字 | 不可能 | 不可能(体素级),但可借连接组近似 |
最后一行是这份数据最容易被高估也最容易被低估的地方。低估它的人会说「分辨率这么粗,连单个细胞都分不开,能有什么用」;高估它的人会说「有连接组就能给每个体素贴上名字」。真相在两者之间,§4 与 §5 会逐层拆开。
1.3 三十秒决策卡
| 你的处境 | 这份数据能帮你什么 |
|---|---|
| 想研究「行为如何在脑内被整体表征」 | 132 万体素 × 约 3,200 个时间点 × 9 只,直接给你现成的时空张量 |
| 手里有功能连接与结构连接的对比方法 | 它的坐标空间能配准到 FlyWire,是少数能同时拿到两边的东西 |
| 做体积配准或运动校正算法 | 九只都是活体体积扫描、都有结构通道,天然适合跨被试验证 |
| 要验证一个「预测编码器能否从连接组推出活动」的想法 | 有区域级功能连接的基准结果可对照 |
| 想找单细胞级的果蝇活动 | 给不了你。体素 2.6 微米,一个神经元胞体直径约 5 微米,混叠不可避免 |
| 想做毫秒级脉冲时序分析 | 也给不了。1.8 Hz 的体积率意味着最快也只能看到亚秒尺度 |
1.4 明确不适合谁
如果你的需求是「把每个体素对应到一个有名有姓的神经元」,这份数据给不了你,而且不是「再努力一点就能做到」的问题。BIFROST 论文自己写明,把功能数据配准到连接组之后,通常仍然无法把单个功能体素的信号指派给某个特定神经元。可做的是「一簇相关体素对应一小群候选神经元」,这是群体级的推断,不是细胞级的确定。
如果你的需求是「果蝇自由活动时的全脑活动」,也给不了。采集时果蝇头被固定,后头壳被去掉,身体站在一个气浮小球上,在黑暗里走。它能动的是腿,不能动的是头和眼。视叶不在视野里,视觉通路在这里基本是静默的。
如果你的需求是长时程昼夜节律或睡眠的纵向记录,更给不了。九只、每只 30 分钟、集中在 2020 年上半年,没有任何跨天追踪。
1.5 版本时间轴
| 时间 | 事件 | 影响 |
|---|---|---|
| 2020-02-28 | 最早的一次会话(sub-fly-087) |
进入今天的 9 只 |
| 2020-07-04 | 最后一次会话(sub-fly-105) |
采集窗口约五个月 |
| 2022-03-20 | 论文预印本上线 bioRxiv | 方法细节与「约 200 亿次测量」的口径首次公开 |
| 2023-12-10 | DANDI 上创建 dandiset 000727 | 只有元数据,尚无文件 |
| 2024-01-06 | 版本 0.240106.0043 定版,18 个文件全部上传 | 当前唯一可下载版本,同时铸 DOI |
| 2024-02-26 | Current Biology 正式发表 | 数据集获得正式学术引用锚点 |
| 2024-11 | BIFROST 论文在 PNAS 发表 | 配准到连接组的精度被写进方法学文献 |
§2 数据构成与规格
2.1 十八个文件的完整构成
DANDI 资产清单接口在 2026-10-29 返回的条目数是 18,目录结构非常规整:9 个受试者目录,每个目录里一个 .nwb 光生理文件和一个 .avi 行为录像。
| 受试者 | 会话时间戳 | NWB 大小 | AVI 大小 |
|---|---|---|---|
sub-fly-087 |
20200228161226 | 69.0 GB | 约 0.2 GB |
sub-fly-089 |
20200618081653 | 66.6 GB | 约 0.2 GB |
sub-fly-094 |
20200620122048 | 67.2 GB | 约 0.2 GB |
sub-fly-097 |
20200627113329 | 66.9 GB | 约 0.2 GB |
sub-fly-098 |
20200627130208 | 67.2 GB | 约 0.2 GB |
sub-fly-099 |
20200627142647 | 68.2 GB | 约 0.2 GB |
sub-fly-100 |
20200702083849 | 67.7 GB | 约 0.2 GB |
sub-fly-101 |
20200702100612 | 67.8 GB | 约 0.2 GB |
sub-fly-105 |
20200704142706 | 67.3 GB | 约 0.2 GB |
合计约 609.6 GB(版本元数据 size 字段为 609568504598 字节),其中光生理约 604.8 GB,录像约 1.4 GB。文件数少、单文件大,是这个数据集的第一个工程特征:你没法「先下几个小文件试试」,任何一个受试者的光生理文件都是 67 GB 量级。
时间戳里能读出一件容易被忽略的事:097、098、099 三只的会话时间戳集中在 2020 年 6 月 27 日的 11:33 到 14:26,100 与 101 在 7 月 2 日的 08:38 与 10:06。也就是说九只里有五只来自两个相邻的上午,批次效应与个体效应在设计上就分不太开。做跨个体方差分解时,这一点必须写进假设。
2.2 逐层级规模数字
| 指标 | 数值 | 来源 |
|---|---|---|
| 受试者数 | 9 只成年雌性黑腹果蝇 | DANDI numberOfSubjects |
| 文件数 | 18 | DANDI numberOfFiles |
| 总体积 | 609.6 GB | 版本 size 字段 |
| 单个光生理文件 | 66.6 – 69.0 GB | 资产清单 size 字段 |
| 功能体素数 / 体积 | 256 × 128 × 49 = 1,605,632 | 论文方法 |
| 功能体素边长 | 2.6 × 2.6 × 5 微米 | 论文方法 |
| 体积扫描率 | 1.8 Hz(约 0.56 秒/体积) | 论文方法 |
| 单次功能录制 | 30 分钟,即约 3,240 个体积 | 论文方法 |
| 结构扫描体素 | 0.6 × 0.6 × 1 微米 | 论文方法 |
| 行为采样率 | 50 Hz | 论文方法 |
| 覆盖的果蝇神经元比例 | 约 14 万神经元中的中央脑部分,视叶不在视野内 | 论文与 BIFROST |
九只各 30 分钟加起来是 270 分钟,约合 4.5 小时。这个数字在论文里被表述为「Superfly」——把九只的数据拼接进同一个坐标空间后得到的一只虚拟果蝇的数据集,累计 270 分钟的神经与行为记录。要把这个 270 分钟和半小时的关系记住:前者是九段独立记录的加和,后者是任何单只被观测的真实时长。
2.3 一个 NWB 文件里装了什么
NWB 是 HDF5 之上的标准化 schema,所以它既能被 h5py 直接打开,也能被 PyNWB 按语义读取。取任意一个光生理文件,/general/optophysiology 下恰好有两个成像平面,这一点从文件头部就能读出来:
#-- 依赖:h5py(只读打开远端 67 GB 文件的前若干块即可看到目录骨架)
import h5py, numpy as np
#-- 用 DANDI CLI 下载单个文件;此处给出标准的本地读取路径
#-- dandi download DANDI:000727/0.240106.0043/sub-fly-098/sub-fly-098_ses-20200627130208_behavior+image+ophys.nwb
with h5py.File("sub-fly-098_ses-20200627130208_behavior+image+ophys.nwb", "r") as f:
planes = list(f["general"]["optophysiology"].keys())
print(planes)
#--['ImagingPlaneGCaMP6fFunctional', 'ImagingPlanetdTomatoFunctional']
for p in planes:
attrs = dict(f["general"]["optophysiology"][p].attrs)
print(p, attrs.get("indicator"), attrs.get("scan_line_rate"))
两个平面不是两个脑区,而是同一视野的两条荧光通道:GCaMP6f 记录钙活动,myristylated tdTomato 记录结构。这一点必须在一开始就分清,否则会把结构通道误当成第二个功能数据集。结构通道的作用有三:术前定位、录制中做脑运动校正(活体果蝇呼吸与心跳会让脑微小位移)、以及事后把个体脑配准到共同模板。BIFROST 的输入正是这类结构体积。
行为部分在 acquisition 模块下,以一组 SpatialSeries 存储。从文件头部的描述字段可以直接读到六路信号,每一路的语义都写在 description 里:
信号(以 description 原文为准) |
含义 | 单位字段 |
|---|---|---|
| Change in orientation since last frame, camera’s perspective | 相对相机的三轴转动增量(pitch/yaw/roll) | meters |
| Change in orientation since last frame, lab’s perspective | 相对实验室坐标的三轴转动增量 | meters |
| Orientation in radians, camera’s perspective | 相对相机的绝对姿态 | meters |
| Orientation in radians, lab’s perspective | 相对实验室的绝对姿态 | meters |
| Animal’s heading direction in radians | 行走朝向 | meters |
| Instantaneous running speed | 瞬时行走速度 | meters |
这张表里有一个真实存在的坑:单位字段全部写成 meters,而描述文本说的是 radians。对 Orientation 与 heading 这几路,物理量应是弧度,meters 是导出时批量填的默认值;speed 那一路的说明写的是「radians per frame」,也是单位标注混乱的痕迹。使用时以 description 文本的物理含义为准,不要相信 unit 字段(详见 §11 避坑清单第 3 条)。
2.4 与同类果蝇功能数据的定位差异
| 资源 | 模态 | 覆盖 | 时间粒度 | 与 DANDI:000727 的差异 |
|---|---|---|---|---|
| DANDI:000727(本篇) | 体积双光子,体素级 | 中央脑、9 只 | 0.56 秒/体积 | 唯一同时具备「全中央脑 + 行走行为 + 可配准 FlyWire」的开放集 |
| Aimon 等 2019 全脑成像 | 光片 + 双光子组合 | 全脑、少数个体 | 秒级 | 更早的「全脑」演示,行为维度更少,未 NWB 化 |
| Mann 等 2021 全脑活动图谱 | 双光子体积成像 | 全脑、十只左右 | 亚秒到秒级 | 刺激范式的感官响应为主,非自发行走 |
| 光珠显微镜(Light Beads)记录 | 体积双光子,多平面并行 | 全脑或中央脑 | 28–60 体积/秒 | 时间分辨率高十余倍,样本与格式另成体系 |
| DANDI:001869 威胁反应记录 | 双光子 | 局部脑区 | 亚秒级 | 视觉威胁范式,非行走;规模小得多 |
| DANDI:000289 EPG 细胞记录 | 双光子 | 单细胞群 | 秒级 | 单细胞级但有身份,覆盖极小 |
一句可操作的判断规则:要「整个中央脑 + 行走行为 + 连接组接口」→ 000727;要毫秒级动态 → 光珠显微镜类资源;要单细胞身份 → 回到靶向成像或电生理。
2.5 这批数据支撑过哪三类结论
| 问题类型 | 具体问法 | 难度 |
|---|---|---|
| 行为解码 | 给定全脑体素活动,能否预测下一刻的前进速度与角速度 | 低,线性模型即可起步 |
| 空间排布 | 行为选择性相近的神经元是否在解剖上聚在一起 | 中,需要配准与聚类 |
| 结构-功能对照 | 功能连接强的体素对,在连接组上是否真有突触通路 | 高,依赖 BIFROST 配准与 FlyWire 数据 |
第一类是入门路径,第二类与第三类才是这份数据不可替代的地方。原文报告在约 40% 的脑区内检出了与行走相关的信号,并且这些信号在空间上有明显的拓扑结构——同一脑区内对前进速度敏感和对角速度敏感的体素各自成簇。这不是「哪里亮了一下」这种粗粒度结论,而是「同一个核团内部还存在按行为变量划分的子区域」,这件事只有体素级全身积成像才看得出来。
2.6 为什么单文件会到 67 GB
把 67 GB 拆开看,能理解这份数据为什么「必须大」,以及为什么「大不等于好」。
| 成分 | 粗算 | 说明 |
|---|---|---|
| 功能通道(GCaMP6f) | 1.6 百万体素 × 每只三万余帧 | 若按 16 位存约 10.4 GB,实际更高,说明数值精度更高 |
| 结构通道(tdTomato) | 同视野、更高分辨率的扫描 | 供配准用,不进功能分析 |
| 行为序列 | 六路 × 50 Hz × 约半小时 | 每路约五十余万点,相对可忽略 |
| HDF5 开销 | 索引、chunk 表、属性 | 头部块即可读出 |
真正占空间的是「同一体积反复采 3,240 次」。如果只要区域级结论,把体素按区域先平均,结果可能只有几十 MB——体积的大小几乎全部来自你尚未使用的空间冗余。这也是为什么 §5.1 的「只读头部」技巧值得单独讲:先看元数据再决定下载,是这份数据最省带宽的使用方式。
2.7 一条记录逐段解剖
以 sub-fly-098 为例,把一个 NWB 会话拆成四段看:
| 段 | HDF5 位置 | 内容 | 能否独立使用 |
|---|---|---|---|
| 元数据段 | /general |
成像平面、指示剂、扫描参数 | 可,头部块即可读 |
| 功能段 | /acquisition 下的体积序列 |
三维体积时间序列 | 可,但需运动校正 |
| 行为段 | /acquisition 下六路 SpatialSeries |
球体姿态与速度 | 可,独立于神经数据 |
| 录像段 | 同目录 .avi 外部引用 |
果蝇视频 | 可,作为行为的人工核对 |
录像段不是内嵌的,而是同目录的外部引用文件(文件名带 external_file)。只下 .nwb 不下 .avi,/acquisition 里对录像的引用会悬空;反过来只看录像不看 NWB 也能做行为分析。两段在逻辑上耦合、在存储上分离,这是 DANDI 对体积文件的常见安排。
§3 第一层:你拿到的是什么(观测单位、坐标系与边界)
这一层对应的问题是「我打开文件以后,眼睛看到的那一坨数字代表什么」。答案是:代表空间的立方体,不代表细胞。分不清这一点,后面所有分析都会跑偏。
3.1 观测单位是体素,不是神经元
果蝇神经元的胞体直径多在 5 微米上下,而这份数据的功能体素是 2.6 × 2.6 × 5 微米。横向比胞体小,纵向却与胞体同量级,再叠加上光学点扩散函数本身就有若干微米的展宽,结果就是一个体素里往往混着好几个神经元的信号,一个神经元的信号也会摊进相邻好几个体素。
这带来一个直接后果:「超过 40% 的脑区有行走相关信号」这个说法,统计单位是脑区与体素,不是神经元。论文的补充分析用到了「supervoxel」——把活动高度相关、空间相邻的一小群体素合并成一个单元再做统计,因为单个体素的信噪比太低。supervoxel 是小群体的近似,不是单个细胞。
明白了这一点,就能正确理解 §2.5 里第二、三类问题的可行边界:你可以问「这片区域的体素整体是否随前进速度上升」,不能问「这个神经元是否随前进速度上升」。前者是这份数据能答的,后者需要让数据升级到细胞级才行。
3.2 坐标系的三个层次
同一份光生理数据会出现在至少三个坐标空间里,混用会直接毁掉分析:
| 空间 | 定义 | 何时用 |
|---|---|---|
| 单次采集空间(原机坐标) | 扫描镜定义的 256 × 128 × 49 网格,随个体与当天装夹而异 | 只用于运动校正前的原始检查 |
| 个体脑空间 | 运动校正后、以该个体的结构通道为参考 | 单只内部的空间分析 |
| Functional Drosophila Atlas(FDA) | 以 100 个活体果蝇脑的结构体积平均得到的体外模板 | 跨个体合并、与外部图谱比较 |
| FlyWire / FAFB 空间 | 电镜重建的坐标系,靠 BIFROST 与之桥接 | 与连接组对照 |
FDA 这个模板值得单独说一句。BIFROST 论文的做法是:对每只活体果蝇的脑,用泛神经元表达的膜标tdTomato 在 0.6 × 0.6 × 1 微米下各扫 100 遍,把这些体积用仿射加对称归一化(SyN)对齐,得到一个活体状态下的平均脑。用它而不是用经典的电镜模板 JRC2018F 做中介,是因为活体脑在头壳里被挤压、被固定液改变形状,直接拿固定组织的模板去套活体数据,误差会在几个微米量级。
3.3 时间轴怎么读
体积扫描率 1.8 Hz,即一个完整脑体积约 0.56 秒采完。但一个体积内部的 49 层不是同时采的——resonant scanning 逐层向下扫,第一层和最后一层之间相差大半个体积周期。所以:
- 严格的时间对齐需要每个体素自己的采样时刻,而不是体积的开始时刻;
- 论文能做出「某些脑区活动领先行为 300 毫秒、另一些滞后数秒」这样的结论,靠的是把行为轨迹切成大量重复片段,用不同偏移量叠起来做回归(图 1C 的示意),而不是靠单次时间戳的精度;
- 如果你直接拿「体积序号 ÷ 1.8」当时间,得到的时间轴在单个体素上是错的,在整脑平均上是近似对的。这类误差不会报错,只会让你的时滞估计系统性偏小。
3.4 缺了什么
| 缺的东西 | 具体表现 | 影响 |
|---|---|---|
| 视叶 | 功能视野是中央脑,视叶不在其中 | 视觉通路与视动反应无法研究 |
| 单细胞身份 | 无 ROI、无标签、无分割 | 无法做细胞级统计 |
| 试次结构 | 无刺激事件、无 trial 标记 | 需要用行为轨迹自己切段 |
| 头部与触角动作 | 只有球体转动推出的体轴姿态 | 梳理、触角摆动等细节行为缺失 |
| 交配状态、年龄、品系信息 | NWB 元数据未逐只记录 | 跨个体差异无法归因 |
§4 第二层:行为与神经怎么对上(解码与区域图谱)
这一层对应的问题是「我怎么把 30 分钟的连续录像变成可训练的数据集」。答案是:先切段,再对齐,最后按区域汇总。这份数据的所有分析价值都建立在这一步做得对不对上。
4.1 行为信号从哪来
果蝇在黑暗中行走,没有视觉反馈,能用的只有本体感觉与内部状态。球体是气浮的,果蝇蹬腿让它转,红外或可见光相机以 50 Hz 记录球面花纹的位移,再由位移反解出三轴转动。
这个过程有一个本质的模糊:球体转不等于果蝇走了。果蝇可能在原地快速蹬腿而球体几乎不动(打滑),也可能被动地被球带着转(惯性)。原文的 description 用词很谨慎——「速度由球体转动推出」(Direction inferred by the ball’s rotation),“inferred” 这个词说明它是推测量,不是直接测量。做精确行为学的人需要知道这一层。
4.2 解读码任务怎么切段
最稳的切法是按速度事件切,而不是按固定窗口切。三步:
- 用
Instantaneous running speed算出速度序列,做 0.1 秒窗的平滑; - 找「速度由接近零升到显著非零」的上升沿,作为一次起步(bout onset);
- 以每次起步为中心,向前取 2 秒、向后取 4 秒,切成一段。
#-- 依赖:numpy、h5py
#-- 目标:把一只果蝇的连续记录切成起步事件段
import h5py, numpy as np
def bouts(speed, fps=50.0, lo=0.02, hi=0.08, pre=2.0, post=4.0):
#-- speed 单位按 description 理解为弧度/帧,阈值需按实际分布调
k = max(1, int(0.1 * fps))
sm = np.convolve(speed, np.ones(k) / k, mode="same")
idx = np.where((sm[:-1] < lo) & (sm[1:] >= hi))[0] + 1
half_pre, half_post = int(pre * fps), int(post * fps)
keep = idx[(idx > half_pre) & (idx < len(sm) - half_post)]
return keep, sm
with h5py.File("sub-fly-098_ses-20200627130208_behavior+image+ophys.nwb", "r") as f:
acq = f["acquisition"]
name = [k for k in acq if "speed" in str(acq[k]["SpatialSeries"].attrs.get("description", "")).lower()
or "speed" in str(acq[k]["SpatialSeries"]["description"][()]).lower()][0]
raw = acq[name]["SpatialSeries"]["data"][:]
speed = raw[:, 0] if raw.ndim > 1 else raw
onsets, sm = bouts(speed)
print(len(onsets), "起步事件")
切完以后才知道,30 分钟里果蝇可能起步几十到上百次。事件数决定了统计功效——九只加起来的事件数在千级,这也是原文敢说「几千次自愿运动」的原因。
4.3 神经侧怎么汇总到区域
体素级数据直接进模型会有两个问题:一是 160 万维对 9 个样本,必然过拟合;二是体素编号在个体间不对应。所以流程必须是「先配准到 FDA,再按区域汇总」。
| 步骤 | 做法 | 该步的真正难点 |
|---|---|---|
| 1. 运动校正 | 用 tdTomato 结构通道做帧间刚性对齐 | 呼吸导致的周期性位移 |
| 2. 跨个体配准 | BIFROST 把个体脑映射到 FDA | 需要每只的高分辨率解剖扫描 |
| 3. 区域划分 | 把 FDA 里的神经纤维网(neuropil)标签搬过来 | JRC2018F 的标签转移有残差 |
| 4. 区域平均 | 每个区域内对体素取均值或取主成分 | 区域大小差异极大 |
| 5. 行为回归 | 区域时间序列 × 速度序列 | 时滞与共线性 |
第 3 步的残差有个已知量化:BIFROST 论文以遗传标记的细胞类型作为真值,报告跨样本、跨实验室的配准精度优于 10 微米,与固定组织配准的水平相当。这个数字要记住:它小于一个体素的横向尺寸(2.6 微米)的 4 倍,但大于一个神经元的胞体。换句话说,配准后你能可靠地说「这个信号来自这个神经纤维网」,不能可靠地说「来自这个核团里的这个亚区」。
4.4 解码基线能到多少
原文没有把「解码准确率」作为核心指标,而是用了相关性、主成分与时间建模三条线。这意味着如果你要做基准,基线得自己建。可参考的三条:
| 基线 | 输入 | 输出 | 预期 |
|---|---|---|---|
| 全局均值 | 全脑平均活动 | 前进速度 | 中等,因为存在「静止到行走」的全脑共同信号 |
| 区域向量 | 约数十到上百个区域的时间序列 | 前进速度与角速度 | 明显更好,区域结构有用 |
| 体素 + 降维 | 全体素维度经 PCA 降到 50 维 | 同上 | 与区域向量接近或略好,但解释性差 |
「静止到行走的全局信号」是原文明确报告的现象之一,它对任何解码器来说都是最强的单一预测因子,也是所有基线必须先扣掉的成分。不扣掉它,你会高估区域特异性。
4.5 一个真实的分析陷阱:全局信号
原文明确报告了一个现象:从静止到行走的转换伴随一股全脑范围的共同信号。它在几乎任何区域都能测到,幅度在静止与行走之间跳变。这不是伪迹,是真实的神经事件,但它对分析的影响极大。
原因是:如果每个区域都能测到这股共同信号,那么任意两个区域的时间序列之间都会出现高相关。你算出来的功能连接矩阵里,相当一部分是这股共同信号贡献的,跟区域之间是否真的存在直接通路无关。
处理办法有三条,都要在算功能连接之前做:
| 处理 | 做法 | 代价 |
|---|---|---|
| 回归掉全脑均值 | 每帧减去全脑平均活动 | 可能连真实的全脑同步一起减掉 |
| 只用行走中的时段 | 剔除静止段,只看持续行走 | 样本量减半,失去静止-行走的转换信息 |
| 用偏相关代替相关 | 控制其余区域的条件相关 | 高维下估计不稳定 |
三条都不是完美的。原文选择了第一种与第三种之间的一种折中,但它没有把这套处理包装成一个可复用的工具。使用这份数据的人必须自己决定怎么扣,并在方法里写清扣了什么——否则「结构连接能预测功能连接」这类结论的强度会因处理方式而大幅漂移。
这一点也解释了为什么 §7.8 里那份 eLife 预印本的结果值得重视:它把功能连接与结构连接放在同一空间里比,并且明确讨论了平滑尺度、高通滤波与干扰因素回归对结果的影响。这类讨论只在有结构对照的数据集上才做得出来,而这份数据集正好是少数能提供这种对照的。
§5 第三层:怎么把数据拿到本地(取数、格式与许可)
这一层对应的问题是「我怎么安全地、可复现地把 609.6 GB 拿到手并把引用写对」。答案是:走 DANDI 的版本化路径,别用网页直链,别指望一次下完。
5.1 四条取数路径
| 路径 | 命令 | 适合谁 |
|---|---|---|
| DANDI CLI | dandi download DANDI:000727 |
有条带缓存的需求,最稳 |
| REST 资产清单 | GET /api/dandisets/000727/versions/0.240106.0043/assets/ |
想先看文件清单再决定下哪些 |
| 单资产下载 | GET /api/assets/{asset_id}/download/ |
只要一只的数据 |
| 对象存储直读 | 先取 302 重定向,再带 Range 读取 | 只想看元数据、不下载全文件 |
第四条路径是这份数据最实用的一条技巧。NWB 是 HDF5,HDF5 的目录树与属性集中在文件头部,所以只取前 1.2 MB 就能看到全部成像平面、行为序列的名称与描述,不必先付 67 GB 的代价:
#-- 只读元数据:先拿签名地址,再带 Range 取头部
URL=$(curl -s -o /dev/null -w "%{redirect_url}" \
"https://api.dandiarchive.org/api/assets/<asset_id>/download/")
curl -s -r 0-1200000 "$URL" -o head.h5
python3 -c "import h5py; f=h5py.File('head.h5','r'); print(list(f['general']['optophysiology'].keys()))"
两点必须提醒。第一,签名地址的有效期是有限的,取到后立刻用,不要存起来下次再用。第二,带 Range 的请求在同一个签名下重复发起,返回的字节不一定逐字节一致——这是 S3 分块与预签名参数共同作用的结果,所以不要用两次 Range 取回的片段做哈希校验,要校验就下完整文件。
5.2 格式的真实约束
NWB 2.x 是一个 schema 约束的 HDF5 容器。它带来的便利是字段有名字、有单位、有语义;它带来的麻烦是没有分块策略的压缩集合,导致单个体积数据膨胀到 67 GB。
粗略对一下账:160 万个左右体素 × 3,200 余个体积 = 约 51 亿个数值,即使按 16 位无符号整数算也有 10 GB 以上,再叠加结构通道与行为序列、以及 HDF5 自身开销,67 GB 在同一量级。如果你只想做区域级分析,完全没必要下全量——可以只读元数据,或者用 DANDI 的 zarr 镜像(部分 dandiset 提供,000727 当前资产清单里 zarr 字段均为空,需要自行转换)。
5.3 许可到底写了什么
DANDI 版本元数据的 license 字段是 spdx:CC-BY-4.0,access 字段是 dandi:OpenAccess,embargo_status 是 OPEN。这意味着:可自由使用、再分发、商用,条件是署名。署名对象见 §E。
配套的内容也是 CC-BY-4.0:论文本身是 Current Biology 的开放存档(bronze/open archive)。这意味着图可以直接搬用,但要同时引用数据集 DOI 与论文 DOI——数据集与论文是两份独立的知识产权对象。
5.4 引用与版本
| 引用场景 | 该写哪一个 |
|---|---|
| 论文方法里说明数据来源 | 数据集 DOI,含完整版本号 |
| 引用科学发现 | 论文 DOI |
| 说明配准方法 | BIFROST 论文 DOI |
| 说明连接组来源 | FlyWire 主论文 DOI |
DANDI 的版本号形如 0.240106.0043,前段是年月日、后段是时间,不是一个语义化的版本序列。目前该 dandiset 只有一个版本,published 字段为空,说明它还没有被标记为正式「发布版」——这会影响 DOI 的稳定性:DANDI 对已发布版本才会分配 concept DOI。使用前请自行确认概念 DOI 是否已可用。
§6 库内定位与边界
6.1 与库内七个资源的关系
| 库内资源 | 层次 | 与本篇的关系 |
|---|---|---|
| 秀丽线虫全脑钙成像 | 小动物全脑功能成像,单细胞级 | 同一类问题的另一个物种答案,分工见 §6.2 |
| 秀丽隐杆线虫连接组 | 电镜结构 | 线虫侧的结构对照,本篇的结构对照是 FlyWire |
| MICrONS | 小鼠皮层的功能-结构联合 | 唯一同时做功能与结构重建的哺乳动物资源,但只有一立方毫米 |
| NUCMM | 斑马鱼与小鼠的神经元核实例分割 | 分割方法可借鉴,模态完全不同 |
| IBL Brain-Wide Map | 小鼠多实验室电极记录 | 同样是「全脑」,但毫秒级、单细胞、单实验室之外 |
| DANDI Archive | 通用 NWB 归档平台 | 本篇的上游入口,见 §6.3 |
| Calcium Imaging Sleep State | 小鼠睡眠分期钙成像 | 方法同族,物种与行为范式不同 |
6.2 与线虫全脑成像的准确分工
这是库内最需要说清的一对。两条都是「小动物全脑功能成像」,但它们优化的是完全不同的目标,把它们并列当同类会得出错误结论。
| 维度 | 线虫(WormWideWeb) | 果蝇(本篇 DANDI:000727) |
|---|---|---|
| 神经元总数 | 302(雌雄同体) | 约 14 万 |
| 一次记录覆盖 | 头部神经节 105–176 个已分割神经元 | 中央脑全部,但不可分割为细胞 |
| 观测单位 | 单个细胞核 | 2.6 × 2.6 × 5 微米体素 |
| 每个单元有名字吗 | 有,56 个数据集带 NeuroPAL 身份 | 没有,只能借连接组推断群体 |
| 时间粒度 | 约 0.6 秒一帧 | 0.56 秒一个完整脑体积 |
| 单个体时长 | 2–20 分钟,91 只 | 30 分钟,9 只 |
| 行为自由度 | 自由爬行,二维 | 头固定,在球上行走 |
| 数据量 | 单集数 MB,Zenodo 33 GB | 单只 67 GB,总 609.6 GB |
| 与连接组的关系 | 名字与连接组同源,可直接对上 | 需 BIFROST 配准,精度优于 10 微米 |
这张表读出来的核心论点是:神经元数量与分辨率是一对硬取舍。线虫用「少 200 倍」的神经元换来了「每个单元有名字」;果蝇用「名字」换来了「覆盖 14 万量级的整个中央脑」。两者都不是另一种的升级版,而是同一维度上朝相反方向走了几步。
更具体地说,线虫的优势在于「跨个体的同一性」——所有个体的 AVDL 就是同一个 AVDL,可以直接平均、可以直接查连接组里的那一个节点。果蝇的优势在于「覆盖面」——任何靶向成像都会漏掉大部分脑区,而体积成像一次把整个中央脑装进来,你才有可能发现「居然连那里也有行走信号」。一个换来了纵深,一个换来了广度。
6.3 与 DANDI Archive 的分工
DANDI Archive 是平台,本篇是平台上的一个 dandiset。平台提供的是版本化、DOI、校验和与 NWB 校验;本篇提供的是数据本身。使用上的差别是:平台层面的争议(许可政策、embargo、单文件上限)属于平台条目,数据集层面的争议(分辨率、覆盖、行为范式)属于本篇。
值得一提的一个对照:DANDI 平台条目里写着元数据以 CC0 发布,而本篇的版本元数据 license 字段是 CC-BY-4.0。两处不矛盾——CC0 管的是描述这批数据的结构化元数据记录,CC-BY-4.0 管的是数据文件本身。引用与再分发时按后者执行。
6.4 与 MICrONS 的对照
MICrONS 是目前唯一把功能与结构在同一块组织上联合采集的哺乳动物资源,一立方毫米,约二十万个细胞。它的野心比本篇大得多,但也因此被限制在「一块」组织上。本篇的目标相反:不要单细胞,要整个脑。两条路线在方法论上互补,在用途上几乎不重叠。
§7 质量评估与已知局限
7.0 阅读本节前需要知道的一件事
这份数据不该用「数据集质量」的标准评价,而该用「一次成像实验的记录质量」来评价。
理由是它的规模不是抽样出来的:九只果蝇是「通过全部质量控制指标的全部个体」,不是从一个大池子里随机抽的九只。原始的采集批次更大,九只是筛选后的结果;筛选标准没有逐只公开,只在补充图里给出了示意。这意味着你在数据里看不到「被淘汰的那些长什么样」,也就无从判断淘汰是否带来了系统性偏向。
第二处容易错位的地方是把 609.6 GB 当成「信息量」。体积大主要来自体素多,而不是来自被测量的单元多——同一个数的九只副本、每条都在 160 万维上重复采样,本质上是一份体素级的低信噪比张量。评价它的信息密度时,有效样本量应按「体素簇 × 事件数」算,不是按 GB 算。
第三条错位是以「能否画出漂亮的功能连接矩阵」来判断价值。它可以,但矩阵的每个节点是一个区域或一个 supervoxel,不是神经元。把这样的矩阵和单细胞矩阵放在一起比较,是量纲错误。
第四条错位是把它当成 FlyWire 的功能版本。FlyWire 是电镜,拍的是固定、脱水、切片后的组织,每个突触数得清楚;这份数据拍的是活体、含水、在呼吸的脑,每个体素里混着好几个细胞。两者的「神经元」不是同一个粒度上的概念。把两者配准到一起很了不起,但配准精度优于 10 微米这件事,本身就已经告诉你:能对上的单位是「一小群细胞在空间上大致重合」,不是「第 12345 号神经元」。这句话在引用连接组时如果不写,读者会误以为可以直接拿 FlyWire 的节点去索引这份数据。
7.1 已知偏倚
| 类型 | 描述 | 严重程度 | 缓解 |
|---|---|---|---|
| 单实验室 | 全部九只来自斯坦福 Clandinin 实验室 | 高 | 与 Mann 等 2021、光珠显微镜类数据交叉 |
| 单显微系统 | 同一套自制体积双光子与扫描参数 | 中 | BIFROST 已证明可跨系统配准,可借此合并 |
| 基因型集中 | 泛神经元 GCaMP6f 加膜标 tdTomato 单一策略 | 中 | 无稀疏标记,无法做单细胞分离 |
| 性别单一 | 九只均标注为成年雌性 | 中 | 雄性行走回路差异不可推 |
| 批次集中 | 五只来自两个相邻上午 | 中 | 方差分解时须把批次当随机效应 |
| 环境单一 | 黑暗中行走,无视觉反馈 | 高 | 视动与视觉引导行为不可研究 |
| 时长单一 | 全部 30 分钟 | 低 | 无法做长时程状态转换 |
7.2 「全脑」这个词的实际边界
官方描述用了 “across the entire brain of Drosophila”。这句表述需要拆开看:
- 覆盖的是中央脑(central brain),包括蘑菇体、中央复合体、视结节、上侧前脑等主要核团;
- 视叶不在其中,而视叶是果蝇脑中体量最大的部分之一,约占全部神经元数量的一半以上;
- 腹侧神经索与胸神经节不在其中;
- BIFROST 论文里明确提到有一个对照数据集是「成像中央脑、不含视叶」的双光子数据,与本篇的视野设定一致。
所以正确的说法是「整个中央脑」,不是「全部 14 万神经元」。这句话在引用原文时可以照抄 “entire brain”,但自己写结论时必须加限定。
7.3 分辨率的三重限制
| 限制 | 数值 | 后果 |
|---|---|---|
| 光学体素尺寸 | 2.6 × 2.6 × 5 微米 | 一个体素混叠数个神经元 |
| 配准精度 | 优于 10 微米 | 跨个体合并后空间精度进一步下降 |
| 时间体素 | 0.56 秒/体积 | 脉冲级动态完全不可见 |
第三条限制最容易被忽视。果蝇的行走起步、转弯修正这类动作的时间尺度是几百毫秒,0.56 秒的体积周期正好卡在边缘——你能看到「转向前后有活动变化」,看不到「变化是从哪一毫秒开始的」。原文能报告「某些区域领先行为 300 毫秒」,靠的是大量重复事件叠加,不是单试次时间精度。做时滞分析时,这句话必须带上。
7.4 泛化性
| 场景 | 失效风险 | 依据 |
|---|---|---|
| 跨个体迁移 | 中 | 已配准到 FDA,但九只样本量小 |
| 跨批次迁移 | 中高 | 五只集中在两天 |
| 从暗到明 | 高 | 黑暗中视叶与视觉通路未被驱动 |
| 从球上到自由行走 | 高 | 头固定改变本体感觉与前庭输入 |
| 跨物种 | 极高 | 果蝇中央脑与哺乳动物无可比结构 |
| 跨成像系统 | 中 | BIFROST 已验证跨实验室配准,但功能对比仍需重跑 |
7.5 伦理与合规
研究对象是无脊椎动物,不进入脊椎动物实验伦理框架,但许多机构对果蝇实验仍有动物福利审查要求(如麻醉、处死方式)。数据再分发只需遵守 CC-BY-4.0 的署名条款,没有额外限制。没有人类受试者,没有个人信息。
7.6 公平性
不涉及人群公平性。物种层面的代表性偏倚是:九只雌性、单一基因型、单一实验室、单一行为范式。任何「果蝇就是这样」的结论都不成立。
7.7 DAIMS 24 项评估
DAIMS(Datasheets for AI and Medical Datasets)是一套面向 AI 数据集文档化的 24 项检查框架,这里借它给这份数据定位。表内状态分三档:✅ 满足,⚠️ 部分,❌ 缺失。
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 数据目的说明 | ✅ | 版本元数据 description 直接引自论文摘要 |
| 2 | 采集时间 | ✅ | 会话时间戳写在路径里,可精确到秒 |
| 3 | 采集地点 | ✅ | 贡献者机构为斯坦福神经生物学系 |
| 4 | 采集设备 | ⚠️ | 参数在论文中,NWB 内未逐只写入 |
| 5 | 物种与品系 | ⚠️ | 物种有 NCBITaxon 标识,品系未记 |
| 6 | 个体标识 | ✅ | sub-fly-NNN,九只不重复 |
| 7 | 模态描述 | ✅ | ApproachType 与 MeasurementTechnique 均有 |
| 8 | 数据字典 | ⚠️ | NWB 语义规范,但区域标签未随文件分发 |
| 9 | 单位规范 | ❌ | 行为序列 unit 字段与 description 冲突 |
| 10 | 缺失值说明 | ❌ | 无缺失掩码 |
| 11 | 偏倚评估 | ❌ | 原文明示单实验室、单基因型,数据集未记载 |
| 12 | 变量共线性 | ❌ | 前进速度与角速度未做相关分析 |
| 13 | 许可声明 | ✅ | spdx:CC-BY-4.0 |
| 14 | 引用格式 | ✅ | citation 字段给出完整参考文献 |
| 15 | 划分建议 | ❌ | 无训练/验证划分 |
| 16 | 泄漏说明 | ❌ | 无泄漏讨论 |
| 17 | 唯一标识 | ✅ | DOI 加 dataset ID |
| 18 | 版本记录 | ✅ | 版本号内嵌日期 |
| 19 | 外部验证 | ⚠️ | 有第三方使用,无官方基准 |
| 20 | 预处理脚本 | ⚠️ | 论文与 BIFROST 代码可用,未随 dandiset 链接 |
| 21 | 质控记录 | ⚠️ | 九只通过质控,标准在补充图 |
| 22 | 合规要求 | ✅ | 无人类数据,无额外限制 |
| 23 | 多模态对齐 | ✅ | 神经、行为、录像三者在同一 NWB 会话内 |
| 24 | 去标识化 | ✅ | 仅受试者编号与时间戳,不含操作者信息 |
DAIMS 评分:11.5 / 24。
评分解读:拉低分数的三项很集中。第一类是「平台层面不做」的项——划分建议、泄漏说明、共线性分析,这在通用档案库里普遍缺失,DANDI 的角色是存与校验,不是替作者做建模设计。第二类是「散落在论文里」的项——设备参数、区域标签、质控标准,信息其实存在,只是没进 NWB,要在论文与 BIFROST 补充材料里翻。第三类是「真实存在的信息缺陷」——单位字段冲突与缺失值掩码,这两项是导出环节的问题,会给使用者带来实际麻烦。
加分项集中在溯源与合规:唯一标识、版本记录、时间戳、多模态对齐、许可五项全满,这在一个学术实验室自提交、却经由公共档案库托底的数据集上,是相当好的水平。
对你的实际影响:
- 区域标签要自己从 BIFROST 借,不要指望 NWB 里现成;
- 行为序列的单位一律按 description 读,unit 字段直接忽略;
- 划分自己做,且必须按受试者或按采集日做,不能随机切时间点;
- 论文里的设备参数要逐条抄进你自己的数据卡,否则复现者不知道你用的是哪种 GCaMP。
7.8 外部验证
| 外部使用 | 来源 | 用到了什么 | 关键发现 |
|---|---|---|---|
| 功能-结构对照 | eLife 预印本 2024 | 全脑钙成像 + FlyWire | 结构连接能部分预测功能连接,但个体差异显著 |
| 配准方法学 | BIFROST, PNAS 2024 | 本文的结构体积作为验证集 | 跨实验室配准优于 10 微米 |
| 连接组约束网络 | 后续建模工作 | 区域级活动 | 连接组先验可提升活动预测 |
| 官方基准 | 无 | — | 数据集未发布任何排行榜或基准分数 |
四行里第四行最要紧:这份数据集没有官方基准。任何「在 000727 上做到了 X%」的说法,都需要你先自己定义切分、指标与基线,否则不可比。
§8 生态、版本与可持续性
8.1 版本节奏
该 dandiset 在 2023-12-10 创建,2024-01-06 定版为 0.240106.0043,此后没有新版本。两年多没有更新,在一个档案库语境下有两种解读:一是数据已完整、作者不再追加;二是九只的采集早已结束,没有后续批次可加。从文件清单看,18 个文件在定版当天一次性上传完成,前一种解读成立。
8.2 生态位
| 层 | 谁在做 | 本篇的位置 |
|---|---|---|
| 实验采集 | Clandinin 实验室 | 本篇的源头 |
| 配准方法 | BIFROST,斯坦福与普林斯顿合作 | 本篇的坐标空间由此进入连接组 |
| 结构数据 | FlyWire,Janelia 与 Princeton | 本篇的结构对照物 |
| 分发 | DANDI Archive | 本篇的稳定入口 |
| 下游消费 | 建模、连接组约束网络、方法学基准 | 尚无官方基准 |
8.3 引用应该引哪个
数据集 DOI 10.48324/dandi.000727/0.240106.0043 与论文 DOI 10.1016/j.cub.2023.12.063 是两件事。规范做法是:方法段写数据集 DOI 并注明「九只,DANDI 000727,版本 0.240106.0043」;结果段若引用发现,写论文 DOI。如果用到 BIFROST 配准,追加 10.1073/pnas.2322687121。
8.4 它为什么存在,靠什么活着
它存在的直接原因是一个实验需求:想回答「行走这种全身行为在脑内被如何表征」,必须同时看到整个中央脑。单点成像做不到,电生理在果蝇上做不到全脑覆盖,于是体积双光子成了唯一选项。这是问题倒逼出来的数据,不是「顺手开放」。
它为什么能持续,靠三层支撑:
- 托管层:DANDI 由 BRAIN Initiative 资助、存储由 AWS Open Data 承担,不是实验室自建站点,站点关停风险显著降低;
- 格式层:NWB 是社区标准,即使 DANDI 换了实现,文件本身仍可读;
- 引用层:数据集有 DOI,论文与后继方法学文献都在引用它,形成了学术上的刚性。
代价是没有社区维护。没有 issue 区、没有数据勘误日志、没有版本说明。想报告一个问题,只能找到联系人或作者本人。
8.5 如果哪天入口变了怎么办
| 风险 | 概率 | 应对 |
|---|---|---|
| DANDI 改 API 路径 | 中 | 记下 asset ID 与 blob 路径,可直接访问对象存储 |
| 单文件超大导致下载失败 | 高 | 分段下载并逐段校验 |
| 作者追加新版本 | 中 | 固定版本号,不要用 draft |
| 数据被撤下 | 低 | 提前保存关键元数据与 DOI 记录 |
8.6 与线虫那份的可持续性对照
线虫那份由实验室自建站点加 Zenodo 双轨维护,站点有交互式浏览,但没有跨机构档案库托底;果蝇这份只有 DANDI 一个入口,但有版本化与 DOI。前者体验好、韧性差;后者体验差、韧性强。从「十年后还能不能拿到」这个角度问,果蝇这份更稳。
§9 使用指引与最小实现
9.1 三种角色的路径
| 角色 | 起点 | 第一个动作 |
|---|---|---|
| 想看看数据长什么样 | 资产清单接口 | 只读文件头部,确认两个成像平面与行为序列 |
| 要做区域级建模 | 单只 NWB | 先做运动校正,再借 BIFROST 标签汇总区域 |
| 要做方法学 | 全部九只 | 留一只做域外测试,用结构通道做配准基准 |
9.2 最小可运行:从资产清单到区域张量
#-- 依赖:requests、numpy、h5py、dandi(可选)
#-- 第一步:列出全部资产并筛出光生理文件,不下载
import json, urllib.request
V = "0.240106.0043"
url = f"https://api.dandiarchive.org/api/dandisets/000727/versions/{V}/assets/?page_size=30"
d = json.load(urllib.request.urlopen(url))
nwb = [a for a in d["results"] if a["path"].endswith(".nwb")]
print(d["count"], "个文件,其中", len(nwb), "个 NWB")
for a in nwb:
print(a["path"].split("/")[0], round(a["size"] / 1e9, 1), "GB", a["asset_id"])
这段代码的作用是在花掉任何带宽之前先把预算算清楚。九只每只约 67 GB,如果只想做跨个体配准的实验,可以先下两只。
9.3 跨个体汇总的最小实现
#-- 依赖:numpy、h5py
#-- 前提:已用 BIFROST 把每只映射到 FDA,并拿到了 FDA 空间里的区域掩码
import h5py, numpy as np
def region_matrix(nwb_path, masks):
"""masks: dict[region_name] -> 布尔数组,形状与一个体积的 (x, y, z) 一致"""
with h5py.File(nwb_path, "r") as f:
key = [k for k in f["acquisition"] if "Series" in str(type(f["acquisition"][k]))]
#-- 功能体积的存取路径依 NWB 导出而异,先打印 acquisition 下的键再决定
print(list(f["acquisition"].keys()))
#-- 拿到 (T, X, Y, Z) 后:每个区域对体素取均值,得到 (T, n_region)
return None
print("先打印 acquisition 键,再按实际名字取 TwoPhotonSeries 的数据集")
这段代码的写法是有意为之:NWB 的 TwoPhotonSeries 所在层级在不同导出工具下不完全一致,硬编码一个路径在别人机器上会失败。正确的做法是先探测、再取值。
9.4 划分与泄漏
| 切法 | 做法 | 优点 | 风险 |
|---|---|---|---|
| 按受试者留一 | 八只训练一只测试 | 最严格 | 九折,方差大 |
| 按采集日留出 | 用 6 月的测 2 月与 7 月 | 兼顾批次 | 日期与个体混杂 |
| 按事件留出 | 前半段事件训练后半段测试 | 事件多、统计强 | 同一只内,泄漏最高 |
| 随机切时间点 | 不推荐 | — | 相邻时间点高度相关,分数虚高 |
最常被犯的错是第四种。0.56 秒一个体积,相邻体积极其相似,随机切点会让训练与测试共享信息,得到虚高的解码分数。任何随机切时间点的做法都应被拒绝。
§10 AI 使用声明
10.1 AI 参与的边界
本页的结构化写作在 AI 助手辅助下完成,包括章节组织、表格骨架、代码草稿与术语一致性检查。所有数字均来自下列来源的原文,未做推算或推测。
10.2 AI 未参与的边界
未参与任何数据下载后的统计分析,未生成自行复算的统计结论。§7 的质量判断基于官方文档、论文与 BIFROST 原文的明示内容。
10.3 输入来源
- DANDI 000727 版本元数据接口:https://api.dandiarchive.org/api/dandisets/000727/versions/0.240106.0043/
- DANDI 000727 资产清单接口(18 个文件与大小)
- DANDI 000727 info 接口(状态 Valid、embargo OPEN、619 字节级 size 字段)
- Brezovec 等,Current Biology 34(4):710-726.e4,DOI 10.1016/j.cub.2023.12.063
- Brezovec 等,bioRxiv 2022.03.20.485047(体积 1.8 Hz、2.6×2.6×5 微米、30 分钟、Nine individuals)
- Brezovec 等,PNAS,DOI 10.1073/pnas.2322687121(FDA、BIFROST、优于 10 微米)
- Brezovec 等,bioRxiv 2023.09.08.556917(约 200 亿次测量、几千次自愿运动、IPS 提前 10 秒)
- 单只 NWB 文件头部(
/general/optophysiology两个成像平面、行为六路 SpatialSeries)
10.4 人工校验表
| 内容模块 | 审核方式 | 状态 |
|---|---|---|
| 受试者数、文件数、总体积 | 对照 DANDI 资产与版本接口 | ✅ 已验证 |
| 体素尺寸、体积率、时长 | 对照 bioRxiv 图 1 说明 | ✅ 已验证 |
| 行为六路信号语义 | 直接读取 NWB 头部 description 字段 | ✅ 已验证 |
| 两路成像通道 | 直接读取 NWB 头部成像平面名 | ✅ 已验证 |
| 配准精度 | 对照 PNAS 摘要与讨论原文 | ✅ 已验证 |
| 许可 | 版本元数据 license 字段 | ✅ 已验证 |
| 与 FlyWire 的关系 | 对照 BIFROST 原文与 FlyWire 主论文 | ✅ 已验证 |
10.5 章节生成标注
§1 至 §9 由 AI 起草。§7.7 的 DAIMS 评分由人工给出,依据是前六节中已核实的事实。
10.6 最后人工审核日期
2026-10-29
页面状态:published(全部内容已完成审核并发布)
§11 常见误读与避坑清单
| 常见说法 | 实际情况 | 证据 |
|---|---|---|
| 「全脑就是全部 14 万神经元」 | 是中央脑,视叶与腹侧神经索不在视野内 | 论文方法;BIFROST 原文提到「成像中央脑、不含视叶」的对照数据集 |
| 「配准到 FlyWire 就能给每个体素贴神经元名字」 | 通常做不到,只能给出一小群候选 | PNAS 讨论段原文「typically be impossible to assign a single functional voxel signal to a particular neuron」 |
| 「unit 字段写 meters 就是米」 | 是批量默认值,物理量按 description 读 | 单只 NWB 头部行为序列的 unit 与 description 冲突 |
| 「270 分钟是连续观测」 | 是九段 30 分钟的加和 | 资产清单九只,每只一次会话 |
| 「1.8 Hz 就是每 0.56 秒能看一次任意位置」 | 一个体积逐层扫,层与层有先后 | 论文图 1C 关于「用重复事件叠加得到高时间分辨率滤波器」的说明 |
| 「随机切时间点做训练测试是安全的」 | 相邻体积高度相关,会虚高 | 0.56 秒体积周期;分析者需自行按受试者或日期切分 |
| 「两份成像平面是两个脑区」 | 是同一视野的 GCaMP 与 tdTomato 双通道 | 头部两个平面名分别带 GCaMP6f 与 tdTomato |
| 「Dataset 有 DOI 就是发布版」 | 该版本的 published 字段为空 | DANDI info 接口返回 published: null |
| 「40% 的脑区有行走信号」等于 40% 的神经元 | 统计单位是脑区与 supervoxel | 论文摘要与方法中 supervoxel 的定义 |
| 「和线虫那份是同类,可以一起当小动物全脑基准」 | 一个单细胞级 302 个,一个体素级 14 万 | 见 §6.2 分工表 |
上面十条里,第 2 条与第 5 条最容易被写成错误的论文结论。前者会让你声称做了单细胞分析,后者会让你的时滞估计系统性偏小。
§12 常见问题
问:为什么不下全量
答: 609.6 GB,单文件 67 GB,且九只里只有约一半对多数问题有用。先用资产清单接口确认要哪几只,再按只下载,是最省事也最不容易失败的路径。
问:没有神经元分割还能做单细胞结论吗
答: 不能。可以做区域级、supervoxel 级、群体级。若一定要细胞级,只能转向靶向成像或电生理数据。
问:坐标空间和 FlyWire 是什么关系
答: 靠 BIFROST 桥接:先把个体脑配准到 FDA,再把 FDA 与 FAFB、hemibrain 配准,精度优于 10 微米。这是两次非线性变换的复合,误差会叠加。
问:时间分辨率为什么只有 1.8 Hz
答: 体积成像要逐层扫完整个中央脑,层数多、视野大,单个体积的采样时间就被拉长。提高体积率要牺牲空间覆盖或体素尺寸,这是一个无法绕开的取舍。
问:行为是自由活动吗
答: 头被固定,身体在气浮球上走,环境是黑的。腿部自由,头部与眼球不自由。
问:有没有视叶的活动
答: 没有。视野是中央脑。想研究视叶,需要另找面向视叶的成像数据。
问:许可允许商用吗
答: 允许,CC-BY-4.0,条件是署名。署名写法见 §A5。
问:能不能用它做跨物种比较
答: 只能做方法层面的比较,不能做同源结构的比较。果蝇中央脑与哺乳动物皮层在发育与组织上都没有对应关系。
问:九只里为什么有五只集中在两天
答: 原始采集是按批次进行的,质控通过的五只恰好落在两个相邻上午。这不是设计选择,但做方差分解时要把批次当随机效应。
问:有没有官方的训练测试划分
答: 没有。任何声称「在 000727 上做到某分数」的工作,都需要自己定义并公开切分。
问:NWB 文件里能直接找到区域标签吗
答: 不能。区域标签需要从 BIFROST 或 JRC2018F 一侧借入,再映射到 FDA 空间。
问:只做配准算法研究用几只合适
答: 两只足够做基本验证,五只以上才能覆盖装夹角度与批次差异。九只全用则适合做稳健性统计。
§A1 附录 A 数据组织与文件结构
DANDI:000727 / 0.240106.0043 18 assets / 609.6 GB
├── sub-fly-087/ 会话 20200228161226
│ ├── ..._behavior+image+ophys.nwb 69.0 GB
│ └── .../xxxx_external_file_0.avi 0.2 GB
├── sub-fly-089/ 20200618081653 66.6 GB
├── sub-fly-094/ 20200620122048 67.2 GB
├── sub-fly-097/ 20200627113329 66.9 GB
├── sub-fly-098/ 20200627130208 67.2 GB
├── sub-fly-099/ 20200627142647 68.2 GB
├── sub-fly-100/ 20200702083849 67.7 GB
├── sub-fly-101/ 20200702100612 67.8 GB
└── sub-fly-105/ 20200704142706 67.3 GB
每个 NWB 的骨架:
/general/optophysiology/ImagingPlaneGCaMP6fFunctional
/general/optophysiology/ImagingPlanetdTomatoFunctional
/acquisition/<行为序列> SpatialSeries × 6
/acquisition/<功能体积> TwoPhotonSeries(依导出工具而定)
文件命名里的 behavior+image+ophys 是 DANDI 的会话类型标记,表示同一次会话里同时有行为、录像与光生理三类内容,不是三个分开的文件。
§A2 附录 B 脑区与标识符
| 层 | 字段 / 名称 | 示例 | 是否可作主键 |
|---|---|---|---|
| 受试者 | 路径第一段 | sub-fly-098 |
是(数据集内唯一) |
| 会话 | 路径第二段时间戳 | 20200627130208 |
是(全局基本唯一) |
| 资产 | asset_id |
14b60d03-... |
是(跨版本稳定) |
| 成像平面 | /general/optophysiology/<name> |
ImagingPlaneGCaMP6fFunctional |
否(九只重复) |
| 行为序列 | SpatialSeries.object_id |
UUID | 是(单文件内唯一) |
| 区域 | FDA 或 JRC2018F 的 neuropil 名 | MB、CX、AL |
否(体素到区域的映射须自查) |
| 连接组节点 | FlyWire root ID | 长整数 | 是(连接组内唯一) |
连接组一侧的节点 ID 与本篇的体素没有直接对应关系,中间隔着「FDA → FAFB」的配准。不要把 root ID 当成功能数据的索引。
§A3 附录 C 术语表
| 术语 | 说明 |
|---|---|
| 体积成像 | 一次扫描获得一个三维体积,而非单层 |
| 体积率 | 每秒完整采集体积的次数,本篇为 1.8 Hz |
| supervoxel | 空间相邻且活动高度相关的一小群体素,替代单个体素做统计 |
| GCaMP6f | 快速型基因编码钙指示剂,上升与衰减时间常数较短 |
| tdTomato | 红色荧光蛋白,此处为膜标,仅作结构参考 |
| FDA | Functional Drosophila Atlas,由 100 个活体脑平均得到的体外模板 |
| BIFROST | 把功能成像数据配准到 FDA 并桥接到连接组的方法 |
| FAFB | FlyWire 所依据的全成体脑电镜数据集 |
| hemibrain | Janelia 的中央脑半脑电镜数据集 |
| neuropil | 神经纤维网,由树突、轴突与突触构成的区域,非细胞体集中区 |
| 球形跑步机 | 气浮球体,果蝇在其上行走,靠转动推断运动 |
| bout | 一次连续的起步到停止运动段 |
| concept DOI | 指向一个 dandiset 所有版本的稳定 DOI |
| psm | 每体积的采样,与 FPS 类似但以体积为单位 |
§A4 附录 D 常见误读补充
三条不在主表的补充:
| 说法 | 实际 |
|---|---|
| 「NWB 就等于 AI-Ready」 | NWB 只解决格式与字段语义,不解决划分、基线、泄漏 |
| 「有 DOI 就可以长期不动」 | 版本号需随引用一起写,否则读者无法复现具体文件 |
| 「AIMon / Mann 等的数据能直接拼进来」 | 模态、视野与配准空间不同,需要重新走 BIFROST |
§A5 附录 E 许可与引用
许可:CC-BY-4.0,可商用,需署名。DANDI 版本元数据 license 字段为 spdx:CC-BY-4.0,access 为 dandi:OpenAccess。
推荐引用:
Brezovec, L. E., Berger, A. B., Hao, Y. A., Chen, F., Druckmann, S., & Clandinin, T. R. (2024).
Mapping the Neural Dynamics of Locomotion across the Drosophila Brain (Version 0.240106.0043)
[Data set]. DANDI Archive. https://doi.org/10.48324/dandi.000727/0.240106.0043
配套引用:
-
论文:Brezovec et al., Current Biology 34(4):710-726.e4, https://doi.org/10.1016/j.cub.2023.12.063
-
配准方法:Brezovec et al., PNAS, https://doi.org/10.1073/pnas.2322687121
-
连接组:FlyWire,https://codex.flywire.ai/
-
中央脑电镜:hemibrain,https://www.janelia.org/project-team/flyem/hemibrain
-
数据集与论文是两份对象,方法与结果分别引用。
-
用到配准结论时追加 BIFROST。
-
用到连接组对照时追加 FlyWire 主论文与 hemibrain 论文。
-
再分发时保留 CC-BY-4.0 声明与上述引用。
编辑说明
核验时间:2026-10-29。核验方式:DANDI 版本元数据、资产清单与 info 三个接口交叉核对文件数、字节数与状态;单只 NWB 的头部块(前 1.2 MB)解析出两个成像平面与六路行为序列的名称与描述;体积率、体素尺寸、九只与 30 分钟对照 bioRxiv 图 1 说明;配准精度对照 PNAS 摘要与讨论。未覆盖内容:未下载任何完整 67 GB 文件,未做体素级统计,未验证区域标签的正确性,未核实九只的基因型与性别记录(DANDI 元数据未逐只给出,性别取自论文描述)。带 Range 的重复请求返回字节不完全一致一事,在核对过程中真实遇到,已在 §5.1 说明。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- c-elegans-wholebrain-calcium — 共享标签:神经科学 / 生理信号 / 时序数据
- noneeg — 共享标签:神经科学 / 生理信号 / 时序数据
- tuh-eeg-corpus — 共享标签:神经科学 / 生理信号 / 时序数据
- bonn-eeg — 共享标签:神经科学 / 生理信号 / 时序数据
- emgdb — 共享标签:神经科学 / 生理信号
- phdsm — 共享标签:神经科学 / 生理信号
- pressure-flow-circum-cpap — 共享标签:生理信号 / 时序数据
- mimic-iv-waveform-legacy — 共享标签:生理信号 / 时序数据
- wearable-exam-stress — 共享标签:神经科学 / 生理信号 / 时序数据
- bpssrat — 共享标签:生理信号 / 时序数据
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

