85 lines
5.5 KiB
Markdown
85 lines
5.5 KiB
Markdown
# Phase4AG: author LIF + frozen legacy graded APL
|
||
|
||
Execution revision r2: the first registered v1 attempt stopped before the first
|
||
Brian tick because resolving the science-venv Python symlink launched system
|
||
Python without NumPy. All v1 files and partial outputs are preserved separately.
|
||
This revision retains the declared venv invocation path. It does not change any
|
||
equation, arithmetic, mask, stimulus, gate, parameter or choice of trial.
|
||
The complete original protocol is rerun from fresh state; no failed trial is
|
||
overwritten or omitted, and the first version cannot be claimed numerical PASS.
|
||
|
||
Authorized independent hypothesis branch. All old source, raw connectome, signs,
|
||
W_syn, APL calibration, eligibility-v2 and 14,232-edge mask remain read-only.
|
||
No learning, gain/threshold changes, new edges, top-K, heldout activity, game or RL.
|
||
|
||
Author code provenance is the already archived MIT-licensed
|
||
https://github.com/philshiu/Drosophila_brain_model at
|
||
91bdd1e7dcf193f3e7ca5a8933497fcef63b7960; original model.py SHA-256
|
||
fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e.
|
||
Associated paper: https://www.nature.com/articles/s41586-024-07763-9.
|
||
This new MaleCNS/APL combination is not a strict reproduction of that model.
|
||
|
||
The declared combination is author float64 LIF plus the exact old float32 graded
|
||
APL operator after synapses/resets at end. All 5,845 original APL fast out-edges
|
||
are zeroed only in the effective in-memory model, as in the legacy overlay.
|
||
Only KC receives graded replacement; known 1,212 non-KC edges remain unreplaced.
|
||
This existing scope limitation is not silently repaired in a compatibility test.
|
||
|
||
Use the original full normalized I[2,166700]/O[2,4064] float32 bytes and original
|
||
normalizers, even for induced real subgraphs. APL reads actual binary spikes,
|
||
never requests, and keeps independent float32 state. Preserve unfused operations:
|
||
state.mul_(float(f32(exp(-.1/20)))).add_(torch.mv(I, spikes_f32));
|
||
h32=torch.matmul(state,O)*f32(.01). Promote h32 to float64, multiply by float64
|
||
.001, then separately subtract from SI g. Do not alter TF32/default CuBLAS flags;
|
||
record them. No added APL delay, drive dt/tau scaling, truncation or clipping.
|
||
|
||
APL writes KC g unconditionally after author reset, including refractory KC.
|
||
Author g integration is frozen during refractory; therefore negative overlay g
|
||
may accumulate and differs from old dynamics. This is an explicit hypothesis,
|
||
not an assertion of original author or measured physiology. Guarded writes or
|
||
reset-before/after changes would be different hypotheses, not fixes to this one.
|
||
|
||
Eight fixed metadata/connectivity-selected fixtures cover zero/reset, real PN/KC
|
||
drive, current actual event feedback, duplicate natural/request event, 18-step
|
||
arrival vs22-step refractory boundary, full fast APL mask, non-KC scope and mixed
|
||
precision/high fan-in. No choice is made from runtime responses. Each GPU case
|
||
has3 independent fresh runs. A Brian2 author oracle starts from its own state,
|
||
computes its own actual spikes, and uses an isolated standard-I/O legacy-APL
|
||
worker with independent state. No candidate inhibition trace is fed into Brian.
|
||
All tick states, events, requests, queue order/guard, APL drive/state/h must agree
|
||
exactly. The APL component is shared, so this is NOT a fully independent CPU
|
||
oracle. Independently reconstruct old matrices using frozen initializer AST,
|
||
replay actual events through original update AST, require exact component bytes;
|
||
also quantify an independent float64 positive-sum arithmetic error bound. It is
|
||
not a replacement for exact legacy equivalence. No arithmetic bound is adjusted.
|
||
|
||
Only after all fixture gates pass, run two predeclared full-graph probes: first
|
||
old calibration odor, first original seed, both encoder modes. Compare each with
|
||
the independently running Brian + isolated APL worker. Save state hashes and sparse
|
||
events, not a time-by-all-neurons dense spike matrix. If a numerical gate fails,
|
||
stop CAL; keep diagnostic evidence and do not widen tolerance.
|
||
|
||
Then run the complete original6 CAL odors ×5 original seeds ×2 original modes,
|
||
100ms per run. Retain the ORIGINAL12-odor median for matched-energy encoding,
|
||
original pn_drive target/RNG column order, original evaluation seeds51101..51105.
|
||
Save Poisson requests before any trajectory. Only calibration dynamic cases are
|
||
used; formal A/B and heldout remain unrun. Repeat first seed for every odor/mode.
|
||
No per-odor pulse, amplitude, timing or threshold search. No learning.
|
||
|
||
Recompute the full original4L representation criteria on CAL only: mean KC active
|
||
fraction .03..09, min>0, max<.5, same-odor Jaccard>different, between Euclidean>
|
||
within, >=3 pairs whose mean between exceeds THAT PAIR's pooled within distances,
|
||
both modes. Add finiteness and exact repeat requirements. CAL PASS does not imply
|
||
heldout generalization, timing/credit specificity, memory or learning usability.
|
||
If CAL fails stop promotion and report it, not a least-bad candidate.
|
||
|
||
Before/after verify SHA-256 of all original230239 files and AA--AF seals; rerun original five
|
||
deterministic reference trials to new output. Archive code/env/source SHA,
|
||
matrices/norms/masks/identities, requests and all outputs. No published candidate.
|
||
|
||
Technical references (queried2026-09-30): Brian2 2.5.1 refractory documentation
|
||
https://brian2.readthedocs.io/en/2.5.1/user/refractoriness.html (actual generated code
|
||
remains authoritative); PyTorch numerical accuracy notes
|
||
https://docs.pytorch.org/docs/2.14/notes/numerical_accuracy.html (cross-backend
|
||
floating operations are not assumed bitwise equivalent).
|