# 神经 → 运动观察台

这里把同一次实验的神经活动和身体动作放在一条时间线上。展示名称为“基于果蝇连接组结构的具身计算模拟”。

## 先看转向

打开 `motion/`，默认选择“左 DNa02 直接刺激”。先拖到 1 秒以前，再播放到刺激之后：

1. 左、右 DNa02 的实际放电事件变为各自的平滑活动率。
2. 两侧活动率之差经模型增益得到转向驱动。
3. 新指令在下一个 10 ms 控制周期应用到辅助步态控制器。
4. 六足物理身体产生实际朝向、角速度和轨迹变化。

在同一模拟时刻切换右侧刺激、双侧刺激、无刺激或左侧半强度，比较身体视频、活动差与轨迹。双侧刺激是两侧等活动的对照；它不等于无刺激。新增独立完整 3 秒零电流基线和左侧半强度记录，前 0–1000 ms 的完整身体位置、速度与原三组逐元素一致。这五条直接刺激记录都只有种子 0。

实际计算结果（1000→3000 ms 的连续朝向变化减去零刺激基线）：左侧全强度 +5.1814 rad，右侧全强度 −5.1463 rad，双侧同步 0 rad，左侧半强度 +4.0098 rad。全强度左侧记录 196 个 spike，半强度 83 个，基线 0 个；均无翻倒。电流减半没有产生转向减半，因为活动率、平滑与限幅之间的关系是非线性的。这里描述当前模型的结果，不能作为真实果蝇的量化行为结论。

## 再看感觉输入与通路活动

切换到自然世界记录。所有保存的 T4a/T4b/T5a/T5b → DNa02 有向路径均显示，包含沉默节点；没有按成功结果选择路径。点选神经元查看完整 64 位 ID、类型及类型来源。坐标按存档体素尺寸转换，代表定位点，不代表真实骨架。

点的活动来自原始放电事件。连线表示解剖连接；相邻节点先后发放并不能证明这一次脉冲经过了某一条边。直接刺激校准关闭了连接，因此不能用于证明上游活动传播。

同一个气味源位置、种子和模拟时刻下，比较正常连接、关闭神经连接和钳制运动读出。自然世界的两种镜像位置保留原始阴性结果和翻倒；不能把翻倒造成的身体旋转解释为正常转向。这里仅展示种子 0 的同步细节；全部配对种子的统计仍在原自然世界报告里。

## 读出公式和身体含义

每 10 ms 的实际 DNa02 spike 数先经过 100 ms 指数平滑：

`rate = exp(-10/100) × previous_rate + (1-exp(-10/100)) × spike_count × 1000/10`

`turn = 0.4 × clip((left_rate-right_rate)/50, -1, 1)`

`left_drive = 1-turn`，`right_drive = 1+turn`。钳制读出时转向驱动设为 0。

身体当前周期使用上一周期的指令。正 yaw 表示从上方看逆时针，单位为弧度；展开的朝向保留跨 ±π 的连续变化。视频依据各自真实帧时间同步，原始身体和指令表为 10 ms，神经事件精度为 0.2 ms。视频帧间没有新的物理记录。

42 个腿部关节的角度和速度从保存的 MuJoCo 状态和实际模型索引提取。神经读出控制左右步态驱动，六腿协调由辅助控制器完成；当前模型没有完整腹神经索、运动神经元—肌肉接线。因此腿部变化属于物理身体和辅助控制器的输出。

## 来源和复现

可下载每次完整时序 CSV、选中节点事件 JSON、关节记录以及来源 SHA-256 清单。原始实验、旧模型与冻结校准保持不变。

- 神经结构：[FlyWire FAFB 783.0](https://zenodo.org/records/10676866)。
- DNa02 左右活动差与转向关系的实验依据：[Rayshubskiy 等，eLife 102230](https://elifesciences.org/articles/102230)。本项目的具体增益、平滑和辅助步态换算是模型参数。
- 六足身体：[FlyGym 2.1.0](https://github.com/NeLy-EPFL/flygym/tree/v2.1.0)。
- 所有第三方许可见 `../licenses/THIRD_PARTY_NOTICES.md`。

Windows 项目内双击 `start_motion.bat` 打开已计算记录；`start_motion_live.bat` 打开本机新实验入口。线上观察台回放已完成记录，不能修改历史实验。
