DEV Community

AI OpenFree
AI OpenFree

Posted on

126 neurons out of 173,023 carry the fly's danger signal — and we built a browser demo that lets you cut them

126 neurons out of 173,023 carry the fly's danger signal — and we built a browser demo that lets you cut them

A connectome tells you which neuron wires to which. It does not tell you what happens when
you take one away.

So we built a page where you can. It runs the complete Drosophila melanogaster male central
nervous system connectome — 173,023 neurons, 6,127,738 synapses — simulates a looming
object coming at the fly, and lets you delete an entire cell type and run the same stimulus
again.

Try it → — click the fly to swat
it, press LC4, then swat again.


The result

Every number below is the mean firing of the escape descending neurons (DNp01–DNp04) in
response to the same looming stimulus, measured in the simulation.

Cell type removed Cells Outgoing connections Escape signal Change
(none — intact brain) 0.840
LC4 — looming detector 126 7,846 0.091 −89.1%
LPLC2 — collision-course detector 185 10,579 0.749 −10.7%
LC11 — control 143 9,940 0.840 0.000000
LC6 — control 124 4,842 0.840 0.000000

LC4 is 126 cells — 0.07% of the brain. Removing it removes 89% of the escape signal.

The two controls are the actual point

It is easy to delete neurons and watch a number go down. The interesting question is whether
the number goes down because of the circuit or because you deleted neurons.

So we deleted two cell types that should do nothing to escape. LC11 and LC6 are lobula
columnar neurons, same family as LC4. LC11 has more cells and more outgoing
connections than LC4. LC6 has almost exactly the same cell count (124 vs 126).

Delete every one of them and the escape signal changes by zero to six decimal places.

That is the difference between a demo and a measurement. Without those two rows, the LC4
result is just a number with a story attached.


The trap we walked into, which we think generalises

An earlier version of this page also let you delete DNp01 and DNp02 — the escape
command neurons themselves — and reported drops of −30% and −15%.

Those numbers were arithmetic, not biology, and we took them down.

The escape signal is the mean of eight neurons, DNp01–DNp04. DNp01 and DNp02 are two of
those eight. Deleting them forces two of the eight readout values to zero, so the mean falls
no matter what the circuit does. Re-measured on the remaining escape neurons only, the true
effect of deleting DNp01 is −0.0%.

The general form:

If the cell you delete is inside the population you are reading from, part of the drop
you measure is your own subtraction.

This is not exotic. Any ablation study — connectome, ML feature ablation, microservice
chaos testing — has the same shape: is the thing I removed also part of my metric? The
cheapest guard is the one we should have run first: delete something that must not matter,
and check that nothing moves.

Every cell type offered on the page now is outside the readout.


How it runs with no server

The page is fully static. No GPU, no backend, no queue.

That works because of one property of the problem: a looming stimulus drives fewer than 1%
of neurons
above threshold. The activity snapshots are therefore extremely sparse, and
sparse things compress. We run the full simulation ahead of time, ship the results as data,
and the browser replays them over a WebGL point cloud of 141,781 neurons — the ones with
soma coordinates in the dataset.

Colour encodes sign, not identity: warm = excitatory cell types, cool = inhibitory. When
you swat, the brain is painted with the actual simulated firing, stepped through
6 → 12 → 20 → 30 integration steps, so you watch activity spread along real wiring rather
than appear all at once.


What is measured and what is not

Being precise about this is the whole value of the thing.

Measured. The connectivity, which is the released connectome — nothing about the wiring
is invented. The escape signal in the table. The per-neuron firing that lights up the 3D view.
Neurotransmitter sign comes from the dataset's predicted transmitter per neuron
(acetylcholine excitatory; GABA, glutamate, histamine inhibitory) — 103,877 excitatory,
59,530 inhibitory, 9,616 with no confident sign.

Chosen by us, not measured. Synaptic strength is a uniform synapse-count-based value, not
a measured conductance. Dynamics are a leaky firing-rate model
(τ dx/dt = −x + W·r + I, r = relu(x)), with the recurrent weight matrix rescaled from a
raw spectral radius of 30.0 down to 0.9 so the network neither dies out nor saturates.

Drawn, not measured. How far the fly lunges is drawn proportional to the measured
escape signal. It is a visualisation of the signal, not a simulated behaviour.

So: "removing LC4 removes 89% of the escape signal in this model" is a measurement.
"therefore the fly gets swatted" is not, and we do not claim it.

One more thing worth knowing if you cite this dataset: three neuron counts circulate and they
mean different things — 176,422 Neuron nodes in the database, 164,506 neurons with an
assigned cell type, 141,781 with soma coordinates. Say which one you mean.


The circuit, in one paragraph

Looming-sensitive visual neurons in the lobula — LC4 and LPLC2 — detect an object growing on
the retina. They converge on descending neurons, principally DNp01, the giant fibre: a
single pair of cells that carries the command from the brain down to the ventral nerve cord
and the flight muscles. Starve the detectors and the command never forms. That is what the
table measures.


Data and credit

Dataset: male CNS connectome — FlyEM / HHMI Janelia Research Campus, with Google Research,
Columbia University and Harvard University (2026). Licensed CC BY.
https://www.janelia.org/project-team/flyem/male-cns-connectome

This demo is a derivative work of that dataset, released under CC BY 4.0. The simulation
engine, the calibration and the ablation measurements are ours. The connectivity is not —
please keep the attribution if you reuse it.

Open the demo →

Built by VIDRAFT.

Top comments (0)