Shaduf.Research preview
Digital Fly Lab/Shiu et al. brain model

Projects catalogue · project page

The Shiu et al. fruit fly brain model: the whole-brain simulation most demos build on

Drosophila_brain_model is the code behind Shiu et al. 2024 (Nature): a simple spiking model of every proofread neuron in the FlyWire adult fly brain, run in the Brian2 simulator. You switch chosen neurons on or off by their FlyWire ID and read the firing rates of all the others. It has no body and nothing is trained, and the paper tested its predictions against real fly experiments.

  • Our grade: A tested against fly experiments and a shuffled control
  • Code: philshiu/Drosophila_brain_model, MIT licence
  • Data: FlyWire, CC BY-NC 4.0 (non-commercial)
  • Checked by us: , code unchanged

Short answer

This is the best-tested whole fly brain model you can run yourself. In the paper, 91% of 164 testable predictions matched fly experiments. It runs on an ordinary CPU: in our own test on 2 CPUs, sugar input drove the feeding motor neuron MN9 to 85.2 Hz, and shuffled wiring dropped it to 0 Hz.

It is a brain-only model with clear limits. It has no body, no learning, no gap junctions, no neuromodulation and no baseline activity. The authors say they do not trust its absolute firing rates. Most viral demos in our catalogue use this model or its settings, and then add inputs, outputs and bodies of their own.

Try it and run it

The tested way to run it is our Build your own guide, which wraps this model in a small project and runs it from an empty folder. Labels show what we ran ourselves.

What the Shiu et al. model needs, and what we tested (checked 28 Sep 2026).
ItemValueOur status
No-install optionColab notebook from the authors (free Google account needed)Page responds, not run by us
PlatformLinux x86_64Tested
PlatformmacOS, Windows, condaUntested
GPUNone neededTested (CPU only)
Python and Brian2The upstream environment pins Python 3.10 and Brian2 2.5.1. We used Python 3.11.2 and Brian2 2.9.0 (numpy target, no compiler).Our versions tested Upstream pins untested
Data sizev630 files about 90 MB; v783 files about 104 MB; the whole repository about 200 MB (a partial clone with only v783 is about 105 MB)Tested (v783)
MemoryAbout 0.58 GB peak per trial in our streamed build. The upstream create_model() reads the whole 15.1-million-row table at once and was stopped for lack of memory on our 3 GiB machine; plan for at least 4 GB free RAM for the upstream run_exp().Our project tested Upstream run_exp() untested
Speed58–65 s of wall time per 1 s of simulated time on 2 CPUs (ours). The paper reports about 5 minutes per 1 s trial per CPU thread for sugar activation.Ours tested Paper's figure not checked
CommandsThe full path from an empty folder, step by stepTested Build your own

What is in the model

The model's parts, from its code (model.py) and the paper.
PartWhat it isKind
WiringFlyWire FAFB release v630 by default, as used in the paper (127,400 proofread neurons). Files for v783 are included as an option (138,639 neurons, 15,091,983 connections).Measured
Synapse weightsNumber of synapses × 0.275 mV, with a sign (excitatory or inhibitory) from the predicted neurotransmitter.Measured counts Modelled sign and scale
Neuron modelLeaky integrate-and-fire: resting and reset −52 mV, threshold −45 mV, membrane time 20 ms, synaptic time 5 ms, refractory 2.2 ms, delay 1.8 ms.Modelled
InputChosen neurons get random (Poisson) spikes, 150 Hz by default.Hand-made
OutputFiring rates of chosen neurons, for example MN9, the motor neuron that extends the proboscis to feed.Hand-made readout
Trained, scripted, bodyNothing trained (the one free parameter, 0.275 mV, was set by hand); nothing scripted; no body.None

Results: the paper, our run and an independent re-run

The chart shows our own run on FlyWire v783, made for the Build your own guide on 28 Sep 2026. The table adds the paper's numbers and two outside re-runs, which we did not repeat.

