Drosophila Under the Hood

DrosophilaUnder the Hood

An interactive map of the male Drosophila CNS connectome

loading dataset provenance... loading analysis provenance... Data licensed CC-BY 4.0 by FlyEM (HHMI Janelia), Cambridge Drosophila Connectomics Group/MRC LMB & Google Research. Cite: Berg, Beckett, Costa et al., "Sexual dimorphism in the complete connectome of the Drosophila male central nervous system," Cell (2026); preprint bioRxiv 10.1101/2025.10.09.680999. Dataset, extraction/export timestamps, classification rule version + hash, pathway parameters, git commit - everything above in one file.

This is a real neural network.

Not synthetic, not trained: a measured wiring diagram of ~165,000 real neurons from one male Drosophila brain and nerve cord, reconstructed synapse by synapse from electron microscopy.

The connectome at a glance

  • Nodes = neurons. ~165,122 traced.
  • Edges = synaptic connections. ~25.5M, directed, weighted.
  • Edge weight = the dataset's reported synapse count between two specific neurons. These are reconstructed counts, not weights learned by this explorer.
  • Architecture: input (sensory) → processing (5 coarse regions, dominated by the optic lobe) → output (motor/endocrine): a sparse, modular, grown analogue of an input/hidden/output stack, not a designed one.
  • Density: 25.5M edges across 165k×165k possible pairs is ~0.09% dense, far sparser than a dense MLP layer, closer in spirit to a very large, irregular sparse GNN.

What this is not

  • This explorer performs no training or inference - no loss function, no backprop, no gradient descent, anywhere in this app. (The underlying MaleCNS reconstruction itself used automated, learned segmentation and synapse-detection upstream, long before this explorer ever sees the data - see the primary paper.)
  • The Dynamics tab's animated simulation is an illustrative toy (a hand-picked leaky-integrator model), not validated real neural dynamics, and it says so on that tab.
  • Not a designed architecture for a task objective. This is what development and evolution wired for survival and behavior, and someone measured it afterward.
  • Single individual. Completeness and per-neuron metadata are real but imperfect (see "Dataset details" above, and the caveats on each tab).

Where to look next

  • Overview: a Sankey diagram of the input->processing->output flow (~6.6% of total synapse weight by design - it excludes recurrence and processing-to-processing links; see the tab for the exact figure).
  • I/O Matrix, then Pathway Explorer: zoom from "all input categories times all output categories" down to one real circuit.
  • Neuron Detail: one real neuron's actual measured 3D shape, not a stylized icon.
  • Anatomy / Anatomy 3D: 140,024 of 165,122 traced neurons (those with a recorded soma position) plotted at their real physical position. No layout algorithm involved, so this is what it looks like "for free."
Stage input processing output
StageCategorynDefinition
InputVision–Photoreceptors and early visual neurons (e.g. retinal photoreceptors R1–R8).
Touch & mechanosensation–Touch, vibration, airflow, and (folded in here) hearing/gravity sensing via Johnston's organ.
Smell (olfaction)–Smell. Olfactory receptor neurons feeding the antennal lobe.
Body position (proprioception)–Joint/muscle position and tension sensing (chordotonal organs, campaniform sensilla).
Taste (gustation)–Taste. Gustatory receptor neurons (labellum, legs, wings).
Humidity sensing–Humidity sensing.
Other chemosensory–Unspecified chemosensation - not asserted to exclude smell/taste, just not separately labeled as either by the dataset.
Temperature sensing–Temperature sensing (mostly in the antennal arista).
ProcessingOptic lobe–Largest single layer in the whole dataset, doing visual processing before signals reach the central brain.
Central brain–Central-brain interneurons: mushroom bodies (learning/memory), central complex (navigation), and other integrative regions.
Ventral nerve cord–Ventral nerve cord interneurons: local segmental circuits, including central pattern generators for gait.
Ascending (body → brain)–Carry signal from VNC up to the brain.
Descending (brain → body)–Carry signal from the brain down to the VNC, e.g. the Giant Fiber/DNp01 escape-jump neuron.
OutputAbdomen–Abdominal muscles, for breathing, genitalia, and abdomen movement.
Front leg–Front-leg (T1) muscles.
Middle leg–Middle-leg (T2) muscles.
Hind leg–Hind-leg (T3) muscles.
Endocrine–Neurosecretory output to the corpora cardiaca, for hormonal regulation.
Proboscis (feeding)–Mouthpart muscles, used for feeding.
Wing–Wing muscles (flight).
Neck–Neck muscles, for head stabilization during flight.
Other motor–Antennal muscles (low-confidence bucket).
Haltere–Haltere muscles, the fly's gyroscopic balance organ. 16 of this category's neurons are documented haltere motor neurons (subclass); the remaining 2 are non-motor efferents exiting through the same nerve, not motor neurons with an unresolved target - see Pathway Explorer for the underlying per-neuron data.

Counts are generated from the current classification export (loading...). "unknown" is a deliberate residual bucket: mostly non-traced bodies or dataset-flagged uncertainty, not a real category. Output categories are derived primarily from a motor neuron's own documented subclass label, falling back to exitNerve (external MANC nerve nomenclature) only where subclass doesn't resolve it - see Pathway Explorer and the project docs for exact rules.

loading coverage stats...
INPUT categories → coarse PROCESSING roles → OUTPUT categories. Individual neurons are never shown here; see Pathway Explorer for drill-down.
Click a cell to open its pathway drill-down in View 3. "Weighted shortest path" and "max-flow" are graph-topological measures, not biological signal-strength claims. Raw max-flow and weight sums scale with category size (e.g. vision has 6,091 neurons, thermosensation has 25). The normalized metrics divide graph capacity by each category's total synaptic output/input; they do not measure a fraction of biological signal. A zero denominator leaves the value undefined, shown as a gap.
Role sensory input central processing descending VNC motor other
Nodes start aggregated by cell type. Click a type node to expand it into individual body IDs; click a body-ID node for its detail (View 4).
Click an expanded neuron to see its detail here.

Top paths (by bottleneck weight)

Ranked from the first 50,000 paths encountered during deterministic graph traversal of this already-reduced subgraph. This is neither exhaustive nor statistically representative - traversal order, not sampling design, decides which paths are found.

pathhopstotal weightbottleneck
Select a neuron in the Pathway Explorer (View 3) to see its detail here.
Select a neuron to see its 3D morphology here.
Stage input processing output
Illustrative model — assumptions & limitations
About this anatomical view
Every traced neuron with a captured soma position (140,024 of 165,122; see coverage note below), plotted at its real anatomical coordinates. No layout algorithm: this is what the picture looks like "for free" once you have real positions instead of a force-directed graph. Different 2D projections drop different axes: a gap visible in X–Z can disappear in X–Y if it only exists along the dropped dimension. Highlighting a neuron overlays its real skeleton (same data as Neuron Detail), which is how you can actually see the neck/cervical connective bridge that soma positions alone can't show.
About this 3D view & performance
Same real soma positions as View 6, rotatable in 3D (drag to orbit, scroll to zoom). Honest performance note: Plotly's scatter3d gets sluggish well before 140k points: measured ~4s per drag gesture even at 10,000 points, ~35s at the full 140,024. Defaulted to a lower point count (stride-sampled per role, so the shape stays representative) for actual interactivity; raise "Max points" for more completeness at the cost of responsiveness, or use View 6 (2D, WebGL-accelerated, handles the full dataset smoothly) as the primary reference.