Memory capacity of the real connectome: 0.00.
Memory capacity of a fake one built by shuffling every weight while leaving the structure byte-for-byte identical: 0.51.
I stared at those two lines for a long time. A fake brain remembering better than a real one is absurd enough that it can't be right. Eventually I figured out where the error was: in the word "computing." Neither group was computing. One was burning hot and the other was burning slightly less hot.
What this post is about: fly whole-brain connectome data dropped a few months ago, and a pile of projects started wiring it into video games. I wired one up too. This is about what it's actually doing once you wire it up, and how one division problem tells you in five minutes whether a whole-brain simulation is spinning its wheels.
Want the criterion? Chapter 3, it's a correlation coefficient. Want to know how badly my own probe fooled me? Chapter 5.
1. A Hundred and Twenty-Seven Thousand Neurons, After Ignition
The wiring comes from the FlyWire fly whole-brain connectome, 127,000 neurons. Each neuron uses the classic leaky integrate-and-fire model: voltage climbs, crosses a threshold, fires a spike, resets, repeats. Neurons push each other's voltage around along the real wiring. The parameters come from a 2017 paper and have been reused by a string of connectome simulations since.
Reservoir computing works like this. You take a big messy network with fixed wiring, pour a signal in, let it produce a complicated response, and train a dead-simple linear readout on the output. The middle never gets trained. The appeal is cheapness — the weights stay frozen and you only fit the last layer.
Using a connectome as the reservoir has an obvious motivation: evolution spent a few hundred million years tuning this wiring, so it ought to beat random wiring, right?
I poured in a randomly fluctuating signal, ran 30 seconds of biological time, and checked whether it could recall what went in a few tens of milliseconds ago. That's memory capacity — plain English: how many steps back can you ask and still get an answer.
The answer was those two lines above.
2. The First Number Should Have Stopped Me
Looking back, the real lesion sat in a number I glanced at and waved past.
Thirty seconds produced 21,958,868 spikes across 13,365 active neurons. Do the division:
21,958,868 spikes ÷ 13,365 neurons ÷ 30 seconds ≈ 55 Hz
Every living neuron fires 55 times per second. Continuously. No pauses.
Real fly neurons idle at a few to a few dozen hertz and burst higher. An entire brain holding every active neuron at 55 Hz isn't "active." It's on fire.
Firing rate alone still leaves room to argue the model just runs hot. The damning number is a different one: the correlation between the input signal and total brain activity is r = 0.982.
Here's what that means. I poured in a randomly fluctuating curve. I summed the spikes across the whole brain in each time bin to get a second curve. Those two curves correlate at 0.982 — essentially the same line.
Across ten control groups (real connectome, weight-shuffled, degree-preserved rewiring, fully random, three seeds each), that number lands between 0.982 and 0.989 every time.
A system that computes produces output that is a transformation of its input — delayed, mixed, nonlinear. When output looks identical to input, those 127,000 neurons in the middle did nothing. You shout, it shouts back, three hundred times louder.
This is a portable criterion. Take it:
Correlate the input sequence against total system activity.
r near 1 = it's echoing, not computing.
I ran that criterion on a fully random graph: r = 0.989. On the real connectome: 0.982. The real graph is marginally more of an echo chamber than the random one. At that point the question "is biological wiring better" stops meaning anything, because neither side is computing.
3. Where That 0.51 Came From
So why did the weight-shuffled group show 0.51 of memory capacity?
Look at the spike counts: real connectome 21.96 million, weight-shuffled 9.53 million. Less than half.
Shuffling weights scatters the clusters of very strong edges that exist in the real graph. In the real connectome those heavy edges gang up into positive feedback loops — one spark and they light, and once lit they don't go out. Flattening the weights removes most of the powder kegs, so the fake graph burns cooler and keeps a sliver of responsiveness to the input.
0.51 means "the fake connectome didn't burn as hard, so it has one breath left."
The degree-preserved group scored 0.00, 0.00, 0.009. The fully random group scored 0.00 three times. Every group except weight-shuffled is zero. That distribution is itself diagnostic — a genuine comparison of "which topology computes better" shouldn't produce nine zeros and one 0.5.
4. How Many Parameter Settings I Tried
Someone will say I picked a bad operating point.
I swept them. Input strength, number of injection sites, input rate. A sample:
| Injection sites | Weight multiplier | Firing rate | Input-activity r |
|---|---|---|---|
| 200 | 125 | 21.8 Hz | 0.994 |
| 200 | 250 | 29.7 Hz | 0.979 |
| 500 | 125 | 33.3 Hz | 0.030 |
| 500 | 250 | 51.5 Hz | 0.299 |
| 2000 | 60 | 45.0 Hz | 0.807 |
| 50 | 250 | 53.4 Hz | 0.038 |
That last row is the tell. Drive only 50 neurons — 0.04% of the network gets direct input — and the whole brain still burns at 53.4 Hz. I can't inject that much activity. It generated that on its own.
Another counterintuitive one: halving the drive strength made the firing rate go up threefold. That's the signature of a positive feedback system — let go and it runs wilder.
The two middle rows (r of 0.03 and 0.30) look like they escaped the echo regime, but their memory capacity is still 0.00. Leaving the echo regime doesn't mean entering the computing regime. It just changes the posture it burns in.
Memory capacity was zero for every combination. This model has no operating regime. It only has a self-excited state.
5. My Probe Lied to Me, and It Lied Deep
This chapter is the one worth keeping.
The first version of the memory-capacity probe reported 0.00 for every group. I came close to publishing "the connectome has no memory capacity."
What saved me was a mutation test — deliberately planting the answer in the data to see whether the probe finds it. I built synthetic data, 9,800 dimensions, with the answer sitting literally in the first five columns at a 10-to-1 signal-to-noise ratio. A gimme.
The probe reported 0.000.
It couldn't find an answer handed to it for free. The cause was dimensionality: 9,800 dimensions against 406 training samples blows out the linear readout, so it learns nothing. Every one of those earlier 0.00s was a probe artifact, not an absence of memory.
The fix was random projection down to a lower dimension before readout. After that, the same gimme dataset scored 5.909, with all five lag steps near perfect. That's a probe you can use.
Rerunning the real data with the fixed probe produced the two lines at the top. This time the 0.00 is real.
The projection matrix carries a hard requirement: all four control groups must use the exact same matrix from the exact same seed. And it must be a data-independent random projection, not PCA. PCA learns its basis from each group's own data, which effectively gives every group a different readout frontend. That's no longer a shared interface. In a controlled experiment the only thing allowed to vary is the connectivity matrix; touch the interface layer and the whole comparison is void.
Portable lesson: when a probe reports all zeros, all perfect scores, or identical numbers across every group, don't celebrate and don't despair — run a mutation test. A broken probe is far more dangerous than no probe. Without a probe you know you haven't measured. A broken probe convinces you that you have.
This was my second time getting caught by this. The previous one: I used whole-brain total spike count as the criterion for whether a stimulation experiment had taken effect. It reported "stimulation increased sixfold, total activity rose 5%," which looked like failure. Digging in, the 60 stimulated neurons went from 50.0 Hz to 291.7 Hz — working perfectly. The other 8,386 went from 52.9 Hz to 53.9 Hz, up 1.9%. I used an aggregate that is 99.3% self-excitation to measure an effect confined to 0.7% of the system. Put the criterion on the directly affected subset, never on the largest aggregate you have.
6. The Ablations I Ran While I Was There
Since it was already running, I cut the network open. The method: switch off an entire class of neurons and watch whether downstream motor neurons still fire.
| Class removed | Nodes | Edges cut | Motor neuron rate |
|---|---|---|---|
| Visual system | 59,374 | 5.43M | 84.2 Hz |
| Central brain | 28,690 | 4.29M | 3.8 Hz |
| Sensory input | 8,126 | 242K | 0.0 Hz |
| Visual projection | 6,335 | 838K | 80.8 Hz |
| Ascending neurons | 1,587 | 201K | 71.8 Hz |
| Descending neurons | 1,086 | 123K | 63.6 Hz |
Delete the entire visual system — 59,374 neurons, 5.4 million connections, close to half the brain — and downstream firing sits at 84.2 Hz, unmoved.
Only removing sensory input (8,126 neurons, 242K edges, under a twentieth of the visual system) actually puts the fire out.
That contrast is the diagnosis. If this were a network transmitting information, cutting half of it would do something. It does nothing, because those 84.2 Hz were never information. They're the self-excitation floor. Removing input kills it because input is the match.
Random edge deletion behaves the same way. Cut 5%, 10%, or 20% of connections and motor neurons still hover around 80 Hz. Only at 50% does it drop to zero. A system that survives losing 20% of its wiring with unchanged output isn't carrying much information in that output.
7. Where This Experiment Can't Be Trusted
For honesty's sake.
I never verified that 55 Hz is inevitable under these parameters. They come from that 2017 paper, which applied them to far smaller subcircuits. Whether they necessarily self-excite on a 127,000-node whole brain is something I didn't sweep systematically — I only swept the input side. There may be a membrane parameter set I never found that keeps it from burning.
The degree-preserved rewiring is an approximation. I shuffled target endpoints, which preserves out-degree exactly and preserves the in-degree sequence as a multiset, but it isn't a strict edge-swap algorithm. It produces multi-edges (the real graph has them too — multi-synaptic connections) and I dropped self-loops.
Memory capacity was measured out to 8 lag steps at 50 ms each. Longer timescales are untested. A self-excited system should be even less likely to hold memory at longer scales, but I don't claim things I haven't measured.
Only 30 seconds of biological time, one input seed. The real connectome group wasn't repeated across seeds — each control tier got three, but the connectome itself got one, since it has no randomness to vary. That said, if the result is "MC is identically zero," more runs won't turn zero into nonzero.
I never varied the excitatory/inhibitory ratio. Real fly brains have a specific balance, and I used the neurotransmitter-predicted signs that ship with the data. If those predictions carry a systematic bias that overstates excitation, the self-excitation is a data problem rather than a model problem. This is the thread I'd pull next.
8. Next Time You See "I Wired a Fly Brain Into X," Ask in This Order
First, what's the neuron firing rate? Biological values run from a few to a few dozen hertz. A network holding above 50 Hz is self-exciting.
Second, what's the correlation between the input sequence and total activity? Near 1 means echo chamber, and the network in the middle isn't working.
Third, switch off half the network — does the output change? If it doesn't, that output carries no information.
Fourth, is there a random control? "Biological structure is better" without a control is a feeling.
Fifth, has their probe been mutation-tested? Plant the answer in the data. Can the probe find it? If not, the first four numbers are void.
I got caught on the fifth one twice, and the first time I nearly published a probe defect as a scientific finding.