A 3D fruit fly on macOS desktop powered by the real FlyWire connectome
摘要
这是一个 macOS 桌面应用,用真实的 FlyWire 果蝇连接组数据驱动一只 3D 果蝇在桌面上行走、梳理、睡眠和躲避光标。它包含 23,210 个真实神经元胞体位置的可交互脑窗口,以及一个约 668 个神经元、约 19,000 条真实突触连接的 1 kHz 漏电积分 - 发放(LIF)模拟电路,涵盖逃逸、转向、梳理、倒退等行为对应的神经元。逃逸行为并非脚本预设,而是光标接近作为视觉输入,只有当 Giant Fiber 神经元通过真实突触真正发放时才触发。身体动画是程序生成的,因为连接组只有脑部数据。应用无需任何权限,通过菜单栏控制,支持暂停、显示脑窗口、逃逸测试、多显示器跳转、添加多只果蝇等功能。脑窗口可交互,点击区域会刺激附近神经元并观察真实网络下游反应。文章还说明了身体行为与神经元发放率的对应关系、身体到脑的反馈回路、基于窗口和点击的桌面交互生态、昼夜节律和温度影响,以及数据重建方法和模型诚实性说明。代码采用 MIT 许可,数据文件为 CC BY - NC 4.0。
荐读理由
这个开源项目把真实果蝇连接组数据跑成实时脉冲模拟,代码 MIT 可抄,能直接借鉴它把神经数据做成可交互桌宠的架构
原文
DesktopFly 🪰
A 3D fruit fly that lives on your macOS desktop — driven by a live spiking simulation of the real FlyWire connectome. It walks across your windows, grooms, sleeps, and decides to flee your cursor with the same neurons a real fly uses.
The fly's brain window: 23,210 real neuron soma positions from FlyWire v783, with live spikes flashing at real neuron locations. The two glowing yellow markers are the Giant Fibers — the escape command neurons. Click any region to stimulate it.
What's real
23,210 neuron soma positions (of 139,255 in FlyWire v783) render the rotating brain window, colored by super-class (FlyWire's coarse cell-type grouping).
A 668-neuron circuit with ~19,000 real synaptic connections (synapse counts, signed by neurotransmitter prediction) runs as a 1 kHz leaky-integrate-and-fire (LIF) simulation:
LC4 (104) + LPLC2 (210) looming-detector visual neurons
DNp01 / Giant Fiber (GF) (2) — the escape command neuron
DNa01 + DNa02 (4) steering neurons · DNp09 (2) forward walking
DNg11 (6) grooming · MDN (4) backward walking ("moonwalker")
DNp02/DNp04/DNp11 (6) escape-maneuver (wing) neurons
their 330 strongest partners, including ascending (proprioceptive) and sensory (wind) neurons
Escape is not scripted. Your cursor's approach becomes looming input to the real LC4/LPLC2 cells; the fly takes off only when the Giant Fiber actually spikes through its real synapses — ~1,200 synapses of feedforward inhibition push back, which is why slow approaches are tolerated and fast lunges trigger escape in ~4 ms, just like the real animal.
The body itself is procedural (FlyWire is a brain connectome — no body geometry exists), with a tripod gait, visible wing-beat, altitude-scaled flight, grooming, and sleep postures.
Installation
Requirements: macOS 13+, Xcode Command Line Tools (Swift 5.9+). No permissions or entitlements needed — everything it senses (cursor, window frames, clicks-as-taps, thermal state) is permission-free.
git clone https://github.com/DenisSergeevitch/desktop-fly.git
cd desktop-fly
./build.sh
./DesktopFly
A 🪰 item appears in the menu bar; quit from there. The fly wanders your desktop on a transparent, click-through overlay — it never intercepts your mouse or keyboard.
Controls (menu bar 🪰)
| item | effect |
|---|---|
| Pause / Resume | freeze the world |
| Show/Hide Brain | toggle the live brain window |
| Escape Test (loom) | inject a looming stimulus, watch the GF fire |
| Move to Next Display | hop the fly across monitors (shown when >1 display) |
| Add / Remove Fly | extra flies (only fly #1 carries the brain) |
| Scare Flies | startle everyone |
The brain window is interactive: hovering pauses the rotation; clicking a region "optogenetically" stimulates the ~60 nearest circuit neurons for 400 ms. The fly's reaction is whatever the real network does downstream — click the Giant Fiber and it escapes; click DNg11 and it grooms; click one side's DNa01/02 and it turns.
How real neurons drive the body
| body behavior | driven by |
|---|---|
| escape takeoff | DNp01 giant fiber spike |
| walk vs. rest, walking speed | DNp09 rate |
| steering | DNa01+DNa02 left−right rate difference |
| grooming | DNg11 rate |
| backward scoot | MDN burst |
| nervous darting | LC4/LPLC2 population rate |
| wing-beat effort, threat wing-raise | DNp02/04/11 rate |
| spontaneous takeoff | whole-population arousal |
The loop also closes body→brain: the gait rhythm feeds the circuit's real ascending (proprioceptive) neurons in phase with the legs, and fast cursor motion stimulates its sensory (wind) partners.
Desktop ecology (all permission-free macOS senses)
Window terrain: window top edges are ledges — the fly lands on them, walks along them, rides a window you drag, and startles when one closes under its feet.
Window looms: a window appearing near the fly feeds the looming pathway; the circuit decides whether to flee your dialogs.
Clicks are substrate taps; clicking next to the fly startles it through the wind→GF pathway. Typing is vibration (idle-time API — knows when keys were pressed, never which).
Circadian rhythm: dawn/dusk activity peaks, midday siesta, night quiescence. Sleep: idle at night → it sleeps, breathing slowly, with raised arousal threshold; it grooms after waking.
Temperature: flies are ectotherms — a hot Mac is a faster fly.
Regenerating the data
data/ ships with compact derived files. To rebuild them from the raw FlyWire Codex dumps (~60 MB download):
mkdir -p /tmp/flywire && cd /tmp/flywire
B=https://storage.googleapis.com/flywire-data/codex/data/fafb/783
curl -O "$B/classification.csv.gz" -O "$B/coordinates.csv.gz" \
-O "$B/connections.csv.gz" -O "$B/consolidated_cell_types.csv.gz"
cd - && python3 etl.py /tmp/flywire
Diagnostics
./DesktopFly --simtest # circuit invariants: GF silent at rest, 4 ms loom latency, ...
./DesktopFly --behaviortest # 17 end-to-end checks: stimulate neurons -> body reacts
./DesktopFly --snapshot f.png # offscreen fly render
./DesktopFly --brainshot b.png # offscreen brain render
What's modeled vs. measured
Honesty section: the connectome gives wiring, not physiology. The LIF dynamics, neurotransmitter signs (ACh+, GABA−, Glu−), the gap-junction boost on LC→GF and wind→GF (documented electrical coupling), synaptic delays, and the sensory transduction (cursor → looming value) are standard modeling choices layered on the real graph. Everything downstream of the sensory neurons — who connects to whom, and how strongly — is FlyWire data.
License & citation
Code is MIT. The files in data/ are derived from FlyWire (FAFB v783) and are CC BY-NC 4.0 — see data/DATA_LICENSE.md. If you use this, cite:
Dorkenwald, S. et al. Neuronal wiring diagram of an adult brain. Nature 634, 124–138 (2024). https://doi.org/10.1038/s41586-024-07558-y
Schlegel, P. et al. Whole-brain annotation and multi-connectome cell typing of Drosophila. Nature 634, 139–152 (2024). https://doi.org/10.1038/s41586-024-07686-5
这条对你有帮助吗?

