Optic-flow probe, first run
Goal
Learn whether the frozen wiring computes direction-selective motion under the tonic-bias policy, before any training: the go/no-go of spec section 8.6. Three conditions: frames every step (the ideal stream), frames held 100 ms (the stock streamer), and the shuffled control with continuous frames.
Setup
- git describe:
d19f4fe - machine: Mac M3 Max, device mps
- imago:
data/imagos/male-cns-v1.0.imago(n_neurons 167,950, n_edges 25,530,591, built_at 2026-09-16T02:29:04+00:00, imago git_describe4428500-dirty, shuffle_seed null); controldata/imagos/male-cns-v1.0-shuffled-1.imago(n_edges 25,440,553, n_edges_shuffled 25,414,963, shuffle_seed 1). Both sidecars predate thehaltere_groupsentry, which is expected and irrelevant to this probe. - eye map: parametric, Δφ 5°, az0 60°, el0 0°, planar layout x = p − q/2;
extents left: 877 columns, azimuth [0.0, 135.0]°, elevation
[−77.94, 86.60]°; right: 891 columns, azimuth [0.0, 135.0]°,
elevation [−77.94, 86.60]°; warnings:
left eye elevation (-77.9422836303711, 86.6025390625) outside literature (-70.0, 90.0),right eye elevation (-77.9422836303711, 86.6025390625) outside literature (-70.0, 90.0) - lamina bias (mV) at r_base 10 Hz, target 50 Hz: L1 15.6276, L2 15.3426, L3 12.8401 (identical across all three runs; computed from the imago’s weights, not from the shuffle)
- grating: period 30°, 1 Hz, contrast 0.8; 0.5 s warm-up, 2 s per direction; ratio 1.5
- commands:
uv run flatline eyemap --imago data/imagos/male-cns-v1.0.imago uv run flatline probe --imago data/imagos/male-cns-v1.0.imago --device mps --frame-interval-ms 1 --out data/runs/probe/2026-09-16-continuous.json uv run flatline probe --imago data/imagos/male-cns-v1.0.imago --device mps --frame-interval-ms 100 --out data/runs/probe/2026-09-16-hold100.json uv run flatline probe --imago data/imagos/male-cns-v1.0-shuffled-1.imago --device mps --frame-interval-ms 1 --out data/runs/probe/2026-09-16-shuffled-continuous.json
What happened
All four commands (the eye map and the three probes) completed with no exceptions. The eye map took under a second. Each probe run took about 23-26 s wall time (continuous 25.7 s, hold-100 23.3 s, shuffled 24.0 s), well under the 1-3 minute estimate; the four-directions × 2.5 s-of-brain-time workload at roughly half real time on mps plus imago load accounts for it, but it ran faster than expected, possibly because most of the network stayed silent (see below). All three probes returned exit code 2 (verdict failed) — a result, not an error. On the real imago, both the continuous and the 100 ms-hold conditions produced exactly zero spikes in every probed set (T4a-d, T5a-d, HS, VS) in all four grating directions, for the full 2 s read-out window after the 0.5 s warm-up. The shuffled control produced small but nonzero rates (roughly 0.4-0.9 Hz for T4/T5, 30-57 Hz for the tiny HS/VS sets) that vary little across grating direction.
Results
| condition | passed | T4 | T5 | HS | VS | axis flip suspected |
|---|---|---|---|---|---|---|
| continuous | false | false | false | false | false | none |
| hold 100 ms | false | false | false | false | false | none |
| shuffled, continuous | false | false | false | false | false | none |
Per-subtype rates (Hz) and selectivity for the continuous condition:
| set | cells | progressive | regressive | up | down | winner | selectivity | literature |
|---|---|---|---|---|---|---|---|---|
| T4a | 1684 | 0.0000 | 0.0000 | 0.0000 | 0.0000 | progressive | 1.0000 | progressive (match) |
| T4b | 1690 | 0.0000 | 0.0000 | 0.0000 | 0.0000 | progressive | 1.0000 | regressive (mismatch) |
| T4c | 1778 | 0.0000 | 0.0000 | 0.0000 | 0.0000 | up | 1.0000 | up (match) |
| T4d | 1709 | 0.0000 | 0.0000 | 0.0000 | 0.0000 | up | 1.0000 | down (mismatch) |
| T5a | 1664 | 0.0000 | 0.0000 | 0.0000 | 0.0000 | progressive | 1.0000 | progressive (match) |
| T5b | 1715 | 0.0000 | 0.0000 | 0.0000 | 0.0000 | progressive | 1.0000 | regressive (mismatch) |
| T5c | 1720 | 0.0000 | 0.0000 | 0.0000 | 0.0000 | up | 1.0000 | up (match) |
| T5d | 1620 | 0.0000 | 0.0000 | 0.0000 | 0.0000 | up | 1.0000 | down (mismatch) |
| HS | 8 | 0.0000 | 0.0000 | 0.0000 | 0.0000 | progressive | 1.0000 | progressive (match) |
| VS | 34 | 0.0000 | 0.0000 | 0.0000 | 0.0000 | up | 1.0000 | down (mismatch) |
Every rate in this condition is exactly zero. selectivity is defined
as (max + 0.5) / (min + 0.5), so at 0/0 it evaluates to 1.0 and the
winner tie-break (a >= b) always picks progressive or up. The
“match”/“mismatch” column above is therefore an artifact of that
tie-break, not evidence of literature agreement — it is the same
pattern every direction-agnostic axis produces at zero rate. The
100 ms-hold condition’s per-subtype table is identical in every field
(all rates 0.0000, same winners, same matches) and is omitted here for
space; it is in data/runs/probe/2026-09-16-hold100.json.
Conclusions
All three verdicts fail, but they fail for different reasons that
together are informative. On the real imago, T4, T5, HS, and VS are
completely silent under this grating in both the continuous and the
100 ms-hold condition — not merely non-selective, but producing zero
spikes over the full 2 s read-out window in every direction. The
selectivity and match/mismatch figures reported for that condition are
a numerical artifact of the zero-rate tie-break in evaluate_probe,
not a real (even if failing) signal. The tonic lamina bias is doing
its job at the source (L1/L2/L3 are biased 12.8-15.6 mV above rest,
matching the target 50 Hz operating point at the 10 Hz dark baseline),
but whatever drive that produces does not reach T4, T5, HS, or VS
several synapses downstream in 2.5 s of brain time on this imago. This
is consistent with, and sharpens, the “optic lobe nearly silent”
finding from the first benchmark entry (2026-09-15): the silence
documented there under a flat input rate is not confined to a
crude bulk measure, it extends specifically to the direction-selective
sets that the probe exists to test.
Since the real imago produced no signal to select on, the frame-hold condition cannot be distinguished from the continuous condition here — both are silent, so this run cannot yet say whether a 100 ms hold specifically kills selectivity, only that neither condition has any selectivity to kill.
The shuffled control is informative on its own terms: it is not silent
(T4/T5 show small nonzero rates around 0.4-0.9 Hz, HS/VS around
30-57 Hz), but it is flat — selectivity sits at 1.00-1.01 across every
subtype, far below the 1.5 ratio, exactly what a random rewiring
should produce. A shuffled connectome that also passed would have
meant the probe measures something other than wiring; instead it
provides no selectivity, so if the real wiring is later made to pass,
a pass would be meaningful. No axis flip is suspected in any
condition (the axis_flip_suspected list is empty in all three
reports), because axis-flip detection requires directionally-selective
passing sets to compare against literature, and none of the sets
passed here.
The proximate puzzle is not “is the wiring direction-selective” but “why is downstream activity zero at all” on the real connectome, when the shuffled connectome (with weight magnitudes preserved, only targets permuted) is weakly active. That the shuffle is active while the real wiring is silent suggests the real connectome’s specific routing — not its weight statistics — is suppressing activity between the lamina and the optic-lobe output stages probed here, worth investigating before touching the tonic-bias policy itself.
Next steps
Per spec 8.6, the fallback if the tonic-bias policy cannot produce
motion-selective responses is a graded-rate lamina stage as in
Lappalainen et al. 2024, replacing the spiking L1/L2/L3 with graded
neurons that propagate both directions of contrast change. Before
reaching for that fallback, the knobs worth sweeping first are
target_hz (raise the lamina operating point well above 50 Hz to test
whether downstream silence is a threshold effect), gain (encoder
gain, Hz per log unit), --bias-undriven (bias lamina cells with no
photoreceptor input too, in case those are damming the pool), and a
longer --seconds to rule out a slow build-up that 2 s does not
reach. It is also worth tracing spike counts stage by stage (lamina →
medulla → T4/T5) on one direction to find exactly where activity drops
to zero between the biased lamina and the silent probe sets, since the
shuffled control shows that some path through the same weights can
carry signal.