MN9 firing rate by conditionMean MN9 firing rate over 1 second trials, with standard deviation: sugar at 150 Hz 85.2 ± 3.2 Hz; reference sugar at 100 Hz 65.6 ± 4.2 Hz; one neuron silenced 56.2 ± 2.5 Hz; sugar at 50 Hz 16.6 ± 7.2 Hz; no stimulus 0 Hz; shuffled wiring 0 Hz in 6 of 6 trials. The action threshold is 20 Hz.action threshold: 20 HzSugar 150 Hz (default)Sugar 150 Hz (default): 85.2 ± 3.2 Hz (5 trials)85.2 ± 3.2 HzReference: sugar 100 HzReference: sugar 100 Hz: 65.6 ± 4.2 Hz (5 trials)65.6 ± 4.2 HzSilence one neuronSilence one neuron: 56.2 ± 2.5 Hz (5 trials)56.2 ± 2.5 HzSugar 50 HzSugar 50 Hz: 16.6 ± 7.2 Hz (5 trials)16.6 ± 7.2 HzNo stimulusNo stimulus: 0 Hz (1 trial)0 Hz (1 trial)Shuffled wiringShuffled wiring: 0 Hz (6 of 6 trials)0 Hz (6 of 6 trials)020406080100MN9 firing rate (Hz), mean ± s.d. over 1 s trials MN9 firing rate by condition: sugar 150 Hz 85.2 Hz; reference 100 Hz 65.6 Hz; one neuron silenced 56.2 Hz; sugar 50 Hz 16.6 Hz; no stimulus 0 Hz; shuffled wiring 0 Hz. Threshold 20 Hz.Dashed marks: threshold 20 HzSugar 150 Hz (default)85.2 HzSugar 150 Hz (default): 85.2 ± 3.2 Hz (5 trials)Reference: sugar 100 Hz65.6 HzReference: sugar 100 Hz: 65.6 ± 4.2 Hz (5 trials)Silence one neuron56.2 HzSilence one neuron: 56.2 ± 2.5 Hz (5 trials)Sugar 50 Hz16.6 HzSugar 50 Hz: 16.6 ± 7.2 Hz (5 trials)No stimulus0 HzShuffled wiring0 Hz050100
MN9 firing rate in our run (FlyWire v783, 2 CPUs, Linux). Shuffled wiring keeps each neuron's number of connections but scrambles who connects to whom.
  • 91%of 164 testable predictions matched fly experiments (paper; 84% without the optogenetic screen)
  • 85.2 Hz vs 0 HzMN9 with real vs shuffled wiring, sugar at 150 Hz (our run)
  • 66.1 HzMN9 at 100 Hz sugar in the independent doom-fly-control re-run (third party)
Measured results and controls for the Shiu et al. model.
ResultNumbersWho measured it
Agreement with fly experiments91% of 164 testable predictions consistent with experiments; 84% without the split-GAL4 optogenetic screenThe paper's authors
Paper's shuffle controlShuffled connection weights activated MN9 in 1 of 100 simulations, against 100% with the real connectome (100 Hz sugar input)The paper's authors
Our run (v783, 28 Sep 2026)Sugar 150 Hz → MN9 85.2 ± 3.2 Hz (5 × 1 s; population sd, 3.56 as a sample sd); no input 0 Hz; sugar 50 Hz 16.6 ± 7.2 Hz; sugar 100 Hz 65.6 ± 4.2 Hz; one neuron silenced 56.2 ± 2.5 Hz; shuffled wiring 0.0 Hz (6 of 6 trials, 2 shuffles)Us
Reference values at 100 Hz67.03 Hz (upstream Brian2 notebook, v630); 67.30 Hz (drosophila-brain-mlx, v630, 30 trials)Others; relayed, not re-run by us
Independent re-run in doom-fly-controlSugar 100 Hz → MN9 (left) 66.1 Hz (30 trials); bitter → 0 Hz; shuffled wiring 0 HzA third party (new, 28 Sep 2026)

What "91%" and "95%" mean

91% is an accuracy

"Across 164 predictions we were able to test empirically, 91% were consistent with our empirical results." The comparison is in the paper, not in the repository code. It is about the brain-only model, not about any game, body or "upload".

95% is not an accuracy

It measures how much the model's predictions stay the same when its settings change (±30% synapse weight, ±50% inhibition): 88–96% agreement with the default model. Posts that call it "95% accurate" misread it.

Viral "uploaded fly brain" claims that cite these numbers go beyond the paper. See Is it real?

Known issues

Upstream issues, state checked on 28 Sep 2026 through the GitHub API.
IssueStateWhat it means for you
#7: running figures.ipynb on data version 783 gives KeyError: 720575940620900446Closed (29 Dec 2024)The notebook uses v630 neuron IDs, and one sugar neuron has a new ID in v783. Use its v783 successor 720575940639259967. We reproduced the error and the fix.
#10: the README says silencing removes synapses "to and from" a neuron, but model.py removes only outgoing onesOpen (since 15 Sep 2026, no replies)Silencing a neuron only removes its outgoing synapses. Our Build your own project copies this upstream behaviour and says so.

