Hold a course in gusty flight
Can the real circuit turn visual motion into corrective steering, the reflex every flying fly relies on?
What we measured
- Real wiring, held out
- 0.97 (1 on course)
- Rewired, same degrees, held out
- 0.63 (1 on course)
- Random wiring, held out
- 0.09 (1 on course)
- Circuit silenced, held out
- 0.26 (1 on course)
- Hand written readout (DNa02 right minus left)
- 0.30 (1 on course)
- Measured with
- scripts/gym-benchmark.ts: 12 generations of 16, same seed and budget for every circuit
- Train it yourself
- /train/gym-flight
What happens
The fly flies in the middle of a striped drum, like the tethered flight simulators of Götz and Reichardt. Gusts turn it; its own turning is seen as wide field motion by the HS cells of the lobula plate, and a dark bar ahead slides to one side of its view (LPLC1).
A readout of the 21 output neurons sets the steering torque. The score is the mean cosine of the heading error: 1 is straight on course, 0 is lost.
Training uses moderate gusts; the held out test stronger, more frequent ones.
What you see is the readout the benchmark trained on the real circuit, playing the held out setting. Switch the circuit to a rewired one to watch the same readout on wiring it was not trained for, or train your own in the training lab.
Inspired by: Götz (1968) and Reichardt's flight simulator; Kim et al. (2017) on HS cells and steering.
How the brain is wired to the world
The mapping is part of the experiment design. Everything between senses and motor output is the connectome.
- Turning right → HS cells right, turning left → HS cells left
- Bar drifting left or right of centre → LPLC1 of that side
- Trained readout of 21 output neurons → steer right (+) or left (−)
Dataset: Subcircuit of FlyWire v783: inputs HSE, HSN, HSS, LPLC1, LC4, LPLC2, LC16, ORN_DM1, ORN_DA2, sugar/water, bitter; outputs DNa01, DNa02, DNa03, DNb05, DNa11, DNp01, MDN, DNp09, DNg13, DNp03, CB0701; paths with at least 40 synapses per step. About this dataset
Run it locally
Every experiment can also use the local runner, which simulates the brain on your own computer. It is required for connectomes too large for a browser.
git clone https://github.com/berkeyc/connectome-lab.git cd connectome-lab pip install -r local/requirements.txt python local/runner.py # listens on ws://localhost:8765
Then choose “Local runner” in the player controls and press Restart. Your browser may ask for permission to connect to a local device.