Repository navigation
v0.8.42
Result
- Partner follow-up v1 (#76): the left mirror
replicates(DNp02 p 0.001, DNp06 p 0.003),
and the direct drive givessingle_sufficient: DNp06_R: at 200 Hz DNp06_R alone brings
TTMn_Rto the jump bit (3–6 spikes), DNp02_R alone does not (0), the pair gives 8–11
against a matched null mean of 0.013 (p 0.001). Conjunction rejected; figure
partner-followup.svg; outputs with every null draw inresults/partner-followup/v1/. - Kenyon cell sparseness v2: within E, F, by undershoot (#95). Without the cholinergic
local neuron → PN chemical contacts (electrical in the fly) one ORN type drives 4.5% of the
PNs instead of 73%, and the Kenyon cells fall to 0.2% (measured 6 ± 5%): the overlap was an
antennal-lobe artefact, and single-receptor stimuli no longer reach the Kenyon cells. The
lock had no lower bound; stated. Next: odors as receptor vectors (#96). - Kenyon cell sparseness v1: not_recurrence (#95). KC → KC without fast effect lowers
the responding Kenyon cells from 25% to 17.4% (bound 17%), but the two odors still share
95%; APL removal recruits all. The overlap is upstream of the Kenyon cells. - KC → MBON11 depression v1: inconsistent (#85). The measured rule silences MBON11 for
both odors (272–286 → 0 spikes, seeds 50–52): each odor recruits about 1,000 Kenyon cells
and the two share 95%, against 30–33% in the fly. The model's Kenyon cell code is not
sparse, the same limit as the held-out ORN_DM1 failure. Nothing is retuned.
Documentation
- Realism plan in
docs/roadmap.md: five steps (eye, Kenyon cell sparseness, odors as
receptor vectors, body and TTM actuator, non-spiking neurons), each with its evidence and an
independent test; tracked in #84, #95, #96, #90, #94, #97. docs/roadmap.md(on the site as Roadmap): what of the brain the model uses and leaves
out, in numbers fromscripts/brain_coverage.py(signs, the FlyWire cross-check of the
unsigned neurons, somata, photoreceptor columns), and every open item with what blocks it
and what would unblock it. New issues #84 (eye encoder) and #85 (electrical synapses and
neuromodulation, evidence audit).
Eye
- Graded photoreceptor input:
eye.photoreceptor_kicks(gain × light left per column, in
units of the Poisson kick).sim.runalready accepted real-valuedkicks; it is now
documented and tested (integer values as floats reproduce the Poisson run spike for spike).
CpuRuntimeand the native executor still take integer counts only. - Looming per column:
eye.looming_radius_deg(constant-speed approach, von Reyn et al. 2014) andeye.disk_coverage(share of each column's Gaussian acceptance profile covered
by a dark disk, exact in the small-angle limit). The acceptance angle is an argument for
the lock to source, not a default. flymsg eye(#84): every MaleCNS optic-lobe column gets a measured viewing direction
from the Zhao et al. 2025 eye map (fetched at run time, GPL-3.0, not redistributed) through
the published hex convention; nothing is fitted. 843 of 892 right and 835 of 875 left
columns have one. Photoreceptors are assigned to columns by their strongest output; the
dorsal-rim R7d/R8d land at a median elevation of 67.7° against 3.7° for the other R7/R8.
New dependencyrdata(MIT) to read the R files.
3D view
- Whole-CNS layer: every soma in the volume (140,024 of 165,122 neurons) drawn as a point
coloured by region around the scene's neurons, fromsomaLocationin the MaleCNS
annotations (scripts/build_somata.py,docs/live/cns/). Context only;?somata=0hides
it. Sensory neurons, whose somata are in the periphery, are counted, not drawn.
Tooling
- GitHub templates: a pre-registered experiment issue form (question, sources,
protocol and verdicts, what was seen before the lock, compensations), a bug form, and a PR
checklist with the project's rules. Labelspreregistration,result,architecture,
embodiment. scripts/bench_viewer.py(#24): builds the site, opens each scene with?bench=in a
fresh browser profile and appends the summary, the GL backend and the load average to
runs/viewer-bench/. It refuses to start above a 1-minute load of 1.0, so a baseline is
taken only on an idle machine, and a timed-out page no longer leaves its browser running.
Live scenes
- Every scene re-exported from
main(8f2a076): the manifests of the scenes made before
the rule pointed at branch commits that squash merges dropped; now all record a commit on
main. Activity is unchanged byte for byte. - Left eye and both eyes on the site:
looming-left(LC4_L),looming-bilateral
(LC4) and theright-vs-leftcomparison, exported frommain. Seed 0:TTMn_R22
spikes with the right eye,TTMn_L12 with the left, 24 and 12 with both.docs/viz.md
states the side convention.build_live_scenes.py NAME ...rebuilds only those scenes.
Pre-registration
- Kenyon cell sparseness diagnostic v2 (#95): after v1, an antennal-lobe arm. Cholinergic
local neuron → PN contacts are electrical in the fly (Yaksi & Wilson 2010) and fast chemical
in the model; v2 removes them (arm E), alone and with KC → KC (arm F), on fresh seeds 70–72,
same measured bounds. Locked before its run. - Kenyon cell sparseness diagnostic v1 (#95): four weight matrices (default; KC → KC
without fast effect, since these synapses act through the metabotropic mAChR-B, Manoim et
al. 2022; APL → KC removed; both) compared on the share of Kenyon cells responding to an
odor (measured 6 ± 5%, ≤ 17%) and the share shared between two odors (≤ 64.6%). Locked
before any run;flymsg kc-sparseness. - Dopamine-gated depression at KC → MBON11, v1 (#85): the one plasticity measured on an
identified synapse (Hige et al. 2015: −90% charge, forward pairing only, ≥ 40 min) as an
optional rule applied between trials to the weight matrix; the kernel and the defaults are
unchanged. Seven compensations named; the test asks whether the paired odor's MBON11
response drops ≥ 49.8% and the unpaired ≤ 64.6%.flymsg mb-plasticity. - Residual partner follow-up v1 (#76): two model-side tests of the scan v3 naming,
locked before any run on fresh seeds 40–42. Left: the scan arm mirrored (LC4_L→
TTMn_L), testing only DNp02 and DNp06 with the scan's null. Drive:DNp02_R,DNp06_R
and the pair driven directly at 200 Hz without LC4, against matched descending-neuron
pairs, with the verdictssingle_sufficient,conjunction,pair_sufficient,
not_specificandinsufficient. Every null draw is kept.flymsg partner-followup.
Exploratory
- Mirrored scan arms (
scripts/silence_mirror.py, seeds 0–2, disclosed in the lock):
the left side follows the right (DNp02 or DNp06 with DNp01 silenced: 0TTMn_Lspikes),
the effect follows the pair on the side of the stimulus, and the left residual is weak
(2, 1, 3 spikes).
Full note: https://github.com/gianlucamazza/flymsg/blob/v0.8.42/CHANGELOG.md