Two more things readers trip on: switching to v783 is more than the two-line setting change in the README (neuron IDs change, see #7); and the FlyWire data licence is CC BY-NC 4.0 on flywire.ai, while the Zenodo v783 record says CC BY 4.0. This conflict is unresolved; we follow the stricter, non-commercial reading.

Reported on 2 Oct 2026 by a third party: the model is bistable. In a study with pre-registered plans and raw results (grade A), a strong enough sugar or single-odour drive switches it into a state in which about 8,100 neurons keep firing for at least 10 s after the input stops, reproduced in the original Brian2 code. We have not reproduced this ourselves, and it rests on the sign the model gives to antennal-lobe local neurons, which have no neuron-level transmitter call.

28 catalogue projects built on it

These projects use the Shiu et al. model or its settings. A good grade for the base model does not carry over: each project is graded on what it adds.

Catalogue entries that use the Shiu et al. model, with their own grades (6 Oct 2026).
KindProjects and grades
Ports and enginesdrosophila-brain-mlx A Apple MLX port with a shuffle control · Fly Worker A · Vial B · dotFly C · Loihi 2 port U · flybrain.info Lab U (pre-computed runs) · Eon fly-brain n/a (engine benchmark)
Demos and studiesWhat a fly connectome adds to a body A · flybench A · FlyBrain reservoir A · BioReservoir B · Neural Canvas B · FlyDrones C · Eon's embodied fly U
New on 28 Sep 2026doom-fly-control A re-runs the taste test with shuffled wiring · fly-api C wraps the sugar → MN9 test · fly-brain (erojas) C PyTorch version with a NeuroMechFly body
New on 29 Sep 2026fly-brain-zero-shot A runs the model with unchanged weights on the GPU between the FlyVis eye model and a NeuroMechFly body; scrambled wiring stops it steering (details)
New on 30 Sep 2026flybrain-connectome-benchmark A a pre-registered test of the model against published fly experiments: single-neuron knockout effects predicted with sensitivity 0.77 and specificity 0.99 (the authors' preprint) · FlyLeno B a JavaScript port drives a talk-show host in the browser (verdict) · Open Fly B plays a strategy game in the browser · Fly With Me B a fly-brain DJ · FlyKart B the model's equations on MaleCNS, steering a go-kart
New on 1 Oct 2026Brain Runners A the untrained whole brain plays a lane-runner game; it beats shuffled wiring but not a brainless version of its own rule (study row) · FLY67 B a JavaScript port in the browser drives an animated 3D fly · Doodle Fly B a TypeScript port plays a Doodle-Jump-style game in the browser
New on 2 Oct 2026Hidden attractor in the Shiu et al. model A pre-registered plans and raw results: after a strong sugar pulse about 8,100 neurons keep firing for 10 s without input, also in the authors' own Brian2 code (3 seeds), and none without the pulse. It rests on the sign given to antennal-lobe local neurons, which have no neuron-level transmitter call
New on 5 Oct 2026Flight-test the fly A runs the model's parameters on a 20,556-neuron FlyWire motion-to-steering circuit as an aircraft yaw damper: better than 10 shuffles, far worse than a classical damper · our own looming test reproduced fly67's looming rule in this model in Brian2 (giant fibre 111.5–120.5 Hz, far-side DNa02 23–44 Hz) and found that scrambled wiring silences it (We ran the map)

Our own fair test of this model (1 Oct 2026). We ran the model's sugar reflex on the real wiring and on four scrambled versions, pre-registered: degree-preserving and weight shuffles silence MN9 (0 Hz against 85.2 Hz), an interior-only shuffle keeps 39 Hz, and a sign shuffle makes the whole brain fire. One reflex, one trial per shuffle. Results and limits On 2 Oct 2026 the gain check finished: no gain matched the real activity on 3 shuffles, and MN9 stayed at 0 Hz at every gain.

In your browser (3 Oct 2026). Two browser ports of this model ran in our headless-browser check without a GPU: Fly Worker (17.6 MB downloaded) and FLY67 (33.3 MB), both with the brain in a Web Worker in the tab; FlyLeno loaded its 31.4 MB connectome and then froze, most likely because of our software graphics. All six checks

Our body test (2 Oct 2026). We connected this model to FlyGym's walking fly through a mapping we wrote. With the forward-walking neurons P9 stimulated, the fly walked about 14 mm in 1 s with the real, a scrambled or no brain; the real wiring added turning commands (DNa02). Tasting sugar fired MN9 at 82 Hz and sent no walking command. Who does the walking? · Add a body

Video

Talk by Philip Shiu for the Carboncopies Foundation on YouTube (uploaded 11 Mar 2026, recorded February 2025, 1:20:57). The link answered our check on 3 Oct 2026. We found no short demo video by the authors.

Status

Drosophila_brain_model status on 6 Oct 2026.
FieldValue
Codegithub.com/philshiu/Drosophila_brain_model
Last commit (default branch)91bdd1e, 14 Sep 2024; unchanged
Last releaseNone
Code licenceMIT (LICENSE file)
Data licenceFlyWire: CC BY-NC 4.0 (flywire.ai); the Zenodo v783 record says CC BY 4.0 (conflict unresolved)
PaperShiu et al. 2024, Nature, peer-reviewed: doi, full text
Link checkColab and GitHub answered (HTTP 200) on 6 Oct 2026. doi.org showed a bot check to our script that day, which does not mean it is dead; the PubMed Central page answered.
GitHub stars349 on 27 Sep 2026 (not re-queried since)
Catalogue entryshiu-drosophila-brain-model, grade A, last verified 6 Oct 2026; its shuffled-weights result is in Does fly wiring help?

Sources

Search published pools, pages, reports, and evidence.