diff --git a/CURRENT.md b/CURRENT.md index ba26d84..2202949 100644 --- a/CURRENT.md +++ b/CURRENT.md @@ -1,19 +1,38 @@ -# 当前研究状态 — Phase 4AA +# 当前研究状态 — Phase 4AB -最新封存结果:**PASS-APL-PN-ANATOMICAL-LOCALIZATION / NO-DYNAMICS-CANDIDATE**。 -初始化 README 与原 registry 快照仍按原字节保留;它们描述初始化时的 Phase 4Z 截止状态。最新结论请从本文件进入。 +最新结果:**COMPLETE-SCOPE-COUNTERFACTUAL / NO-DYNAMICS-CANDIDATE**。 +初始化 README/registry 保留原字节,最新结论从本页进入。 -- [本轮完整报告](docs/progress/phase4aa-apl-pn-scope.md) -- [本轮证据与最终结果](registry/phase4aa-apl-pn-scope/evidence/audit/final-summary.json) -- [新模型/审计源码](models/male-cns-lif/apl-pn-scope-audit-v1/PROTOCOL.md) -- [外部数据官方校验](registry/phase4aa-apl-pn-scope/evidence/external-resources/synaptic-partners/download-verification.json) +- [本轮中文机制解读](docs/progress/phase4ab-terminal-scope.md) +- [完整逐气味结果与限制](docs/progress/phase4ab-technical-results.md) +- [预先声明的诊断方案](models/male-cns-lif/terminal-scope-diagnostic-v1/PROTOCOL.md) +- [最终结果及 SHA-256 证据](registry/phase4ab-terminal-scope/evidence/audit/final-summary.json) +- [上一轮官方突触空间定位](docs/progress/phase4aa-apl-pn-scope.md) -新增事实:268 条 APL→PN 边、4,600 contacts;3,820 contacts 在官方 CA(L/R),731 仍为 CentralBrain-unspecified。 -七个重点 PN 的 APL 输入集中在 calyx,而其局部 ALLN 回路主要位于触角叶。受体、末梢作用系数与功能因果仍未确认。 +## 新证据 -5/5 frozen-v2 trials 事件/计数/V/g 精确一致;230,239 个旧科学文件哈希不变。 -没有训练,没有新动力学候选,顶层 gates 仍是 5/10(50%)。 -下一步是预先定义 compartment/terminal-specific upstream 假设和对照,不直接改冻结模型,不调学习率来制造通过。 +以官方 primary_post ROI 和真实 APL→PN / PN→KC 接触选择 229 个 PN。 +局部诊断范围是 20,263 条边中的 337,099 个 calyx 接触,影响 3,760 个 KC。 +没有把 46,159 个未细分 ROI 的 PN→KC 接触重标为 calyx;没有推测 bouton/receptor。 -官方 syn-partners 附加数据为 6,777,179,098 bytes,在新实验 external-resources 目录;raw 不变,未下载 EM。 -Git 只保存代码、报告和 manifest;新增完整配对数据尚未异机备份。 +24 组主对照(6 个旧 calibration 气味、一个旧 seed)显示: + +- 仅阻断上述 calyx 接触,目标 KC82312 晚期 spikes 从 60–61 降到 0。 +- VA6 PN 晚期仍有 212–214 spikes;受观察的 ALLN 仍有 454–456 Hz 活动。 +- 全部活跃 KC 从原来的 139–172 个降到 1–2 个:这不是编码/记忆修复。 +- 更广的 PN 快速输出阻断使回路近乎静默,不能把这种结果认作正确生理模型。 + +上述只是独立工程极端对照,不是 APL 抑制强度标定;未保存正式新权重。 +Base CSR、raw counts、transmitter signs、LIF/APL calibration、eligibility-v2 和 14,232 plastic mask 不变。 + +## 验证与状态 + +6 组历史 trial 精确重现,4 组诊断重复精确一致,5/5 frozen deterministic-v2 reference 回归精确通过。 +230,239 个原有科学文件及 Phase 4AA 模型/数据 manifests 前后完整性通过。 +6 项单元测试、10,000 个随机算子检查通过;ComfyUI 未停用/卸载,未升级依赖。 + +顶层 gates 仍是 5/10(50%);本轮改进了机制定位和可重复诊断,不代表已获得学习能力。 +下一步优先约束 upstream feedback 与局部 compartment physiology,不能靠增大整体抑制、调学习率/阈值或扩大 mask 达成通过。 +不进入游戏、RL、视觉或 action decoder。 + +Git 仅同步代码、小报告和校验清单。大数据/全部 spike 输出保留在服务器,不等于已有完整异机备份。 diff --git a/docs/progress/phase4ab-technical-results.md b/docs/progress/phase4ab-technical-results.md new file mode 100644 index 0000000..2717dee --- /dev/null +++ b/docs/progress/phase4ab-technical-results.md @@ -0,0 +1,52 @@ +# Phase 4AB — calyx contact-scope diagnostic + +Status: COMPLETE-SCOPE-COUNTERFACTUAL / NO-DYNAMICS-CANDIDATE. +Diagnostic interventions only; no calibrated biological inhibition, no training, no parameter winner. + +Eligible PNs: 229/259. CA mask: 20263 edges / 337099 contacts. +Affected KCs: 3760. Mixed-ROI affected edges: 3323; retained other contacts: 28975. +Broader PN→KC control: 21882 edges / 384555 contacts. All-fast-PN-output control: 116211 edges / 1268111 contacts. + +| Odor | Condition | Active KC | KC late spikes | KC82312 late | VA6 late | +|---|---|---:|---:|---:|---:| +| ethyl (R)-(-)-3-hydroxybutanoate | frozen_reference | 160 | 114 | 60 | 213 | +| ethyl (R)-(-)-3-hydroxybutanoate | calyx_PN_KC_contact_block | 1 | 39 | 0 | 214 | +| ethyl (R)-(-)-3-hydroxybutanoate | all_PN_KC_block | 1 | 39 | 0 | 214 | +| ethyl (R)-(-)-3-hydroxybutanoate | whole_PN_output_block | 0 | 0 | 0 | 0 | +| 3-penten-2-one | frozen_reference | 172 | 118 | 60 | 213 | +| 3-penten-2-one | calyx_PN_KC_contact_block | 2 | 39 | 0 | 213 | +| 3-penten-2-one | all_PN_KC_block | 1 | 39 | 0 | 213 | +| 3-penten-2-one | whole_PN_output_block | 0 | 0 | 0 | 0 | +| (2R)-hexan-2-ol | frozen_reference | 144 | 117 | 61 | 213 | +| (2R)-hexan-2-ol | calyx_PN_KC_contact_block | 1 | 39 | 0 | 213 | +| (2R)-hexan-2-ol | all_PN_KC_block | 1 | 39 | 0 | 213 | +| (2R)-hexan-2-ol | whole_PN_output_block | 0 | 0 | 0 | 0 | +| gamma-propyl-gamma-butyrolactone | frozen_reference | 151 | 117 | 60 | 212 | +| gamma-propyl-gamma-butyrolactone | calyx_PN_KC_contact_block | 2 | 39 | 0 | 212 | +| gamma-propyl-gamma-butyrolactone | all_PN_KC_block | 1 | 40 | 0 | 212 | +| gamma-propyl-gamma-butyrolactone | whole_PN_output_block | 0 | 0 | 0 | 0 | +| 2-methyl butyl acetate | frozen_reference | 139 | 118 | 61 | 213 | +| 2-methyl butyl acetate | calyx_PN_KC_contact_block | 1 | 39 | 0 | 212 | +| 2-methyl butyl acetate | all_PN_KC_block | 1 | 39 | 0 | 212 | +| 2-methyl butyl acetate | whole_PN_output_block | 0 | 0 | 0 | 0 | +| ethyl (S)-(+)-3-hydroxybutanoate | frozen_reference | 163 | 119 | 61 | 214 | +| ethyl (S)-(+)-3-hydroxybutanoate | calyx_PN_KC_contact_block | 1 | 39 | 0 | 214 | +| ethyl (S)-(+)-3-hydroxybutanoate | all_PN_KC_block | 1 | 39 | 0 | 214 | +| ethyl (S)-(+)-3-hydroxybutanoate | whole_PN_output_block | 0 | 0 | 0 | 0 | + +Late means 500–1,000 ms; 120 ms old calibration odor input; one seed, six old odors. No held-out generalization claim. +Identical scheduled requests across conditions. Delivered request-associated output differences versus reference: 459 (summed over all comparisons). See per-trial table; this is state/refractory feedback, not a changed RNG. + +## Interpretation limits + +CA selection uses exact primary_post labels plus matched APL→PN/ROI metadata, not bouton identities or inferred receptors. Unknown ROIs are not reclassified. +Whole-PN control removes fast output, not somatic spikes or the frozen graded APL input. It is not a complete PN knockout. +Reduction/silencing is not restored information or associative memory. No condition becomes a formal model. Fixed-event replay freezes other recorded events/APL; dynamic trials allow natural recurrent feedback. +Local-inhibition motivation: [Prisco et al.](https://doi.org/10.7554/eLife.74172), [Amin et al.](https://doi.org/10.7554/eLife.56954). These sources do not establish the complete-block operator as physiological. + +## Verification + +Six original trials reproduced exactly (whole spike events, watched state and final counts/V/g). Four first-odor repeats exact. Five deterministic-v2 frozen reference trials exact. Finite state throughout. +Original 230,239 files and both Phase 4AA manifests rechecked before/after. Base CSR/count/sign, frozen LIF/APL, eligibility-v2 and 14,232 plastic mask preserved. +Timing includes diagnostic CPU/GPU observation overhead and is not a runtime speed benchmark. ComfyUI was not stopped or unloaded. +Top-level acceptance gates remain 5/10 (50%); anatomical diagnosis is not evidence of learning success. diff --git a/docs/progress/phase4ab-terminal-scope.md b/docs/progress/phase4ab-terminal-scope.md new file mode 100644 index 0000000..8fd8a54 --- /dev/null +++ b/docs/progress/phase4ab-terminal-scope.md @@ -0,0 +1,36 @@ +# Phase 4AB 机制解读 + +正式状态:**COMPLETE-SCOPE-COUNTERFACTUAL / NO-DYNAMICS-CANDIDATE**。 + +这一轮区分了“PN→KC 传入位置”与“维持 PN 放电的上游反馈”。没有修复或批准新的 APL 生理模型,也没有训练。 + +| 诊断范围 | 活跃 KC(6 个旧气味) | 目标 KC 晚期 spikes | VA6 PN 晚期 spikes | +|---|---:|---:|---:| +| 原模型 | 139–172 | 60–61 | 212–214 | +| 仅明确 calyx 接触 | 1–2 | 0 | 212–214 | +| 同批 PN 的全部 KC 输出 | 1 | 0 | 212–214 | +| 同批 PN 的全部快速输出 | 0 | 0 | 0 | + +晚期窗口是 500–1,000 ms。每个气味沿用 seed 131101;总计 24 组诊断、4 次精确重复,不是 5-seed 学习验证。 + +## 能说明什么 + +仅 calyx 接触阻断后,目标 KC82312 的晚期 spikes 范围为 0,VA6 仍为 212–214。 +同时 KC 总活跃数降为 1–2,原模型为 139–172。不能把这种接近静默的结果包装成编码或记忆改善。 +即使两个局部阻断条件的事件序列相同,其电压/g 仍可能不同;逐气味比较见 narrow-vs-allKC.csv。 +宽范围 PN 快速输出阻断影响反馈路径,不等价于局部 calyx 调制;它也没有关闭 PN 胞体或 frozen graded APL 的 PN 输入。 + +## 仍不能说明什么 + +完全阻断只是工程极端对照,不是 APL 的实测释放抑制比例。没有估计 receptor、bouton、局部扩散范围或时间常数。 +未使用 held-out 气味,未检验学习、保持、反转或动作输出。不得选取这次“让活动更少”的操作作为正式脑模型。 +剩余 late KC 的 ID/type 已单独保存;其来源不能仅凭残余计数猜测。 + +## 下一步边界 + +先继续 upstream feedback / compartment-specific physiology 的证据约束,区分 calyx 信号传递与触角叶持续放电,再确定可检验的局部动力学假设。 +不能靠增加整体抑制、调 eta/threshold、扩大 plastic mask 或让 KC 全静默宣称修复。当前不进入学习、游戏或视觉。 + +相关原始研究:[Prisco et al., 2021](https://doi.org/10.7554/eLife.74172)、[Amin et al., 2020](https://doi.org/10.7554/eLife.56954)。它们支持研究局部 APL 作用,不直接验证本实验完全阻断幅度。 + +顶层验收仍为 5/10(50%);本轮推进的是机制定位与可重复诊断能力。最终完整性状态见 regression/final-integrity.json。 diff --git a/models/male-cns-lif/terminal-scope-diagnostic-v1/PROTOCOL.md b/models/male-cns-lif/terminal-scope-diagnostic-v1/PROTOCOL.md new file mode 100644 index 0000000..d28c8af --- /dev/null +++ b/models/male-cns-lif/terminal-scope-diagnostic-v1/PROTOCOL.md @@ -0,0 +1,86 @@ +# Phase 4AB — calyx contact-scope counterfactuals + +This is an exploratory mechanism diagnostic, NOT an APL physiological model, +learning experiment, parameter calibration or new formal runtime candidate. +All previous scientific artifacts remain read-only. Only new output directories +are permitted. No additional download is required. + +## Question and predeclared controls + +Does removal of anatomically labelled calyx PN→KC input alter persistent KC +activity without also removing the same PNs' antennal-lobe output? + +Select PN/ROI pairs from actual Phase 4AA APL→ALPN synaptic contacts whose +`primary_post` is exactly `CA(L)` or `CA(R)`. Select PN→KC contacts only when +their source PN and actual `primary_post` match that pair. This is **ROI-level +co-location**, not proof of the same bouton, receptor, physiological coefficient, +or even a per-presynaptic-site ROI annotation. `primary_post` labels the +postsynaptic site. Never reclassify `CentralBrain-unspecified` by proximity. + +Compare four conditions on the same eligible PN set: + +1. Frozen reference; no changed weights or injected current. +2. Block only the matched CA PN→KC contact component. +3. Block all PN→KC output of those PNs, irrespective of ROI. +4. Block all fast outgoing synaptic weights of those PNs (broad scope control). + +These are complete-block engineering interventions, not estimates of biological +APL inhibition. There is no strength sweep or winner selection. Condition 4 +does **not** silence PN somata or alter their force requests. The frozen graded +APL input matrix remains active in all four conditions; condition 4 is therefore +not a complete PN knockout. All fast edge slots remain present. Output masks are +not plastic masks, and nothing is written back to base CSR or an old model. + +For condition 2, the in-memory diagnostic effective weight is +`float32(float64(frozen_effective_weight) * (raw_count - CA_count) / raw_count)`. +The linear per-contact decomposition is an engineering consequence of the +existing linear weight model, not a measured transmitter-release law. +At strength zero there is no arithmetic or write at all; identity must be exact. +Conditions 3/4 set only the declared fast effective weights to zero. Anatomical +counts, transmitter signs, LIF/refractory/delay, APL matrices and calibration, +eligibility-v2 and the 14,232 plastic-edge mask remain frozen. + +## Trials and measurements, declared before results + +Use all six old calibration odors, seed 131101, the frozen Phase 4V DoOR→PN +request generator, 120 ms stimulus followed by observation to 1,000 ms. Do not +consume held-out odors. Reset all states between trials. Repeat every condition +for odor 0 to test exact determinism. No DAN reinforcement or weight training. + +Record all spike events, all final counts/V/g, watched PN/KC/ALLN states, original +force requests and their accepted/preexisting/blocked status, KC active fraction, +late KC82312/VA6/ALLN activity (500–1,000 ms), and class-wise counts. All conditions +share requested inputs; delivered events need not match because recurrent state +and refractory periods can change. Explicitly report this distinction. + +Unmodified trials must reproduce Phase 4Z whole events, watched states and +Phase 4Y final arrays bit-for-bit. Each first-odor repeat must be exact. Run the +five frozen Phase 4C trials against the deterministic-v2 archived oracle in new +output paths. Original v1 files remain preserved, not relabelled as deterministic. + +Additionally, replay the first frozen trial with its recorded events fixed, using +the frozen ordered reduction and 18-step queue to validate locality: no terminal +mask affects non-KC arrivals; broad controls may do so. This fixed-event test +only measures the direct operator, not whole-brain causality. + +## Interpretation gate + +Reduced KC activity alone is not repaired encoding or memory. A broad blockade +can destroy useful drive. If CA blockade fails to remove the late KC response, +report that it is insufficient under this model; do not increase gain or relabel +unknown contacts. If it succeeds while ALPN/ALLN persist, report scope-specific +model counterfactual evidence, not proof that biological APL has that strength. +No result in this phase can generate a learned/physiological candidate. + +## Source boundaries + +- MaleCNS official v1.0 syn-partners, CC BY 4.0, already verified in Phase 4AA: + https://male-cns.janelia.org/download/ +- Prisco et al. (2021), doi:10.7554/eLife.74172: local calyx APL interactions; + does not assign MaleCNS edge-specific inhibition coefficients. +- Amin et al. (2020), doi:10.7554/eLife.56954: spatially localized APL activity + and inhibition; does not validate the present engineering complete-block rule. + +Unknown: bouton identity, receptor distribution, strength/time course of terminal +release modulation, and whether adding such physiology would rescue memory. +No game, decoder, RL, visual input, threshold/eta tuning, or next-phase training. diff --git a/models/male-cns-lif/terminal-scope-diagnostic-v1/README.md b/models/male-cns-lif/terminal-scope-diagnostic-v1/README.md new file mode 100644 index 0000000..4e875ae --- /dev/null +++ b/models/male-cns-lif/terminal-scope-diagnostic-v1/README.md @@ -0,0 +1,39 @@ +# Terminal-scope diagnostic v1 (Phase 4AB) + +Independent engineering counterfactual harness, **not a formal brain model**. +Read `PROTOCOL.md` before interpreting any result. Frozen input datasets and +scientific sources are mandatory; no data are fetched by this stage. + +## Sequence + +Use the existing scientific environment with `PYTHONDONTWRITEBYTECODE=1`, +`OMP_NUM_THREADS=4`, `OPENBLAS_NUM_THREADS=4`, `MKL_NUM_THREADS=4`: + +1. `python -B -m unittest -v test_scope` +2. `python -B diagnostic.py prepare` (new empty experiment directory only) +3. `python -B validate.py` +4. `python -B launch.py` (explicit frozen module paths, single 4090) +5. `python -B environment.py` +6. `python -B analyze.py` +7. `python -B diagnostic.py finalize` +8. `python -B publish.py` (new small Git evidence copies only) + +The completed output is sealed. **Do not rerun these commands into its directory.** +Unit tests may be rerun read-only. An independent full replication requires a new +isolated experiment/model directory, with its paths changed consistently in the +copied configuration/entry points before preregistration. Retain this original +source and every old output. The current protocol also includes four in-run exact +repeats, six historical exact comparisons and five archived reference checks. + +`launch.py` fixes the initial import-path failure without editing the five +preregistered source/config files. `analyze.py` is a post-hoc summary only and +does not launch any additional experiment or fit any parameter. Additional helper +hashes and imported code hashes are captured in the final manifest/protocol. + +The existing environment is reused, never upgraded. ComfyUI queues are checked +between trials; a busy service causes deferral, not eviction. Performance includes +observation overhead. The historical APL graded input/output remains unchanged. + +All-fast-PN-output blockade is not somatic silencing and not a complete knockout: +PN spikes still contribute to the frozen graded APL input. `primary_post` is a +postsynaptic ROI label, not a reconstructed bouton identity. Unknown stays unknown. diff --git a/models/male-cns-lif/terminal-scope-diagnostic-v1/analyze.py b/models/male-cns-lif/terminal-scope-diagnostic-v1/analyze.py new file mode 100644 index 0000000..745c8aa --- /dev/null +++ b/models/male-cns-lif/terminal-scope-diagnostic-v1/analyze.py @@ -0,0 +1,89 @@ +"""Post-hoc interpretation only; no further trials, selection or parameter changes.""" +from pathlib import Path +import sys +import numpy as np +import pandas as pd + +ROOT = Path('/data/digital-drosophila'); MODEL = ROOT/'models/male-cns-lif/terminal-scope-diagnostic-v1' +EXP = ROOT/'experiments/phase4ab-terminal-scope' +sys.path.insert(0, str(MODEL)) +import diagnostic +cfg, _, _, _, save, digest, _, _ = diagnostic.load_context() +assert (EXP/'audit/run-complete.json').exists() +m = pd.read_parquet(ROOT/cfg['canonical']/'neuron-index/unified-metadata.parquet').sort_values('neuron_idx').reset_index(drop=True) +trials = pd.read_csv(EXP/'audit/trials.csv'); watched = pd.read_csv(EXP/'audit/watched-counts.csv') +remaining, comparisons = [], [] +for oi in cfg['odor_indices']: + names = {c: f'{oi}-{cfg["seed"]}-{c}' for c in cfg['conditions']} + narrow = pd.read_parquet(EXP/'events'/f'{names["calyx_PN_KC_contact_block"]}.parquet') + allkc = pd.read_parquet(EXP/'events'/f'{names["all_PN_KC_block"]}.parquet') + a = np.load(EXP/'states'/f'{names["calyx_PN_KC_contact_block"]}.npz') + b = np.load(EXP/'states'/f'{names["all_PN_KC_block"]}.npz') + comparisons.append({'odor_index': oi, 'terminal_vs_allKC_events_exact': narrow.equals(allkc), + 'counts_exact': bool(np.array_equal(a['counts'], b['counts'])), + 'max_V_difference': float(np.abs(a['final_v'].astype(float)-b['final_v']).max()), + 'max_g_difference': float(np.abs(a['final_g'].astype(float)-b['final_g']).max())}) + kc = np.flatnonzero(m.annotation_class.eq('Kenyon_Cell')) + late = narrow[(narrow.step >= 5000) & narrow.neuron_idx.isin(kc)] + for node, group in late.groupby('neuron_idx'): + row = m.iloc[node] + remaining.append({'odor_index': oi, 'neuron_idx': int(node), 'body_id': int(row.body_id), + 'type': str(row.annotation_type), 'late_spikes': len(group), + 'first_late_spike_ms': float(group.step.min()/10), 'last_spike_ms': float(group.step.max()/10), + 'source_identity_not_inferred_from_this_count': True}) +pd.DataFrame(remaining).to_csv(EXP/'audit/remaining-late-KCs.csv', index=False) +pd.DataFrame(comparisons).to_csv(EXP/'audit/narrow-vs-allKC.csv', index=False) + +rows = [] +for name, g in trials.groupby('condition', sort=False): + row = {'condition': name} + for key in ['whole_spikes', 'KC_active', 'KC_spikes', 'KC_late_spikes', 'KC82312_late_spikes', 'VA6_late_spikes', 'wall_seconds']: + row[key+'_min'] = float(g[key].min()); row[key+'_max'] = float(g[key].max()) + rows.append(row) +pd.DataFrame(rows).to_csv(EXP/'audit/condition-ranges.csv', index=False) +ca = trials[trials.condition == 'calyx_PN_KC_contact_block'] +wide = trials[trials.condition == 'whole_PN_output_block'] +local = watched[(watched.population == 'ALLN') & watched.trial.str.endswith('calyx_PN_KC_contact_block')] +result = {'posthoc_summary_not_new_experiment': True, + 'all_six_CA_block_targetKC_late_zero': bool(ca.KC82312_late_spikes.eq(0).all()), + 'all_six_CA_block_VA6_late_persists': bool(ca.VA6_late_spikes.gt(0).all()), + 'all_six_broad_block_KC_and_VA6_late_zero': bool((wide.KC_late_spikes.eq(0) & wide.VA6_late_spikes.eq(0)).all()), + 'CA_block_active_KC_range': [int(ca.KC_active.min()), int(ca.KC_active.max())], + 'CA_block_ALLN_watched_late_rate_range_hz': [float(local.late_rate_hz.min()), float(local.late_rate_hz.max())], + 'CA_vs_allKC_spike_sequence_exact_for_all_odors': bool(all(x['terminal_vs_allKC_events_exact'] for x in comparisons)), + 'not_a_physiological_APL_gain_estimate': True, 'not_a_memory_or_separability_success': True, + 'new_candidate': False, 'source_sha256': digest(Path(__file__))} +save(EXP/'audit/mechanism-interpretation.json', result) + +def span(frame, key): + lo, hi = frame[key].min(), frame[key].max() + return str(int(lo)) if lo == hi else f'{int(lo)}–{int(hi)}' +ref = trials[trials.condition == 'frozen_reference'] +lines = ['# Phase 4AB 机制解读', '', + '正式状态:**COMPLETE-SCOPE-COUNTERFACTUAL / NO-DYNAMICS-CANDIDATE**。', '', + '这一轮区分了“PN→KC 传入位置”与“维持 PN 放电的上游反馈”。没有修复或批准新的 APL 生理模型,也没有训练。', '', + '| 诊断范围 | 活跃 KC(6 个旧气味) | 目标 KC 晚期 spikes | VA6 PN 晚期 spikes |', + '|---|---:|---:|---:|'] +labels = {'frozen_reference': '原模型', 'calyx_PN_KC_contact_block': '仅明确 calyx 接触', + 'all_PN_KC_block': '同批 PN 的全部 KC 输出', 'whole_PN_output_block': '同批 PN 的全部快速输出'} +for name in cfg['conditions']: + g = trials[trials.condition == name] + lines.append(f'| {labels[name]} | {span(g,"KC_active")} | {span(g,"KC82312_late_spikes")} | {span(g,"VA6_late_spikes")} |') +lines += ['', '晚期窗口是 500–1,000 ms。每个气味沿用 seed 131101;总计 24 组诊断、4 次精确重复,不是 5-seed 学习验证。', '', + '## 能说明什么', '', + f'仅 calyx 接触阻断后,目标 KC82312 的晚期 spikes 范围为 {span(ca,"KC82312_late_spikes")},VA6 仍为 {span(ca,"VA6_late_spikes")}。', + f'同时 KC 总活跃数降为 {span(ca,"KC_active")},原模型为 {span(ref,"KC_active")}。不能把这种接近静默的结果包装成编码或记忆改善。', + '即使两个局部阻断条件的事件序列相同,其电压/g 仍可能不同;逐气味比较见 narrow-vs-allKC.csv。', + '宽范围 PN 快速输出阻断影响反馈路径,不等价于局部 calyx 调制;它也没有关闭 PN 胞体或 frozen graded APL 的 PN 输入。', '', + '## 仍不能说明什么', '', + '完全阻断只是工程极端对照,不是 APL 的实测释放抑制比例。没有估计 receptor、bouton、局部扩散范围或时间常数。', + '未使用 held-out 气味,未检验学习、保持、反转或动作输出。不得选取这次“让活动更少”的操作作为正式脑模型。', + '剩余 late KC 的 ID/type 已单独保存;其来源不能仅凭残余计数猜测。', '', + '## 下一步边界', '', + '先继续 upstream feedback / compartment-specific physiology 的证据约束,区分 calyx 信号传递与触角叶持续放电,再确定可检验的局部动力学假设。', + '不能靠增加整体抑制、调 eta/threshold、扩大 plastic mask 或让 KC 全静默宣称修复。当前不进入学习、游戏或视觉。', '', + '相关原始研究:[Prisco et al., 2021](https://doi.org/10.7554/eLife.74172)、[Amin et al., 2020](https://doi.org/10.7554/eLife.56954)。它们支持研究局部 APL 作用,不直接验证本实验完全阻断幅度。', '', + '顶层验收仍为 5/10(50%);本轮推进的是机制定位与可重复诊断能力。最终完整性状态见 regression/final-integrity.json。'] +with (EXP/'INTERPRETATION.zh.md').open('x', encoding='utf-8') as out: + out.write('\n'.join(lines)+'\n') +print(result) diff --git a/models/male-cns-lif/terminal-scope-diagnostic-v1/checksums.sha256 b/models/male-cns-lif/terminal-scope-diagnostic-v1/checksums.sha256 new file mode 100644 index 0000000..ff9cc55 --- /dev/null +++ b/models/male-cns-lif/terminal-scope-diagnostic-v1/checksums.sha256 @@ -0,0 +1,11 @@ +451b53b128eb0ad67acb81f060f3676794a68c98637dd2c0eddd137da509fccf PROTOCOL.md +2842b5dd94ed30fc01d1a8b8d95e235de78695d3d1c1076402499276fb903261 README.md +33ba5f323e9ed3343f43a8d64fb7e862c8a4f1118b9b441f4745e26cc14303a8 analyze.py +e22088d9847504a50c0e684d2cee9420f484ab1ebef9d6057921062d8f785e73 config.yaml +c8ec2ae6e72d35fedbd42acc6e6b5e7af2634d5b9805dc20e777b172c55d5aa4 diagnostic.py +be92ce24e63910f67da0238b19e3abb882e1afd317561fccf01734f1b4a56f25 environment.py +0b2f71365267886933ba5becb52f4123d3d4e95e9c5bc0cf19c9bf0563831625 launch.py +bc194bb857336908b1c3fe71cc0e7b7fe4152794745bd3443533d47da886f5ec publish.py +8f5774496dcceaee1c2793a5308754cbd0864c4a38d507481071d988f9de424d scope.py +38a1c6e653ae97e77e5feda3ee8f2f8a3c366755bfbbd57ca1373b9b8f971bbb test_scope.py +971136a667367a84cfc50ebc3fa73a749eddb8b8e1ca6931708ba67bfc12f0c1 validate.py diff --git a/models/male-cns-lif/terminal-scope-diagnostic-v1/config.yaml b/models/male-cns-lif/terminal-scope-diagnostic-v1/config.yaml new file mode 100644 index 0000000..91609e7 --- /dev/null +++ b/models/male-cns-lif/terminal-scope-diagnostic-v1/config.yaml @@ -0,0 +1,22 @@ +phase: 4AB +root: /data/digital-drosophila +model: models/male-cns-lif/terminal-scope-diagnostic-v1 +experiment: experiments/phase4ab-terminal-scope +prior_model: models/male-cns-lif/apl-pn-scope-audit-v1 +prior_experiment: experiments/phase4aa-apl-pn-scope +runtime: models/male-cns-lif/deterministic-runtime-v2 +snapshot: registry/snapshots/bootstrap-20260929 +canonical: datasets/male-cns-v1.0/processed/neuron-only +event_prior: experiments/phase4z-pn-feedback-audit +state_prior: experiments/phase4y-dpm-hypothesis +input_model: models/male-cns-lif/csus-audit-v1 +roi_labels: [CA(L), CA(R)] +seed: 131101 +odor_indices: [0, 1, 2, 3, 4, 5] +repeat_odor_index: 0 +late_start_ms: 500 +target_KC: 82312 +watched_VA6: 133666 +conditions: [frozen_reference, calyx_PN_KC_contact_block, all_PN_KC_block, whole_PN_output_block] +workers: 4 +no_candidate: true diff --git a/models/male-cns-lif/terminal-scope-diagnostic-v1/diagnostic.py b/models/male-cns-lif/terminal-scope-diagnostic-v1/diagnostic.py new file mode 100644 index 0000000..58d5546 --- /dev/null +++ b/models/male-cns-lif/terminal-scope-diagnostic-v1/diagnostic.py @@ -0,0 +1,369 @@ +"""New-path-only Phase 4AB scope diagnostics; never edits frozen scientific files.""" +import argparse +from datetime import datetime, timezone +import json +import os +from pathlib import Path +import subprocess +import sys +import time +import urllib.request +import numpy as np +import pandas as pd +import yaml +from scope import contact_scope, edge_ids_for_pairs, blocked_weights + + +def load_context(): + cfg = yaml.safe_load(Path(__file__).with_name('config.yaml').read_text()) + root = Path(cfg['root']); model = root/cfg['model']; exp = root/cfg['experiment'] + sys.path.insert(0, str(root/cfg['prior_model'])) + from audit import save, digest, immutable_check, seal + return cfg, root, model, exp, save, digest, immutable_check, seal + + +def manifest_check(folder, digest): + manifest = folder/'manifest.json' + rows = json.loads(manifest.read_text())['files'] + bad = [] + for row in rows: + path = folder/row['path'] + if not path.is_file() or path.stat().st_size != row['bytes'] or digest(path) != row['sha256']: + bad.append(row['path']) + return {'pass': not bad, 'checked': len(rows), 'mismatches': bad, + 'manifest_sha256': digest(manifest), 'checksums_sha256': digest(folder/'checksums.sha256')} + + +def integrity(cfg, root, digest, immutable_check): + result = {'original': immutable_check(root, root/cfg['snapshot'], cfg['workers'])} + for key in ('prior_model', 'prior_experiment'): + result[key] = manifest_check(root/cfg[key], digest) + assert all(x['pass'] for x in result.values()), result + return result + + +def queues(): + out = [] + for port in (8188, 8189, 8190): + with urllib.request.urlopen(f'http://192.168.10.51:{port}/queue', timeout=5) as r: + q = json.load(r) + out.append({'port': port, 'running': len(q['queue_running']), 'pending': len(q['queue_pending'])}) + assert all(x['running'] == x['pending'] == 0 for x in out), 'ComfyUI busy: defer, never evict' + return out + + +def prepare(): + cfg, root, model, exp, save, digest, immutable_check, _ = load_context() + assert exp.parent == root/'experiments' and model.parent == root/'models/male-cns-lif' + if exp.exists() and any(exp.iterdir()): raise RuntimeError('Refusing nonempty experiment') + exp.mkdir(exist_ok=True) + for d in ('protocol', 'audit', 'masks', 'events', 'states', 'observations', 'requests', 'replay', 'regression', 'performance'): + (exp/d).mkdir() + save(exp/'protocol/preregistered.json', {'config': cfg, 'before_analysis': True, + 'timestamp_utc': datetime.now(timezone.utc).isoformat(), + 'parent_commit': subprocess.check_output(['git', '-C', str(root), 'rev-parse', 'HEAD'], text=True).strip(), + 'source_hashes': {p.name: digest(p) for p in sorted(model.iterdir()) if p.is_file()}}) + save(exp/'regression/preflight.json', integrity(cfg, root, digest, immutable_check)) + can = root/cfg['canonical']; prior = root/cfg['prior_experiment'] + m = pd.read_parquet(can/'neuron-index/unified-metadata.parquet').sort_values('neuron_idx').reset_index(drop=True) + ptr = np.load(can/'gpu/csr-indptr.int64.npy', mmap_mode='r') + dst = np.load(can/'gpu/csr-indices.int32.npy', mmap_mode='r') + raw = np.load(can/'gpu/csr-weights.int64.npy', mmap_mode='r') + assert len(m) == 166700 and len(dst) == 25582938 and int(raw.sum()) == 124177617 + assert m.body_id.dtype == np.uint64 and np.array_equal(m.neuron_idx, np.arange(len(m))) + src = np.repeat(np.arange(len(m), dtype=np.int32), np.diff(ptr)) + apl = np.flatnonzero(m.annotation_type.eq('APL')); pn = np.flatnonzero(m.annotation_class.eq('ALPN')) + kc = np.flatnonzero(m.annotation_class.eq('Kenyon_Cell')) + contacts = pd.read_parquet(prior/'localization/APL-incident.parquet') + ap = contacts[contacts.source_neuron_idx.isin(apl) & contacts.target_neuron_idx.isin(pn)].copy() + pk = pd.read_parquet(prior/'localization/APL-target-PN-to-KC.parquet') + assert len(ap) == 4600 and ap.target_neuron_idx.nunique() == 259 and len(pk) == 385229 + assert pk.source_neuron_idx.isin(pn).all() and pk.target_neuron_idx.isin(kc).all() + pairs, allowed, keep = contact_scope(ap, pk, cfg['roi_labels']) + ids = edge_ids_for_pairs(pairs, ptr, dst) + assert np.array_equal(raw[ids], pairs.raw_partner_count) + full_expected = np.flatnonzero(np.isin(src, ap.target_neuron_idx.unique()) & np.isin(dst, kc)) + assert np.array_equal(np.sort(ids), full_expected), 'Missing whole PN->KC pairs' + pairs['edge_id'] = ids + pairs['source_body_id'] = m.body_id.to_numpy()[pairs.source_neuron_idx] + pairs['target_body_id'] = m.body_id.to_numpy()[pairs.target_neuron_idx] + ca = pairs[pairs.blocked_contact_count > 0].sort_values('edge_id').copy() + eligible = np.sort(ca.source_neuron_idx.unique()).astype(np.int32) + all_pk = np.flatnonzero(np.isin(src, eligible) & np.isin(dst, kc)) + whole = np.flatnonzero(np.isin(src, eligible)) + assert set(ca.edge_id).issubset(all_pk) and set(all_pk).issubset(whole) + assert not np.any(np.isin(src[ca.edge_id], apl)) and not np.any(ca.retained_contact_count < 0) + for name, eids, count in [ + ('calyx_PN_KC_contact_block', ca.edge_id.to_numpy(np.int64), ca.blocked_contact_count.to_numpy(np.int64)), + ('all_PN_KC_block', all_pk, raw[all_pk]), ('whole_PN_output_block', whole, raw[whole])]: + frame = pd.DataFrame({'edge_id': eids, 'source_neuron_idx': src[eids], 'target_neuron_idx': dst[eids], + 'raw_synapse_count': raw[eids], 'blocked_contact_count': count}) + frame['source_body_id'] = m.body_id.to_numpy()[src[eids]] + frame['target_body_id'] = m.body_id.to_numpy()[dst[eids]] + frame.to_parquet(exp/'masks'/f'{name}.parquet', index=False) + pairs.to_parquet(exp/'audit/all-PN-KC-contact-partitions.parquet', index=False) + allowed.to_parquet(exp/'audit/observed-APL-PN-ROI-pairs.parquet', index=False) + pns = m.iloc[np.sort(ap.target_neuron_idx.unique().astype(np.int32))].copy() + pns['eligible_for_diagnostic'] = pns.neuron_idx.isin(eligible) + pns.to_parquet(exp/'audit/all-259-APL-target-PNs.parquet', index=False) + roi = pk.assign(in_scope=keep).groupby(['primary_post', 'in_scope'], observed=True, dropna=False).size().reset_index(name='contacts') + roi.to_csv(exp/'audit/ROI-partition.csv', index=False) + summary = {'neurons': len(m), 'edges': len(dst), 'raw_contacts': int(raw.sum()), 'APL_target_PNs': len(pns), + 'eligible_PNs': len(eligible), 'ineligible_PNs': int((~pns.eligible_for_diagnostic).sum()), + 'calyx_mask_edges': len(ca), 'calyx_blocked_contacts': int(ca.blocked_contact_count.sum()), + 'calyx_affected_KCs': int(ca.target_neuron_idx.nunique()), 'mixed_CA_nonCA_edges': int((ca.retained_contact_count > 0).sum()), + 'calyx_other_contacts_retained_on_affected_edges': int(ca.retained_contact_count.sum()), + 'all_PN_KC_edges': len(all_pk), 'all_PN_KC_contacts': int(raw[all_pk].sum()), + 'whole_PN_edges': len(whole), 'whole_PN_contacts': int(raw[whole].sum()), + 'unknown_ROI_contacts_in_original_PN_KC': int(pk.primary_post.eq('CentralBrain-unspecified').sum()), + 'unknown_contacts_relabelled': 0, 'same_bouton_confirmed': False, 'biophysical_coefficient_known': False} + save(exp/'audit/scope-summary.json', summary) + inputs = [prior/'localization/APL-incident.parquet', prior/'localization/APL-target-PN-to-KC.parquet', + prior/'external-resources/synaptic-partners/download-verification.json', + can/'neuron-index/unified-metadata.parquet'] + list((can/'gpu').glob('csr-*.npy')) + save(exp/'protocol/input-hashes.json', [{'path': str(p.relative_to(root)), 'sha256': digest(p), 'bytes': p.stat().st_size} for p in inputs]) + save(exp/'protocol/mask-hashes.json', {p.name: digest(p) for p in sorted((exp/'masks').iterdir())}) + print(json.dumps(summary), flush=True) + + +def run(): + cfg, root, model, exp, save, digest, _, _ = load_context() + pre = json.loads((exp/'protocol/preregistered.json').read_text()) + assert all(digest(model/n) == h for n, h in pre['source_hashes'].items()), 'Source changed since preregistration' + assert not (exp/'regression/run-start.json').exists(), 'Refusing rerun into existing outputs' + assert all(digest(exp/'masks'/n) == h for n, h in json.loads((exp/'protocol/mask-hashes.json').read_text()).items()) + q = queues(); runtime = root/cfg['runtime'] + pc = yaml.safe_load((runtime/'phase4p.yaml').read_text()) + os.environ['CUDA_VISIBLE_DEVICES'] = pc['device']['visible_gpu_uuid'] + os.environ['CUDA_HOME'] = '/usr/local/cuda'; os.environ['TORCH_CUDA_ARCH_LIST'] = '8.9'; os.environ['MAX_JOBS'] = '2' + os.environ['PATH'] = str(root/'models/male-cns-lif/.venv/bin') + ':/usr/local/cuda/bin:' + os.environ['PATH'] + sys.path.insert(0, str(root/'models/male-cns-lif')); sys.path.insert(0, str(runtime)) + import torch + import phase4p, phase4v, phase4z + from phase4p_revalidate import DeterministicAPLSim, door_inputs, make_drive + from phase4r import arrhash + free, total = torch.cuda.mem_get_info(); assert free > 2*1024**3 + save(exp/'regression/run-start.json', {'ComfyUI_queues': q, 'free_VRAM': free, 'total_VRAM': total, + 'device': torch.cuda.get_device_name(), 'timestamp_utc': datetime.now(timezone.utc).isoformat()}) + start = time.perf_counter(); torch.cuda.reset_peak_memory_stats() + rt = phase4p.CanonicalRuntime(pc, runtime, exp) + sim = DeterministicAPLSim(rt); sim.install(None) + assert len(sim.identity) == 14232 and sim.n == 166700 and len(rt.raw_np) == 25582938 and rt.delay_steps == 18 + frozen = rt.weights.cpu().numpy().copy(); anatomical_hash = arrhash(rt.raw_np) + original_install = sim.install + apl_input_hash = arrhash(sim.input_gpu.cpu().numpy(), sim.output_gpu.cpu().numpy()) + base_hash = arrhash(sim.base.cpu().numpy()) + masks = {n: pd.read_parquet(exp/'masks'/f'{n}.parquet') for n in cfg['conditions'][1:]} + updates = {} + for name, mask in masks.items(): + ids = mask.edge_id.to_numpy(np.int64) + values = blocked_weights(frozen[ids], rt.raw_np[ids], mask.blocked_contact_count.to_numpy(np.int64)) + assert np.all(np.abs(values) <= np.abs(frozen[ids])) + updates[name] = (torch.as_tensor(ids, device=rt.device), torch.as_tensor(values, device=rt.device)) + mask.assign(frozen_effective_weight=frozen[ids], diagnostic_effective_weight=values, + diagnostic_delta=(values.astype(float)-frozen[ids])).to_parquet(exp/'audit'/f'{name}-effective-overlay.parquet', index=False) + condition = 'frozen_reference' + def install(E): + assert E is None, 'No learning allowed' + original_install(None) + if condition != 'frozen_reference': + ix, values = updates[condition]; rt.weights[ix] = values + sim.install = install + vc = yaml.safe_load((root/cfg['input_model']/'phase4v.yaml').read_text()) + assert vc['short_duration_ms'] == 120 and vc['observation_duration_ms'] == 1000 + oldwatch = json.loads((root/cfg['event_prior']/'protocol/watched.json').read_text()) + watch = np.asarray(oldwatch['all_watched'], np.int32) + targetkc = np.unique(sim.identity.loc[sim.identity.compartment.eq(vc['target_compartment']), 'source_neuron_idx'].to_numpy(np.int32)) + oc, panel, vectors, selection, mapping = door_inputs(); panel = panel[panel.split == 'calibration'].reset_index(drop=True) + assert len(panel) == 6 + save(exp/'protocol/calibration-panel.json', panel.to_dict('records')) + codes = phase4z.role_codes(sim.meta) + trials, regress, request_summary, populations, watched, hashes = [], [], [], [], [], [] + baseline0 = None + try: + for oi in cfg['odor_indices']: + odor = panel.iloc[oi] + targets, rates = make_drive(oc, panel, vectors, selection, mapping, odor.odor_id, 'physiological') + forcing_seed = vc['seed_namespace'] + oi*vc['odor_seed_offset'] + cfg['seed'] + force = phase4v.forcing(sim, targets, rates, forcing_seed, vc, 'offset'); ff = force.cpu().numpy() + hashes.append({'odor_index': oi, 'seed': forcing_seed, 'forcing': arrhash(ff), 'targets_rates': arrhash(targets, rates)}) + np.savez_compressed(exp/'requests'/f'{oi}-scheduled.npz', forcing=ff, targets=targets, rates=rates) + requests0 = None + for condition in cfg['conditions']: + queues(); name = f'{oi}-{cfg["seed"]}-{condition}' + obs = phase4z.Observer(rt, watch, ff, targets); obs.attach() + try: result = phase4v.observed(sim, targets, force, targetkc, vc) + finally: obs.detach() + assert result['finite'] and np.isfinite(result['final_v']).all() and np.isfinite(result['final_g']).all() + ev = obs.events(); states = np.asarray(obs.states); req = pd.DataFrame(obs.request_rows) + assert len(req) == int(ff.sum()) + assert np.array_equal(np.bincount(ev.neuron_idx, minlength=sim.n), result['counts']) + expected_weights = frozen.copy() + if condition != 'frozen_reference': + ids = masks[condition].edge_id.to_numpy(np.int64) + expected_weights[ids] = updates[condition][1].cpu().numpy() + assert np.array_equal(rt.weights.cpu().numpy(), expected_weights), 'Undeclared weight change' + row = {'trial': name, 'declared_weight_scope_exact': True} + if condition == 'frozen_reference': + old_ev = pd.read_parquet(root/cfg['event_prior']/'events'/f'{name}-whole-brain.parquet') + old_state = np.load(root/cfg['event_prior']/'states'/f'{name}-watched.npz') + old_final = np.load(root/cfg['state_prior']/'states'/f'{name}.npz') + row['prior_exact'] = {'events': ev.equals(old_ev), 'watched_states': np.array_equal(states, old_state['state']), + **{key: bool(np.array_equal(result[key], old_final[key])) for key in ('counts', 'final_v', 'final_g', 'trace')}} + assert all(row['prior_exact'].values()), row + requests0 = req + if oi == cfg['repeat_odor_index']: baseline0 = ev, states, req, result + paired = requests0.merge(req, on=['step', 'neuron_idx'], suffixes=('_ref', '_diagnostic'), validate='one_to_one', how='outer', indicator=True) + assert paired['_merge'].eq('both').all() + request_summary.append({'trial': name, 'scheduled': len(req), 'identical_request_keys': True, + 'accepted': int(req.status.eq('accepted').sum()), 'blocked': int(req.status.eq('blocked').sum()), 'preexisting': int(req.status.eq('preexisting').sum()), + 'status_differences_vs_reference': int((paired.status_ref != paired.status_diagnostic).sum()), + 'actual_output_differences_vs_reference': int((paired.actual_output_spike_ref != paired.actual_output_spike_diagnostic).sum())}) + late = ev[ev.step >= round(cfg['late_start_ms']/rt.dt)] + period_count = np.bincount(late.neuron_idx, minlength=sim.n) + for code in np.unique(codes): + nodes = np.flatnonzero(codes == code) + populations.append({'trial': name, 'population': str(code), 'neurons': len(nodes), 'active': int((result['counts'][nodes] > 0).sum()), + 'spikes': int(result['counts'][nodes].sum()), 'late_spikes': int(period_count[nodes].sum())}) + for node in watch: + watched.append({'trial': name, 'neuron_idx': int(node), 'body_id': int(sim.meta.iloc[node].body_id), + 'type': str(sim.meta.iloc[node].annotation_type), 'population': str(codes[node]), + 'spikes': int(result['counts'][node]), 'late_spikes': int(period_count[node]), + 'late_rate_hz': float(period_count[node]/((1000-cfg['late_start_ms'])/1000))}) + trials.append({'trial': name, 'odor_index': oi, 'odor_name': str(odor.odor_name), 'seed': cfg['seed'], 'condition': condition, + 'whole_spikes': len(ev), 'KC_active': int(np.count_nonzero(result['counts'][sim.kc])), + 'KC_active_fraction': float(np.count_nonzero(result['counts'][sim.kc])/len(sim.kc)), + 'KC_spikes': int(result['counts'][sim.kc].sum()), 'KC_late_spikes': int(period_count[sim.kc].sum()), + 'KC82312_late_spikes': int(period_count[cfg['target_KC']]), 'VA6_late_spikes': int(period_count[cfg['watched_VA6']]), + 'finite': True, 'wall_seconds': result['wall_seconds'], 'biological_ms': 1000}) + ev.to_parquet(exp/'events'/f'{name}.parquet', index=False) + req.to_parquet(exp/'requests'/f'{name}.parquet', index=False) + pd.DataFrame(result['samples']).to_parquet(exp/'observations'/f'{name}.parquet', index=False) + np.savez_compressed(exp/'states'/f'{name}.npz', counts=result['counts'], final_v=result['final_v'], final_g=result['final_g'], trace=result['trace']) + np.savez_compressed(exp/'states'/f'{name}-watched.npz', state=states, watch=watch) + if oi == cfg['repeat_odor_index']: + queues(); again = phase4z.Observer(rt, watch, ff, targets); again.attach() + try: repeat = phase4v.observed(sim, targets, force, targetkc, vc) + finally: again.detach() + row['repeat_exact'] = {'events': ev.equals(again.events()), 'states': np.array_equal(states, again.states), + 'requests': req.equals(pd.DataFrame(again.request_rows)), + **{key: bool(np.array_equal(result[key], repeat[key])) for key in ('counts', 'final_v', 'final_g', 'trace')}} + assert all(row['repeat_exact'].values()), row + regress.append(row); save(exp/'regression'/f'{name}.json', row) + print(json.dumps(trials[-1]), flush=True) + # Fixed-event replay is an independent direct-operator check, not the dynamic whole-brain result. + replay_check(cfg, exp, sim, masks, frozen, baseline0, watch, phase4z, save) + finally: + sim.install = original_install; original_install(None) + assert np.array_equal(rt.weights.cpu().numpy(), frozen) + assert arrhash(rt.raw_np) == anatomical_hash and arrhash(sim.base.cpu().numpy()) == base_hash + assert arrhash(sim.input_gpu.cpu().numpy(), sim.output_gpu.cpu().numpy()) == apl_input_hash + save(exp/'regression/restored.json', {'base': True, 'raw': True, 'APL_matrices': True, 'frozen_effective_weights': True}) + for name, rows in [('trials', trials), ('request-comparison', request_summary), ('population-counts', populations), ('watched-counts', watched)]: + pd.DataFrame(rows).to_csv(exp/'audit'/f'{name}.csv', index=False) + save(exp/'protocol/forcing-hashes.json', hashes) + # Separate reference trials do not include the graded APL overlay, exactly as archived. + rt.weights.copy_(sim.base) + reference = [] + for spec in pc['reference_trials']: + queues(); ref = root/'experiments/phase4p-deterministic-runtime/phase4c-v2/reference'/spec['name'] + ev = pd.read_parquet(ref/'spike-events.parquet') + expected = {'step': ev.step.to_numpy(), 'neuron_idx': ev.neuron_idx.to_numpy(), + 'counts': np.load(ref/'per-neuron-spike-counts.int32.npy'), 'v': np.load(ref/'final-voltage.float32.npy'), 'g': np.load(ref/'final-g.float32.npy')} + r = rt.run(np.flatnonzero(rt.pops[spec['population']]), spec['rate_hz'], spec['seed'], spec['duration_ms']) + eq = {key: bool(np.array_equal(r[key], value)) for key, value in expected.items()} + assert all(eq.values()), eq + reference.append({'trial': spec['name'], 'exact': eq, 'wall_seconds': r['metrics']['wall_seconds']}) + original_install(None) + save(exp/'regression/five-frozen-trials.json', {'pass': True, 'trials': reference, 'original_v1_preserved': True, 'oracle': 'frozen deterministic-v2'}) + save(exp/'performance/summary.json', {'wall_seconds_including_build': time.perf_counter()-start, + 'peak_VRAM_bytes': int(torch.cuda.max_memory_allocated()), 'device': torch.cuda.get_device_name(), + 'diagnostic_overhead_included': True, 'not_runtime_benchmark': True, 'ComfyUI_models_unloaded': False}) + save(exp/'audit/run-complete.json', {'trials': len(trials), 'exact_repeat_trials': 4, 'old_trial_reproductions': 6, + 'frozen_reference_trials': 5, 'all_finite': True, 'candidate': False, 'training': False}) + + +def replay_check(cfg, exp, sim, masks, frozen, baseline, watch, phase4z, save): + ev, state, req, result = baseline; rt = sim.rt; T = len(state) + ids = np.flatnonzero(np.isin(rt.indices_np, watch)) + edges = pd.DataFrame({'edge_id': ids, 'source_neuron_idx': sim.sources[ids], 'target_neuron_idx': rt.indices_np[ids], 'weight': frozen[ids]}) + arrivals = ev.merge(edges, left_on='neuron_idx', right_on='source_neuron_idx') + arrivals['arrival_step'] = arrivals.step + rt.delay_steps + arrivals = arrivals[arrivals.arrival_step < T].sort_values(['target_neuron_idx', 'arrival_step', 'edge_id'], kind='stable') + rows = [] + for wi, node in enumerate(watch): + subset = arrivals[arrivals.target_neuron_idx == node].copy() + after = np.r_[state[1:, 1, wi], result['final_g'][node]] + overlay = after.astype(float)-state[:, 5, wi].astype(float) + request = np.zeros(T, bool); rq = req[req.neuron_idx == node]; request[rq.step.to_numpy(np.int32)] = True + base_arrival = state[:, 3, wi] + for name in cfg['conditions']: + weights = subset.weight.to_numpy(np.float32).copy() + if name != 'frozen_reference': + frame = masks[name]; eids = frame.edge_id.to_numpy(np.int64) + values = blocked_weights(frozen[eids], rt.raw_np[eids], frame.blocked_contact_count.to_numpy(np.int64)) + lookup = pd.Series(values, index=eids) + mapped = subset.edge_id.map(lookup); keep = mapped.notna().to_numpy() + weights[keep] = mapped[keep].to_numpy(np.float32) + subset['diagnostic_weight'] = weights + a = np.zeros(T, np.float32) + for step, group in subset.groupby('arrival_step', sort=False): + a[int(step)] = np.cumsum(group.diagnostic_weight.to_numpy(np.float32), dtype=np.float32)[-1] + rr = phase4z.replay(a, overlay, request, rt) + if name == 'frozen_reference': + exact = np.array_equal(a, base_arrival) and np.array_equal(rr[0], ev.loc[ev.neuron_idx == node, 'step']) and np.array_equal(rr[1], state[:, 4:7, wi]) + assert exact and rr[2] == result['final_v'][node] and rr[3] == result['final_g'][node] + unchanged = np.array_equal(a, base_arrival) + if name == 'calyx_PN_KC_contact_block' and node not in sim.kc: assert unchanged + rows.append({'condition': name, 'neuron_idx': int(node), 'arrival_unchanged': bool(unchanged), + 'arrival_L1_difference': float(np.abs(a.astype(float)-base_arrival).sum()), + 'conditional_late_spikes': int((rr[0] >= round(cfg['late_start_ms']/rt.dt)).sum()), + 'all_other_recorded_events_and_APL_fixed': True, 'whole_brain_causality_claim': False}) + pd.DataFrame(rows).to_csv(exp/'replay/fixed-event-scope.csv', index=False) + save(exp/'regression/fixed-event-replay.json', {'baseline_exact_neurons': len(watch), 'terminal_nonKC_arrivals_exact': True}) + + +def finalize(): + cfg, root, model, exp, save, digest, immutable_check, seal = load_context() + assert (exp/'audit/run-complete.json').exists() + pre = json.loads((exp/'protocol/preregistered.json').read_text()) + assert all(digest(model/n) == h for n, h in pre['source_hashes'].items()) + post = integrity(cfg, root, digest, immutable_check) + assert post == json.loads((exp/'regression/preflight.json').read_text()) + save(exp/'regression/final-integrity.json', post) + q = queues(); save(exp/'audit/final-service-health.json', {'ComfyUI_queues': q, 'services_stopped': False}) + trials = pd.read_csv(exp/'audit/trials.csv'); scope = json.loads((exp/'audit/scope-summary.json').read_text()) + requests = pd.read_csv(exp/'audit/request-comparison.csv') + lines = ['# Phase 4AB — calyx contact-scope diagnostic', '', + 'Status: COMPLETE-SCOPE-COUNTERFACTUAL / NO-DYNAMICS-CANDIDATE.', + 'Diagnostic interventions only; no calibrated biological inhibition, no training, no parameter winner.', '', + f"Eligible PNs: {scope['eligible_PNs']}/259. CA mask: {scope['calyx_mask_edges']} edges / {scope['calyx_blocked_contacts']} contacts.", + f"Affected KCs: {scope['calyx_affected_KCs']}. Mixed-ROI affected edges: {scope['mixed_CA_nonCA_edges']}; retained other contacts: {scope['calyx_other_contacts_retained_on_affected_edges']}.", + f"Broader PN→KC control: {scope['all_PN_KC_edges']} edges / {scope['all_PN_KC_contacts']} contacts. All-fast-PN-output control: {scope['whole_PN_edges']} edges / {scope['whole_PN_contacts']} contacts.", '', + '| Odor | Condition | Active KC | KC late spikes | KC82312 late | VA6 late |', + '|---|---|---:|---:|---:|---:|'] + for r in trials.itertuples(): + lines.append(f'| {r.odor_name} | {r.condition} | {r.KC_active} | {r.KC_late_spikes} | {r.KC82312_late_spikes} | {r.VA6_late_spikes} |') + lines += ['', 'Late means 500–1,000 ms; 120 ms old calibration odor input; one seed, six old odors. No held-out generalization claim.', + f"Identical scheduled requests across conditions. Delivered request-associated output differences versus reference: {int(requests.actual_output_differences_vs_reference.sum())} (summed over all comparisons). See per-trial table; this is state/refractory feedback, not a changed RNG.", '', + '## Interpretation limits', '', + 'CA selection uses exact primary_post labels plus matched APL→PN/ROI metadata, not bouton identities or inferred receptors. Unknown ROIs are not reclassified.', + 'Whole-PN control removes fast output, not somatic spikes or the frozen graded APL input. It is not a complete PN knockout.', + 'Reduction/silencing is not restored information or associative memory. No condition becomes a formal model. Fixed-event replay freezes other recorded events/APL; dynamic trials allow natural recurrent feedback.', + 'Local-inhibition motivation: [Prisco et al.](https://doi.org/10.7554/eLife.74172), [Amin et al.](https://doi.org/10.7554/eLife.56954). These sources do not establish the complete-block operator as physiological.', '', + '## Verification', '', + 'Six original trials reproduced exactly (whole spike events, watched state and final counts/V/g). Four first-odor repeats exact. Five deterministic-v2 frozen reference trials exact. Finite state throughout.', + 'Original 230,239 files and both Phase 4AA manifests rechecked before/after. Base CSR/count/sign, frozen LIF/APL, eligibility-v2 and 14,232 plastic mask preserved.', + 'Timing includes diagnostic CPU/GPU observation overhead and is not a runtime speed benchmark. ComfyUI was not stopped or unloaded.', + 'Top-level acceptance gates remain 5/10 (50%); anatomical diagnosis is not evidence of learning success.'] + (exp/'REPORT.md').write_text('\n'.join(lines)+'\n', encoding='utf-8') + save(exp/'audit/final-summary.json', {'status': 'COMPLETE-SCOPE-COUNTERFACTUAL / NO-DYNAMICS-CANDIDATE', + 'integrity_pass': True, 'reference_pass': True, 'scope': scope, 'candidate': False, 'training': False, + 'preserved_acceptance_gates': '5/10', 'frozen_baseline_modified': False}) + for folder in (model, exp): + count = seal(folder); assert manifest_check(folder, digest)['pass']; print('SEALED', folder, count, flush=True) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(); parser.add_argument('task', choices=['prepare', 'run', 'finalize']) + globals()[parser.parse_args().task]() diff --git a/models/male-cns-lif/terminal-scope-diagnostic-v1/environment.py b/models/male-cns-lif/terminal-scope-diagnostic-v1/environment.py new file mode 100644 index 0000000..da55117 --- /dev/null +++ b/models/male-cns-lif/terminal-scope-diagnostic-v1/environment.py @@ -0,0 +1,22 @@ +"""Record executable/package/hardware versions without installing anything.""" +import importlib.metadata +import platform +from pathlib import Path +import subprocess +import sys + +MODEL = Path('/data/digital-drosophila/models/male-cns-lif/terminal-scope-diagnostic-v1') +EXP = Path('/data/digital-drosophila/experiments/phase4ab-terminal-scope') +sys.path.insert(0, str(MODEL)) +import diagnostic +_, _, _, _, save, digest, _, _ = diagnostic.load_context() +packages = {} +for name in ('torch', 'numpy', 'pandas', 'pyarrow', 'scipy', 'PyYAML', 'ninja'): + try: packages[name] = importlib.metadata.version(name) + except importlib.metadata.PackageNotFoundError: packages[name] = None +gpu = subprocess.check_output(['nvidia-smi', '--query-gpu=index,name,uuid,driver_version,memory.total', '--format=csv,noheader'], text=True) +nvcc = subprocess.check_output(['/usr/local/cuda/bin/nvcc', '--version'], text=True) +save(EXP/'protocol/environment.json', {'python': sys.version, 'executable': sys.executable, + 'platform': platform.platform(), 'packages': packages, 'GPU_inventory': gpu, 'nvcc': nvcc, + 'installed_or_upgraded_packages': False, 'source_sha256': digest(Path(__file__))}) +print(packages) diff --git a/models/male-cns-lif/terminal-scope-diagnostic-v1/launch.py b/models/male-cns-lif/terminal-scope-diagnostic-v1/launch.py new file mode 100644 index 0000000..e6e3dce --- /dev/null +++ b/models/male-cns-lif/terminal-scope-diagnostic-v1/launch.py @@ -0,0 +1,32 @@ +"""Explicit frozen module paths; repairs launch only, never scientific source.""" +import os +from pathlib import Path +import sys + +ROOT = Path('/data/digital-drosophila') +MODEL = ROOT/'models/male-cns-lif/terminal-scope-diagnostic-v1' +EXP = ROOT/'experiments/phase4ab-terminal-scope' +PARENT = ROOT/'models/male-cns-lif' +names = ['deterministic-runtime-v2', 'credit-v3', 'timing-audit-v1', 'timing-credit-v1', + 'timing-stability-v1', 'odor-timing-generalization-v1', 'csus-audit-v1', + 'late-kc-audit-v1', 'dpm-hypothesis-v1', 'pn-feedback-audit-v1', 'transmitter-audit-v1'] +sys.path[:0] = [str(MODEL), str(PARENT)] + [str(PARENT/n) for n in names] +os.environ['PYTHONDONTWRITEBYTECODE'] = '1' +import diagnostic +_, _, _, _, save, digest, _, _ = diagnostic.load_context() +save(EXP/'protocol/launch-addendum.json', { + 'previous_attempt': 'ModuleNotFoundError: phase4v before run-start and before simulation', + 'only_fix': 'Add explicit existing frozen dependency directories to module lookup', + 'model_source_edited': False, 'protocol_parameters_changed': False, + 'launcher_sha256': digest(Path(__file__)), 'module_paths': [str(PARENT/n) for n in names]}) +try: + diagnostic.run() +finally: + loaded = {} + for name, mod in list(sys.modules.items()): + filename = getattr(mod, '__file__', None) + if filename: + p = Path(filename) + if p.is_file() and p.is_relative_to(PARENT) and '.venv' not in p.parts: + loaded[name] = {'path': str(p.relative_to(ROOT)), 'sha256': digest(p)} + save(EXP/'protocol/imported-code-hashes.json', loaded) diff --git a/models/male-cns-lif/terminal-scope-diagnostic-v1/manifest.json b/models/male-cns-lif/terminal-scope-diagnostic-v1/manifest.json new file mode 100644 index 0000000..f55a1be --- /dev/null +++ b/models/male-cns-lif/terminal-scope-diagnostic-v1/manifest.json @@ -0,0 +1,60 @@ +{ + "created_utc": "2026-09-29T16:26:06.650270+00:00", + "files": [ + { + "bytes": 4956, + "path": "PROTOCOL.md", + "sha256": "451b53b128eb0ad67acb81f060f3676794a68c98637dd2c0eddd137da509fccf" + }, + { + "bytes": 2083, + "path": "README.md", + "sha256": "2842b5dd94ed30fc01d1a8b8d95e235de78695d3d1c1076402499276fb903261" + }, + { + "bytes": 6922, + "path": "analyze.py", + "sha256": "33ba5f323e9ed3343f43a8d64fb7e862c8a4f1118b9b441f4745e26cc14303a8" + }, + { + "bytes": 835, + "path": "config.yaml", + "sha256": "e22088d9847504a50c0e684d2cee9420f484ab1ebef9d6057921062d8f785e73" + }, + { + "bytes": 28229, + "path": "diagnostic.py", + "sha256": "c8ec2ae6e72d35fedbd42acc6e6b5e7af2634d5b9805dc20e777b172c55d5aa4" + }, + { + "bytes": 1193, + "path": "environment.py", + "sha256": "be92ce24e63910f67da0238b19e3abb882e1afd317561fccf01734f1b4a56f25" + }, + { + "bytes": 1608, + "path": "launch.py", + "sha256": "0b2f71365267886933ba5becb52f4123d3d4e95e9c5bc0cf19c9bf0563831625" + }, + { + "bytes": 1644, + "path": "publish.py", + "sha256": "bc194bb857336908b1c3fe71cc0e7b7fe4152794745bd3443533d47da886f5ec" + }, + { + "bytes": 2797, + "path": "scope.py", + "sha256": "8f5774496dcceaee1c2793a5308754cbd0864c4a38d507481071d988f9de424d" + }, + { + "bytes": 2615, + "path": "test_scope.py", + "sha256": "38a1c6e653ae97e77e5feda3ee8f2f8a3c366755bfbbd57ca1373b9b8f971bbb" + }, + { + "bytes": 2032, + "path": "validate.py", + "sha256": "971136a667367a84cfc50ebc3fa73a749eddb8b8e1ca6931708ba67bfc12f0c1" + } + ] +} diff --git a/models/male-cns-lif/terminal-scope-diagnostic-v1/publish.py b/models/male-cns-lif/terminal-scope-diagnostic-v1/publish.py new file mode 100644 index 0000000..3dea870 --- /dev/null +++ b/models/male-cns-lif/terminal-scope-diagnostic-v1/publish.py @@ -0,0 +1,29 @@ +"""Copy only new small sealed evidence into Git; never copy bulk datasets.""" +import json +from pathlib import Path +import shutil +import sys + +ROOT = Path('/data/digital-drosophila'); MODEL = ROOT/'models/male-cns-lif/terminal-scope-diagnostic-v1' +EXP = ROOT/'experiments/phase4ab-terminal-scope' +sys.path.insert(0, str(MODEL)) +import diagnostic +_, _, _, _, save, digest, _, _ = diagnostic.load_context() +for folder in (MODEL, EXP): + assert diagnostic.manifest_check(folder, digest)['pass'] +registry = ROOT/'registry/phase4ab-terminal-scope'; registry.mkdir(exist_ok=False) +records = [] +for p in sorted(EXP.rglob('*')): + if not p.is_file() or p.suffix not in ('.json', '.csv', '.md', '.sha256') or p.stat().st_size > 4*1024**2: + continue + dst = registry/'evidence'/p.relative_to(EXP); dst.parent.mkdir(parents=True, exist_ok=True) + with p.open('rb') as src, dst.open('xb') as out: shutil.copyfileobj(src, out) + assert digest(p) == digest(dst) + records.append({'source': str(p.relative_to(ROOT)), 'copy': str(dst.relative_to(registry)), + 'sha256': digest(p), 'bytes': p.stat().st_size}) +save(registry/'evidence-index.json', records) +save(registry/'seal-verification.json', {str(p.relative_to(ROOT)): diagnostic.manifest_check(p, digest) for p in (MODEL, EXP)}) +for source, dest in [('INTERPRETATION.zh.md', 'phase4ab-terminal-scope.md'), ('REPORT.md', 'phase4ab-technical-results.md')]: + target = ROOT/'docs/progress'/dest + with (EXP/source).open('rb') as src, target.open('xb') as out: shutil.copyfileobj(src, out) +print('Published', len(records), 'small evidence copies; no data copied to Git') diff --git a/models/male-cns-lif/terminal-scope-diagnostic-v1/scope.py b/models/male-cns-lif/terminal-scope-diagnostic-v1/scope.py new file mode 100644 index 0000000..19fe393 --- /dev/null +++ b/models/male-cns-lif/terminal-scope-diagnostic-v1/scope.py @@ -0,0 +1,53 @@ +"""Pure CPU contact accounting and immutable diagnostic weight operations.""" +import numpy as np +import pandas as pd + + +def contact_scope(apl_pn, pn_kc, rois): + """Only exact, observed PN+postsynaptic-ROI pairs; no side/name inference.""" + required = {'source_neuron_idx', 'target_neuron_idx', 'primary_post'} + if not required.issubset(apl_pn) or not required.issubset(pn_kc): + raise ValueError('Actual schema lacks required identifiers/primary_post') + permitted = apl_pn.loc[apl_pn.primary_post.isin(rois), + ['target_neuron_idx', 'primary_post']].drop_duplicates() + permitted = permitted.rename(columns={'target_neuron_idx': 'source_neuron_idx'}) + keys = pd.MultiIndex.from_frame(permitted.astype({'primary_post': 'string'})) + observed = pd.MultiIndex.from_frame(pn_kc[['source_neuron_idx', 'primary_post']] + .astype({'primary_post': 'string'})) + keep = observed.isin(keys) + pairs = ['source_neuron_idx', 'target_neuron_idx'] + total = pn_kc.groupby(pairs, observed=True).size().rename('raw_partner_count') + ca = pn_kc.loc[keep].groupby(pairs, observed=True).size().rename('blocked_contact_count') + frame = total.to_frame().join(ca).fillna(0).reset_index() + for key in pairs + ['raw_partner_count', 'blocked_contact_count']: + frame[key] = frame[key].astype(np.int64) + frame['retained_contact_count'] = frame.raw_partner_count - frame.blocked_contact_count + assert (frame.retained_contact_count >= 0).all() + return frame, permitted, keep + + +def edge_ids_for_pairs(frame, ptr, dst): + out = [] + for s, t in frame[['source_neuron_idx', 'target_neuron_idx']].itertuples(index=False, name=None): + ids = np.arange(ptr[s], ptr[s + 1], dtype=np.int64) + found = ids[dst[ids] == t] + if len(found) != 1: + raise ValueError(f'Expected exactly one existing CSR edge for {s}->{t}') + out.append(found[0]) + return np.asarray(out, np.int64) + + +def blocked_weights(base, raw, contacts): + base = np.asarray(base) + raw = np.asarray(raw) + contacts = np.asarray(contacts) + if base.dtype != np.float32 or raw.dtype != np.int64 or contacts.dtype != np.int64: + raise TypeError('Expected float32 effective weight and int64 anatomical counts') + if base.shape != raw.shape or raw.shape != contacts.shape: + raise ValueError('Shape mismatch') + if not np.isfinite(base).all() or np.any(raw <= 0) or np.any(contacts < 0) or np.any(contacts > raw): + raise ValueError('Invalid contact partition or weights') + out = base.copy() + m = contacts > 0 # No-op copies original bits; no rounding at strength zero. + out[m] = (base[m].astype(np.float64) * (raw[m] - contacts[m]) / raw[m]).astype(np.float32) + return out diff --git a/models/male-cns-lif/terminal-scope-diagnostic-v1/test_scope.py b/models/male-cns-lif/terminal-scope-diagnostic-v1/test_scope.py new file mode 100644 index 0000000..3825b3a --- /dev/null +++ b/models/male-cns-lif/terminal-scope-diagnostic-v1/test_scope.py @@ -0,0 +1,52 @@ +import unittest +import numpy as np +import pandas as pd +from scope import contact_scope, edge_ids_for_pairs, blocked_weights + + +class ScopeTests(unittest.TestCase): + def test_roi_and_side_not_guessed(self): + apl = pd.DataFrame({'source_neuron_idx': [0, 0, 1], 'target_neuron_idx': [3, 3, 4], + 'primary_post': ['CA(R)', 'CentralBrain-unspecified', 'CA(L)']}) + pn = pd.DataFrame({'source_neuron_idx': [3, 3, 3, 4, 4], 'target_neuron_idx': [5]*5, + 'primary_post': ['CA(R)', 'CA(L)', None, 'CA(R)', 'CA(L)']}) + pairs, allowed, keep = contact_scope(apl, pn, ['CA(L)', 'CA(R)']) + self.assertEqual(keep.tolist(), [True, False, False, False, True]) + self.assertEqual(pairs.blocked_contact_count.tolist(), [1, 1]) + self.assertEqual(pairs.retained_contact_count.tolist(), [2, 1]) + self.assertEqual(len(allowed), 2) + + def test_zero_identity_and_nonmutation(self): + w = np.array([.275, -3.14159, 0, -0.0], np.float32) + raw = np.array([1, 43, 10, 1], np.int64) + old = w.tobytes(), raw.tobytes() + result = blocked_weights(w, raw, np.zeros(4, np.int64)) + self.assertEqual(w.tobytes(), result.tobytes()) + self.assertEqual((w.tobytes(), raw.tobytes()), old) + + def test_partial_and_full(self): + w = np.array([2., -4., 0., 1.], np.float32) + raw = np.array([4, 4, 3, 7], np.int64) + result = blocked_weights(w, raw, np.array([1, 4, 2, 0], np.int64)) + np.testing.assert_array_equal(result, np.array([1.5, -0., 0., 1.], np.float32)) + np.testing.assert_array_equal(w, np.array([2., -4., 0., 1.], np.float32)) + + def test_invalid_partition_rejected(self): + for bad in [-1, 3]: + with self.assertRaises(ValueError): + blocked_weights(np.array([1.], np.float32), np.array([2], np.int64), np.array([bad], np.int64)) + + def test_existing_edge_only(self): + p = pd.DataFrame({'source_neuron_idx': [0, 1], 'target_neuron_idx': [2, 0]}) + ptr = np.array([0, 2, 3, 3], np.int64); dst = np.array([1, 2, 0], np.int32) + np.testing.assert_array_equal(edge_ids_for_pairs(p, ptr, dst), [1, 2]) + p.loc[1, 'target_neuron_idx'] = 2 + with self.assertRaises(ValueError): edge_ids_for_pairs(p, ptr, dst) + + def test_duplicates_rejected(self): + p = pd.DataFrame({'source_neuron_idx': [0], 'target_neuron_idx': [1]}) + with self.assertRaises(ValueError): + edge_ids_for_pairs(p, np.array([0, 2, 2], np.int64), np.array([1, 1], np.int32)) + + +if __name__ == '__main__': unittest.main() diff --git a/models/male-cns-lif/terminal-scope-diagnostic-v1/validate.py b/models/male-cns-lif/terminal-scope-diagnostic-v1/validate.py new file mode 100644 index 0000000..4ea79c6 --- /dev/null +++ b/models/male-cns-lif/terminal-scope-diagnostic-v1/validate.py @@ -0,0 +1,38 @@ +"""Additional adversarial operator tests and durable unit-test record.""" +import io +import json +from pathlib import Path +import sys +import unittest +import numpy as np + +MODEL = Path('/data/digital-drosophila/models/male-cns-lif/terminal-scope-diagnostic-v1') +EXP = Path('/data/digital-drosophila/experiments/phase4ab-terminal-scope') +sys.path.insert(0, str(MODEL)) +from scope import blocked_weights +import diagnostic + +_, _, _, _, save, digest, _, _ = diagnostic.load_context() +stream = io.StringIO() +suite = unittest.defaultTestLoader.discover(str(MODEL), pattern='test_scope.py') +result = unittest.TextTestRunner(stream=stream, verbosity=2).run(suite) +assert result.wasSuccessful(), stream.getvalue() +rng = np.random.default_rng(41337) +raw = rng.integers(1, 100000, size=10000, dtype=np.int64) +contacts = np.asarray([rng.integers(0, n+1) for n in raw], dtype=np.int64) +base = (raw.astype(np.float32)*np.float32(.275)*rng.choice([-1, 0, 1], size=len(raw))).astype(np.float32) +raw_bytes, base_bytes = raw.tobytes(), base.tobytes() +out = blocked_weights(base, raw, contacts) +assert np.isfinite(out).all() and np.all(np.abs(out) <= np.abs(base)) +assert np.all(out[contacts == raw] == 0) +assert out[contacts == 0].tobytes() == base[contacts == 0].tobytes() +assert np.all(np.sign(out[out != 0]) == np.sign(base[out != 0])) +assert raw_bytes == raw.tobytes() and base_bytes == base.tobytes() +for bad in [np.array([np.inf], np.float32), np.array([np.nan], np.float32)]: + try: blocked_weights(bad, np.array([2], np.int64), np.array([1], np.int64)) + except ValueError: pass + else: raise AssertionError('nonfinite accepted') +save(EXP/'regression/unit-tests.json', {'pass': True, 'unit_tests': result.testsRun, 'fuzz_cases': len(raw), + 'fuzz_seed': 41337, 'finite': True, 'never_sign_flip_or_amplify': True, 'input_nonmutation': True, + 'zero_identity_bitwise': True, 'unittest_log': stream.getvalue(), 'source_sha256': digest(Path(__file__))}) +print('PASS', result.testsRun, 'unit tests +', len(raw), 'randomized operator cases') diff --git a/registry/phase4ab-terminal-scope/evidence-index.json b/registry/phase4ab-terminal-scope/evidence-index.json new file mode 100644 index 0000000..63a7100 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence-index.json @@ -0,0 +1,356 @@ +[ + { + "bytes": 2388, + "copy": "evidence/INTERPRETATION.zh.md", + "sha256": "50d11647abe23cd7f259d6835e20fa46bfe0cdfe248d75ae69c6b21051b3680d", + "source": "experiments/phase4ab-terminal-scope/INTERPRETATION.zh.md" + }, + { + "bytes": 3990, + "copy": "evidence/REPORT.md", + "sha256": "8d0c3ffbc718ada68cd4590a21726dd9c221269384e6aded32ca4731b21a983f", + "source": "experiments/phase4ab-terminal-scope/REPORT.md" + }, + { + "bytes": 232, + "copy": "evidence/audit/ROI-partition.csv", + "sha256": "2bd15ebf2718fdf06bfc968617b5a5fc72ebfd2a965559942876e40d168a229e", + "source": "experiments/phase4ab-terminal-scope/audit/ROI-partition.csv" + }, + { + "bytes": 754, + "copy": "evidence/audit/condition-ranges.csv", + "sha256": "c7c27fcbcb3f5c341b3fbdc6783e46405b0ceb520d34da1cb654633d57c0dd2f", + "source": "experiments/phase4ab-terminal-scope/audit/condition-ranges.csv" + }, + { + "bytes": 274, + "copy": "evidence/audit/final-service-health.json", + "sha256": "0397c6d86eb5fd7282cbb3b06927b7627760aeedbaf176cf870257f93cd161f1", + "source": "experiments/phase4ab-terminal-scope/audit/final-service-health.json" + }, + { + "bytes": 912, + "copy": "evidence/audit/final-summary.json", + "sha256": "954e12d578df65f3e0891ad5c260b2d6a01a16de5d8f4168bcfbccda1ce6700f", + "source": "experiments/phase4ab-terminal-scope/audit/final-summary.json" + }, + { + "bytes": 587, + "copy": "evidence/audit/mechanism-interpretation.json", + "sha256": "aa39952c5e3f5842c3fcc6ee6462ff15abef78729ccda1e3d3854b7b939173ca", + "source": "experiments/phase4ab-terminal-scope/audit/mechanism-interpretation.json" + }, + { + "bytes": 384, + "copy": "evidence/audit/narrow-vs-allKC.csv", + "sha256": "00ec322b8e9c4900deaadda4eac8d604c61c88685fe3409f0dc8169c6057c055", + "source": "experiments/phase4ab-terminal-scope/audit/narrow-vs-allKC.csv" + }, + { + "bytes": 13321, + "copy": "evidence/audit/population-counts.csv", + "sha256": "7347919244fd27c2ecf7191d24302cb203769976604c4bd1c650a450c9f34604", + "source": "experiments/phase4ab-terminal-scope/audit/population-counts.csv" + }, + { + "bytes": 372, + "copy": "evidence/audit/remaining-late-KCs.csv", + "sha256": "1f6e83038ce0ebb1ac97b5c53a07fefdd0aa183d0490e6259a47070961a4fcb1", + "source": "experiments/phase4ab-terminal-scope/audit/remaining-late-KCs.csv" + }, + { + "bytes": 1361, + "copy": "evidence/audit/request-comparison.csv", + "sha256": "b9ead245b439d22ecac202db3c15e9dae9882aac8af318895039c9f676c97f63", + "source": "experiments/phase4ab-terminal-scope/audit/request-comparison.csv" + }, + { + "bytes": 176, + "copy": "evidence/audit/run-complete.json", + "sha256": "a0038972a067a029a607920bfb441519950511cad54853d5fa33067e61273b8b", + "source": "experiments/phase4ab-terminal-scope/audit/run-complete.json" + }, + { + "bytes": 616, + "copy": "evidence/audit/scope-summary.json", + "sha256": "67a8ce7fe5677fd7ab6e516f68254b4eb941a2f9f702de34027f69e91ce626de", + "source": "experiments/phase4ab-terminal-scope/audit/scope-summary.json" + }, + { + "bytes": 3810, + "copy": "evidence/audit/trials.csv", + "sha256": "f9e0fd08cc5a2fe650749b06b3ca631b1c8258f3f1e40690458dbc5668920deb", + "source": "experiments/phase4ab-terminal-scope/audit/trials.csv" + }, + { + "bytes": 17593, + "copy": "evidence/audit/watched-counts.csv", + "sha256": "4256b8a89e2d5f55ca7b0ef2a45110dd0593994e3416a1de14144908f2a941af", + "source": "experiments/phase4ab-terminal-scope/audit/watched-counts.csv" + }, + { + "bytes": 21478, + "copy": "evidence/checksums.sha256", + "sha256": "d83926a3055d9f9ca471ceba328076d7ceba883f267468750914080733e95e31", + "source": "experiments/phase4ab-terminal-scope/checksums.sha256" + }, + { + "bytes": 443, + "copy": "evidence/gpu-reference/extension.json", + "sha256": "eb664fc02ec10508dfca36b107ab8f083d682113d172f4183aed7b766d96dd45", + "source": "experiments/phase4ab-terminal-scope/gpu-reference/extension.json" + }, + { + "bytes": 35253, + "copy": "evidence/manifest.json", + "sha256": "cb3723f9dae29d4889489ae39f40293c927f4f9e532551e2c4d5214bf0a70140", + "source": "experiments/phase4ab-terminal-scope/manifest.json" + }, + { + "bytes": 237, + "copy": "evidence/performance/summary.json", + "sha256": "93a5b9bc4de3bf479916ae4b701fa7e23b570c442559e95a7aeabb7b33cd5410", + "source": "experiments/phase4ab-terminal-scope/performance/summary.json" + }, + { + "bytes": 2163, + "copy": "evidence/protocol/calibration-panel.json", + "sha256": "2b3ca78bf0946c757b7784719a6a7a06598941867df2a243a272a61337d2c889", + "source": "experiments/phase4ab-terminal-scope/protocol/calibration-panel.json" + }, + { + "bytes": 1049, + "copy": "evidence/protocol/environment.json", + "sha256": "da2d2e47d2bc3ab214203723cac30a1386b09008e07118f460039e496b0b88f4", + "source": "experiments/phase4ab-terminal-scope/protocol/environment.json" + }, + { + "bytes": 1341, + "copy": "evidence/protocol/forcing-hashes.json", + "sha256": "073a6ab1b615e9abdb06e5a6775366c3978ce7794714949de1a5f714edf98ec7", + "source": "experiments/phase4ab-terminal-scope/protocol/forcing-hashes.json" + }, + { + "bytes": 4965, + "copy": "evidence/protocol/imported-code-hashes.json", + "sha256": "4795fae3b3a320deff14f32e4722e94ade17e464b1fbf19315a1cb1769eb1927", + "source": "experiments/phase4ab-terminal-scope/protocol/imported-code-hashes.json" + }, + { + "bytes": 1429, + "copy": "evidence/protocol/input-hashes.json", + "sha256": "24cba080c7b72da8f40e406f1403646ff11c3cc34d9870991874575a486e3e27", + "source": "experiments/phase4ab-terminal-scope/protocol/input-hashes.json" + }, + { + "bytes": 1148, + "copy": "evidence/protocol/launch-addendum.json", + "sha256": "1eaf84efbcd9a7f5852b8d0feb4fd57b5f01f7211080923bb3fa63dadeaa1b7f", + "source": "experiments/phase4ab-terminal-scope/protocol/launch-addendum.json" + }, + { + "bytes": 310, + "copy": "evidence/protocol/mask-hashes.json", + "sha256": "6cee0248b8fb13a99f997c75a06542f26a1e9f5df8c8771ea997a5dc2de9d6b3", + "source": "experiments/phase4ab-terminal-scope/protocol/mask-hashes.json" + }, + { + "bytes": 1742, + "copy": "evidence/protocol/preregistered.json", + "sha256": "da8da4efa93ba69867ef732cb9d328576c5fd5b82f483803bd330f597b32e61b", + "source": "experiments/phase4ab-terminal-scope/protocol/preregistered.json" + }, + { + "bytes": 248, + "copy": "evidence/regression/0-131101-all_PN_KC_block.json", + "sha256": "0980b7d3689cf626401d13728960c77a5f32d63fe61c5fb21869b36003ca890d", + "source": "experiments/phase4ab-terminal-scope/regression/0-131101-all_PN_KC_block.json" + }, + { + "bytes": 258, + "copy": "evidence/regression/0-131101-calyx_PN_KC_contact_block.json", + "sha256": "fc2d7c3fd66b1816dd569721b1ffe16fb3d04195e0f39e54311235f996263e18", + "source": "experiments/phase4ab-terminal-scope/regression/0-131101-calyx_PN_KC_contact_block.json" + }, + { + "bytes": 401, + "copy": "evidence/regression/0-131101-frozen_reference.json", + "sha256": "f0bdabde30646bbfddef9a6bc346a14e9a268ea096bf1495ade09ccb7257441b", + "source": "experiments/phase4ab-terminal-scope/regression/0-131101-frozen_reference.json" + }, + { + "bytes": 254, + "copy": "evidence/regression/0-131101-whole_PN_output_block.json", + "sha256": "4703574c70cf854d05038a729e072ab48ec2db60746517dc0bd76a4c90984c2b", + "source": "experiments/phase4ab-terminal-scope/regression/0-131101-whole_PN_output_block.json" + }, + { + "bytes": 81, + "copy": "evidence/regression/1-131101-all_PN_KC_block.json", + "sha256": "104536398ec87802f8ded2ab37cce3311c0af39f74533e712c8f827eb42d738b", + "source": "experiments/phase4ab-terminal-scope/regression/1-131101-all_PN_KC_block.json" + }, + { + "bytes": 91, + "copy": "evidence/regression/1-131101-calyx_PN_KC_contact_block.json", + "sha256": "e7a98aa3f9eb31364a6c4f1f09df059162bc6633f527dd0eff44646a5a4e469d", + "source": "experiments/phase4ab-terminal-scope/regression/1-131101-calyx_PN_KC_contact_block.json" + }, + { + "bytes": 234, + "copy": "evidence/regression/1-131101-frozen_reference.json", + "sha256": "f1ed3d7a9a6a290295ef477bff09566a9aee08a33c98f9c62519a5f4537c472b", + "source": "experiments/phase4ab-terminal-scope/regression/1-131101-frozen_reference.json" + }, + { + "bytes": 87, + "copy": "evidence/regression/1-131101-whole_PN_output_block.json", + "sha256": "db90cddc95d283c78b6df8279c50b30a2ebcd02b173a31ddfd1f5da8ca6c85ca", + "source": "experiments/phase4ab-terminal-scope/regression/1-131101-whole_PN_output_block.json" + }, + { + "bytes": 81, + "copy": "evidence/regression/2-131101-all_PN_KC_block.json", + "sha256": "1ef62eb572ada32b947e8fbbe649dee7842cba3c9cb044b03291383d7ddc7c00", + "source": "experiments/phase4ab-terminal-scope/regression/2-131101-all_PN_KC_block.json" + }, + { + "bytes": 91, + "copy": "evidence/regression/2-131101-calyx_PN_KC_contact_block.json", + "sha256": "e3e54e240443b1abbb413b27886193fba595a28af8c7277550abc399b482ccd0", + "source": "experiments/phase4ab-terminal-scope/regression/2-131101-calyx_PN_KC_contact_block.json" + }, + { + "bytes": 234, + "copy": "evidence/regression/2-131101-frozen_reference.json", + "sha256": "663a6881b31c76bd08350fc757929233173f4af39a89f5bf1b75423ca75ee997", + "source": "experiments/phase4ab-terminal-scope/regression/2-131101-frozen_reference.json" + }, + { + "bytes": 87, + "copy": "evidence/regression/2-131101-whole_PN_output_block.json", + "sha256": "33153ce2d016e511ea2eaf2beed2af96a2b20de91524346b894f2c04379818f9", + "source": "experiments/phase4ab-terminal-scope/regression/2-131101-whole_PN_output_block.json" + }, + { + "bytes": 81, + "copy": "evidence/regression/3-131101-all_PN_KC_block.json", + "sha256": "6d4cc009cbc2debf074dab3c0c6b5a134cd3677c22f96aad3f44ed9793f0c2ea", + "source": "experiments/phase4ab-terminal-scope/regression/3-131101-all_PN_KC_block.json" + }, + { + "bytes": 91, + "copy": "evidence/regression/3-131101-calyx_PN_KC_contact_block.json", + "sha256": "91ff88c1fccfbb98164a1aad137adf0681eaa4ab458ee256060447a42736af42", + "source": "experiments/phase4ab-terminal-scope/regression/3-131101-calyx_PN_KC_contact_block.json" + }, + { + "bytes": 234, + "copy": "evidence/regression/3-131101-frozen_reference.json", + "sha256": "3688243f5e477ea991d118909263c0a0ff3fc6be8c71924e49d14d1b0f687b30", + "source": "experiments/phase4ab-terminal-scope/regression/3-131101-frozen_reference.json" + }, + { + "bytes": 87, + "copy": "evidence/regression/3-131101-whole_PN_output_block.json", + "sha256": "71ff0a2d2ff00dcaf0b73e71edcd914f997b6698f2edecc3ad1890d2b368de44", + "source": "experiments/phase4ab-terminal-scope/regression/3-131101-whole_PN_output_block.json" + }, + { + "bytes": 81, + "copy": "evidence/regression/4-131101-all_PN_KC_block.json", + "sha256": "780f101c402d02f199efd7e4da12464f3d92af5dce3ec0ac07b7db298eb4b5d5", + "source": "experiments/phase4ab-terminal-scope/regression/4-131101-all_PN_KC_block.json" + }, + { + "bytes": 91, + "copy": "evidence/regression/4-131101-calyx_PN_KC_contact_block.json", + "sha256": "eff14126327297664b469447643edf0a6715fb6f63694a32be8de5ff7121dfd7", + "source": "experiments/phase4ab-terminal-scope/regression/4-131101-calyx_PN_KC_contact_block.json" + }, + { + "bytes": 234, + "copy": "evidence/regression/4-131101-frozen_reference.json", + "sha256": "8861144ebca5477c2d26b821123223ff9493e2f3469ed647c5e3cd9798b1973e", + "source": "experiments/phase4ab-terminal-scope/regression/4-131101-frozen_reference.json" + }, + { + "bytes": 87, + "copy": "evidence/regression/4-131101-whole_PN_output_block.json", + "sha256": "78a82eb5862db7e8c98e50307112c62caa55377a42bc971e6416f74d69295cd4", + "source": "experiments/phase4ab-terminal-scope/regression/4-131101-whole_PN_output_block.json" + }, + { + "bytes": 81, + "copy": "evidence/regression/5-131101-all_PN_KC_block.json", + "sha256": "dc5a9055739131fceac3824357c103116870b00244801e60bb441c522a37aa8b", + "source": "experiments/phase4ab-terminal-scope/regression/5-131101-all_PN_KC_block.json" + }, + { + "bytes": 91, + "copy": "evidence/regression/5-131101-calyx_PN_KC_contact_block.json", + "sha256": "aa2ebf99bb706524a25d3bbc1047ee0604e37572dbe037854d8d2e9b55945166", + "source": "experiments/phase4ab-terminal-scope/regression/5-131101-calyx_PN_KC_contact_block.json" + }, + { + "bytes": 234, + "copy": "evidence/regression/5-131101-frozen_reference.json", + "sha256": "a863e8bee672db98e9fbbf6fac8a00ebb6ddf003658dfc04a47aed25e56e1c61", + "source": "experiments/phase4ab-terminal-scope/regression/5-131101-frozen_reference.json" + }, + { + "bytes": 87, + "copy": "evidence/regression/5-131101-whole_PN_output_block.json", + "sha256": "739eb5af0a8ce21470307d57e160c31fa1504c4a0725b85e9e015fd90d733a71", + "source": "experiments/phase4ab-terminal-scope/regression/5-131101-whole_PN_output_block.json" + }, + { + "bytes": 1025, + "copy": "evidence/regression/final-integrity.json", + "sha256": "22e3f76d2971117550a43438ec4c12e6f592dc6d8a55b6abae6f31c06056b408", + "source": "experiments/phase4ab-terminal-scope/regression/final-integrity.json" + }, + { + "bytes": 1229, + "copy": "evidence/regression/five-frozen-trials.json", + "sha256": "31912ae3b9dc77713c5d0ac6c3e5af94b360f8c8911e0078831a2f7e4f1cba33", + "source": "experiments/phase4ab-terminal-scope/regression/five-frozen-trials.json" + }, + { + "bytes": 76, + "copy": "evidence/regression/fixed-event-replay.json", + "sha256": "2ec053136d7744a8f158a1028d3e35a9e11424c402fb588ec977920a2c310a67", + "source": "experiments/phase4ab-terminal-scope/regression/fixed-event-replay.json" + }, + { + "bytes": 1025, + "copy": "evidence/regression/preflight.json", + "sha256": "22e3f76d2971117550a43438ec4c12e6f592dc6d8a55b6abae6f31c06056b408", + "source": "experiments/phase4ab-terminal-scope/regression/preflight.json" + }, + { + "bytes": 94, + "copy": "evidence/regression/restored.json", + "sha256": "d5e28ea53f1b2da7050ca66e4159a430fe330e9ff349ee95cd2e39c2402be99e", + "source": "experiments/phase4ab-terminal-scope/regression/restored.json" + }, + { + "bytes": 396, + "copy": "evidence/regression/run-start.json", + "sha256": "4f6287aaf4324986a8c41bdbf06b784ab1d612558fa1204d1a587108788f63f4", + "source": "experiments/phase4ab-terminal-scope/regression/run-start.json" + }, + { + "bytes": 773, + "copy": "evidence/regression/unit-tests.json", + "sha256": "7039bb7de7c47f6b2fd29ce7ab8bc86aebd0266579f5abc9518d1f4dc8a21644", + "source": "experiments/phase4ab-terminal-scope/regression/unit-tests.json" + }, + { + "bytes": 2511, + "copy": "evidence/replay/fixed-event-scope.csv", + "sha256": "ae083713cc4b4da9c54d1184889c953e0a8673dcd4c9ad466058d92a2418252e", + "source": "experiments/phase4ab-terminal-scope/replay/fixed-event-scope.csv" + } +] diff --git a/registry/phase4ab-terminal-scope/evidence/INTERPRETATION.zh.md b/registry/phase4ab-terminal-scope/evidence/INTERPRETATION.zh.md new file mode 100644 index 0000000..8fd8a54 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/INTERPRETATION.zh.md @@ -0,0 +1,36 @@ +# Phase 4AB 机制解读 + +正式状态:**COMPLETE-SCOPE-COUNTERFACTUAL / NO-DYNAMICS-CANDIDATE**。 + +这一轮区分了“PN→KC 传入位置”与“维持 PN 放电的上游反馈”。没有修复或批准新的 APL 生理模型,也没有训练。 + +| 诊断范围 | 活跃 KC(6 个旧气味) | 目标 KC 晚期 spikes | VA6 PN 晚期 spikes | +|---|---:|---:|---:| +| 原模型 | 139–172 | 60–61 | 212–214 | +| 仅明确 calyx 接触 | 1–2 | 0 | 212–214 | +| 同批 PN 的全部 KC 输出 | 1 | 0 | 212–214 | +| 同批 PN 的全部快速输出 | 0 | 0 | 0 | + +晚期窗口是 500–1,000 ms。每个气味沿用 seed 131101;总计 24 组诊断、4 次精确重复,不是 5-seed 学习验证。 + +## 能说明什么 + +仅 calyx 接触阻断后,目标 KC82312 的晚期 spikes 范围为 0,VA6 仍为 212–214。 +同时 KC 总活跃数降为 1–2,原模型为 139–172。不能把这种接近静默的结果包装成编码或记忆改善。 +即使两个局部阻断条件的事件序列相同,其电压/g 仍可能不同;逐气味比较见 narrow-vs-allKC.csv。 +宽范围 PN 快速输出阻断影响反馈路径,不等价于局部 calyx 调制;它也没有关闭 PN 胞体或 frozen graded APL 的 PN 输入。 + +## 仍不能说明什么 + +完全阻断只是工程极端对照,不是 APL 的实测释放抑制比例。没有估计 receptor、bouton、局部扩散范围或时间常数。 +未使用 held-out 气味,未检验学习、保持、反转或动作输出。不得选取这次“让活动更少”的操作作为正式脑模型。 +剩余 late KC 的 ID/type 已单独保存;其来源不能仅凭残余计数猜测。 + +## 下一步边界 + +先继续 upstream feedback / compartment-specific physiology 的证据约束,区分 calyx 信号传递与触角叶持续放电,再确定可检验的局部动力学假设。 +不能靠增加整体抑制、调 eta/threshold、扩大 plastic mask 或让 KC 全静默宣称修复。当前不进入学习、游戏或视觉。 + +相关原始研究:[Prisco et al., 2021](https://doi.org/10.7554/eLife.74172)、[Amin et al., 2020](https://doi.org/10.7554/eLife.56954)。它们支持研究局部 APL 作用,不直接验证本实验完全阻断幅度。 + +顶层验收仍为 5/10(50%);本轮推进的是机制定位与可重复诊断能力。最终完整性状态见 regression/final-integrity.json。 diff --git a/registry/phase4ab-terminal-scope/evidence/REPORT.md b/registry/phase4ab-terminal-scope/evidence/REPORT.md new file mode 100644 index 0000000..2717dee --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/REPORT.md @@ -0,0 +1,52 @@ +# Phase 4AB — calyx contact-scope diagnostic + +Status: COMPLETE-SCOPE-COUNTERFACTUAL / NO-DYNAMICS-CANDIDATE. +Diagnostic interventions only; no calibrated biological inhibition, no training, no parameter winner. + +Eligible PNs: 229/259. CA mask: 20263 edges / 337099 contacts. +Affected KCs: 3760. Mixed-ROI affected edges: 3323; retained other contacts: 28975. +Broader PN→KC control: 21882 edges / 384555 contacts. All-fast-PN-output control: 116211 edges / 1268111 contacts. + +| Odor | Condition | Active KC | KC late spikes | KC82312 late | VA6 late | +|---|---|---:|---:|---:|---:| +| ethyl (R)-(-)-3-hydroxybutanoate | frozen_reference | 160 | 114 | 60 | 213 | +| ethyl (R)-(-)-3-hydroxybutanoate | calyx_PN_KC_contact_block | 1 | 39 | 0 | 214 | +| ethyl (R)-(-)-3-hydroxybutanoate | all_PN_KC_block | 1 | 39 | 0 | 214 | +| ethyl (R)-(-)-3-hydroxybutanoate | whole_PN_output_block | 0 | 0 | 0 | 0 | +| 3-penten-2-one | frozen_reference | 172 | 118 | 60 | 213 | +| 3-penten-2-one | calyx_PN_KC_contact_block | 2 | 39 | 0 | 213 | +| 3-penten-2-one | all_PN_KC_block | 1 | 39 | 0 | 213 | +| 3-penten-2-one | whole_PN_output_block | 0 | 0 | 0 | 0 | +| (2R)-hexan-2-ol | frozen_reference | 144 | 117 | 61 | 213 | +| (2R)-hexan-2-ol | calyx_PN_KC_contact_block | 1 | 39 | 0 | 213 | +| (2R)-hexan-2-ol | all_PN_KC_block | 1 | 39 | 0 | 213 | +| (2R)-hexan-2-ol | whole_PN_output_block | 0 | 0 | 0 | 0 | +| gamma-propyl-gamma-butyrolactone | frozen_reference | 151 | 117 | 60 | 212 | +| gamma-propyl-gamma-butyrolactone | calyx_PN_KC_contact_block | 2 | 39 | 0 | 212 | +| gamma-propyl-gamma-butyrolactone | all_PN_KC_block | 1 | 40 | 0 | 212 | +| gamma-propyl-gamma-butyrolactone | whole_PN_output_block | 0 | 0 | 0 | 0 | +| 2-methyl butyl acetate | frozen_reference | 139 | 118 | 61 | 213 | +| 2-methyl butyl acetate | calyx_PN_KC_contact_block | 1 | 39 | 0 | 212 | +| 2-methyl butyl acetate | all_PN_KC_block | 1 | 39 | 0 | 212 | +| 2-methyl butyl acetate | whole_PN_output_block | 0 | 0 | 0 | 0 | +| ethyl (S)-(+)-3-hydroxybutanoate | frozen_reference | 163 | 119 | 61 | 214 | +| ethyl (S)-(+)-3-hydroxybutanoate | calyx_PN_KC_contact_block | 1 | 39 | 0 | 214 | +| ethyl (S)-(+)-3-hydroxybutanoate | all_PN_KC_block | 1 | 39 | 0 | 214 | +| ethyl (S)-(+)-3-hydroxybutanoate | whole_PN_output_block | 0 | 0 | 0 | 0 | + +Late means 500–1,000 ms; 120 ms old calibration odor input; one seed, six old odors. No held-out generalization claim. +Identical scheduled requests across conditions. Delivered request-associated output differences versus reference: 459 (summed over all comparisons). See per-trial table; this is state/refractory feedback, not a changed RNG. + +## Interpretation limits + +CA selection uses exact primary_post labels plus matched APL→PN/ROI metadata, not bouton identities or inferred receptors. Unknown ROIs are not reclassified. +Whole-PN control removes fast output, not somatic spikes or the frozen graded APL input. It is not a complete PN knockout. +Reduction/silencing is not restored information or associative memory. No condition becomes a formal model. Fixed-event replay freezes other recorded events/APL; dynamic trials allow natural recurrent feedback. +Local-inhibition motivation: [Prisco et al.](https://doi.org/10.7554/eLife.74172), [Amin et al.](https://doi.org/10.7554/eLife.56954). These sources do not establish the complete-block operator as physiological. + +## Verification + +Six original trials reproduced exactly (whole spike events, watched state and final counts/V/g). Four first-odor repeats exact. Five deterministic-v2 frozen reference trials exact. Finite state throughout. +Original 230,239 files and both Phase 4AA manifests rechecked before/after. Base CSR/count/sign, frozen LIF/APL, eligibility-v2 and 14,232 plastic mask preserved. +Timing includes diagnostic CPU/GPU observation overhead and is not a runtime speed benchmark. ComfyUI was not stopped or unloaded. +Top-level acceptance gates remain 5/10 (50%); anatomical diagnosis is not evidence of learning success. diff --git a/registry/phase4ab-terminal-scope/evidence/audit/ROI-partition.csv b/registry/phase4ab-terminal-scope/evidence/audit/ROI-partition.csv new file mode 100644 index 0000000..9ee88bb --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/audit/ROI-partition.csv @@ -0,0 +1,12 @@ +primary_post,in_scope,contacts +CA(L),False,927 +CA(L),True,152627 +CA(R),False,11 +CA(R),True,184472 +LH(L),False,15 +PLP(L),False,14 +SCL(L),False,792 +SCL(R),False,140 +SLP(R),False,57 +SMP(L),False,15 +CentralBrain-unspecified,False,46159 diff --git a/registry/phase4ab-terminal-scope/evidence/audit/condition-ranges.csv b/registry/phase4ab-terminal-scope/evidence/audit/condition-ranges.csv new file mode 100644 index 0000000..7e41361 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/audit/condition-ranges.csv @@ -0,0 +1,5 @@ +condition,whole_spikes_min,whole_spikes_max,KC_active_min,KC_active_max,KC_spikes_min,KC_spikes_max,KC_late_spikes_min,KC_late_spikes_max,KC82312_late_spikes_min,KC82312_late_spikes_max,VA6_late_spikes_min,VA6_late_spikes_max,wall_seconds_min,wall_seconds_max +frozen_reference,1102887.0,1113472.0,139.0,172.0,372.0,408.0,114.0,119.0,60.0,61.0,212.0,214.0,14.812315593997482,15.05500110599678 +calyx_PN_KC_contact_block,1096632.0,1112931.0,1.0,2.0,72.0,73.0,39.0,39.0,0.0,0.0,212.0,214.0,14.777685339009622,14.96407428199018 +all_PN_KC_block,1096632.0,1112931.0,1.0,1.0,72.0,73.0,39.0,40.0,0.0,0.0,212.0,214.0,14.785283767996589,14.836084023001604 +whole_PN_output_block,72.0,188.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,9.320402383003966,9.454139529989334 diff --git a/registry/phase4ab-terminal-scope/evidence/audit/final-service-health.json b/registry/phase4ab-terminal-scope/evidence/audit/final-service-health.json new file mode 100644 index 0000000..23449f5 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/audit/final-service-health.json @@ -0,0 +1,20 @@ +{ + "ComfyUI_queues": [ + { + "pending": 0, + "port": 8188, + "running": 0 + }, + { + "pending": 0, + "port": 8189, + "running": 0 + }, + { + "pending": 0, + "port": 8190, + "running": 0 + } + ], + "services_stopped": false +} diff --git a/registry/phase4ab-terminal-scope/evidence/audit/final-summary.json b/registry/phase4ab-terminal-scope/evidence/audit/final-summary.json new file mode 100644 index 0000000..a118c99 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/audit/final-summary.json @@ -0,0 +1,30 @@ +{ + "candidate": false, + "frozen_baseline_modified": false, + "integrity_pass": true, + "preserved_acceptance_gates": "5/10", + "reference_pass": true, + "scope": { + "APL_target_PNs": 259, + "all_PN_KC_contacts": 384555, + "all_PN_KC_edges": 21882, + "biophysical_coefficient_known": false, + "calyx_affected_KCs": 3760, + "calyx_blocked_contacts": 337099, + "calyx_mask_edges": 20263, + "calyx_other_contacts_retained_on_affected_edges": 28975, + "edges": 25582938, + "eligible_PNs": 229, + "ineligible_PNs": 30, + "mixed_CA_nonCA_edges": 3323, + "neurons": 166700, + "raw_contacts": 124177617, + "same_bouton_confirmed": false, + "unknown_ROI_contacts_in_original_PN_KC": 46159, + "unknown_contacts_relabelled": 0, + "whole_PN_contacts": 1268111, + "whole_PN_edges": 116211 + }, + "status": "COMPLETE-SCOPE-COUNTERFACTUAL / NO-DYNAMICS-CANDIDATE", + "training": false +} diff --git a/registry/phase4ab-terminal-scope/evidence/audit/mechanism-interpretation.json b/registry/phase4ab-terminal-scope/evidence/audit/mechanism-interpretation.json new file mode 100644 index 0000000..c7ba69e --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/audit/mechanism-interpretation.json @@ -0,0 +1,19 @@ +{ + "CA_block_ALLN_watched_late_rate_range_hz": [ + 454.0, + 456.0 + ], + "CA_block_active_KC_range": [ + 1, + 2 + ], + "CA_vs_allKC_spike_sequence_exact_for_all_odors": false, + "all_six_CA_block_VA6_late_persists": true, + "all_six_CA_block_targetKC_late_zero": true, + "all_six_broad_block_KC_and_VA6_late_zero": true, + "new_candidate": false, + "not_a_memory_or_separability_success": true, + "not_a_physiological_APL_gain_estimate": true, + "posthoc_summary_not_new_experiment": true, + "source_sha256": "33ba5f323e9ed3343f43a8d64fb7e862c8a4f1118b9b441f4745e26cc14303a8" +} diff --git a/registry/phase4ab-terminal-scope/evidence/audit/narrow-vs-allKC.csv b/registry/phase4ab-terminal-scope/evidence/audit/narrow-vs-allKC.csv new file mode 100644 index 0000000..0cbbfa5 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/audit/narrow-vs-allKC.csv @@ -0,0 +1,7 @@ +odor_index,terminal_vs_allKC_events_exact,counts_exact,max_V_difference,max_g_difference +0,True,True,59.083824157714844,66.9503173828125 +1,False,False,232.58389282226562,346.2290802001953 +2,True,True,59.49408721923828,60.36189270019531 +3,False,False,173.94474029541016,486.3127136230469 +4,True,True,59.40711975097656,59.434303283691406 +5,True,True,59.37791442871094,58.91309356689453 diff --git a/registry/phase4ab-terminal-scope/evidence/audit/population-counts.csv b/registry/phase4ab-terminal-scope/evidence/audit/population-counts.csv new file mode 100644 index 0000000..c735c43 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/audit/population-counts.csv @@ -0,0 +1,241 @@ +trial,population,neurons,active,spikes,late_spikes +0-131101-frozen_reference,ALLN,420,388,111462,56532 +0-131101-frozen_reference,ALPN,686,573,126794,64388 +0-131101-frozen_reference,APL,2,2,898,454 +0-131101-frozen_reference,DAN,340,133,10825,5631 +0-131101-frozen_reference,DPM,2,2,738,376 +0-131101-frozen_reference,KC,4064,160,384,114 +0-131101-frozen_reference,MBON,97,66,10545,5405 +0-131101-frozen_reference,PN_olfactory_annotation,2639,54,3217,1665 +0-131101-frozen_reference,dopamine_metadata_role_unknown,52,48,5907,3127 +0-131101-frozen_reference,other_annotation,158398,12975,840820,429844 +0-131101-calyx_PN_KC_contact_block,ALLN,420,388,111462,56539 +0-131101-calyx_PN_KC_contact_block,ALPN,686,573,126817,64399 +0-131101-calyx_PN_KC_contact_block,APL,2,2,897,455 +0-131101-calyx_PN_KC_contact_block,DAN,340,134,10738,5648 +0-131101-calyx_PN_KC_contact_block,DPM,2,2,718,376 +0-131101-calyx_PN_KC_contact_block,KC,4064,1,72,39 +0-131101-calyx_PN_KC_contact_block,MBON,97,62,10335,5403 +0-131101-calyx_PN_KC_contact_block,PN_olfactory_annotation,2639,53,3214,1660 +0-131101-calyx_PN_KC_contact_block,dopamine_metadata_role_unknown,52,50,5937,3092 +0-131101-calyx_PN_KC_contact_block,other_annotation,158398,13391,838005,431222 +0-131101-all_PN_KC_block,ALLN,420,388,111462,56539 +0-131101-all_PN_KC_block,ALPN,686,573,126817,64399 +0-131101-all_PN_KC_block,APL,2,2,897,455 +0-131101-all_PN_KC_block,DAN,340,134,10738,5648 +0-131101-all_PN_KC_block,DPM,2,2,718,376 +0-131101-all_PN_KC_block,KC,4064,1,72,39 +0-131101-all_PN_KC_block,MBON,97,62,10335,5403 +0-131101-all_PN_KC_block,PN_olfactory_annotation,2639,53,3214,1660 +0-131101-all_PN_KC_block,dopamine_metadata_role_unknown,52,50,5937,3092 +0-131101-all_PN_KC_block,other_annotation,158398,13391,838005,431222 +0-131101-whole_PN_output_block,ALLN,420,0,0,0 +0-131101-whole_PN_output_block,ALPN,686,41,126,0 +0-131101-whole_PN_output_block,APL,2,0,0,0 +0-131101-whole_PN_output_block,DAN,340,0,0,0 +0-131101-whole_PN_output_block,DPM,2,0,0,0 +0-131101-whole_PN_output_block,KC,4064,0,0,0 +0-131101-whole_PN_output_block,MBON,97,0,0,0 +0-131101-whole_PN_output_block,PN_olfactory_annotation,2639,0,0,0 +0-131101-whole_PN_output_block,dopamine_metadata_role_unknown,52,0,0,0 +0-131101-whole_PN_output_block,other_annotation,158398,0,0,0 +1-131101-frozen_reference,ALLN,420,386,111149,56510 +1-131101-frozen_reference,ALPN,686,575,126477,64377 +1-131101-frozen_reference,APL,2,2,896,454 +1-131101-frozen_reference,DAN,340,135,10828,5658 +1-131101-frozen_reference,DPM,2,2,738,376 +1-131101-frozen_reference,KC,4064,172,408,118 +1-131101-frozen_reference,MBON,97,64,10551,5408 +1-131101-frozen_reference,PN_olfactory_annotation,2639,53,3198,1661 +1-131101-frozen_reference,dopamine_metadata_role_unknown,52,48,5836,3066 +1-131101-frozen_reference,other_annotation,158398,12679,835147,430753 +1-131101-calyx_PN_KC_contact_block,ALLN,420,386,111166,56517 +1-131101-calyx_PN_KC_contact_block,ALPN,686,575,126464,64367 +1-131101-calyx_PN_KC_contact_block,APL,2,2,894,454 +1-131101-calyx_PN_KC_contact_block,DAN,340,135,10685,5656 +1-131101-calyx_PN_KC_contact_block,DPM,2,2,715,376 +1-131101-calyx_PN_KC_contact_block,KC,4064,2,73,39 +1-131101-calyx_PN_KC_contact_block,MBON,97,62,10304,5398 +1-131101-calyx_PN_KC_contact_block,PN_olfactory_annotation,2639,53,3199,1662 +1-131101-calyx_PN_KC_contact_block,dopamine_metadata_role_unknown,52,50,5988,3120 +1-131101-calyx_PN_KC_contact_block,other_annotation,158398,13097,832489,430551 +1-131101-all_PN_KC_block,ALLN,420,386,111184,56531 +1-131101-all_PN_KC_block,ALPN,686,575,126471,64363 +1-131101-all_PN_KC_block,APL,2,2,894,454 +1-131101-all_PN_KC_block,DAN,340,135,10680,5653 +1-131101-all_PN_KC_block,DPM,2,2,715,376 +1-131101-all_PN_KC_block,KC,4064,1,72,39 +1-131101-all_PN_KC_block,MBON,97,62,10322,5406 +1-131101-all_PN_KC_block,PN_olfactory_annotation,2639,53,3194,1655 +1-131101-all_PN_KC_block,dopamine_metadata_role_unknown,52,50,5942,3110 +1-131101-all_PN_KC_block,other_annotation,158398,13007,836163,431478 +1-131101-whole_PN_output_block,ALLN,420,0,0,0 +1-131101-whole_PN_output_block,ALPN,686,39,161,0 +1-131101-whole_PN_output_block,APL,2,0,0,0 +1-131101-whole_PN_output_block,DAN,340,0,0,0 +1-131101-whole_PN_output_block,DPM,2,0,0,0 +1-131101-whole_PN_output_block,KC,4064,0,0,0 +1-131101-whole_PN_output_block,MBON,97,0,0,0 +1-131101-whole_PN_output_block,PN_olfactory_annotation,2639,0,0,0 +1-131101-whole_PN_output_block,dopamine_metadata_role_unknown,52,0,0,0 +1-131101-whole_PN_output_block,other_annotation,158398,0,0,0 +2-131101-frozen_reference,ALLN,420,386,111332,56527 +2-131101-frozen_reference,ALPN,686,577,126658,64397 +2-131101-frozen_reference,APL,2,2,899,454 +2-131101-frozen_reference,DAN,340,133,10885,5658 +2-131101-frozen_reference,DPM,2,2,738,376 +2-131101-frozen_reference,KC,4064,144,381,117 +2-131101-frozen_reference,MBON,97,60,10553,5414 +2-131101-frozen_reference,PN_olfactory_annotation,2639,53,3208,1661 +2-131101-frozen_reference,dopamine_metadata_role_unknown,52,50,5923,3083 +2-131101-frozen_reference,other_annotation,158398,13110,840199,429145 +2-131101-calyx_PN_KC_contact_block,ALLN,420,386,111307,56511 +2-131101-calyx_PN_KC_contact_block,ALPN,686,577,126662,64387 +2-131101-calyx_PN_KC_contact_block,APL,2,2,898,455 +2-131101-calyx_PN_KC_contact_block,DAN,340,135,10680,5636 +2-131101-calyx_PN_KC_contact_block,DPM,2,2,719,376 +2-131101-calyx_PN_KC_contact_block,KC,4064,1,73,39 +2-131101-calyx_PN_KC_contact_block,MBON,97,62,10367,5405 +2-131101-calyx_PN_KC_contact_block,PN_olfactory_annotation,2639,53,3207,1662 +2-131101-calyx_PN_KC_contact_block,dopamine_metadata_role_unknown,52,50,5946,3109 +2-131101-calyx_PN_KC_contact_block,other_annotation,158398,13123,838495,430503 +2-131101-all_PN_KC_block,ALLN,420,386,111307,56511 +2-131101-all_PN_KC_block,ALPN,686,577,126662,64387 +2-131101-all_PN_KC_block,APL,2,2,898,455 +2-131101-all_PN_KC_block,DAN,340,135,10680,5636 +2-131101-all_PN_KC_block,DPM,2,2,719,376 +2-131101-all_PN_KC_block,KC,4064,1,73,39 +2-131101-all_PN_KC_block,MBON,97,62,10367,5405 +2-131101-all_PN_KC_block,PN_olfactory_annotation,2639,53,3207,1662 +2-131101-all_PN_KC_block,dopamine_metadata_role_unknown,52,50,5946,3109 +2-131101-all_PN_KC_block,other_annotation,158398,13123,838495,430503 +2-131101-whole_PN_output_block,ALLN,420,0,0,0 +2-131101-whole_PN_output_block,ALPN,686,28,111,0 +2-131101-whole_PN_output_block,APL,2,0,0,0 +2-131101-whole_PN_output_block,DAN,340,0,0,0 +2-131101-whole_PN_output_block,DPM,2,0,0,0 +2-131101-whole_PN_output_block,KC,4064,0,0,0 +2-131101-whole_PN_output_block,MBON,97,0,0,0 +2-131101-whole_PN_output_block,PN_olfactory_annotation,2639,0,0,0 +2-131101-whole_PN_output_block,dopamine_metadata_role_unknown,52,0,0,0 +2-131101-whole_PN_output_block,other_annotation,158398,0,0,0 +3-131101-frozen_reference,ALLN,420,386,110642,56491 +3-131101-frozen_reference,ALPN,686,575,125876,64358 +3-131101-frozen_reference,APL,2,2,892,454 +3-131101-frozen_reference,DAN,340,134,10781,5643 +3-131101-frozen_reference,DPM,2,2,735,377 +3-131101-frozen_reference,KC,4064,151,385,117 +3-131101-frozen_reference,MBON,97,61,10528,5447 +3-131101-frozen_reference,PN_olfactory_annotation,2639,53,3188,1663 +3-131101-frozen_reference,dopamine_metadata_role_unknown,52,50,5864,3088 +3-131101-frozen_reference,other_annotation,158398,12902,836062,432377 +3-131101-calyx_PN_KC_contact_block,ALLN,420,386,110635,56494 +3-131101-calyx_PN_KC_contact_block,ALPN,686,575,125840,64349 +3-131101-calyx_PN_KC_contact_block,APL,2,2,891,455 +3-131101-calyx_PN_KC_contact_block,DAN,340,134,10664,5658 +3-131101-calyx_PN_KC_contact_block,DPM,2,2,715,376 +3-131101-calyx_PN_KC_contact_block,KC,4064,2,73,39 +3-131101-calyx_PN_KC_contact_block,MBON,97,62,10285,5411 +3-131101-calyx_PN_KC_contact_block,PN_olfactory_annotation,2639,53,3182,1656 +3-131101-calyx_PN_KC_contact_block,dopamine_metadata_role_unknown,52,50,5872,3073 +3-131101-calyx_PN_KC_contact_block,other_annotation,158398,13086,830844,431059 +3-131101-all_PN_KC_block,ALLN,420,386,110646,56489 +3-131101-all_PN_KC_block,ALPN,686,575,125875,64350 +3-131101-all_PN_KC_block,APL,2,2,892,456 +3-131101-all_PN_KC_block,DAN,340,135,10625,5620 +3-131101-all_PN_KC_block,DPM,2,2,715,376 +3-131101-all_PN_KC_block,KC,4064,1,73,40 +3-131101-all_PN_KC_block,MBON,97,62,10317,5426 +3-131101-all_PN_KC_block,PN_olfactory_annotation,2639,53,3187,1664 +3-131101-all_PN_KC_block,dopamine_metadata_role_unknown,52,50,5882,3091 +3-131101-all_PN_KC_block,other_annotation,158398,13020,836110,434403 +3-131101-whole_PN_output_block,ALLN,420,0,0,0 +3-131101-whole_PN_output_block,ALPN,686,34,91,0 +3-131101-whole_PN_output_block,APL,2,0,0,0 +3-131101-whole_PN_output_block,DAN,340,0,0,0 +3-131101-whole_PN_output_block,DPM,2,0,0,0 +3-131101-whole_PN_output_block,KC,4064,0,0,0 +3-131101-whole_PN_output_block,MBON,97,0,0,0 +3-131101-whole_PN_output_block,PN_olfactory_annotation,2639,0,0,0 +3-131101-whole_PN_output_block,dopamine_metadata_role_unknown,52,0,0,0 +3-131101-whole_PN_output_block,other_annotation,158398,0,0,0 +4-131101-frozen_reference,ALLN,420,386,110608,56506 +4-131101-frozen_reference,ALPN,686,572,125803,64341 +4-131101-frozen_reference,APL,2,2,893,455 +4-131101-frozen_reference,DAN,340,137,10770,5637 +4-131101-frozen_reference,DPM,2,2,733,377 +4-131101-frozen_reference,KC,4064,139,372,118 +4-131101-frozen_reference,MBON,97,62,10511,5436 +4-131101-frozen_reference,PN_olfactory_annotation,2639,53,3173,1651 +4-131101-frozen_reference,dopamine_metadata_role_unknown,52,50,5830,3100 +4-131101-frozen_reference,other_annotation,158398,12636,834194,433020 +4-131101-calyx_PN_KC_contact_block,ALLN,420,386,110587,56496 +4-131101-calyx_PN_KC_contact_block,ALPN,686,572,125776,64340 +4-131101-calyx_PN_KC_contact_block,APL,2,2,891,454 +4-131101-calyx_PN_KC_contact_block,DAN,340,137,10650,5651 +4-131101-calyx_PN_KC_contact_block,DPM,2,2,715,377 +4-131101-calyx_PN_KC_contact_block,KC,4064,1,72,39 +4-131101-calyx_PN_KC_contact_block,MBON,97,62,10286,5421 +4-131101-calyx_PN_KC_contact_block,PN_olfactory_annotation,2639,53,3170,1650 +4-131101-calyx_PN_KC_contact_block,dopamine_metadata_role_unknown,52,51,5851,3113 +4-131101-calyx_PN_KC_contact_block,other_annotation,158398,12800,828634,430658 +4-131101-all_PN_KC_block,ALLN,420,386,110587,56496 +4-131101-all_PN_KC_block,ALPN,686,572,125776,64340 +4-131101-all_PN_KC_block,APL,2,2,891,454 +4-131101-all_PN_KC_block,DAN,340,137,10650,5651 +4-131101-all_PN_KC_block,DPM,2,2,715,377 +4-131101-all_PN_KC_block,KC,4064,1,72,39 +4-131101-all_PN_KC_block,MBON,97,62,10286,5421 +4-131101-all_PN_KC_block,PN_olfactory_annotation,2639,53,3170,1650 +4-131101-all_PN_KC_block,dopamine_metadata_role_unknown,52,51,5851,3113 +4-131101-all_PN_KC_block,other_annotation,158398,12800,828634,430658 +4-131101-whole_PN_output_block,ALLN,420,0,0,0 +4-131101-whole_PN_output_block,ALPN,686,25,72,0 +4-131101-whole_PN_output_block,APL,2,0,0,0 +4-131101-whole_PN_output_block,DAN,340,0,0,0 +4-131101-whole_PN_output_block,DPM,2,0,0,0 +4-131101-whole_PN_output_block,KC,4064,0,0,0 +4-131101-whole_PN_output_block,MBON,97,0,0,0 +4-131101-whole_PN_output_block,PN_olfactory_annotation,2639,0,0,0 +4-131101-whole_PN_output_block,dopamine_metadata_role_unknown,52,0,0,0 +4-131101-whole_PN_output_block,other_annotation,158398,0,0,0 +5-131101-frozen_reference,ALLN,420,389,111255,56552 +5-131101-frozen_reference,ALPN,686,576,126597,64420 +5-131101-frozen_reference,APL,2,2,898,455 +5-131101-frozen_reference,DAN,340,134,10834,5653 +5-131101-frozen_reference,DPM,2,2,737,377 +5-131101-frozen_reference,KC,4064,163,395,119 +5-131101-frozen_reference,MBON,97,63,10588,5428 +5-131101-frozen_reference,PN_olfactory_annotation,2639,53,3211,1657 +5-131101-frozen_reference,dopamine_metadata_role_unknown,52,51,5895,3093 +5-131101-frozen_reference,other_annotation,158398,13146,843062,432870 +5-131101-calyx_PN_KC_contact_block,ALLN,420,389,111261,56537 +5-131101-calyx_PN_KC_contact_block,ALPN,686,576,126621,64416 +5-131101-calyx_PN_KC_contact_block,APL,2,2,896,455 +5-131101-calyx_PN_KC_contact_block,DAN,340,134,10718,5654 +5-131101-calyx_PN_KC_contact_block,DPM,2,2,718,376 +5-131101-calyx_PN_KC_contact_block,KC,4064,1,72,39 +5-131101-calyx_PN_KC_contact_block,MBON,97,62,10352,5414 +5-131101-calyx_PN_KC_contact_block,PN_olfactory_annotation,2639,53,3212,1661 +5-131101-calyx_PN_KC_contact_block,dopamine_metadata_role_unknown,52,51,5929,3094 +5-131101-calyx_PN_KC_contact_block,other_annotation,158398,13624,843152,429784 +5-131101-all_PN_KC_block,ALLN,420,389,111261,56537 +5-131101-all_PN_KC_block,ALPN,686,576,126621,64416 +5-131101-all_PN_KC_block,APL,2,2,896,455 +5-131101-all_PN_KC_block,DAN,340,134,10718,5654 +5-131101-all_PN_KC_block,DPM,2,2,718,376 +5-131101-all_PN_KC_block,KC,4064,1,72,39 +5-131101-all_PN_KC_block,MBON,97,62,10352,5414 +5-131101-all_PN_KC_block,PN_olfactory_annotation,2639,53,3212,1661 +5-131101-all_PN_KC_block,dopamine_metadata_role_unknown,52,51,5929,3094 +5-131101-all_PN_KC_block,other_annotation,158398,13624,843152,429784 +5-131101-whole_PN_output_block,ALLN,420,0,0,0 +5-131101-whole_PN_output_block,ALPN,686,40,188,0 +5-131101-whole_PN_output_block,APL,2,0,0,0 +5-131101-whole_PN_output_block,DAN,340,0,0,0 +5-131101-whole_PN_output_block,DPM,2,0,0,0 +5-131101-whole_PN_output_block,KC,4064,0,0,0 +5-131101-whole_PN_output_block,MBON,97,0,0,0 +5-131101-whole_PN_output_block,PN_olfactory_annotation,2639,0,0,0 +5-131101-whole_PN_output_block,dopamine_metadata_role_unknown,52,0,0,0 +5-131101-whole_PN_output_block,other_annotation,158398,0,0,0 diff --git a/registry/phase4ab-terminal-scope/evidence/audit/remaining-late-KCs.csv b/registry/phase4ab-terminal-scope/evidence/audit/remaining-late-KCs.csv new file mode 100644 index 0000000..cd73821 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/audit/remaining-late-KCs.csv @@ -0,0 +1,7 @@ +odor_index,neuron_idx,body_id,type,late_spikes,first_late_spike_ms,last_spike_ms,source_identity_not_inferred_from_this_count +0,78836,104513,KCg-d,39,502.6,999.4,True +1,78836,104513,KCg-d,39,500.5,992.5,True +2,78836,104513,KCg-d,39,509.9,996.4,True +3,78836,104513,KCg-d,39,500.4,995.8,True +4,78836,104513,KCg-d,39,508.6,998.5,True +5,78836,104513,KCg-d,39,506.1,994.9,True diff --git a/registry/phase4ab-terminal-scope/evidence/audit/request-comparison.csv b/registry/phase4ab-terminal-scope/evidence/audit/request-comparison.csv new file mode 100644 index 0000000..e19c4bb --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/audit/request-comparison.csv @@ -0,0 +1,25 @@ +trial,scheduled,identical_request_keys,accepted,blocked,preexisting,status_differences_vs_reference,actual_output_differences_vs_reference +0-131101-frozen_reference,131,True,75,54,2,0,0 +0-131101-calyx_PN_KC_contact_block,131,True,73,53,5,7,5 +0-131101-all_PN_KC_block,131,True,73,53,5,7,5 +0-131101-whole_PN_output_block,131,True,126,5,0,55,53 +1-131101-frozen_reference,186,True,77,102,7,0,0 +1-131101-calyx_PN_KC_contact_block,186,True,78,101,7,15,11 +1-131101-all_PN_KC_block,186,True,82,98,6,12,8 +1-131101-whole_PN_output_block,186,True,161,25,0,88,83 +2-131101-frozen_reference,122,True,54,66,2,0,0 +2-131101-calyx_PN_KC_contact_block,122,True,52,70,0,8,6 +2-131101-all_PN_KC_block,122,True,52,70,0,8,6 +2-131101-whole_PN_output_block,122,True,111,11,0,59,57 +3-131101-frozen_reference,95,True,41,54,0,0,0 +3-131101-calyx_PN_KC_contact_block,95,True,41,54,0,2,2 +3-131101-all_PN_KC_block,95,True,41,54,0,2,2 +3-131101-whole_PN_output_block,95,True,91,4,0,52,52 +4-131101-frozen_reference,78,True,31,44,3,0,0 +4-131101-calyx_PN_KC_contact_block,78,True,30,44,4,8,8 +4-131101-all_PN_KC_block,78,True,30,44,4,8,8 +4-131101-whole_PN_output_block,78,True,72,6,0,43,40 +5-131101-frozen_reference,215,True,92,118,5,0,0 +5-131101-calyx_PN_KC_contact_block,215,True,90,119,6,13,7 +5-131101-all_PN_KC_block,215,True,90,119,6,13,7 +5-131101-whole_PN_output_block,215,True,188,27,0,104,99 diff --git a/registry/phase4ab-terminal-scope/evidence/audit/run-complete.json b/registry/phase4ab-terminal-scope/evidence/audit/run-complete.json new file mode 100644 index 0000000..ceafccd --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/audit/run-complete.json @@ -0,0 +1,9 @@ +{ + "all_finite": true, + "candidate": false, + "exact_repeat_trials": 4, + "frozen_reference_trials": 5, + "old_trial_reproductions": 6, + "training": false, + "trials": 24 +} diff --git a/registry/phase4ab-terminal-scope/evidence/audit/scope-summary.json b/registry/phase4ab-terminal-scope/evidence/audit/scope-summary.json new file mode 100644 index 0000000..af34cf9 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/audit/scope-summary.json @@ -0,0 +1,21 @@ +{ + "APL_target_PNs": 259, + "all_PN_KC_contacts": 384555, + "all_PN_KC_edges": 21882, + "biophysical_coefficient_known": false, + "calyx_affected_KCs": 3760, + "calyx_blocked_contacts": 337099, + "calyx_mask_edges": 20263, + "calyx_other_contacts_retained_on_affected_edges": 28975, + "edges": 25582938, + "eligible_PNs": 229, + "ineligible_PNs": 30, + "mixed_CA_nonCA_edges": 3323, + "neurons": 166700, + "raw_contacts": 124177617, + "same_bouton_confirmed": false, + "unknown_ROI_contacts_in_original_PN_KC": 46159, + "unknown_contacts_relabelled": 0, + "whole_PN_contacts": 1268111, + "whole_PN_edges": 116211 +} diff --git a/registry/phase4ab-terminal-scope/evidence/audit/trials.csv b/registry/phase4ab-terminal-scope/evidence/audit/trials.csv new file mode 100644 index 0000000..52f2eee --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/audit/trials.csv @@ -0,0 +1,25 @@ +trial,odor_index,odor_name,seed,condition,whole_spikes,KC_active,KC_active_fraction,KC_spikes,KC_late_spikes,KC82312_late_spikes,VA6_late_spikes,finite,wall_seconds,biological_ms +0-131101-frozen_reference,0,ethyl (R)-(-)-3-hydroxybutanoate,131101,frozen_reference,1111590,160,0.03937007874015748,384,114,60,213,True,15.05500110599678,1000 +0-131101-calyx_PN_KC_contact_block,0,ethyl (R)-(-)-3-hydroxybutanoate,131101,calyx_PN_KC_contact_block,1108195,1,0.00024606299212598425,72,39,0,214,True,14.781203242993797,1000 +0-131101-all_PN_KC_block,0,ethyl (R)-(-)-3-hydroxybutanoate,131101,all_PN_KC_block,1108195,1,0.00024606299212598425,72,39,0,214,True,14.814815709993127,1000 +0-131101-whole_PN_output_block,0,ethyl (R)-(-)-3-hydroxybutanoate,131101,whole_PN_output_block,126,0,0.0,0,0,0,0,True,9.408489347988507,1000 +1-131101-frozen_reference,1,3-penten-2-one,131101,frozen_reference,1105228,172,0.04232283464566929,408,118,60,213,True,14.849270171995158,1000 +1-131101-calyx_PN_KC_contact_block,1,3-penten-2-one,131101,calyx_PN_KC_contact_block,1101977,2,0.0004921259842519685,73,39,0,213,True,14.829743235008209,1000 +1-131101-all_PN_KC_block,1,3-penten-2-one,131101,all_PN_KC_block,1105637,1,0.00024606299212598425,72,39,0,213,True,14.836084023001604,1000 +1-131101-whole_PN_output_block,1,3-penten-2-one,131101,whole_PN_output_block,161,0,0.0,0,0,0,0,True,9.406520318007097,1000 +2-131101-frozen_reference,2,(2R)-hexan-2-ol,131101,frozen_reference,1110776,144,0.03543307086614173,381,117,61,213,True,14.826602405999438,1000 +2-131101-calyx_PN_KC_contact_block,2,(2R)-hexan-2-ol,131101,calyx_PN_KC_contact_block,1108354,1,0.00024606299212598425,73,39,0,213,True,14.964074281990179,1000 +2-131101-all_PN_KC_block,2,(2R)-hexan-2-ol,131101,all_PN_KC_block,1108354,1,0.00024606299212598425,73,39,0,213,True,14.831739582994487,1000 +2-131101-whole_PN_output_block,2,(2R)-hexan-2-ol,131101,whole_PN_output_block,111,0,0.0,0,0,0,0,True,9.401394432992674,1000 +3-131101-frozen_reference,3,gamma-propyl-gamma-butyrolactone,131101,frozen_reference,1104953,151,0.037155511811023625,385,117,60,212,True,14.826186497011804,1000 +3-131101-calyx_PN_KC_contact_block,3,gamma-propyl-gamma-butyrolactone,131101,calyx_PN_KC_contact_block,1099001,2,0.0004921259842519685,73,39,0,212,True,14.787222463011858,1000 +3-131101-all_PN_KC_block,3,gamma-propyl-gamma-butyrolactone,131101,all_PN_KC_block,1104322,1,0.00024606299212598425,73,40,0,212,True,14.788134792994242,1000 +3-131101-whole_PN_output_block,3,gamma-propyl-gamma-butyrolactone,131101,whole_PN_output_block,91,0,0.0,0,0,0,0,True,9.370064136994188,1000 +4-131101-frozen_reference,4,2-methyl butyl acetate,131101,frozen_reference,1102887,139,0.03420275590551181,372,118,61,213,True,14.812315593997482,1000 +4-131101-calyx_PN_KC_contact_block,4,2-methyl butyl acetate,131101,calyx_PN_KC_contact_block,1096632,1,0.00024606299212598425,72,39,0,212,True,14.777685339009622,1000 +4-131101-all_PN_KC_block,4,2-methyl butyl acetate,131101,all_PN_KC_block,1096632,1,0.00024606299212598425,72,39,0,212,True,14.785283767996589,1000 +4-131101-whole_PN_output_block,4,2-methyl butyl acetate,131101,whole_PN_output_block,72,0,0.0,0,0,0,0,True,9.320402383003966,1000 +5-131101-frozen_reference,5,ethyl (S)-(+)-3-hydroxybutanoate,131101,frozen_reference,1113472,163,0.04010826771653543,395,119,61,214,True,14.947139675990911,1000 +5-131101-calyx_PN_KC_contact_block,5,ethyl (S)-(+)-3-hydroxybutanoate,131101,calyx_PN_KC_contact_block,1112931,1,0.00024606299212598425,72,39,0,214,True,14.830266532007954,1000 +5-131101-all_PN_KC_block,5,ethyl (S)-(+)-3-hydroxybutanoate,131101,all_PN_KC_block,1112931,1,0.00024606299212598425,72,39,0,214,True,14.83051910600625,1000 +5-131101-whole_PN_output_block,5,ethyl (S)-(+)-3-hydroxybutanoate,131101,whole_PN_output_block,188,0,0.0,0,0,0,0,True,9.454139529989334,1000 diff --git a/registry/phase4ab-terminal-scope/evidence/audit/watched-counts.csv b/registry/phase4ab-terminal-scope/evidence/audit/watched-counts.csv new file mode 100644 index 0000000..d837308 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/audit/watched-counts.csv @@ -0,0 +1,265 @@ +trial,neuron_idx,body_id,type,population,spikes,late_spikes,late_rate_hz +0-131101-frozen_reference,30,10039,VL2a_adPN,ALPN,371,187,374.0 +0-131101-frozen_reference,179,10198,VA7l_adPN,ALPN,323,164,328.0 +0-131101-frozen_reference,484,10522,VL2p_adPN,ALPN,384,194,388.0 +0-131101-frozen_reference,1197,11289,lLN1_bc,ALLN,452,228,456.0 +0-131101-frozen_reference,1381,11478,lLN1_bc,ALLN,452,228,456.0 +0-131101-frozen_reference,1511,11620,lLN1_bc,ALLN,452,228,456.0 +0-131101-frozen_reference,1644,11761,VP1d+VP4_l2PN1,ALPN,431,218,436.0 +0-131101-frozen_reference,6065,16610,VA7m_lPN,ALPN,324,164,328.0 +0-131101-frozen_reference,6842,17484,DC2_adPN,ALPN,340,171,342.0 +0-131101-frozen_reference,82312,109321,KC,KC,120,60,120.0 +0-131101-frozen_reference,133666,527577,VA6_adPN,ALPN,423,213,426.0 +0-131101-calyx_PN_KC_contact_block,30,10039,VL2a_adPN,ALPN,371,187,374.0 +0-131101-calyx_PN_KC_contact_block,179,10198,VA7l_adPN,ALPN,323,164,328.0 +0-131101-calyx_PN_KC_contact_block,484,10522,VL2p_adPN,ALPN,384,193,386.0 +0-131101-calyx_PN_KC_contact_block,1197,11289,lLN1_bc,ALLN,452,228,456.0 +0-131101-calyx_PN_KC_contact_block,1381,11478,lLN1_bc,ALLN,452,228,456.0 +0-131101-calyx_PN_KC_contact_block,1511,11620,lLN1_bc,ALLN,452,228,456.0 +0-131101-calyx_PN_KC_contact_block,1644,11761,VP1d+VP4_l2PN1,ALPN,431,218,436.0 +0-131101-calyx_PN_KC_contact_block,6065,16610,VA7m_lPN,ALPN,324,164,328.0 +0-131101-calyx_PN_KC_contact_block,6842,17484,DC2_adPN,ALPN,339,171,342.0 +0-131101-calyx_PN_KC_contact_block,82312,109321,KC,KC,0,0,0.0 +0-131101-calyx_PN_KC_contact_block,133666,527577,VA6_adPN,ALPN,423,214,428.0 +0-131101-all_PN_KC_block,30,10039,VL2a_adPN,ALPN,371,187,374.0 +0-131101-all_PN_KC_block,179,10198,VA7l_adPN,ALPN,323,164,328.0 +0-131101-all_PN_KC_block,484,10522,VL2p_adPN,ALPN,384,193,386.0 +0-131101-all_PN_KC_block,1197,11289,lLN1_bc,ALLN,452,228,456.0 +0-131101-all_PN_KC_block,1381,11478,lLN1_bc,ALLN,452,228,456.0 +0-131101-all_PN_KC_block,1511,11620,lLN1_bc,ALLN,452,228,456.0 +0-131101-all_PN_KC_block,1644,11761,VP1d+VP4_l2PN1,ALPN,431,218,436.0 +0-131101-all_PN_KC_block,6065,16610,VA7m_lPN,ALPN,324,164,328.0 +0-131101-all_PN_KC_block,6842,17484,DC2_adPN,ALPN,339,171,342.0 +0-131101-all_PN_KC_block,82312,109321,KC,KC,0,0,0.0 +0-131101-all_PN_KC_block,133666,527577,VA6_adPN,ALPN,423,214,428.0 +0-131101-whole_PN_output_block,30,10039,VL2a_adPN,ALPN,0,0,0.0 +0-131101-whole_PN_output_block,179,10198,VA7l_adPN,ALPN,0,0,0.0 +0-131101-whole_PN_output_block,484,10522,VL2p_adPN,ALPN,0,0,0.0 +0-131101-whole_PN_output_block,1197,11289,lLN1_bc,ALLN,0,0,0.0 +0-131101-whole_PN_output_block,1381,11478,lLN1_bc,ALLN,0,0,0.0 +0-131101-whole_PN_output_block,1511,11620,lLN1_bc,ALLN,0,0,0.0 +0-131101-whole_PN_output_block,1644,11761,VP1d+VP4_l2PN1,ALPN,0,0,0.0 +0-131101-whole_PN_output_block,6065,16610,VA7m_lPN,ALPN,0,0,0.0 +0-131101-whole_PN_output_block,6842,17484,DC2_adPN,ALPN,5,0,0.0 +0-131101-whole_PN_output_block,82312,109321,KC,KC,0,0,0.0 +0-131101-whole_PN_output_block,133666,527577,VA6_adPN,ALPN,0,0,0.0 +1-131101-frozen_reference,30,10039,VL2a_adPN,ALPN,369,187,374.0 +1-131101-frozen_reference,179,10198,VA7l_adPN,ALPN,321,163,326.0 +1-131101-frozen_reference,484,10522,VL2p_adPN,ALPN,383,195,390.0 +1-131101-frozen_reference,1197,11289,lLN1_bc,ALLN,450,228,456.0 +1-131101-frozen_reference,1381,11478,lLN1_bc,ALLN,450,228,456.0 +1-131101-frozen_reference,1511,11620,lLN1_bc,ALLN,450,228,456.0 +1-131101-frozen_reference,1644,11761,VP1d+VP4_l2PN1,ALPN,430,218,436.0 +1-131101-frozen_reference,6065,16610,VA7m_lPN,ALPN,322,164,328.0 +1-131101-frozen_reference,6842,17484,DC2_adPN,ALPN,336,170,340.0 +1-131101-frozen_reference,82312,109321,KC,KC,119,60,120.0 +1-131101-frozen_reference,133666,527577,VA6_adPN,ALPN,420,213,426.0 +1-131101-calyx_PN_KC_contact_block,30,10039,VL2a_adPN,ALPN,369,187,374.0 +1-131101-calyx_PN_KC_contact_block,179,10198,VA7l_adPN,ALPN,321,163,326.0 +1-131101-calyx_PN_KC_contact_block,484,10522,VL2p_adPN,ALPN,382,194,388.0 +1-131101-calyx_PN_KC_contact_block,1197,11289,lLN1_bc,ALLN,450,228,456.0 +1-131101-calyx_PN_KC_contact_block,1381,11478,lLN1_bc,ALLN,450,228,456.0 +1-131101-calyx_PN_KC_contact_block,1511,11620,lLN1_bc,ALLN,450,228,456.0 +1-131101-calyx_PN_KC_contact_block,1644,11761,VP1d+VP4_l2PN1,ALPN,430,218,436.0 +1-131101-calyx_PN_KC_contact_block,6065,16610,VA7m_lPN,ALPN,322,164,328.0 +1-131101-calyx_PN_KC_contact_block,6842,17484,DC2_adPN,ALPN,337,171,342.0 +1-131101-calyx_PN_KC_contact_block,82312,109321,KC,KC,0,0,0.0 +1-131101-calyx_PN_KC_contact_block,133666,527577,VA6_adPN,ALPN,420,213,426.0 +1-131101-all_PN_KC_block,30,10039,VL2a_adPN,ALPN,369,187,374.0 +1-131101-all_PN_KC_block,179,10198,VA7l_adPN,ALPN,321,163,326.0 +1-131101-all_PN_KC_block,484,10522,VL2p_adPN,ALPN,383,195,390.0 +1-131101-all_PN_KC_block,1197,11289,lLN1_bc,ALLN,450,228,456.0 +1-131101-all_PN_KC_block,1381,11478,lLN1_bc,ALLN,450,228,456.0 +1-131101-all_PN_KC_block,1511,11620,lLN1_bc,ALLN,450,228,456.0 +1-131101-all_PN_KC_block,1644,11761,VP1d+VP4_l2PN1,ALPN,430,218,436.0 +1-131101-all_PN_KC_block,6065,16610,VA7m_lPN,ALPN,322,164,328.0 +1-131101-all_PN_KC_block,6842,17484,DC2_adPN,ALPN,336,171,342.0 +1-131101-all_PN_KC_block,82312,109321,KC,KC,0,0,0.0 +1-131101-all_PN_KC_block,133666,527577,VA6_adPN,ALPN,420,213,426.0 +1-131101-whole_PN_output_block,30,10039,VL2a_adPN,ALPN,0,0,0.0 +1-131101-whole_PN_output_block,179,10198,VA7l_adPN,ALPN,0,0,0.0 +1-131101-whole_PN_output_block,484,10522,VL2p_adPN,ALPN,0,0,0.0 +1-131101-whole_PN_output_block,1197,11289,lLN1_bc,ALLN,0,0,0.0 +1-131101-whole_PN_output_block,1381,11478,lLN1_bc,ALLN,0,0,0.0 +1-131101-whole_PN_output_block,1511,11620,lLN1_bc,ALLN,0,0,0.0 +1-131101-whole_PN_output_block,1644,11761,VP1d+VP4_l2PN1,ALPN,0,0,0.0 +1-131101-whole_PN_output_block,6065,16610,VA7m_lPN,ALPN,0,0,0.0 +1-131101-whole_PN_output_block,6842,17484,DC2_adPN,ALPN,5,0,0.0 +1-131101-whole_PN_output_block,82312,109321,KC,KC,0,0,0.0 +1-131101-whole_PN_output_block,133666,527577,VA6_adPN,ALPN,0,0,0.0 +2-131101-frozen_reference,30,10039,VL2a_adPN,ALPN,371,188,376.0 +2-131101-frozen_reference,179,10198,VA7l_adPN,ALPN,320,162,324.0 +2-131101-frozen_reference,484,10522,VL2p_adPN,ALPN,382,194,388.0 +2-131101-frozen_reference,1197,11289,lLN1_bc,ALLN,450,228,456.0 +2-131101-frozen_reference,1381,11478,lLN1_bc,ALLN,450,228,456.0 +2-131101-frozen_reference,1511,11620,lLN1_bc,ALLN,450,228,456.0 +2-131101-frozen_reference,1644,11761,VP1d+VP4_l2PN1,ALPN,430,217,434.0 +2-131101-frozen_reference,6065,16610,VA7m_lPN,ALPN,322,164,328.0 +2-131101-frozen_reference,6842,17484,DC2_adPN,ALPN,336,171,342.0 +2-131101-frozen_reference,82312,109321,KC,KC,120,61,122.0 +2-131101-frozen_reference,133666,527577,VA6_adPN,ALPN,421,213,426.0 +2-131101-calyx_PN_KC_contact_block,30,10039,VL2a_adPN,ALPN,370,188,376.0 +2-131101-calyx_PN_KC_contact_block,179,10198,VA7l_adPN,ALPN,321,163,326.0 +2-131101-calyx_PN_KC_contact_block,484,10522,VL2p_adPN,ALPN,382,194,388.0 +2-131101-calyx_PN_KC_contact_block,1197,11289,lLN1_bc,ALLN,450,228,456.0 +2-131101-calyx_PN_KC_contact_block,1381,11478,lLN1_bc,ALLN,450,228,456.0 +2-131101-calyx_PN_KC_contact_block,1511,11620,lLN1_bc,ALLN,450,228,456.0 +2-131101-calyx_PN_KC_contact_block,1644,11761,VP1d+VP4_l2PN1,ALPN,430,217,434.0 +2-131101-calyx_PN_KC_contact_block,6065,16610,VA7m_lPN,ALPN,323,164,328.0 +2-131101-calyx_PN_KC_contact_block,6842,17484,DC2_adPN,ALPN,336,171,342.0 +2-131101-calyx_PN_KC_contact_block,82312,109321,KC,KC,0,0,0.0 +2-131101-calyx_PN_KC_contact_block,133666,527577,VA6_adPN,ALPN,420,213,426.0 +2-131101-all_PN_KC_block,30,10039,VL2a_adPN,ALPN,370,188,376.0 +2-131101-all_PN_KC_block,179,10198,VA7l_adPN,ALPN,321,163,326.0 +2-131101-all_PN_KC_block,484,10522,VL2p_adPN,ALPN,382,194,388.0 +2-131101-all_PN_KC_block,1197,11289,lLN1_bc,ALLN,450,228,456.0 +2-131101-all_PN_KC_block,1381,11478,lLN1_bc,ALLN,450,228,456.0 +2-131101-all_PN_KC_block,1511,11620,lLN1_bc,ALLN,450,228,456.0 +2-131101-all_PN_KC_block,1644,11761,VP1d+VP4_l2PN1,ALPN,430,217,434.0 +2-131101-all_PN_KC_block,6065,16610,VA7m_lPN,ALPN,323,164,328.0 +2-131101-all_PN_KC_block,6842,17484,DC2_adPN,ALPN,336,171,342.0 +2-131101-all_PN_KC_block,82312,109321,KC,KC,0,0,0.0 +2-131101-all_PN_KC_block,133666,527577,VA6_adPN,ALPN,420,213,426.0 +2-131101-whole_PN_output_block,30,10039,VL2a_adPN,ALPN,0,0,0.0 +2-131101-whole_PN_output_block,179,10198,VA7l_adPN,ALPN,0,0,0.0 +2-131101-whole_PN_output_block,484,10522,VL2p_adPN,ALPN,0,0,0.0 +2-131101-whole_PN_output_block,1197,11289,lLN1_bc,ALLN,0,0,0.0 +2-131101-whole_PN_output_block,1381,11478,lLN1_bc,ALLN,0,0,0.0 +2-131101-whole_PN_output_block,1511,11620,lLN1_bc,ALLN,0,0,0.0 +2-131101-whole_PN_output_block,1644,11761,VP1d+VP4_l2PN1,ALPN,0,0,0.0 +2-131101-whole_PN_output_block,6065,16610,VA7m_lPN,ALPN,0,0,0.0 +2-131101-whole_PN_output_block,6842,17484,DC2_adPN,ALPN,0,0,0.0 +2-131101-whole_PN_output_block,82312,109321,KC,KC,0,0,0.0 +2-131101-whole_PN_output_block,133666,527577,VA6_adPN,ALPN,7,0,0.0 +3-131101-frozen_reference,30,10039,VL2a_adPN,ALPN,368,187,374.0 +3-131101-frozen_reference,179,10198,VA7l_adPN,ALPN,320,163,326.0 +3-131101-frozen_reference,484,10522,VL2p_adPN,ALPN,380,193,386.0 +3-131101-frozen_reference,1197,11289,lLN1_bc,ALLN,448,228,456.0 +3-131101-frozen_reference,1381,11478,lLN1_bc,ALLN,448,228,456.0 +3-131101-frozen_reference,1511,11620,lLN1_bc,ALLN,448,228,456.0 +3-131101-frozen_reference,1644,11761,VP1d+VP4_l2PN1,ALPN,428,218,436.0 +3-131101-frozen_reference,6065,16610,VA7m_lPN,ALPN,321,164,328.0 +3-131101-frozen_reference,6842,17484,DC2_adPN,ALPN,335,171,342.0 +3-131101-frozen_reference,82312,109321,KC,KC,119,60,120.0 +3-131101-frozen_reference,133666,527577,VA6_adPN,ALPN,416,212,424.0 +3-131101-calyx_PN_KC_contact_block,30,10039,VL2a_adPN,ALPN,368,187,374.0 +3-131101-calyx_PN_KC_contact_block,179,10198,VA7l_adPN,ALPN,320,163,326.0 +3-131101-calyx_PN_KC_contact_block,484,10522,VL2p_adPN,ALPN,381,194,388.0 +3-131101-calyx_PN_KC_contact_block,1197,11289,lLN1_bc,ALLN,448,228,456.0 +3-131101-calyx_PN_KC_contact_block,1381,11478,lLN1_bc,ALLN,448,228,456.0 +3-131101-calyx_PN_KC_contact_block,1511,11620,lLN1_bc,ALLN,448,228,456.0 +3-131101-calyx_PN_KC_contact_block,1644,11761,VP1d+VP4_l2PN1,ALPN,428,218,436.0 +3-131101-calyx_PN_KC_contact_block,6065,16610,VA7m_lPN,ALPN,321,164,328.0 +3-131101-calyx_PN_KC_contact_block,6842,17484,DC2_adPN,ALPN,335,171,342.0 +3-131101-calyx_PN_KC_contact_block,82312,109321,KC,KC,0,0,0.0 +3-131101-calyx_PN_KC_contact_block,133666,527577,VA6_adPN,ALPN,416,212,424.0 +3-131101-all_PN_KC_block,30,10039,VL2a_adPN,ALPN,368,187,374.0 +3-131101-all_PN_KC_block,179,10198,VA7l_adPN,ALPN,320,163,326.0 +3-131101-all_PN_KC_block,484,10522,VL2p_adPN,ALPN,381,194,388.0 +3-131101-all_PN_KC_block,1197,11289,lLN1_bc,ALLN,448,228,456.0 +3-131101-all_PN_KC_block,1381,11478,lLN1_bc,ALLN,448,228,456.0 +3-131101-all_PN_KC_block,1511,11620,lLN1_bc,ALLN,448,228,456.0 +3-131101-all_PN_KC_block,1644,11761,VP1d+VP4_l2PN1,ALPN,428,218,436.0 +3-131101-all_PN_KC_block,6065,16610,VA7m_lPN,ALPN,321,164,328.0 +3-131101-all_PN_KC_block,6842,17484,DC2_adPN,ALPN,335,171,342.0 +3-131101-all_PN_KC_block,82312,109321,KC,KC,0,0,0.0 +3-131101-all_PN_KC_block,133666,527577,VA6_adPN,ALPN,416,212,424.0 +3-131101-whole_PN_output_block,30,10039,VL2a_adPN,ALPN,0,0,0.0 +3-131101-whole_PN_output_block,179,10198,VA7l_adPN,ALPN,0,0,0.0 +3-131101-whole_PN_output_block,484,10522,VL2p_adPN,ALPN,0,0,0.0 +3-131101-whole_PN_output_block,1197,11289,lLN1_bc,ALLN,0,0,0.0 +3-131101-whole_PN_output_block,1381,11478,lLN1_bc,ALLN,0,0,0.0 +3-131101-whole_PN_output_block,1511,11620,lLN1_bc,ALLN,0,0,0.0 +3-131101-whole_PN_output_block,1644,11761,VP1d+VP4_l2PN1,ALPN,0,0,0.0 +3-131101-whole_PN_output_block,6065,16610,VA7m_lPN,ALPN,0,0,0.0 +3-131101-whole_PN_output_block,6842,17484,DC2_adPN,ALPN,3,0,0.0 +3-131101-whole_PN_output_block,82312,109321,KC,KC,0,0,0.0 +3-131101-whole_PN_output_block,133666,527577,VA6_adPN,ALPN,0,0,0.0 +4-131101-frozen_reference,30,10039,VL2a_adPN,ALPN,368,188,376.0 +4-131101-frozen_reference,179,10198,VA7l_adPN,ALPN,319,163,326.0 +4-131101-frozen_reference,484,10522,VL2p_adPN,ALPN,379,193,386.0 +4-131101-frozen_reference,1197,11289,lLN1_bc,ALLN,447,228,456.0 +4-131101-frozen_reference,1381,11478,lLN1_bc,ALLN,447,227,454.0 +4-131101-frozen_reference,1511,11620,lLN1_bc,ALLN,447,228,456.0 +4-131101-frozen_reference,1644,11761,VP1d+VP4_l2PN1,ALPN,428,217,434.0 +4-131101-frozen_reference,6065,16610,VA7m_lPN,ALPN,320,164,328.0 +4-131101-frozen_reference,6842,17484,DC2_adPN,ALPN,334,171,342.0 +4-131101-frozen_reference,82312,109321,KC,KC,119,61,122.0 +4-131101-frozen_reference,133666,527577,VA6_adPN,ALPN,416,213,426.0 +4-131101-calyx_PN_KC_contact_block,30,10039,VL2a_adPN,ALPN,368,188,376.0 +4-131101-calyx_PN_KC_contact_block,179,10198,VA7l_adPN,ALPN,319,163,326.0 +4-131101-calyx_PN_KC_contact_block,484,10522,VL2p_adPN,ALPN,379,193,386.0 +4-131101-calyx_PN_KC_contact_block,1197,11289,lLN1_bc,ALLN,447,228,456.0 +4-131101-calyx_PN_KC_contact_block,1381,11478,lLN1_bc,ALLN,447,227,454.0 +4-131101-calyx_PN_KC_contact_block,1511,11620,lLN1_bc,ALLN,447,228,456.0 +4-131101-calyx_PN_KC_contact_block,1644,11761,VP1d+VP4_l2PN1,ALPN,428,217,434.0 +4-131101-calyx_PN_KC_contact_block,6065,16610,VA7m_lPN,ALPN,320,164,328.0 +4-131101-calyx_PN_KC_contact_block,6842,17484,DC2_adPN,ALPN,334,171,342.0 +4-131101-calyx_PN_KC_contact_block,82312,109321,KC,KC,0,0,0.0 +4-131101-calyx_PN_KC_contact_block,133666,527577,VA6_adPN,ALPN,415,212,424.0 +4-131101-all_PN_KC_block,30,10039,VL2a_adPN,ALPN,368,188,376.0 +4-131101-all_PN_KC_block,179,10198,VA7l_adPN,ALPN,319,163,326.0 +4-131101-all_PN_KC_block,484,10522,VL2p_adPN,ALPN,379,193,386.0 +4-131101-all_PN_KC_block,1197,11289,lLN1_bc,ALLN,447,228,456.0 +4-131101-all_PN_KC_block,1381,11478,lLN1_bc,ALLN,447,227,454.0 +4-131101-all_PN_KC_block,1511,11620,lLN1_bc,ALLN,447,228,456.0 +4-131101-all_PN_KC_block,1644,11761,VP1d+VP4_l2PN1,ALPN,428,217,434.0 +4-131101-all_PN_KC_block,6065,16610,VA7m_lPN,ALPN,320,164,328.0 +4-131101-all_PN_KC_block,6842,17484,DC2_adPN,ALPN,334,171,342.0 +4-131101-all_PN_KC_block,82312,109321,KC,KC,0,0,0.0 +4-131101-all_PN_KC_block,133666,527577,VA6_adPN,ALPN,415,212,424.0 +4-131101-whole_PN_output_block,30,10039,VL2a_adPN,ALPN,0,0,0.0 +4-131101-whole_PN_output_block,179,10198,VA7l_adPN,ALPN,0,0,0.0 +4-131101-whole_PN_output_block,484,10522,VL2p_adPN,ALPN,0,0,0.0 +4-131101-whole_PN_output_block,1197,11289,lLN1_bc,ALLN,0,0,0.0 +4-131101-whole_PN_output_block,1381,11478,lLN1_bc,ALLN,0,0,0.0 +4-131101-whole_PN_output_block,1511,11620,lLN1_bc,ALLN,0,0,0.0 +4-131101-whole_PN_output_block,1644,11761,VP1d+VP4_l2PN1,ALPN,0,0,0.0 +4-131101-whole_PN_output_block,6065,16610,VA7m_lPN,ALPN,0,0,0.0 +4-131101-whole_PN_output_block,6842,17484,DC2_adPN,ALPN,3,0,0.0 +4-131101-whole_PN_output_block,82312,109321,KC,KC,0,0,0.0 +4-131101-whole_PN_output_block,133666,527577,VA6_adPN,ALPN,0,0,0.0 +5-131101-frozen_reference,30,10039,VL2a_adPN,ALPN,371,187,374.0 +5-131101-frozen_reference,179,10198,VA7l_adPN,ALPN,322,163,326.0 +5-131101-frozen_reference,484,10522,VL2p_adPN,ALPN,384,194,388.0 +5-131101-frozen_reference,1197,11289,lLN1_bc,ALLN,451,228,456.0 +5-131101-frozen_reference,1381,11478,lLN1_bc,ALLN,451,228,456.0 +5-131101-frozen_reference,1511,11620,lLN1_bc,ALLN,451,228,456.0 +5-131101-frozen_reference,1644,11761,VP1d+VP4_l2PN1,ALPN,430,217,434.0 +5-131101-frozen_reference,6065,16610,VA7m_lPN,ALPN,324,165,330.0 +5-131101-frozen_reference,6842,17484,DC2_adPN,ALPN,339,171,342.0 +5-131101-frozen_reference,82312,109321,KC,KC,120,61,122.0 +5-131101-frozen_reference,133666,527577,VA6_adPN,ALPN,423,214,428.0 +5-131101-calyx_PN_KC_contact_block,30,10039,VL2a_adPN,ALPN,371,187,374.0 +5-131101-calyx_PN_KC_contact_block,179,10198,VA7l_adPN,ALPN,323,164,328.0 +5-131101-calyx_PN_KC_contact_block,484,10522,VL2p_adPN,ALPN,384,194,388.0 +5-131101-calyx_PN_KC_contact_block,1197,11289,lLN1_bc,ALLN,451,228,456.0 +5-131101-calyx_PN_KC_contact_block,1381,11478,lLN1_bc,ALLN,451,228,456.0 +5-131101-calyx_PN_KC_contact_block,1511,11620,lLN1_bc,ALLN,451,228,456.0 +5-131101-calyx_PN_KC_contact_block,1644,11761,VP1d+VP4_l2PN1,ALPN,430,217,434.0 +5-131101-calyx_PN_KC_contact_block,6065,16610,VA7m_lPN,ALPN,323,164,328.0 +5-131101-calyx_PN_KC_contact_block,6842,17484,DC2_adPN,ALPN,339,171,342.0 +5-131101-calyx_PN_KC_contact_block,82312,109321,KC,KC,0,0,0.0 +5-131101-calyx_PN_KC_contact_block,133666,527577,VA6_adPN,ALPN,423,214,428.0 +5-131101-all_PN_KC_block,30,10039,VL2a_adPN,ALPN,371,187,374.0 +5-131101-all_PN_KC_block,179,10198,VA7l_adPN,ALPN,323,164,328.0 +5-131101-all_PN_KC_block,484,10522,VL2p_adPN,ALPN,384,194,388.0 +5-131101-all_PN_KC_block,1197,11289,lLN1_bc,ALLN,451,228,456.0 +5-131101-all_PN_KC_block,1381,11478,lLN1_bc,ALLN,451,228,456.0 +5-131101-all_PN_KC_block,1511,11620,lLN1_bc,ALLN,451,228,456.0 +5-131101-all_PN_KC_block,1644,11761,VP1d+VP4_l2PN1,ALPN,430,217,434.0 +5-131101-all_PN_KC_block,6065,16610,VA7m_lPN,ALPN,323,164,328.0 +5-131101-all_PN_KC_block,6842,17484,DC2_adPN,ALPN,339,171,342.0 +5-131101-all_PN_KC_block,82312,109321,KC,KC,0,0,0.0 +5-131101-all_PN_KC_block,133666,527577,VA6_adPN,ALPN,423,214,428.0 +5-131101-whole_PN_output_block,30,10039,VL2a_adPN,ALPN,0,0,0.0 +5-131101-whole_PN_output_block,179,10198,VA7l_adPN,ALPN,0,0,0.0 +5-131101-whole_PN_output_block,484,10522,VL2p_adPN,ALPN,0,0,0.0 +5-131101-whole_PN_output_block,1197,11289,lLN1_bc,ALLN,0,0,0.0 +5-131101-whole_PN_output_block,1381,11478,lLN1_bc,ALLN,0,0,0.0 +5-131101-whole_PN_output_block,1511,11620,lLN1_bc,ALLN,0,0,0.0 +5-131101-whole_PN_output_block,1644,11761,VP1d+VP4_l2PN1,ALPN,0,0,0.0 +5-131101-whole_PN_output_block,6065,16610,VA7m_lPN,ALPN,0,0,0.0 +5-131101-whole_PN_output_block,6842,17484,DC2_adPN,ALPN,6,0,0.0 +5-131101-whole_PN_output_block,82312,109321,KC,KC,0,0,0.0 +5-131101-whole_PN_output_block,133666,527577,VA6_adPN,ALPN,0,0,0.0 diff --git a/registry/phase4ab-terminal-scope/evidence/checksums.sha256 b/registry/phase4ab-terminal-scope/evidence/checksums.sha256 new file mode 100644 index 0000000..b15dc14 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/checksums.sha256 @@ -0,0 +1,199 @@ +50d11647abe23cd7f259d6835e20fa46bfe0cdfe248d75ae69c6b21051b3680d INTERPRETATION.zh.md +8d0c3ffbc718ada68cd4590a21726dd9c221269384e6aded32ca4731b21a983f REPORT.md +2bd15ebf2718fdf06bfc968617b5a5fc72ebfd2a965559942876e40d168a229e audit/ROI-partition.csv +4b35fc3bd77bd31a29ad30a9d5d16f0f29261518645cc565e08c62b0a884e977 audit/all-259-APL-target-PNs.parquet +978c1ca48c392d573fc3ebc9b67eae1b8fd5ceb1c0033ed3ffa57173c1688dbc audit/all-PN-KC-contact-partitions.parquet +63e700cfbd277ff9e08a45b680cfecea42ed7cd039e0b493d6860f755bfd8d17 audit/all_PN_KC_block-effective-overlay.parquet +e0c968e8974ea7bd12daf98a4563349e50a77468892b5ebe2b1bb7c425b5c836 audit/calyx_PN_KC_contact_block-effective-overlay.parquet +c7c27fcbcb3f5c341b3fbdc6783e46405b0ceb520d34da1cb654633d57c0dd2f audit/condition-ranges.csv +0397c6d86eb5fd7282cbb3b06927b7627760aeedbaf176cf870257f93cd161f1 audit/final-service-health.json +954e12d578df65f3e0891ad5c260b2d6a01a16de5d8f4168bcfbccda1ce6700f audit/final-summary.json +aa39952c5e3f5842c3fcc6ee6462ff15abef78729ccda1e3d3854b7b939173ca audit/mechanism-interpretation.json +00ec322b8e9c4900deaadda4eac8d604c61c88685fe3409f0dc8169c6057c055 audit/narrow-vs-allKC.csv +095803667092a53d2bf7bbd4bb5904f9efe0ae0d74e92f579bb1f722478bfc23 audit/observed-APL-PN-ROI-pairs.parquet +7347919244fd27c2ecf7191d24302cb203769976604c4bd1c650a450c9f34604 audit/population-counts.csv +1f6e83038ce0ebb1ac97b5c53a07fefdd0aa183d0490e6259a47070961a4fcb1 audit/remaining-late-KCs.csv +b9ead245b439d22ecac202db3c15e9dae9882aac8af318895039c9f676c97f63 audit/request-comparison.csv +a0038972a067a029a607920bfb441519950511cad54853d5fa33067e61273b8b audit/run-complete.json +67a8ce7fe5677fd7ab6e516f68254b4eb941a2f9f702de34027f69e91ce626de audit/scope-summary.json +f9e0fd08cc5a2fe650749b06b3ca631b1c8258f3f1e40690458dbc5668920deb audit/trials.csv +4256b8a89e2d5f55ca7b0ef2a45110dd0593994e3416a1de14144908f2a941af audit/watched-counts.csv +159dcef426274c69b810d982bad4961b2f467d70b057c855586e17fc4a65c18d audit/whole_PN_output_block-effective-overlay.parquet +7329672e081300537d77be3fb5abdd138d400ead500b5cb2093618cb556ea1cb events/0-131101-all_PN_KC_block.parquet +7329672e081300537d77be3fb5abdd138d400ead500b5cb2093618cb556ea1cb events/0-131101-calyx_PN_KC_contact_block.parquet +f2c738cce81d56dc38b15d3ed04f9ca9ef99e63ab121b868bbb234b640235ad4 events/0-131101-frozen_reference.parquet +d6a7d5c6d6668d36f0514ae4f20eef3b9e60f9e555efb334cc35e9efca74520d events/0-131101-whole_PN_output_block.parquet +eb96617dceffcb61be45de886e062ff86df2177e7ddcaf370c62d22307abf566 events/1-131101-all_PN_KC_block.parquet +031ede1f2d136da0e3cac6c1f524eae3def616b74b2366bbdd4e4a8a33f024ab events/1-131101-calyx_PN_KC_contact_block.parquet +edd3c442deb71e7db6e058ee0c5ed51f67c71b72f1f21e74d2c68cfe7531fb96 events/1-131101-frozen_reference.parquet +20a6010a52c0c13bbcfe36a8b31b1c95d0dff4917a7a36b48ce727601de04719 events/1-131101-whole_PN_output_block.parquet +37ea82b729e27f3833ac93faa5411b55b3b4d5df258f9975c637e758fc001aad events/2-131101-all_PN_KC_block.parquet +37ea82b729e27f3833ac93faa5411b55b3b4d5df258f9975c637e758fc001aad events/2-131101-calyx_PN_KC_contact_block.parquet +a0112b88296e49dd142c1b217d1da501a958edbfde63559180cf858b2f24ab41 events/2-131101-frozen_reference.parquet +b78a97859869be17fdf07cfaec55a6ffd26c047df2521b4ebfdaf8069fc3857d events/2-131101-whole_PN_output_block.parquet +fa5fbbbeba2266275ab60bb5aa43e6a556d7acb05c0e2e74792deb69c7886e87 events/3-131101-all_PN_KC_block.parquet +ce408e93502105daa3c3598ad83916e1573a2b51094b601d8227ceec6c9e04c5 events/3-131101-calyx_PN_KC_contact_block.parquet +361d560293461a5dfd8b921ef2086c6416f0111c2bdbee8239a1785756f4e750 events/3-131101-frozen_reference.parquet +815ad98fdebb558d6d97f7857286aa26325eda6a07731003b01f2760e0ad74c8 events/3-131101-whole_PN_output_block.parquet +b425e99cb678e2905b301c3d8955622f5f846b8cb95be56bc1d6a4ec8927e3a4 events/4-131101-all_PN_KC_block.parquet +b425e99cb678e2905b301c3d8955622f5f846b8cb95be56bc1d6a4ec8927e3a4 events/4-131101-calyx_PN_KC_contact_block.parquet +4a21d82b254a64327bb58cd46e6360b93919837b18f7813b2887236438a65b8e events/4-131101-frozen_reference.parquet +92fa0bb6d40117291d637e039b75fab5acb95fa2900e349458548ab678ecc175 events/4-131101-whole_PN_output_block.parquet +68af6e003289e6c5db21ed257f23cc1ffa576f0699054b5eed6e9f19f0bc198c events/5-131101-all_PN_KC_block.parquet +68af6e003289e6c5db21ed257f23cc1ffa576f0699054b5eed6e9f19f0bc198c events/5-131101-calyx_PN_KC_contact_block.parquet +c6868dc73bcdf64e19b89bd001f53c775d8c603fa482af19299afa4bef94966d events/5-131101-frozen_reference.parquet +18c2b6537414fc88ec6d7af9a3e6d17ae355cca27f802ace6862a3bb86bcb703 events/5-131101-whole_PN_output_block.parquet +7d80cc0eaacb0e82c95eeee504bdab6398e821faa43b04f0fb15882952d3d2d8 gpu-reference/extension-build/.ninja_deps +4c72a7a59bad7ea9d919b94dd98eff0a060a253078f52e91807d45d0ee2ccc05 gpu-reference/extension-build/.ninja_log +c570f72b9a2f486e104ed3bf5b1b9f2ccc729ecab02046cd62389d629fb4f48f gpu-reference/extension-build/build.ninja +e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 gpu-reference/extension-build/lock +328cdf2dd588ee875ffa06d9da5f77165e82b7ab1e62395135798116d6b3f0fc gpu-reference/extension-build/male_cns_lif_deterministic_v2_ext.so +f1db36d694e76b5eabc790f173103db79108d8427d354d143304f93f659ddc7f gpu-reference/extension-build/phase4p_ext.cuda.o +27d284f6a369221a931251b5a03ce133cc8231a97942567d4efafbfb45483811 gpu-reference/extension-build/phase4p_ext.o +eb664fc02ec10508dfca36b107ab8f083d682113d172f4183aed7b766d96dd45 gpu-reference/extension.json +07ea3fa9fe2a4e093cff38aba9aab4e7a018f32c108542fc773110f0a43a8293 masks/all_PN_KC_block.parquet +0e2585cdb7d44b24f4579d90149f9bb7738718164036dde910be2d94a67370fc masks/calyx_PN_KC_contact_block.parquet +95f800944d01738e3d36da64a17c9bd37b8372fd8ba165bdcd31a94da0fdee29 masks/whole_PN_output_block.parquet +9f87e056f34222f34cbe5bcd109a45ede202baeea2e2b9bca909c326d5c6ec44 observations/0-131101-all_PN_KC_block.parquet +55cdf371f17626e66c3bd2ed7ace8cfdaa53f383d1f112cf04f2c8b21ce607ef observations/0-131101-calyx_PN_KC_contact_block.parquet +e8efc04cf282a0c3fac306dadcbc44f8fd9c13fe2754b753cb7c562db89c6138 observations/0-131101-frozen_reference.parquet +182f0c3798a9c629a1e1460983ed2061b16d55f5ea82de048444d28998553061 observations/0-131101-whole_PN_output_block.parquet +01937268b8a6299d2b1ab5486b8dcdaff8866b7826e34f4ad3a6bbf77fc74fa4 observations/1-131101-all_PN_KC_block.parquet +dd0ac4ba7c774c8d475f944c8511c965d7dc574329ecfac9157b3f68f52438ae observations/1-131101-calyx_PN_KC_contact_block.parquet +fc37e5a8befec43f187ed68e4de8399c2cb895cda03998a8ce29fcb7b5488efe observations/1-131101-frozen_reference.parquet +3c031ca5fa45f3f974337361273d1b432a4182f61cfadf2d3fb348ad1a9ffc56 observations/1-131101-whole_PN_output_block.parquet +4dd772a7358a75d4f674027bf5bdaaa8ee609cfdd86a34e88cc9a28ffd42b7dd observations/2-131101-all_PN_KC_block.parquet +68f9b88919cf4e98a343c047c92c0dd261b681f106a53f8846c6d7704bae8390 observations/2-131101-calyx_PN_KC_contact_block.parquet +30462668f2fe3b8051f60e94f3a25d895ac68bfcf9b1ca7fbff0ec07450aa524 observations/2-131101-frozen_reference.parquet +68902b930d81216184358b38c8ac0132dc6ed201345af9a47e9e52bbb5ab3d2b observations/2-131101-whole_PN_output_block.parquet +032642e1b288f6fc6f3a438f995dad5043a54df724db135b45b492f6c8365f05 observations/3-131101-all_PN_KC_block.parquet +07e204e3dd51bba6f777e1142d3561987642b7bbc28208ddd4df0159bbbdfaab observations/3-131101-calyx_PN_KC_contact_block.parquet +c42c6b392de967fad1d8dc3c46a3d1f936fc7065b3223290d57b99ac7783627d observations/3-131101-frozen_reference.parquet +47baffba5864df085baf621c5bcce08b416a5123f1a436b1fb7e4a5b1baeb323 observations/3-131101-whole_PN_output_block.parquet +36357d0ec81d346ab9345e2d976cca64e0cdf2b2730578e02abfea16a3d998f4 observations/4-131101-all_PN_KC_block.parquet +1e1f38419a55ea53984b9c094e1ef2e0ce49120ad68ceeffb2cad0f94dbf7b5c observations/4-131101-calyx_PN_KC_contact_block.parquet +59f491996efcab80c65342d8b6b9068ce7ba2c90e7cf9ec59642a2bfc225a0db observations/4-131101-frozen_reference.parquet +14c4bfc60bd0c479d35f1e8f193372c5845f2451c91370c74e33c513cb4c023b observations/4-131101-whole_PN_output_block.parquet +a728612a3a1f5b00c8508102e9af06dfb18c63728b94e39322598fbf19f140e0 observations/5-131101-all_PN_KC_block.parquet +7e5a944d402aeeaa70ea183cdeed091cd69927324ea5d4c3142b491442b8f8b3 observations/5-131101-calyx_PN_KC_contact_block.parquet +1979a8bc73379be06d4cbd5923f5f8ab5cebbe70a1a4919695c2d3363899a587 observations/5-131101-frozen_reference.parquet +023e9b18d368ae28171b63ff73122e55b8da8e9a0f4b482004cbc73c759900fd observations/5-131101-whole_PN_output_block.parquet +93a5b9bc4de3bf479916ae4b701fa7e23b570c442559e95a7aeabb7b33cd5410 performance/summary.json +2b3ca78bf0946c757b7784719a6a7a06598941867df2a243a272a61337d2c889 protocol/calibration-panel.json +da2d2e47d2bc3ab214203723cac30a1386b09008e07118f460039e496b0b88f4 protocol/environment.json +073a6ab1b615e9abdb06e5a6775366c3978ce7794714949de1a5f714edf98ec7 protocol/forcing-hashes.json +4795fae3b3a320deff14f32e4722e94ade17e464b1fbf19315a1cb1769eb1927 protocol/imported-code-hashes.json +24cba080c7b72da8f40e406f1403646ff11c3cc34d9870991874575a486e3e27 protocol/input-hashes.json +1eaf84efbcd9a7f5852b8d0feb4fd57b5f01f7211080923bb3fa63dadeaa1b7f protocol/launch-addendum.json +6cee0248b8fb13a99f997c75a06542f26a1e9f5df8c8771ea997a5dc2de9d6b3 protocol/mask-hashes.json +da8da4efa93ba69867ef732cb9d328576c5fd5b82f483803bd330f597b32e61b protocol/preregistered.json +0980b7d3689cf626401d13728960c77a5f32d63fe61c5fb21869b36003ca890d regression/0-131101-all_PN_KC_block.json +fc2d7c3fd66b1816dd569721b1ffe16fb3d04195e0f39e54311235f996263e18 regression/0-131101-calyx_PN_KC_contact_block.json +f0bdabde30646bbfddef9a6bc346a14e9a268ea096bf1495ade09ccb7257441b regression/0-131101-frozen_reference.json +4703574c70cf854d05038a729e072ab48ec2db60746517dc0bd76a4c90984c2b regression/0-131101-whole_PN_output_block.json +104536398ec87802f8ded2ab37cce3311c0af39f74533e712c8f827eb42d738b regression/1-131101-all_PN_KC_block.json +e7a98aa3f9eb31364a6c4f1f09df059162bc6633f527dd0eff44646a5a4e469d regression/1-131101-calyx_PN_KC_contact_block.json +f1ed3d7a9a6a290295ef477bff09566a9aee08a33c98f9c62519a5f4537c472b regression/1-131101-frozen_reference.json +db90cddc95d283c78b6df8279c50b30a2ebcd02b173a31ddfd1f5da8ca6c85ca regression/1-131101-whole_PN_output_block.json +1ef62eb572ada32b947e8fbbe649dee7842cba3c9cb044b03291383d7ddc7c00 regression/2-131101-all_PN_KC_block.json +e3e54e240443b1abbb413b27886193fba595a28af8c7277550abc399b482ccd0 regression/2-131101-calyx_PN_KC_contact_block.json +663a6881b31c76bd08350fc757929233173f4af39a89f5bf1b75423ca75ee997 regression/2-131101-frozen_reference.json +33153ce2d016e511ea2eaf2beed2af96a2b20de91524346b894f2c04379818f9 regression/2-131101-whole_PN_output_block.json +6d4cc009cbc2debf074dab3c0c6b5a134cd3677c22f96aad3f44ed9793f0c2ea regression/3-131101-all_PN_KC_block.json +91ff88c1fccfbb98164a1aad137adf0681eaa4ab458ee256060447a42736af42 regression/3-131101-calyx_PN_KC_contact_block.json +3688243f5e477ea991d118909263c0a0ff3fc6be8c71924e49d14d1b0f687b30 regression/3-131101-frozen_reference.json +71ff0a2d2ff00dcaf0b73e71edcd914f997b6698f2edecc3ad1890d2b368de44 regression/3-131101-whole_PN_output_block.json +780f101c402d02f199efd7e4da12464f3d92af5dce3ec0ac07b7db298eb4b5d5 regression/4-131101-all_PN_KC_block.json +eff14126327297664b469447643edf0a6715fb6f63694a32be8de5ff7121dfd7 regression/4-131101-calyx_PN_KC_contact_block.json +8861144ebca5477c2d26b821123223ff9493e2f3469ed647c5e3cd9798b1973e regression/4-131101-frozen_reference.json +78a82eb5862db7e8c98e50307112c62caa55377a42bc971e6416f74d69295cd4 regression/4-131101-whole_PN_output_block.json +dc5a9055739131fceac3824357c103116870b00244801e60bb441c522a37aa8b regression/5-131101-all_PN_KC_block.json +aa2ebf99bb706524a25d3bbc1047ee0604e37572dbe037854d8d2e9b55945166 regression/5-131101-calyx_PN_KC_contact_block.json +a863e8bee672db98e9fbbf6fac8a00ebb6ddf003658dfc04a47aed25e56e1c61 regression/5-131101-frozen_reference.json +739eb5af0a8ce21470307d57e160c31fa1504c4a0725b85e9e015fd90d733a71 regression/5-131101-whole_PN_output_block.json +22e3f76d2971117550a43438ec4c12e6f592dc6d8a55b6abae6f31c06056b408 regression/final-integrity.json +31912ae3b9dc77713c5d0ac6c3e5af94b360f8c8911e0078831a2f7e4f1cba33 regression/five-frozen-trials.json +2ec053136d7744a8f158a1028d3e35a9e11424c402fb588ec977920a2c310a67 regression/fixed-event-replay.json +22e3f76d2971117550a43438ec4c12e6f592dc6d8a55b6abae6f31c06056b408 regression/preflight.json +d5e28ea53f1b2da7050ca66e4159a430fe330e9ff349ee95cd2e39c2402be99e regression/restored.json +4f6287aaf4324986a8c41bdbf06b784ab1d612558fa1204d1a587108788f63f4 regression/run-start.json +7039bb7de7c47f6b2fd29ce7ab8bc86aebd0266579f5abc9518d1f4dc8a21644 regression/unit-tests.json +ae083713cc4b4da9c54d1184889c953e0a8673dcd4c9ad466058d92a2418252e replay/fixed-event-scope.csv +3dad1e907d601202ac3ae94a0e970eb47e28f60360c69867ec084c41e23682e4 requests/0-131101-all_PN_KC_block.parquet +3dad1e907d601202ac3ae94a0e970eb47e28f60360c69867ec084c41e23682e4 requests/0-131101-calyx_PN_KC_contact_block.parquet +056d260ad9ac6bc25dfd3d93439ed1ffdf10d8cf202c9e12cde48d2b4c54cb9a requests/0-131101-frozen_reference.parquet +ab3d71145e3c26aa2d706686b17d35c73c48a2493f04b850e4a99ac27da8b1b8 requests/0-131101-whole_PN_output_block.parquet +b3acab9cfc958ea8397d1e7c4dfdc309743c8c183b16bf249d9f5b362d240aa2 requests/0-scheduled.npz +bef3f81a3e139a1528a732d2008d0b7f87f4baafd060f2df54e93fab56cbb3e5 requests/1-131101-all_PN_KC_block.parquet +9c86e4ef2bb21ca6d1b1a6a7ffccee28eff70065bdde9ba67cb809642a12141f requests/1-131101-calyx_PN_KC_contact_block.parquet +0a3ba010a7ca0a8641ab020f424f11302d48a411e72679020afcc5dfc6b5f1ab requests/1-131101-frozen_reference.parquet +8eb9c25cbcf79b7a440b5f31d60b6c8311bb771a3562ea4ef0e99089e009dfc4 requests/1-131101-whole_PN_output_block.parquet +4ba4ab357be3a36240985c50081f79f1b51d88dbb9732878c4ef767a3f83cc8a requests/1-scheduled.npz +631c58d841868b7d146fbe44222a2c78f8b0974140ddd562c936f2b40bc309ae requests/2-131101-all_PN_KC_block.parquet +631c58d841868b7d146fbe44222a2c78f8b0974140ddd562c936f2b40bc309ae requests/2-131101-calyx_PN_KC_contact_block.parquet +40ebd12c2ce7f16a4d3c97e8e9a9b4d711b40abd0f195a8deb28423468bfc79b requests/2-131101-frozen_reference.parquet +fa317a476da0399d2c2d9417710c9b2f44853348c7ceb347c72f00df7969937f requests/2-131101-whole_PN_output_block.parquet +5a5d9c03e9f5c7b7d913d3301167951e6d879deec99a5ab30433f4fe9f7cb45c requests/2-scheduled.npz +51b6123fd7ff6f11b83fba88ed530ffb22b929cf03fe022ddebc131454ad3ff4 requests/3-131101-all_PN_KC_block.parquet +55f420b8c44a739a7ec2633282826f2a2cb66cdd2366969e171bfe7505ed387c requests/3-131101-calyx_PN_KC_contact_block.parquet +e4b05f8d1ccb81dbbf355b764e24846d891f5cf067dae31b4fd6d7ec2dca6fb6 requests/3-131101-frozen_reference.parquet +25d8bed34c4e89dc83d21dcd15f5dbb19c052279c88b3d8684220760fabca08c requests/3-131101-whole_PN_output_block.parquet +fa4156dd4d01229c7f1597012850fc7c146914fcbd1fa65a97fd47a64d527a5d requests/3-scheduled.npz +a4ba8ef0a20f3b316810e50d20839f9c0d0fb832c6455d536df4983d569658a0 requests/4-131101-all_PN_KC_block.parquet +a4ba8ef0a20f3b316810e50d20839f9c0d0fb832c6455d536df4983d569658a0 requests/4-131101-calyx_PN_KC_contact_block.parquet +09eb1de00266368de2aa0b5a086dc3269dd0a38f3bfa09d5b24bc38e621da55e requests/4-131101-frozen_reference.parquet +3d54dcb034548fe825127080e040c5f2327264f8fa94e7785740807ab8165a26 requests/4-131101-whole_PN_output_block.parquet +ac73e1ce6410e0aabdb794459c65bdcfe76e8da9e8d95bd60c84802cf928ae8d requests/4-scheduled.npz +9ea2f433d3b22ade9a9b3c20fa9d7a2e325011eb53304b38b15b18ff0b985129 requests/5-131101-all_PN_KC_block.parquet +9ea2f433d3b22ade9a9b3c20fa9d7a2e325011eb53304b38b15b18ff0b985129 requests/5-131101-calyx_PN_KC_contact_block.parquet +525feff11f344e4894d23d6b1233c111a0aa392a4db699e486b6b79f4753a983 requests/5-131101-frozen_reference.parquet +884769d20ff28b10b0ffc25a90aef8c0e05badb47225f1cbe0885e16b70eb012 requests/5-131101-whole_PN_output_block.parquet +5257f5f8ddb3c21daf1b95ec1ccdded54fd411088cc716ba118f17b6e771114d requests/5-scheduled.npz +f8d9d8318515cad98fa232891893439a50acd253d7436ae2b4225071d2e9f03d states/0-131101-all_PN_KC_block-watched.npz +ae0d9f975329008cd009fae8f2bf45ce2203133e1e5720dc1361cfabde3912fe states/0-131101-all_PN_KC_block.npz +7efe6247b0932751aa88064f86d9fa48e89bd8154501176ac9b9370d82e4fcb3 states/0-131101-calyx_PN_KC_contact_block-watched.npz +8d14bf9207b5341fc8225a5459a68af8bbcbfd03b2f04ff95260c3ec4af7be77 states/0-131101-calyx_PN_KC_contact_block.npz +12ef82cf65581f494b2fea6f3fcd6428e8dcb642e58cefd6ddc810ace15e1d0b states/0-131101-frozen_reference-watched.npz +8cb75b2c7588748a4b71e3d2aab878b2ff8b0f718ffa4839507f83eb2ab32954 states/0-131101-frozen_reference.npz +cf52c567a7ca5adc9ccac8d2de1af265d84a632da9248bd7d87904e6bb8b9fec states/0-131101-whole_PN_output_block-watched.npz +b833f7be6bc76341480935cdc14ab6231f9ff502a21250a02af975eacaca8edb states/0-131101-whole_PN_output_block.npz +c7a39e5940638250c176dd0c357283103d2d5bb75d3a9f2355d110446b1fba78 states/1-131101-all_PN_KC_block-watched.npz +f0f720afa8417e084ed6b8668c89954f5f73b105987b2468e36c4f3a70521f59 states/1-131101-all_PN_KC_block.npz +2d97c7ca9070e10cfc77c0048fb2b27d00c489c2ae0f168cade10faf2d453cee states/1-131101-calyx_PN_KC_contact_block-watched.npz +9e3b7d8b4b59d8252e78e306a1dfcf1264326f9ecb0a182b64290ff1c0718589 states/1-131101-calyx_PN_KC_contact_block.npz +f183d8c5857472b8ffc3284be604828e9ddea4cbcdfbd299ba96fe3b7ca81c98 states/1-131101-frozen_reference-watched.npz +ae4d6b809bf44133bd87de3c7ee969e95a903e0a2ec0fca8002325cbb03b0ef1 states/1-131101-frozen_reference.npz +57931d95e6b3eeaaf69fbdb3a69b7512a186ac72f613b5a87f9ed69fba511f2f states/1-131101-whole_PN_output_block-watched.npz +040d893e095f5c0cb7413cd8f5922f7bd4b49b12ce73d0f7ef31078bb25e5ef3 states/1-131101-whole_PN_output_block.npz +565445dad0afa6767a0cd4db5829666513f4b509706ada63778853bf2f20e7d6 states/2-131101-all_PN_KC_block-watched.npz +e8753a3bd49c7b7c99f0deae6c6ae0d9a4a210065e5d520e4ae9afc6c2b9bc51 states/2-131101-all_PN_KC_block.npz +ed7f30d8e409c1f539de4c46f1a212fba4ba21102e5d381d8d0468ea911e9b9b states/2-131101-calyx_PN_KC_contact_block-watched.npz +79596be88ad828ac25fd91fab363899f55a50b3ea337c1f69ddc8f2ea02556ee states/2-131101-calyx_PN_KC_contact_block.npz +3dc6c3239847e7b57e936cb9fdee961b4cb0cc97f29a79015a78c8c76c6e3e40 states/2-131101-frozen_reference-watched.npz +3885e3be3790851a38df68d9ecd4fc6d709ab2df2ed9dfc6cd20088685d47585 states/2-131101-frozen_reference.npz +03ae942e80df043b3f24e99438af974a958ad4605bcc4994dd56184f4649ca5e states/2-131101-whole_PN_output_block-watched.npz +68929be61bf57cc2e339010be89569507bd86e19414b80d72a65a9802539de8b states/2-131101-whole_PN_output_block.npz +c4ae92e319e795b6c596e2f7af5a61e55bff3445f96b9e345c267990fae6e41c states/3-131101-all_PN_KC_block-watched.npz +8b175b4fac0f5821cdc9f894810eeea7797109b93f1cf88b020462f6a46a03a1 states/3-131101-all_PN_KC_block.npz +a3c252fca88b4463953f2badf1b1028ac831ca86db0e3a6b6235dcdd6d6dd339 states/3-131101-calyx_PN_KC_contact_block-watched.npz +dfea1fa07ce87fbd1cc34c2f6e799050a8e7e034a6b1be0c746073019edd7371 states/3-131101-calyx_PN_KC_contact_block.npz +efcfdb65dd96bfb389ce06b0c93165dbe711724c369124659216e99f776731b3 states/3-131101-frozen_reference-watched.npz +a2d453db134e2afa29d0acdaf114657d4a9ecf5eac9761fd8d20e81488f8deb5 states/3-131101-frozen_reference.npz +9c10800139d86f4bd6735e9629b77b05116425259122cdc801c814a8bcb31909 states/3-131101-whole_PN_output_block-watched.npz +ac5cd9159719e446682035150570b3a82242278b3df6e3285d7d8872cb2ad31c states/3-131101-whole_PN_output_block.npz +112c62d3fb7b37c89e8bb7c8f6ce26faccf710a9626b36fe9e2e6ae60c723f97 states/4-131101-all_PN_KC_block-watched.npz +5cd00244ad955e2ade3a1c11a438f71fd45fbe44b6c984f1d89df821cce01dee states/4-131101-all_PN_KC_block.npz +f6d97fd0afa95066a8c92b6a9a4b2134703ac20f8c3b85518e149ade35d0322a states/4-131101-calyx_PN_KC_contact_block-watched.npz +72022e2237532dfbc765519009f097bbc74adb12cc8d0f6e467d2cb43ed749e3 states/4-131101-calyx_PN_KC_contact_block.npz +1500add748659784162eac2d42719e210839b24a048b9f13a799ac82db1d22be states/4-131101-frozen_reference-watched.npz +7c47edf74d96c6a6d78127f5794842ec0ec6517476824f510111b6ae7db84484 states/4-131101-frozen_reference.npz +7a1ea781bf2654c81662aa44fde08e48cddc9c6f7e4a63092edf9434db3f794b states/4-131101-whole_PN_output_block-watched.npz +9010e095f29ae73cd3c41cc56668421a4a26fcdf168f4292c370a6472d4bac52 states/4-131101-whole_PN_output_block.npz +4e9cdec61c2871b52e2ebee9c76d006b236b01000b24558061f964f2220ded4a states/5-131101-all_PN_KC_block-watched.npz +5a5bbea421409a33d4b5637f73652bd9bf12ccc2441d69946830a754ba4931f0 states/5-131101-all_PN_KC_block.npz +29bb7a2f41c8113551bc469f57dd1be80c2ddf8525ae35d64cf68d1937e62220 states/5-131101-calyx_PN_KC_contact_block-watched.npz +01276b2d98fad5762e89bc7cd25292e8c78f4032cfddc8f25c81e0e2fcfc3de9 states/5-131101-calyx_PN_KC_contact_block.npz +707f4fed38d0dffc8a581a54b2cdbfce7dbaa0f25f630830df0c7214ec7549fd states/5-131101-frozen_reference-watched.npz +1f296417629abbfdaa5a289d42e607655d930b2b78ede983a000a162eb954e53 states/5-131101-frozen_reference.npz +87b94583d373d4e0a71733f9b67165360d7d646f54f2cb0d3ae842eadb532d87 states/5-131101-whole_PN_output_block-watched.npz +bba613671dd0f6f0a4dc450f20a55eaefe1d6026238adb23d9ec89b91f304934 states/5-131101-whole_PN_output_block.npz diff --git a/registry/phase4ab-terminal-scope/evidence/gpu-reference/extension.json b/registry/phase4ab-terminal-scope/evidence/gpu-reference/extension.json new file mode 100644 index 0000000..83a0497 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/gpu-reference/extension.json @@ -0,0 +1,17 @@ +{ + "binary": "/data/digital-drosophila/experiments/phase4ab-terminal-scope/gpu-reference/extension-build/male_cns_lif_deterministic_v2_ext.so", + "binary_sha256": "328cdf2dd588ee875ffa06d9da5f77165e82b7ab1e62395135798116d6b3f0fc", + "build_seconds": 58.095501807008986, + "flags": { + "cuda": [ + "-O3", + "--fmad=false", + "-std=c++20" + ], + "cxx": [ + "-O3", + "-ffp-contract=off" + ] + }, + "status": "PASS" +} diff --git a/registry/phase4ab-terminal-scope/evidence/manifest.json b/registry/phase4ab-terminal-scope/evidence/manifest.json new file mode 100644 index 0000000..e2288fe --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/manifest.json @@ -0,0 +1,1000 @@ +{ + "created_utc": "2026-09-29T16:26:06.730057+00:00", + "files": [ + { + "bytes": 2388, + "path": "INTERPRETATION.zh.md", + "sha256": "50d11647abe23cd7f259d6835e20fa46bfe0cdfe248d75ae69c6b21051b3680d" + }, + { + "bytes": 3990, + "path": "REPORT.md", + "sha256": "8d0c3ffbc718ada68cd4590a21726dd9c221269384e6aded32ca4731b21a983f" + }, + { + "bytes": 232, + "path": "audit/ROI-partition.csv", + "sha256": "2bd15ebf2718fdf06bfc968617b5a5fc72ebfd2a965559942876e40d168a229e" + }, + { + "bytes": 62078, + "path": "audit/all-259-APL-target-PNs.parquet", + "sha256": "4b35fc3bd77bd31a29ad30a9d5d16f0f29261518645cc565e08c62b0a884e977" + }, + { + "bytes": 289137, + "path": "audit/all-PN-KC-contact-partitions.parquet", + "sha256": "978c1ca48c392d573fc3ebc9b67eae1b8fd5ceb1c0033ed3ffa57173c1688dbc" + }, + { + "bytes": 316890, + "path": "audit/all_PN_KC_block-effective-overlay.parquet", + "sha256": "63e700cfbd277ff9e08a45b680cfecea42ed7cd039e0b493d6860f755bfd8d17" + }, + { + "bytes": 310704, + "path": "audit/calyx_PN_KC_contact_block-effective-overlay.parquet", + "sha256": "e0c968e8974ea7bd12daf98a4563349e50a77468892b5ebe2b1bb7c425b5c836" + }, + { + "bytes": 754, + "path": "audit/condition-ranges.csv", + "sha256": "c7c27fcbcb3f5c341b3fbdc6783e46405b0ceb520d34da1cb654633d57c0dd2f" + }, + { + "bytes": 274, + "path": "audit/final-service-health.json", + "sha256": "0397c6d86eb5fd7282cbb3b06927b7627760aeedbaf176cf870257f93cd161f1" + }, + { + "bytes": 912, + "path": "audit/final-summary.json", + "sha256": "954e12d578df65f3e0891ad5c260b2d6a01a16de5d8f4168bcfbccda1ce6700f" + }, + { + "bytes": 587, + "path": "audit/mechanism-interpretation.json", + "sha256": "aa39952c5e3f5842c3fcc6ee6462ff15abef78729ccda1e3d3854b7b939173ca" + }, + { + "bytes": 384, + "path": "audit/narrow-vs-allKC.csv", + "sha256": "00ec322b8e9c4900deaadda4eac8d604c61c88685fe3409f0dc8169c6057c055" + }, + { + "bytes": 4326, + "path": "audit/observed-APL-PN-ROI-pairs.parquet", + "sha256": "095803667092a53d2bf7bbd4bb5904f9efe0ae0d74e92f579bb1f722478bfc23" + }, + { + "bytes": 13321, + "path": "audit/population-counts.csv", + "sha256": "7347919244fd27c2ecf7191d24302cb203769976604c4bd1c650a450c9f34604" + }, + { + "bytes": 372, + "path": "audit/remaining-late-KCs.csv", + "sha256": "1f6e83038ce0ebb1ac97b5c53a07fefdd0aa183d0490e6259a47070961a4fcb1" + }, + { + "bytes": 1361, + "path": "audit/request-comparison.csv", + "sha256": "b9ead245b439d22ecac202db3c15e9dae9882aac8af318895039c9f676c97f63" + }, + { + "bytes": 176, + "path": "audit/run-complete.json", + "sha256": "a0038972a067a029a607920bfb441519950511cad54853d5fa33067e61273b8b" + }, + { + "bytes": 616, + "path": "audit/scope-summary.json", + "sha256": "67a8ce7fe5677fd7ab6e516f68254b4eb941a2f9f702de34027f69e91ce626de" + }, + { + "bytes": 3810, + "path": "audit/trials.csv", + "sha256": "f9e0fd08cc5a2fe650749b06b3ca631b1c8258f3f1e40690458dbc5668920deb" + }, + { + "bytes": 17593, + "path": "audit/watched-counts.csv", + "sha256": "4256b8a89e2d5f55ca7b0ef2a45110dd0593994e3416a1de14144908f2a941af" + }, + { + "bytes": 1736932, + "path": "audit/whole_PN_output_block-effective-overlay.parquet", + "sha256": "159dcef426274c69b810d982bad4961b2f467d70b057c855586e17fc4a65c18d" + }, + { + "bytes": 2122574, + "path": "events/0-131101-all_PN_KC_block.parquet", + "sha256": "7329672e081300537d77be3fb5abdd138d400ead500b5cb2093618cb556ea1cb" + }, + { + "bytes": 2122574, + "path": "events/0-131101-calyx_PN_KC_contact_block.parquet", + "sha256": "7329672e081300537d77be3fb5abdd138d400ead500b5cb2093618cb556ea1cb" + }, + { + "bytes": 2128269, + "path": "events/0-131101-frozen_reference.parquet", + "sha256": "f2c738cce81d56dc38b15d3ed04f9ca9ef99e63ab121b868bbb234b640235ad4" + }, + { + "bytes": 2563, + "path": "events/0-131101-whole_PN_output_block.parquet", + "sha256": "d6a7d5c6d6668d36f0514ae4f20eef3b9e60f9e555efb334cc35e9efca74520d" + }, + { + "bytes": 2116774, + "path": "events/1-131101-all_PN_KC_block.parquet", + "sha256": "eb96617dceffcb61be45de886e062ff86df2177e7ddcaf370c62d22307abf566" + }, + { + "bytes": 2110322, + "path": "events/1-131101-calyx_PN_KC_contact_block.parquet", + "sha256": "031ede1f2d136da0e3cac6c1f524eae3def616b74b2366bbdd4e4a8a33f024ab" + }, + { + "bytes": 2114990, + "path": "events/1-131101-frozen_reference.parquet", + "sha256": "edd3c442deb71e7db6e058ee0c5ed51f67c71b72f1f21e74d2c68cfe7531fb96" + }, + { + "bytes": 2767, + "path": "events/1-131101-whole_PN_output_block.parquet", + "sha256": "20a6010a52c0c13bbcfe36a8b31b1c95d0dff4917a7a36b48ce727601de04719" + }, + { + "bytes": 2121830, + "path": "events/2-131101-all_PN_KC_block.parquet", + "sha256": "37ea82b729e27f3833ac93faa5411b55b3b4d5df258f9975c637e758fc001aad" + }, + { + "bytes": 2121830, + "path": "events/2-131101-calyx_PN_KC_contact_block.parquet", + "sha256": "37ea82b729e27f3833ac93faa5411b55b3b4d5df258f9975c637e758fc001aad" + }, + { + "bytes": 2126745, + "path": "events/2-131101-frozen_reference.parquet", + "sha256": "a0112b88296e49dd142c1b217d1da501a958edbfde63559180cf858b2f24ab41" + }, + { + "bytes": 2418, + "path": "events/2-131101-whole_PN_output_block.parquet", + "sha256": "b78a97859869be17fdf07cfaec55a6ffd26c047df2521b4ebfdaf8069fc3857d" + }, + { + "bytes": 2113860, + "path": "events/3-131101-all_PN_KC_block.parquet", + "sha256": "fa5fbbbeba2266275ab60bb5aa43e6a556d7acb05c0e2e74792deb69c7886e87" + }, + { + "bytes": 2104489, + "path": "events/3-131101-calyx_PN_KC_contact_block.parquet", + "sha256": "ce408e93502105daa3c3598ad83916e1573a2b51094b601d8227ceec6c9e04c5" + }, + { + "bytes": 2115829, + "path": "events/3-131101-frozen_reference.parquet", + "sha256": "361d560293461a5dfd8b921ef2086c6416f0111c2bdbee8239a1785756f4e750" + }, + { + "bytes": 2355, + "path": "events/3-131101-whole_PN_output_block.parquet", + "sha256": "815ad98fdebb558d6d97f7857286aa26325eda6a07731003b01f2760e0ad74c8" + }, + { + "bytes": 2098221, + "path": "events/4-131101-all_PN_KC_block.parquet", + "sha256": "b425e99cb678e2905b301c3d8955622f5f846b8cb95be56bc1d6a4ec8927e3a4" + }, + { + "bytes": 2098221, + "path": "events/4-131101-calyx_PN_KC_contact_block.parquet", + "sha256": "b425e99cb678e2905b301c3d8955622f5f846b8cb95be56bc1d6a4ec8927e3a4" + }, + { + "bytes": 2110694, + "path": "events/4-131101-frozen_reference.parquet", + "sha256": "4a21d82b254a64327bb58cd46e6360b93919837b18f7813b2887236438a65b8e" + }, + { + "bytes": 2195, + "path": "events/4-131101-whole_PN_output_block.parquet", + "sha256": "92fa0bb6d40117291d637e039b75fab5acb95fa2900e349458548ab678ecc175" + }, + { + "bytes": 2131675, + "path": "events/5-131101-all_PN_KC_block.parquet", + "sha256": "68af6e003289e6c5db21ed257f23cc1ffa576f0699054b5eed6e9f19f0bc198c" + }, + { + "bytes": 2131675, + "path": "events/5-131101-calyx_PN_KC_contact_block.parquet", + "sha256": "68af6e003289e6c5db21ed257f23cc1ffa576f0699054b5eed6e9f19f0bc198c" + }, + { + "bytes": 2132144, + "path": "events/5-131101-frozen_reference.parquet", + "sha256": "c6868dc73bcdf64e19b89bd001f53c775d8c603fa482af19299afa4bef94966d" + }, + { + "bytes": 2905, + "path": "events/5-131101-whole_PN_output_block.parquet", + "sha256": "18c2b6537414fc88ec6d7af9a3e6d17ae355cca27f802ace6862a3bb86bcb703" + }, + { + "bytes": 723996, + "path": "gpu-reference/extension-build/.ninja_deps", + "sha256": "7d80cc0eaacb0e82c95eeee504bdab6398e821faa43b04f0fb15882952d3d2d8" + }, + { + "bytes": 224, + "path": "gpu-reference/extension-build/.ninja_log", + "sha256": "4c72a7a59bad7ea9d919b94dd98eff0a060a253078f52e91807d45d0ee2ccc05" + }, + { + "bytes": 2109, + "path": "gpu-reference/extension-build/build.ninja", + "sha256": "c570f72b9a2f486e104ed3bf5b1b9f2ccc729ecab02046cd62389d629fb4f48f" + }, + { + "bytes": 0, + "path": "gpu-reference/extension-build/lock", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "bytes": 291280, + "path": "gpu-reference/extension-build/male_cns_lif_deterministic_v2_ext.so", + "sha256": "328cdf2dd588ee875ffa06d9da5f77165e82b7ab1e62395135798116d6b3f0fc" + }, + { + "bytes": 101992, + "path": "gpu-reference/extension-build/phase4p_ext.cuda.o", + "sha256": "f1db36d694e76b5eabc790f173103db79108d8427d354d143304f93f659ddc7f" + }, + { + "bytes": 377136, + "path": "gpu-reference/extension-build/phase4p_ext.o", + "sha256": "27d284f6a369221a931251b5a03ce133cc8231a97942567d4efafbfb45483811" + }, + { + "bytes": 443, + "path": "gpu-reference/extension.json", + "sha256": "eb664fc02ec10508dfca36b107ab8f083d682113d172f4183aed7b766d96dd45" + }, + { + "bytes": 275493, + "path": "masks/all_PN_KC_block.parquet", + "sha256": "07ea3fa9fe2a4e093cff38aba9aab4e7a018f32c108542fc773110f0a43a8293" + }, + { + "bytes": 258022, + "path": "masks/calyx_PN_KC_contact_block.parquet", + "sha256": "0e2585cdb7d44b24f4579d90149f9bb7738718164036dde910be2d94a67370fc" + }, + { + "bytes": 1474281, + "path": "masks/whole_PN_output_block.parquet", + "sha256": "95f800944d01738e3d36da64a17c9bd37b8372fd8ba165bdcd31a94da0fdee29" + }, + { + "bytes": 60846, + "path": "observations/0-131101-all_PN_KC_block.parquet", + "sha256": "9f87e056f34222f34cbe5bcd109a45ede202baeea2e2b9bca909c326d5c6ec44" + }, + { + "bytes": 60957, + "path": "observations/0-131101-calyx_PN_KC_contact_block.parquet", + "sha256": "55cdf371f17626e66c3bd2ed7ace8cfdaa53f383d1f112cf04f2c8b21ce607ef" + }, + { + "bytes": 63068, + "path": "observations/0-131101-frozen_reference.parquet", + "sha256": "e8efc04cf282a0c3fac306dadcbc44f8fd9c13fe2754b753cb7c562db89c6138" + }, + { + "bytes": 56474, + "path": "observations/0-131101-whole_PN_output_block.parquet", + "sha256": "182f0c3798a9c629a1e1460983ed2061b16d55f5ea82de048444d28998553061" + }, + { + "bytes": 61036, + "path": "observations/1-131101-all_PN_KC_block.parquet", + "sha256": "01937268b8a6299d2b1ab5486b8dcdaff8866b7826e34f4ad3a6bbf77fc74fa4" + }, + { + "bytes": 61172, + "path": "observations/1-131101-calyx_PN_KC_contact_block.parquet", + "sha256": "dd0ac4ba7c774c8d475f944c8511c965d7dc574329ecfac9157b3f68f52438ae" + }, + { + "bytes": 63418, + "path": "observations/1-131101-frozen_reference.parquet", + "sha256": "fc37e5a8befec43f187ed68e4de8399c2cb895cda03998a8ce29fcb7b5488efe" + }, + { + "bytes": 56821, + "path": "observations/1-131101-whole_PN_output_block.parquet", + "sha256": "3c031ca5fa45f3f974337361273d1b432a4182f61cfadf2d3fb348ad1a9ffc56" + }, + { + "bytes": 60734, + "path": "observations/2-131101-all_PN_KC_block.parquet", + "sha256": "4dd772a7358a75d4f674027bf5bdaaa8ee609cfdd86a34e88cc9a28ffd42b7dd" + }, + { + "bytes": 60897, + "path": "observations/2-131101-calyx_PN_KC_contact_block.parquet", + "sha256": "68f9b88919cf4e98a343c047c92c0dd261b681f106a53f8846c6d7704bae8390" + }, + { + "bytes": 63196, + "path": "observations/2-131101-frozen_reference.parquet", + "sha256": "30462668f2fe3b8051f60e94f3a25d895ac68bfcf9b1ca7fbff0ec07450aa524" + }, + { + "bytes": 56574, + "path": "observations/2-131101-whole_PN_output_block.parquet", + "sha256": "68902b930d81216184358b38c8ac0132dc6ed201345af9a47e9e52bbb5ab3d2b" + }, + { + "bytes": 60486, + "path": "observations/3-131101-all_PN_KC_block.parquet", + "sha256": "032642e1b288f6fc6f3a438f995dad5043a54df724db135b45b492f6c8365f05" + }, + { + "bytes": 60574, + "path": "observations/3-131101-calyx_PN_KC_contact_block.parquet", + "sha256": "07e204e3dd51bba6f777e1142d3561987642b7bbc28208ddd4df0159bbbdfaab" + }, + { + "bytes": 62862, + "path": "observations/3-131101-frozen_reference.parquet", + "sha256": "c42c6b392de967fad1d8dc3c46a3d1f936fc7065b3223290d57b99ac7783627d" + }, + { + "bytes": 56209, + "path": "observations/3-131101-whole_PN_output_block.parquet", + "sha256": "47baffba5864df085baf621c5bcce08b416a5123f1a436b1fb7e4a5b1baeb323" + }, + { + "bytes": 60355, + "path": "observations/4-131101-all_PN_KC_block.parquet", + "sha256": "36357d0ec81d346ab9345e2d976cca64e0cdf2b2730578e02abfea16a3d998f4" + }, + { + "bytes": 60511, + "path": "observations/4-131101-calyx_PN_KC_contact_block.parquet", + "sha256": "1e1f38419a55ea53984b9c094e1ef2e0ce49120ad68ceeffb2cad0f94dbf7b5c" + }, + { + "bytes": 62804, + "path": "observations/4-131101-frozen_reference.parquet", + "sha256": "59f491996efcab80c65342d8b6b9068ce7ba2c90e7cf9ec59642a2bfc225a0db" + }, + { + "bytes": 56116, + "path": "observations/4-131101-whole_PN_output_block.parquet", + "sha256": "14c4bfc60bd0c479d35f1e8f193372c5845f2451c91370c74e33c513cb4c023b" + }, + { + "bytes": 61153, + "path": "observations/5-131101-all_PN_KC_block.parquet", + "sha256": "a728612a3a1f5b00c8508102e9af06dfb18c63728b94e39322598fbf19f140e0" + }, + { + "bytes": 61190, + "path": "observations/5-131101-calyx_PN_KC_contact_block.parquet", + "sha256": "7e5a944d402aeeaa70ea183cdeed091cd69927324ea5d4c3142b491442b8f8b3" + }, + { + "bytes": 63588, + "path": "observations/5-131101-frozen_reference.parquet", + "sha256": "1979a8bc73379be06d4cbd5923f5f8ab5cebbe70a1a4919695c2d3363899a587" + }, + { + "bytes": 56974, + "path": "observations/5-131101-whole_PN_output_block.parquet", + "sha256": "023e9b18d368ae28171b63ff73122e55b8da8e9a0f4b482004cbc73c759900fd" + }, + { + "bytes": 237, + "path": "performance/summary.json", + "sha256": "93a5b9bc4de3bf479916ae4b701fa7e23b570c442559e95a7aeabb7b33cd5410" + }, + { + "bytes": 2163, + "path": "protocol/calibration-panel.json", + "sha256": "2b3ca78bf0946c757b7784719a6a7a06598941867df2a243a272a61337d2c889" + }, + { + "bytes": 1049, + "path": "protocol/environment.json", + "sha256": "da2d2e47d2bc3ab214203723cac30a1386b09008e07118f460039e496b0b88f4" + }, + { + "bytes": 1341, + "path": "protocol/forcing-hashes.json", + "sha256": "073a6ab1b615e9abdb06e5a6775366c3978ce7794714949de1a5f714edf98ec7" + }, + { + "bytes": 4965, + "path": "protocol/imported-code-hashes.json", + "sha256": "4795fae3b3a320deff14f32e4722e94ade17e464b1fbf19315a1cb1769eb1927" + }, + { + "bytes": 1429, + "path": "protocol/input-hashes.json", + "sha256": "24cba080c7b72da8f40e406f1403646ff11c3cc34d9870991874575a486e3e27" + }, + { + "bytes": 1148, + "path": "protocol/launch-addendum.json", + "sha256": "1eaf84efbcd9a7f5852b8d0feb4fd57b5f01f7211080923bb3fa63dadeaa1b7f" + }, + { + "bytes": 310, + "path": "protocol/mask-hashes.json", + "sha256": "6cee0248b8fb13a99f997c75a06542f26a1e9f5df8c8771ea997a5dc2de9d6b3" + }, + { + "bytes": 1742, + "path": "protocol/preregistered.json", + "sha256": "da8da4efa93ba69867ef732cb9d328576c5fd5b82f483803bd330f597b32e61b" + }, + { + "bytes": 248, + "path": "regression/0-131101-all_PN_KC_block.json", + "sha256": "0980b7d3689cf626401d13728960c77a5f32d63fe61c5fb21869b36003ca890d" + }, + { + "bytes": 258, + "path": "regression/0-131101-calyx_PN_KC_contact_block.json", + "sha256": "fc2d7c3fd66b1816dd569721b1ffe16fb3d04195e0f39e54311235f996263e18" + }, + { + "bytes": 401, + "path": "regression/0-131101-frozen_reference.json", + "sha256": "f0bdabde30646bbfddef9a6bc346a14e9a268ea096bf1495ade09ccb7257441b" + }, + { + "bytes": 254, + "path": "regression/0-131101-whole_PN_output_block.json", + "sha256": "4703574c70cf854d05038a729e072ab48ec2db60746517dc0bd76a4c90984c2b" + }, + { + "bytes": 81, + "path": "regression/1-131101-all_PN_KC_block.json", + "sha256": "104536398ec87802f8ded2ab37cce3311c0af39f74533e712c8f827eb42d738b" + }, + { + "bytes": 91, + "path": "regression/1-131101-calyx_PN_KC_contact_block.json", + "sha256": "e7a98aa3f9eb31364a6c4f1f09df059162bc6633f527dd0eff44646a5a4e469d" + }, + { + "bytes": 234, + "path": "regression/1-131101-frozen_reference.json", + "sha256": "f1ed3d7a9a6a290295ef477bff09566a9aee08a33c98f9c62519a5f4537c472b" + }, + { + "bytes": 87, + "path": "regression/1-131101-whole_PN_output_block.json", + "sha256": "db90cddc95d283c78b6df8279c50b30a2ebcd02b173a31ddfd1f5da8ca6c85ca" + }, + { + "bytes": 81, + "path": "regression/2-131101-all_PN_KC_block.json", + "sha256": "1ef62eb572ada32b947e8fbbe649dee7842cba3c9cb044b03291383d7ddc7c00" + }, + { + "bytes": 91, + "path": "regression/2-131101-calyx_PN_KC_contact_block.json", + "sha256": "e3e54e240443b1abbb413b27886193fba595a28af8c7277550abc399b482ccd0" + }, + { + "bytes": 234, + "path": "regression/2-131101-frozen_reference.json", + "sha256": "663a6881b31c76bd08350fc757929233173f4af39a89f5bf1b75423ca75ee997" + }, + { + "bytes": 87, + "path": "regression/2-131101-whole_PN_output_block.json", + "sha256": "33153ce2d016e511ea2eaf2beed2af96a2b20de91524346b894f2c04379818f9" + }, + { + "bytes": 81, + "path": "regression/3-131101-all_PN_KC_block.json", + "sha256": "6d4cc009cbc2debf074dab3c0c6b5a134cd3677c22f96aad3f44ed9793f0c2ea" + }, + { + "bytes": 91, + "path": "regression/3-131101-calyx_PN_KC_contact_block.json", + "sha256": "91ff88c1fccfbb98164a1aad137adf0681eaa4ab458ee256060447a42736af42" + }, + { + "bytes": 234, + "path": "regression/3-131101-frozen_reference.json", + "sha256": "3688243f5e477ea991d118909263c0a0ff3fc6be8c71924e49d14d1b0f687b30" + }, + { + "bytes": 87, + "path": "regression/3-131101-whole_PN_output_block.json", + "sha256": "71ff0a2d2ff00dcaf0b73e71edcd914f997b6698f2edecc3ad1890d2b368de44" + }, + { + "bytes": 81, + "path": "regression/4-131101-all_PN_KC_block.json", + "sha256": "780f101c402d02f199efd7e4da12464f3d92af5dce3ec0ac07b7db298eb4b5d5" + }, + { + "bytes": 91, + "path": "regression/4-131101-calyx_PN_KC_contact_block.json", + "sha256": "eff14126327297664b469447643edf0a6715fb6f63694a32be8de5ff7121dfd7" + }, + { + "bytes": 234, + "path": "regression/4-131101-frozen_reference.json", + "sha256": "8861144ebca5477c2d26b821123223ff9493e2f3469ed647c5e3cd9798b1973e" + }, + { + "bytes": 87, + "path": "regression/4-131101-whole_PN_output_block.json", + "sha256": "78a82eb5862db7e8c98e50307112c62caa55377a42bc971e6416f74d69295cd4" + }, + { + "bytes": 81, + "path": "regression/5-131101-all_PN_KC_block.json", + "sha256": "dc5a9055739131fceac3824357c103116870b00244801e60bb441c522a37aa8b" + }, + { + "bytes": 91, + "path": "regression/5-131101-calyx_PN_KC_contact_block.json", + "sha256": "aa2ebf99bb706524a25d3bbc1047ee0604e37572dbe037854d8d2e9b55945166" + }, + { + "bytes": 234, + "path": "regression/5-131101-frozen_reference.json", + "sha256": "a863e8bee672db98e9fbbf6fac8a00ebb6ddf003658dfc04a47aed25e56e1c61" + }, + { + "bytes": 87, + "path": "regression/5-131101-whole_PN_output_block.json", + "sha256": "739eb5af0a8ce21470307d57e160c31fa1504c4a0725b85e9e015fd90d733a71" + }, + { + "bytes": 1025, + "path": "regression/final-integrity.json", + "sha256": "22e3f76d2971117550a43438ec4c12e6f592dc6d8a55b6abae6f31c06056b408" + }, + { + "bytes": 1229, + "path": "regression/five-frozen-trials.json", + "sha256": "31912ae3b9dc77713c5d0ac6c3e5af94b360f8c8911e0078831a2f7e4f1cba33" + }, + { + "bytes": 76, + "path": "regression/fixed-event-replay.json", + "sha256": "2ec053136d7744a8f158a1028d3e35a9e11424c402fb588ec977920a2c310a67" + }, + { + "bytes": 1025, + "path": "regression/preflight.json", + "sha256": "22e3f76d2971117550a43438ec4c12e6f592dc6d8a55b6abae6f31c06056b408" + }, + { + "bytes": 94, + "path": "regression/restored.json", + "sha256": "d5e28ea53f1b2da7050ca66e4159a430fe330e9ff349ee95cd2e39c2402be99e" + }, + { + "bytes": 396, + "path": "regression/run-start.json", + "sha256": "4f6287aaf4324986a8c41bdbf06b784ab1d612558fa1204d1a587108788f63f4" + }, + { + "bytes": 773, + "path": "regression/unit-tests.json", + "sha256": "7039bb7de7c47f6b2fd29ce7ab8bc86aebd0266579f5abc9518d1f4dc8a21644" + }, + { + "bytes": 2511, + "path": "replay/fixed-event-scope.csv", + "sha256": "ae083713cc4b4da9c54d1184889c953e0a8673dcd4c9ad466058d92a2418252e" + }, + { + "bytes": 7798, + "path": "requests/0-131101-all_PN_KC_block.parquet", + "sha256": "3dad1e907d601202ac3ae94a0e970eb47e28f60360c69867ec084c41e23682e4" + }, + { + "bytes": 7798, + "path": "requests/0-131101-calyx_PN_KC_contact_block.parquet", + "sha256": "3dad1e907d601202ac3ae94a0e970eb47e28f60360c69867ec084c41e23682e4" + }, + { + "bytes": 7814, + "path": "requests/0-131101-frozen_reference.parquet", + "sha256": "056d260ad9ac6bc25dfd3d93439ed1ffdf10d8cf202c9e12cde48d2b4c54cb9a" + }, + { + "bytes": 6498, + "path": "requests/0-131101-whole_PN_output_block.parquet", + "sha256": "ab3d71145e3c26aa2d706686b17d35c73c48a2493f04b850e4a99ac27da8b1b8" + }, + { + "bytes": 1668, + "path": "requests/0-scheduled.npz", + "sha256": "b3acab9cfc958ea8397d1e7c4dfdc309743c8c183b16bf249d9f5b362d240aa2" + }, + { + "bytes": 8712, + "path": "requests/1-131101-all_PN_KC_block.parquet", + "sha256": "bef3f81a3e139a1528a732d2008d0b7f87f4baafd060f2df54e93fab56cbb3e5" + }, + { + "bytes": 8691, + "path": "requests/1-131101-calyx_PN_KC_contact_block.parquet", + "sha256": "9c86e4ef2bb21ca6d1b1a6a7ffccee28eff70065bdde9ba67cb809642a12141f" + }, + { + "bytes": 8696, + "path": "requests/1-131101-frozen_reference.parquet", + "sha256": "0a3ba010a7ca0a8641ab020f424f11302d48a411e72679020afcc5dfc6b5f1ab" + }, + { + "bytes": 7181, + "path": "requests/1-131101-whole_PN_output_block.parquet", + "sha256": "8eb9c25cbcf79b7a440b5f31d60b6c8311bb771a3562ea4ef0e99089e009dfc4" + }, + { + "bytes": 1896, + "path": "requests/1-scheduled.npz", + "sha256": "4ba4ab357be3a36240985c50081f79f1b51d88dbb9732878c4ef767a3f83cc8a" + }, + { + "bytes": 7442, + "path": "requests/2-131101-all_PN_KC_block.parquet", + "sha256": "631c58d841868b7d146fbe44222a2c78f8b0974140ddd562c936f2b40bc309ae" + }, + { + "bytes": 7442, + "path": "requests/2-131101-calyx_PN_KC_contact_block.parquet", + "sha256": "631c58d841868b7d146fbe44222a2c78f8b0974140ddd562c936f2b40bc309ae" + }, + { + "bytes": 7495, + "path": "requests/2-131101-frozen_reference.parquet", + "sha256": "40ebd12c2ce7f16a4d3c97e8e9a9b4d711b40abd0f195a8deb28423468bfc79b" + }, + { + "bytes": 6343, + "path": "requests/2-131101-whole_PN_output_block.parquet", + "sha256": "fa317a476da0399d2c2d9417710c9b2f44853348c7ceb347c72f00df7969937f" + }, + { + "bytes": 1452, + "path": "requests/2-scheduled.npz", + "sha256": "5a5d9c03e9f5c7b7d913d3301167951e6d879deec99a5ab30433f4fe9f7cb45c" + }, + { + "bytes": 7027, + "path": "requests/3-131101-all_PN_KC_block.parquet", + "sha256": "51b6123fd7ff6f11b83fba88ed530ffb22b929cf03fe022ddebc131454ad3ff4" + }, + { + "bytes": 7031, + "path": "requests/3-131101-calyx_PN_KC_contact_block.parquet", + "sha256": "55f420b8c44a739a7ec2633282826f2a2cb66cdd2366969e171bfe7505ed387c" + }, + { + "bytes": 7027, + "path": "requests/3-131101-frozen_reference.parquet", + "sha256": "e4b05f8d1ccb81dbbf355b764e24846d891f5cf067dae31b4fd6d7ec2dca6fb6" + }, + { + "bytes": 5975, + "path": "requests/3-131101-whole_PN_output_block.parquet", + "sha256": "25d8bed34c4e89dc83d21dcd15f5dbb19c052279c88b3d8684220760fabca08c" + }, + { + "bytes": 1506, + "path": "requests/3-scheduled.npz", + "sha256": "fa4156dd4d01229c7f1597012850fc7c146914fcbd1fa65a97fd47a64d527a5d" + }, + { + "bytes": 6653, + "path": "requests/4-131101-all_PN_KC_block.parquet", + "sha256": "a4ba8ef0a20f3b316810e50d20839f9c0d0fb832c6455d536df4983d569658a0" + }, + { + "bytes": 6653, + "path": "requests/4-131101-calyx_PN_KC_contact_block.parquet", + "sha256": "a4ba8ef0a20f3b316810e50d20839f9c0d0fb832c6455d536df4983d569658a0" + }, + { + "bytes": 6666, + "path": "requests/4-131101-frozen_reference.parquet", + "sha256": "09eb1de00266368de2aa0b5a086dc3269dd0a38f3bfa09d5b24bc38e621da55e" + }, + { + "bytes": 5807, + "path": "requests/4-131101-whole_PN_output_block.parquet", + "sha256": "3d54dcb034548fe825127080e040c5f2327264f8fa94e7785740807ab8165a26" + }, + { + "bytes": 1523, + "path": "requests/4-scheduled.npz", + "sha256": "ac73e1ce6410e0aabdb794459c65bdcfe76e8da9e8d95bd60c84802cf928ae8d" + }, + { + "bytes": 9122, + "path": "requests/5-131101-all_PN_KC_block.parquet", + "sha256": "9ea2f433d3b22ade9a9b3c20fa9d7a2e325011eb53304b38b15b18ff0b985129" + }, + { + "bytes": 9122, + "path": "requests/5-131101-calyx_PN_KC_contact_block.parquet", + "sha256": "9ea2f433d3b22ade9a9b3c20fa9d7a2e325011eb53304b38b15b18ff0b985129" + }, + { + "bytes": 9129, + "path": "requests/5-131101-frozen_reference.parquet", + "sha256": "525feff11f344e4894d23d6b1233c111a0aa392a4db699e486b6b79f4753a983" + }, + { + "bytes": 6945, + "path": "requests/5-131101-whole_PN_output_block.parquet", + "sha256": "884769d20ff28b10b0ffc25a90aef8c0e05badb47225f1cbe0885e16b70eb012" + }, + { + "bytes": 1871, + "path": "requests/5-scheduled.npz", + "sha256": "5257f5f8ddb3c21daf1b95ec1ccdded54fd411088cc716ba118f17b6e771114d" + }, + { + "bytes": 1069225, + "path": "states/0-131101-all_PN_KC_block-watched.npz", + "sha256": "f8d9d8318515cad98fa232891893439a50acd253d7436ae2b4225071d2e9f03d" + }, + { + "bytes": 1116412, + "path": "states/0-131101-all_PN_KC_block.npz", + "sha256": "ae0d9f975329008cd009fae8f2bf45ce2203133e1e5720dc1361cfabde3912fe" + }, + { + "bytes": 1069464, + "path": "states/0-131101-calyx_PN_KC_contact_block-watched.npz", + "sha256": "7efe6247b0932751aa88064f86d9fa48e89bd8154501176ac9b9370d82e4fcb3" + }, + { + "bytes": 1116378, + "path": "states/0-131101-calyx_PN_KC_contact_block.npz", + "sha256": "8d14bf9207b5341fc8225a5459a68af8bbcbfd03b2f04ff95260c3ec4af7be77" + }, + { + "bytes": 1071023, + "path": "states/0-131101-frozen_reference-watched.npz", + "sha256": "12ef82cf65581f494b2fea6f3fcd6428e8dcb642e58cefd6ddc810ace15e1d0b" + }, + { + "bytes": 1116183, + "path": "states/0-131101-frozen_reference.npz", + "sha256": "8cb75b2c7588748a4b71e3d2aab878b2ff8b0f718ffa4839507f83eb2ab32954" + }, + { + "bytes": 126217, + "path": "states/0-131101-whole_PN_output_block-watched.npz", + "sha256": "cf52c567a7ca5adc9ccac8d2de1af265d84a632da9248bd7d87904e6bb8b9fec" + }, + { + "bytes": 30972, + "path": "states/0-131101-whole_PN_output_block.npz", + "sha256": "b833f7be6bc76341480935cdc14ab6231f9ff502a21250a02af975eacaca8edb" + }, + { + "bytes": 1067296, + "path": "states/1-131101-all_PN_KC_block-watched.npz", + "sha256": "c7a39e5940638250c176dd0c357283103d2d5bb75d3a9f2355d110446b1fba78" + }, + { + "bytes": 1114758, + "path": "states/1-131101-all_PN_KC_block.npz", + "sha256": "f0f720afa8417e084ed6b8668c89954f5f73b105987b2468e36c4f3a70521f59" + }, + { + "bytes": 1067515, + "path": "states/1-131101-calyx_PN_KC_contact_block-watched.npz", + "sha256": "2d97c7ca9070e10cfc77c0048fb2b27d00c489c2ae0f168cade10faf2d453cee" + }, + { + "bytes": 1115740, + "path": "states/1-131101-calyx_PN_KC_contact_block.npz", + "sha256": "9e3b7d8b4b59d8252e78e306a1dfcf1264326f9ecb0a182b64290ff1c0718589" + }, + { + "bytes": 1069512, + "path": "states/1-131101-frozen_reference-watched.npz", + "sha256": "f183d8c5857472b8ffc3284be604828e9ddea4cbcdfbd299ba96fe3b7ca81c98" + }, + { + "bytes": 1114389, + "path": "states/1-131101-frozen_reference.npz", + "sha256": "ae4d6b809bf44133bd87de3c7ee969e95a903e0a2ec0fca8002325cbb03b0ef1" + }, + { + "bytes": 230084, + "path": "states/1-131101-whole_PN_output_block-watched.npz", + "sha256": "57931d95e6b3eeaaf69fbdb3a69b7512a186ac72f613b5a87f9ed69fba511f2f" + }, + { + "bytes": 31089, + "path": "states/1-131101-whole_PN_output_block.npz", + "sha256": "040d893e095f5c0cb7413cd8f5922f7bd4b49b12ce73d0f7ef31078bb25e5ef3" + }, + { + "bytes": 1069328, + "path": "states/2-131101-all_PN_KC_block-watched.npz", + "sha256": "565445dad0afa6767a0cd4db5829666513f4b509706ada63778853bf2f20e7d6" + }, + { + "bytes": 1115560, + "path": "states/2-131101-all_PN_KC_block.npz", + "sha256": "e8753a3bd49c7b7c99f0deae6c6ae0d9a4a210065e5d520e4ae9afc6c2b9bc51" + }, + { + "bytes": 1069497, + "path": "states/2-131101-calyx_PN_KC_contact_block-watched.npz", + "sha256": "ed7f30d8e409c1f539de4c46f1a212fba4ba21102e5d381d8d0468ea911e9b9b" + }, + { + "bytes": 1115507, + "path": "states/2-131101-calyx_PN_KC_contact_block.npz", + "sha256": "79596be88ad828ac25fd91fab363899f55a50b3ea337c1f69ddc8f2ea02556ee" + }, + { + "bytes": 1072009, + "path": "states/2-131101-frozen_reference-watched.npz", + "sha256": "3dc6c3239847e7b57e936cb9fdee961b4cb0cc97f29a79015a78c8c76c6e3e40" + }, + { + "bytes": 1114309, + "path": "states/2-131101-frozen_reference.npz", + "sha256": "3885e3be3790851a38df68d9ecd4fc6d709ab2df2ed9dfc6cd20088685d47585" + }, + { + "bytes": 126668, + "path": "states/2-131101-whole_PN_output_block-watched.npz", + "sha256": "03ae942e80df043b3f24e99438af974a958ad4605bcc4994dd56184f4649ca5e" + }, + { + "bytes": 27973, + "path": "states/2-131101-whole_PN_output_block.npz", + "sha256": "68929be61bf57cc2e339010be89569507bd86e19414b80d72a65a9802539de8b" + }, + { + "bytes": 1064641, + "path": "states/3-131101-all_PN_KC_block-watched.npz", + "sha256": "c4ae92e319e795b6c596e2f7af5a61e55bff3445f96b9e345c267990fae6e41c" + }, + { + "bytes": 1115223, + "path": "states/3-131101-all_PN_KC_block.npz", + "sha256": "8b175b4fac0f5821cdc9f894810eeea7797109b93f1cf88b020462f6a46a03a1" + }, + { + "bytes": 1065429, + "path": "states/3-131101-calyx_PN_KC_contact_block-watched.npz", + "sha256": "a3c252fca88b4463953f2badf1b1028ac831ca86db0e3a6b6235dcdd6d6dd339" + }, + { + "bytes": 1114757, + "path": "states/3-131101-calyx_PN_KC_contact_block.npz", + "sha256": "dfea1fa07ce87fbd1cc34c2f6e799050a8e7e034a6b1be0c746073019edd7371" + }, + { + "bytes": 1067051, + "path": "states/3-131101-frozen_reference-watched.npz", + "sha256": "efcfdb65dd96bfb389ce06b0c93165dbe711724c369124659216e99f776731b3" + }, + { + "bytes": 1116357, + "path": "states/3-131101-frozen_reference.npz", + "sha256": "a2d453db134e2afa29d0acdaf114657d4a9ecf5eac9761fd8d20e81488f8deb5" + }, + { + "bytes": 209585, + "path": "states/3-131101-whole_PN_output_block-watched.npz", + "sha256": "9c10800139d86f4bd6735e9629b77b05116425259122cdc801c814a8bcb31909" + }, + { + "bytes": 31870, + "path": "states/3-131101-whole_PN_output_block.npz", + "sha256": "ac5cd9159719e446682035150570b3a82242278b3df6e3285d7d8872cb2ad31c" + }, + { + "bytes": 1069395, + "path": "states/4-131101-all_PN_KC_block-watched.npz", + "sha256": "112c62d3fb7b37c89e8bb7c8f6ce26faccf710a9626b36fe9e2e6ae60c723f97" + }, + { + "bytes": 1115201, + "path": "states/4-131101-all_PN_KC_block.npz", + "sha256": "5cd00244ad955e2ade3a1c11a438f71fd45fbe44b6c984f1d89df821cce01dee" + }, + { + "bytes": 1069550, + "path": "states/4-131101-calyx_PN_KC_contact_block-watched.npz", + "sha256": "f6d97fd0afa95066a8c92b6a9a4b2134703ac20f8c3b85518e149ade35d0322a" + }, + { + "bytes": 1115157, + "path": "states/4-131101-calyx_PN_KC_contact_block.npz", + "sha256": "72022e2237532dfbc765519009f097bbc74adb12cc8d0f6e467d2cb43ed749e3" + }, + { + "bytes": 1071039, + "path": "states/4-131101-frozen_reference-watched.npz", + "sha256": "1500add748659784162eac2d42719e210839b24a048b9f13a799ac82db1d22be" + }, + { + "bytes": 1115959, + "path": "states/4-131101-frozen_reference.npz", + "sha256": "7c47edf74d96c6a6d78127f5794842ec0ec6517476824f510111b6ae7db84484" + }, + { + "bytes": 124374, + "path": "states/4-131101-whole_PN_output_block-watched.npz", + "sha256": "7a1ea781bf2654c81662aa44fde08e48cddc9c6f7e4a63092edf9434db3f794b" + }, + { + "bytes": 26837, + "path": "states/4-131101-whole_PN_output_block.npz", + "sha256": "9010e095f29ae73cd3c41cc56668421a4a26fcdf168f4292c370a6472d4bac52" + }, + { + "bytes": 1069858, + "path": "states/5-131101-all_PN_KC_block-watched.npz", + "sha256": "4e9cdec61c2871b52e2ebee9c76d006b236b01000b24558061f964f2220ded4a" + }, + { + "bytes": 1115068, + "path": "states/5-131101-all_PN_KC_block.npz", + "sha256": "5a5bbea421409a33d4b5637f73652bd9bf12ccc2441d69946830a754ba4931f0" + }, + { + "bytes": 1070200, + "path": "states/5-131101-calyx_PN_KC_contact_block-watched.npz", + "sha256": "29bb7a2f41c8113551bc469f57dd1be80c2ddf8525ae35d64cf68d1937e62220" + }, + { + "bytes": 1114977, + "path": "states/5-131101-calyx_PN_KC_contact_block.npz", + "sha256": "01276b2d98fad5762e89bc7cd25292e8c78f4032cfddc8f25c81e0e2fcfc3de9" + }, + { + "bytes": 1072197, + "path": "states/5-131101-frozen_reference-watched.npz", + "sha256": "707f4fed38d0dffc8a581a54b2cdbfce7dbaa0f25f630830df0c7214ec7549fd" + }, + { + "bytes": 1115114, + "path": "states/5-131101-frozen_reference.npz", + "sha256": "1f296417629abbfdaa5a289d42e607655d930b2b78ede983a000a162eb954e53" + }, + { + "bytes": 208313, + "path": "states/5-131101-whole_PN_output_block-watched.npz", + "sha256": "87b94583d373d4e0a71733f9b67165360d7d646f54f2cb0d3ae842eadb532d87" + }, + { + "bytes": 31812, + "path": "states/5-131101-whole_PN_output_block.npz", + "sha256": "bba613671dd0f6f0a4dc450f20a55eaefe1d6026238adb23d9ec89b91f304934" + } + ] +} diff --git a/registry/phase4ab-terminal-scope/evidence/performance/summary.json b/registry/phase4ab-terminal-scope/evidence/performance/summary.json new file mode 100644 index 0000000..a1b64d2 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/performance/summary.json @@ -0,0 +1,8 @@ +{ + "ComfyUI_models_unloaded": false, + "device": "NVIDIA GeForce RTX 4090", + "diagnostic_overhead_included": true, + "not_runtime_benchmark": true, + "peak_VRAM_bytes": 401255936, + "wall_seconds_including_build": 497.18762119600433 +} diff --git a/registry/phase4ab-terminal-scope/evidence/protocol/calibration-panel.json b/registry/phase4ab-terminal-scope/evidence/protocol/calibration-panel.json new file mode 100644 index 0000000..d623a0d --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/protocol/calibration-panel.json @@ -0,0 +1,68 @@ +[ + { + "all_response_sum": 2.647552750875989, + "formal_label": "", + "mapped_nonzero_glomeruli": 9, + "mapped_response_sum": 2.647552967071533, + "mapped_signal_fraction": 1.0000000816586352, + "mapped_strong_glomeruli": 6, + "odor_id": "OMSUIQOIVADKIM-RXMQYKEDSA-N", + "odor_name": "ethyl (R)-(-)-3-hydroxybutanoate", + "split": "calibration" + }, + { + "all_response_sum": 3.15310405209239, + "formal_label": "", + "mapped_nonzero_glomeruli": 10, + "mapped_response_sum": 3.153104305267334, + "mapped_signal_fraction": 1.0000000802938755, + "mapped_strong_glomeruli": 7, + "odor_id": "LABTWGUMFABVFG-ARJAWSKDSA-N", + "odor_name": "3-penten-2-one", + "split": "calibration" + }, + { + "all_response_sum": 2.5893836710143447, + "formal_label": "", + "mapped_nonzero_glomeruli": 10, + "mapped_response_sum": 2.589383840560913, + "mapped_signal_fraction": 1.000000065477577, + "mapped_strong_glomeruli": 7, + "odor_id": "QNVRIHYSUZMSGM-ZCFIWIBFSA-N", + "odor_name": "(2R)-hexan-2-ol", + "split": "calibration" + }, + { + "all_response_sum": 2.145005152753913, + "formal_label": "", + "mapped_nonzero_glomeruli": 8, + "mapped_response_sum": 2.145005226135254, + "mapped_signal_fraction": 1.0000000342103332, + "mapped_strong_glomeruli": 5, + "odor_id": "VLSVVMPLPMNWBH-UHFFFAOYSA-N", + "odor_name": "gamma-propyl-gamma-butyrolactone", + "split": "calibration" + }, + { + "all_response_sum": 1.9317070827976401, + "formal_label": "", + "mapped_nonzero_glomeruli": 9, + "mapped_response_sum": 1.9317071437835693, + "mapped_signal_fraction": 1.0000000315710025, + "mapped_strong_glomeruli": 5, + "odor_id": "XHIUFYZDQBSEMF-UHFFFAOYSA-N", + "odor_name": "2-methyl butyl acetate", + "split": "calibration" + }, + { + "all_response_sum": 4.358990574986397, + "formal_label": "", + "mapped_nonzero_glomeruli": 9, + "mapped_response_sum": 4.358990669250488, + "mapped_signal_fraction": 1.0000000216252112, + "mapped_strong_glomeruli": 8, + "odor_id": "OMSUIQOIVADKIM-YFKPBYRVSA-N", + "odor_name": "ethyl (S)-(+)-3-hydroxybutanoate", + "split": "calibration" + } +] diff --git a/registry/phase4ab-terminal-scope/evidence/protocol/environment.json b/registry/phase4ab-terminal-scope/evidence/protocol/environment.json new file mode 100644 index 0000000..5066d55 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/protocol/environment.json @@ -0,0 +1,18 @@ +{ + "GPU_inventory": "0, Tesla V100-SXM2-16GB, GPU-a745fd30-4ca8-2370-09f6-2d374ac866dc, 580.178.04, 16384 MiB\n1, Tesla V100-SXM2-16GB, GPU-0f0ff6ed-bf1f-50ea-c244-b4566eccc66a, 580.178.04, 16384 MiB\n2, NVIDIA GeForce RTX 4090, GPU-79f3a85d-adce-7833-7003-6488140ca596, 580.178.04, 49140 MiB\n", + "executable": "/data/digital-drosophila/models/male-cns-lif/.venv/bin/python", + "installed_or_upgraded_packages": false, + "nvcc": "nvcc: NVIDIA (R) Cuda compiler driver\nCopyright (c) 2005-2024 NVIDIA Corporation\nBuilt on Tue_Oct_29_23:50:19_PDT_2024\nCuda compilation tools, release 12.6, V12.6.85\nBuild cuda_12.6.r12.6/compiler.35059454_0\n", + "packages": { + "PyYAML": "6.0.3", + "ninja": "1.13.2", + "numpy": "2.2.6", + "pandas": "2.3.3", + "pyarrow": "25.0.1", + "scipy": "1.15.3", + "torch": "2.14.0" + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12 (main, Aug 31 2026, 10:18:17) [GCC 11.4.0]", + "source_sha256": "be92ce24e63910f67da0238b19e3abb882e1afd317561fccf01734f1b4a56f25" +} diff --git a/registry/phase4ab-terminal-scope/evidence/protocol/forcing-hashes.json b/registry/phase4ab-terminal-scope/evidence/protocol/forcing-hashes.json new file mode 100644 index 0000000..49772f7 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/protocol/forcing-hashes.json @@ -0,0 +1,38 @@ +[ + { + "forcing": "a939ee1aa335c3821dd6f539e12936ef3b9eeb784a253961d83eda193b8cf072", + "odor_index": 0, + "seed": 80131101, + "targets_rates": "2c69540b8352e9ac4870fa598306925daf5787fd5fefc9eb818eeddf1dcb67e1" + }, + { + "forcing": "16ca8d267bfaf6aaf7894ec7e8b47a1bd834526e0353fd81a5aa87ac6bf0da1c", + "odor_index": 1, + "seed": 81131101, + "targets_rates": "b1ada43fc2751f56fba325b151cb8382f45425b69bb9d9a62653970c176d6104" + }, + { + "forcing": "b7eac53509b51e957617eaaf2ca7c4c319565c9037cab7b2b54e797323ddbff4", + "odor_index": 2, + "seed": 82131101, + "targets_rates": "ee8255452f19cbbfb3deff719e42e9c15c85b0c974602063cabbb6a7b02052a0" + }, + { + "forcing": "23030e5d12d837ca5b12f944f89f5efe806b1fca155157187a8a01e2b62913a8", + "odor_index": 3, + "seed": 83131101, + "targets_rates": "11a3f98ad623d5d217375ce4343217d428f4905c84964379c6d6d7e78c759275" + }, + { + "forcing": "a5d761a8c836af61e99092f7e22cf949ee37b013aa1841d16258355c51f5eedf", + "odor_index": 4, + "seed": 84131101, + "targets_rates": "4b805ed706ff3a9ba19020c0b10f29d90efee476a9b440507cf221827e8419a9" + }, + { + "forcing": "cff8e383719d570f0c1a6f491385d81e4451d356603aea57235aa444974a3316", + "odor_index": 5, + "seed": 85131101, + "targets_rates": "7deea1e8ce60a4357d57e359a30d7693815b59a413c0d5c48e96f654cab78500" + } +] diff --git a/registry/phase4ab-terminal-scope/evidence/protocol/imported-code-hashes.json b/registry/phase4ab-terminal-scope/evidence/protocol/imported-code-hashes.json new file mode 100644 index 0000000..ae82791 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/protocol/imported-code-hashes.json @@ -0,0 +1,122 @@ +{ + "__main__": { + "path": "models/male-cns-lif/terminal-scope-diagnostic-v1/launch.py", + "sha256": "0b2f71365267886933ba5becb52f4123d3d4e95e9c5bc0cf19c9bf0563831625" + }, + "__mp_main__": { + "path": "models/male-cns-lif/terminal-scope-diagnostic-v1/launch.py", + "sha256": "0b2f71365267886933ba5becb52f4123d3d4e95e9c5bc0cf19c9bf0563831625" + }, + "audit": { + "path": "models/male-cns-lif/apl-pn-scope-audit-v1/audit.py", + "sha256": "4ef071ba88f4e1cd78f068be58414dd7f4099dfac69c68266c4f46e175eab9fb" + }, + "brain_runtime": { + "path": "models/male-cns-lif/brain_runtime.py", + "sha256": "1c4e3e6f06708bfec30b24e92297f320b2b8b87ebbbe6da501f5f2db4f74762a" + }, + "diagnostic": { + "path": "models/male-cns-lif/terminal-scope-diagnostic-v1/diagnostic.py", + "sha256": "c8ec2ae6e72d35fedbd42acc6e6b5e7af2634d5b9805dc20e777b172c55d5aa4" + }, + "phase4b": { + "path": "models/male-cns-lif/phase4b.py", + "sha256": "693468685a7ff3db1d09a088e0bbdaa78c595d64086b27e9cc18abceb4c7d174" + }, + "phase4c": { + "path": "models/male-cns-lif/phase4c.py", + "sha256": "5ec83a132deb8ba20e62dab485537c2414016fe2fece546198d61c0668d75b6b" + }, + "phase4h_audit": { + "path": "models/male-cns-lif/phase4h_audit.py", + "sha256": "83128ea0a7276a06c6ce57e4c533d076cf442e28e3b0834e38c4537cc87e1136" + }, + "phase4i": { + "path": "models/male-cns-lif/phase4i.py", + "sha256": "f5a45ba4b41553495ea50e09ae4522f97f78ffb62b7fa690d8eb6e3ed06bd555" + }, + "phase4j": { + "path": "models/male-cns-lif/phase4j.py", + "sha256": "abb4574da85f00bd9ef61024c65993ef81d42651ff8d8d63c15dd69c6222471e" + }, + "phase4k": { + "path": "models/male-cns-lif/phase4k.py", + "sha256": "6ca7dd7b3fec7f970f8a43ac8286dd0f05b2674ac3996b9b20583b636719abe7" + }, + "phase4l": { + "path": "models/male-cns-lif/phase4l.py", + "sha256": "e97d58d8c1f44920d0e953f8f5831ddc86fa0198784e86460e315de4116ac553" + }, + "phase4m": { + "path": "models/male-cns-lif/phase4m.py", + "sha256": "3d1b64861559c9c04e08153b4056d968ab556637916d388170b36fc6348fa822" + }, + "phase4n": { + "path": "models/male-cns-lif/phase4n.py", + "sha256": "dbbb49447aecbc862d3f54bba9de41f6b8ab90a6afb1ef43a686149fce832d13" + }, + "phase4p": { + "path": "models/male-cns-lif/deterministic-runtime-v2/phase4p.py", + "sha256": "c8a13dbdd58dd222f73c1224de448e54bdf90c3f533163427a2bb25446a03999" + }, + "phase4p_finalize": { + "path": "models/male-cns-lif/deterministic-runtime-v2/phase4p_finalize.py", + "sha256": "b627fb0934bca8f04ec7c595a7b5e6690a2af62a44bc00ff2972f9f764671cd4" + }, + "phase4p_revalidate": { + "path": "models/male-cns-lif/deterministic-runtime-v2/phase4p_revalidate.py", + "sha256": "c7e693a2da70acdce4f53af5c2853e52e8333acc93f88a46a5e8083eac639346" + }, + "phase4p_validate": { + "path": "models/male-cns-lif/deterministic-runtime-v2/phase4p_validate.py", + "sha256": "ce06aa5cb6439450440a91603af1c0d187b20dc11abda6528ea0dfc6b71569b5" + }, + "phase4q": { + "path": "models/male-cns-lif/credit-v3/phase4q.py", + "sha256": "2cd10fb215d7ed624f4a4323453d20c4327bea490fa52eb3afc5d7fa0176a6e5" + }, + "phase4r": { + "path": "models/male-cns-lif/timing-audit-v1/phase4r.py", + "sha256": "f33b7d01ff3fe3858a1d995a7471740218be250910548fde11b87432a15a73f1" + }, + "phase4s": { + "path": "models/male-cns-lif/timing-credit-v1/phase4s.py", + "sha256": "59e4ee98a2a81321b1d1f9edd78035133ade8b73673b47a9c89f77bd39511769" + }, + "phase4t": { + "path": "models/male-cns-lif/timing-stability-v1/phase4t.py", + "sha256": "eebb61a1b97fb3de90746d23cc3037d1290a97d505ecff7fc784948e68dfa88e" + }, + "phase4u": { + "path": "models/male-cns-lif/odor-timing-generalization-v1/phase4u.py", + "sha256": "c97b908f38619a52a291c63fe90056f69d966f4138f50a3489f54e6e0ff8683e" + }, + "phase4v": { + "path": "models/male-cns-lif/csus-audit-v1/phase4v.py", + "sha256": "9007a0b7b01760d05a0d29d01e8551452d8029dee507992f4f06b1aa74885e53" + }, + "phase4w": { + "path": "models/male-cns-lif/late-kc-audit-v1/phase4w.py", + "sha256": "2c0c2eaf793b7f89eb8b1f606bc3878f16f101325818c5e6fe2b690eefdfb9a8" + }, + "phase4x": { + "path": "models/male-cns-lif/transmitter-audit-v1/phase4x.py", + "sha256": "89999433ca5ca81764cef921c0095a207639ac3f3b9845537d7dc819b52c1dac" + }, + "phase4y": { + "path": "models/male-cns-lif/dpm-hypothesis-v1/phase4y.py", + "sha256": "636139eaeafa981a0c54c59a7c69e2b52b8493aa798448fa86ae6d2c6baba319" + }, + "phase4z": { + "path": "models/male-cns-lif/pn-feedback-audit-v1/phase4z.py", + "sha256": "0a9136c5543531ae5ce76eeef9a512f09b94ed2b96f8b14d2e8f7e6782b7e40d" + }, + "scope": { + "path": "models/male-cns-lif/terminal-scope-diagnostic-v1/scope.py", + "sha256": "8f5774496dcceaee1c2793a5308754cbd0864c4a38d507481071d988f9de424d" + }, + "transmitter_roles_v1": { + "path": "models/male-cns-lif/transmitter-audit-v1/transmitter_roles_v1.py", + "sha256": "76ba0cae6c5db417ec030456797f7935216c6877bd339d5e435133a0061e3930" + } +} diff --git a/registry/phase4ab-terminal-scope/evidence/protocol/input-hashes.json b/registry/phase4ab-terminal-scope/evidence/protocol/input-hashes.json new file mode 100644 index 0000000..8e14ff0 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/protocol/input-hashes.json @@ -0,0 +1,37 @@ +[ + { + "bytes": 10065020, + "path": "experiments/phase4aa-apl-pn-scope/localization/APL-incident.parquet", + "sha256": "442b0fa2640cd1bfaf97e558ae912a8601dc3289b420021526353bc3bcfba849" + }, + { + "bytes": 6749567, + "path": "experiments/phase4aa-apl-pn-scope/localization/APL-target-PN-to-KC.parquet", + "sha256": "310827739c293b633d6c392d2b59ced6820a0b39606fdb29ff263ce3f5b4847e" + }, + { + "bytes": 472, + "path": "experiments/phase4aa-apl-pn-scope/external-resources/synaptic-partners/download-verification.json", + "sha256": "4fd796f88f05a08d5f7f3c3ff2c63c939f330e9acc4519a5272c8b3b97fcf4ac" + }, + { + "bytes": 9283041, + "path": "datasets/male-cns-v1.0/processed/neuron-only/neuron-index/unified-metadata.parquet", + "sha256": "922af16846a065c3dbfca7c11146b83ca217fcbd7392edc745f444a04eae8c63" + }, + { + "bytes": 204663632, + "path": "datasets/male-cns-v1.0/processed/neuron-only/gpu/csr-weights.int64.npy", + "sha256": "c7ae101451dd19c47fd976bcfacbc52d67193a68ffa04c5b4d2e911cfd52d99b" + }, + { + "bytes": 102331880, + "path": "datasets/male-cns-v1.0/processed/neuron-only/gpu/csr-indices.int32.npy", + "sha256": "ce20f7433f78442c717ad2a7b5394cf4a3b109d990b4be0788040b7b0f4ed150" + }, + { + "bytes": 1333736, + "path": "datasets/male-cns-v1.0/processed/neuron-only/gpu/csr-indptr.int64.npy", + "sha256": "fe43420f11e6242a11f8199ae7f097cab4b8a6db181d36f2a46b9e46670acbb4" + } +] diff --git a/registry/phase4ab-terminal-scope/evidence/protocol/launch-addendum.json b/registry/phase4ab-terminal-scope/evidence/protocol/launch-addendum.json new file mode 100644 index 0000000..10b088f --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/protocol/launch-addendum.json @@ -0,0 +1,20 @@ +{ + "launcher_sha256": "0b2f71365267886933ba5becb52f4123d3d4e95e9c5bc0cf19c9bf0563831625", + "model_source_edited": false, + "module_paths": [ + "/data/digital-drosophila/models/male-cns-lif/deterministic-runtime-v2", + "/data/digital-drosophila/models/male-cns-lif/credit-v3", + "/data/digital-drosophila/models/male-cns-lif/timing-audit-v1", + "/data/digital-drosophila/models/male-cns-lif/timing-credit-v1", + "/data/digital-drosophila/models/male-cns-lif/timing-stability-v1", + "/data/digital-drosophila/models/male-cns-lif/odor-timing-generalization-v1", + "/data/digital-drosophila/models/male-cns-lif/csus-audit-v1", + "/data/digital-drosophila/models/male-cns-lif/late-kc-audit-v1", + "/data/digital-drosophila/models/male-cns-lif/dpm-hypothesis-v1", + "/data/digital-drosophila/models/male-cns-lif/pn-feedback-audit-v1", + "/data/digital-drosophila/models/male-cns-lif/transmitter-audit-v1" + ], + "only_fix": "Add explicit existing frozen dependency directories to module lookup", + "previous_attempt": "ModuleNotFoundError: phase4v before run-start and before simulation", + "protocol_parameters_changed": false +} diff --git a/registry/phase4ab-terminal-scope/evidence/protocol/mask-hashes.json b/registry/phase4ab-terminal-scope/evidence/protocol/mask-hashes.json new file mode 100644 index 0000000..56238e6 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/protocol/mask-hashes.json @@ -0,0 +1,5 @@ +{ + "all_PN_KC_block.parquet": "07ea3fa9fe2a4e093cff38aba9aab4e7a018f32c108542fc773110f0a43a8293", + "calyx_PN_KC_contact_block.parquet": "0e2585cdb7d44b24f4579d90149f9bb7738718164036dde910be2d94a67370fc", + "whole_PN_output_block.parquet": "95f800944d01738e3d36da64a17c9bd37b8372fd8ba165bdcd31a94da0fdee29" +} diff --git a/registry/phase4ab-terminal-scope/evidence/protocol/preregistered.json b/registry/phase4ab-terminal-scope/evidence/protocol/preregistered.json new file mode 100644 index 0000000..6911cfe --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/protocol/preregistered.json @@ -0,0 +1,51 @@ +{ + "before_analysis": true, + "config": { + "canonical": "datasets/male-cns-v1.0/processed/neuron-only", + "conditions": [ + "frozen_reference", + "calyx_PN_KC_contact_block", + "all_PN_KC_block", + "whole_PN_output_block" + ], + "event_prior": "experiments/phase4z-pn-feedback-audit", + "experiment": "experiments/phase4ab-terminal-scope", + "input_model": "models/male-cns-lif/csus-audit-v1", + "late_start_ms": 500, + "model": "models/male-cns-lif/terminal-scope-diagnostic-v1", + "no_candidate": true, + "odor_indices": [ + 0, + 1, + 2, + 3, + 4, + 5 + ], + "phase": "4AB", + "prior_experiment": "experiments/phase4aa-apl-pn-scope", + "prior_model": "models/male-cns-lif/apl-pn-scope-audit-v1", + "repeat_odor_index": 0, + "roi_labels": [ + "CA(L)", + "CA(R)" + ], + "root": "/data/digital-drosophila", + "runtime": "models/male-cns-lif/deterministic-runtime-v2", + "seed": 131101, + "snapshot": "registry/snapshots/bootstrap-20260929", + "state_prior": "experiments/phase4y-dpm-hypothesis", + "target_KC": 82312, + "watched_VA6": 133666, + "workers": 4 + }, + "parent_commit": "d6843e675dec5ae38a06f2ba70d74836aea53ace", + "source_hashes": { + "PROTOCOL.md": "451b53b128eb0ad67acb81f060f3676794a68c98637dd2c0eddd137da509fccf", + "config.yaml": "e22088d9847504a50c0e684d2cee9420f484ab1ebef9d6057921062d8f785e73", + "diagnostic.py": "c8ec2ae6e72d35fedbd42acc6e6b5e7af2634d5b9805dc20e777b172c55d5aa4", + "scope.py": "8f5774496dcceaee1c2793a5308754cbd0864c4a38d507481071d988f9de424d", + "test_scope.py": "38a1c6e653ae97e77e5feda3ee8f2f8a3c366755bfbbd57ca1373b9b8f971bbb" + }, + "timestamp_utc": "2026-09-29T16:14:53.622166+00:00" +} diff --git a/registry/phase4ab-terminal-scope/evidence/regression/0-131101-all_PN_KC_block.json b/registry/phase4ab-terminal-scope/evidence/regression/0-131101-all_PN_KC_block.json new file mode 100644 index 0000000..408587f --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/regression/0-131101-all_PN_KC_block.json @@ -0,0 +1,13 @@ +{ + "declared_weight_scope_exact": true, + "repeat_exact": { + "counts": true, + "events": true, + "final_g": true, + "final_v": true, + "requests": true, + "states": true, + "trace": true + }, + "trial": "0-131101-all_PN_KC_block" +} diff --git a/registry/phase4ab-terminal-scope/evidence/regression/0-131101-calyx_PN_KC_contact_block.json b/registry/phase4ab-terminal-scope/evidence/regression/0-131101-calyx_PN_KC_contact_block.json new file mode 100644 index 0000000..6444635 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/regression/0-131101-calyx_PN_KC_contact_block.json @@ -0,0 +1,13 @@ +{ + "declared_weight_scope_exact": true, + "repeat_exact": { + "counts": true, + "events": true, + "final_g": true, + "final_v": true, + "requests": true, + "states": true, + "trace": true + }, + "trial": "0-131101-calyx_PN_KC_contact_block" +} diff --git a/registry/phase4ab-terminal-scope/evidence/regression/0-131101-frozen_reference.json b/registry/phase4ab-terminal-scope/evidence/regression/0-131101-frozen_reference.json new file mode 100644 index 0000000..0d61f5d --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/regression/0-131101-frozen_reference.json @@ -0,0 +1,21 @@ +{ + "declared_weight_scope_exact": true, + "prior_exact": { + "counts": true, + "events": true, + "final_g": true, + "final_v": true, + "trace": true, + "watched_states": true + }, + "repeat_exact": { + "counts": true, + "events": true, + "final_g": true, + "final_v": true, + "requests": true, + "states": true, + "trace": true + }, + "trial": "0-131101-frozen_reference" +} diff --git a/registry/phase4ab-terminal-scope/evidence/regression/0-131101-whole_PN_output_block.json b/registry/phase4ab-terminal-scope/evidence/regression/0-131101-whole_PN_output_block.json new file mode 100644 index 0000000..6955dad --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/regression/0-131101-whole_PN_output_block.json @@ -0,0 +1,13 @@ +{ + "declared_weight_scope_exact": true, + "repeat_exact": { + "counts": true, + "events": true, + "final_g": true, + "final_v": true, + "requests": true, + "states": true, + "trace": true + }, + "trial": "0-131101-whole_PN_output_block" +} diff --git a/registry/phase4ab-terminal-scope/evidence/regression/1-131101-all_PN_KC_block.json b/registry/phase4ab-terminal-scope/evidence/regression/1-131101-all_PN_KC_block.json new file mode 100644 index 0000000..84541eb --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/regression/1-131101-all_PN_KC_block.json @@ -0,0 +1,4 @@ +{ + "declared_weight_scope_exact": true, + "trial": "1-131101-all_PN_KC_block" +} diff --git a/registry/phase4ab-terminal-scope/evidence/regression/1-131101-calyx_PN_KC_contact_block.json b/registry/phase4ab-terminal-scope/evidence/regression/1-131101-calyx_PN_KC_contact_block.json new file mode 100644 index 0000000..826dcee --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/regression/1-131101-calyx_PN_KC_contact_block.json @@ -0,0 +1,4 @@ +{ + "declared_weight_scope_exact": true, + "trial": "1-131101-calyx_PN_KC_contact_block" +} diff --git a/registry/phase4ab-terminal-scope/evidence/regression/1-131101-frozen_reference.json b/registry/phase4ab-terminal-scope/evidence/regression/1-131101-frozen_reference.json new file mode 100644 index 0000000..98e2504 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/regression/1-131101-frozen_reference.json @@ -0,0 +1,12 @@ +{ + "declared_weight_scope_exact": true, + "prior_exact": { + "counts": true, + "events": true, + "final_g": true, + "final_v": true, + "trace": true, + "watched_states": true + }, + "trial": "1-131101-frozen_reference" +} diff --git a/registry/phase4ab-terminal-scope/evidence/regression/1-131101-whole_PN_output_block.json b/registry/phase4ab-terminal-scope/evidence/regression/1-131101-whole_PN_output_block.json new file mode 100644 index 0000000..c7c1533 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/regression/1-131101-whole_PN_output_block.json @@ -0,0 +1,4 @@ +{ + "declared_weight_scope_exact": true, + "trial": "1-131101-whole_PN_output_block" +} diff --git a/registry/phase4ab-terminal-scope/evidence/regression/2-131101-all_PN_KC_block.json b/registry/phase4ab-terminal-scope/evidence/regression/2-131101-all_PN_KC_block.json new file mode 100644 index 0000000..de9932a --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/regression/2-131101-all_PN_KC_block.json @@ -0,0 +1,4 @@ +{ + "declared_weight_scope_exact": true, + "trial": "2-131101-all_PN_KC_block" +} diff --git a/registry/phase4ab-terminal-scope/evidence/regression/2-131101-calyx_PN_KC_contact_block.json b/registry/phase4ab-terminal-scope/evidence/regression/2-131101-calyx_PN_KC_contact_block.json new file mode 100644 index 0000000..b23954a --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/regression/2-131101-calyx_PN_KC_contact_block.json @@ -0,0 +1,4 @@ +{ + "declared_weight_scope_exact": true, + "trial": "2-131101-calyx_PN_KC_contact_block" +} diff --git a/registry/phase4ab-terminal-scope/evidence/regression/2-131101-frozen_reference.json b/registry/phase4ab-terminal-scope/evidence/regression/2-131101-frozen_reference.json new file mode 100644 index 0000000..2aa75ef --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/regression/2-131101-frozen_reference.json @@ -0,0 +1,12 @@ +{ + "declared_weight_scope_exact": true, + "prior_exact": { + "counts": true, + "events": true, + "final_g": true, + "final_v": true, + "trace": true, + "watched_states": true + }, + "trial": "2-131101-frozen_reference" +} diff --git a/registry/phase4ab-terminal-scope/evidence/regression/2-131101-whole_PN_output_block.json b/registry/phase4ab-terminal-scope/evidence/regression/2-131101-whole_PN_output_block.json new file mode 100644 index 0000000..28d1e70 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/regression/2-131101-whole_PN_output_block.json @@ -0,0 +1,4 @@ +{ + "declared_weight_scope_exact": true, + "trial": "2-131101-whole_PN_output_block" +} diff --git a/registry/phase4ab-terminal-scope/evidence/regression/3-131101-all_PN_KC_block.json b/registry/phase4ab-terminal-scope/evidence/regression/3-131101-all_PN_KC_block.json new file mode 100644 index 0000000..b730c33 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/regression/3-131101-all_PN_KC_block.json @@ -0,0 +1,4 @@ +{ + "declared_weight_scope_exact": true, + "trial": "3-131101-all_PN_KC_block" +} diff --git a/registry/phase4ab-terminal-scope/evidence/regression/3-131101-calyx_PN_KC_contact_block.json b/registry/phase4ab-terminal-scope/evidence/regression/3-131101-calyx_PN_KC_contact_block.json new file mode 100644 index 0000000..1c016af --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/regression/3-131101-calyx_PN_KC_contact_block.json @@ -0,0 +1,4 @@ +{ + "declared_weight_scope_exact": true, + "trial": "3-131101-calyx_PN_KC_contact_block" +} diff --git a/registry/phase4ab-terminal-scope/evidence/regression/3-131101-frozen_reference.json b/registry/phase4ab-terminal-scope/evidence/regression/3-131101-frozen_reference.json new file mode 100644 index 0000000..a4492b8 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/regression/3-131101-frozen_reference.json @@ -0,0 +1,12 @@ +{ + "declared_weight_scope_exact": true, + "prior_exact": { + "counts": true, + "events": true, + "final_g": true, + "final_v": true, + "trace": true, + "watched_states": true + }, + "trial": "3-131101-frozen_reference" +} diff --git a/registry/phase4ab-terminal-scope/evidence/regression/3-131101-whole_PN_output_block.json b/registry/phase4ab-terminal-scope/evidence/regression/3-131101-whole_PN_output_block.json new file mode 100644 index 0000000..b608fa8 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/regression/3-131101-whole_PN_output_block.json @@ -0,0 +1,4 @@ +{ + "declared_weight_scope_exact": true, + "trial": "3-131101-whole_PN_output_block" +} diff --git a/registry/phase4ab-terminal-scope/evidence/regression/4-131101-all_PN_KC_block.json b/registry/phase4ab-terminal-scope/evidence/regression/4-131101-all_PN_KC_block.json new file mode 100644 index 0000000..d3cbb46 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/regression/4-131101-all_PN_KC_block.json @@ -0,0 +1,4 @@ +{ + "declared_weight_scope_exact": true, + "trial": "4-131101-all_PN_KC_block" +} diff --git a/registry/phase4ab-terminal-scope/evidence/regression/4-131101-calyx_PN_KC_contact_block.json b/registry/phase4ab-terminal-scope/evidence/regression/4-131101-calyx_PN_KC_contact_block.json new file mode 100644 index 0000000..54fa3ff --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/regression/4-131101-calyx_PN_KC_contact_block.json @@ -0,0 +1,4 @@ +{ + "declared_weight_scope_exact": true, + "trial": "4-131101-calyx_PN_KC_contact_block" +} diff --git a/registry/phase4ab-terminal-scope/evidence/regression/4-131101-frozen_reference.json b/registry/phase4ab-terminal-scope/evidence/regression/4-131101-frozen_reference.json new file mode 100644 index 0000000..ef03395 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/regression/4-131101-frozen_reference.json @@ -0,0 +1,12 @@ +{ + "declared_weight_scope_exact": true, + "prior_exact": { + "counts": true, + "events": true, + "final_g": true, + "final_v": true, + "trace": true, + "watched_states": true + }, + "trial": "4-131101-frozen_reference" +} diff --git a/registry/phase4ab-terminal-scope/evidence/regression/4-131101-whole_PN_output_block.json b/registry/phase4ab-terminal-scope/evidence/regression/4-131101-whole_PN_output_block.json new file mode 100644 index 0000000..8ea658c --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/regression/4-131101-whole_PN_output_block.json @@ -0,0 +1,4 @@ +{ + "declared_weight_scope_exact": true, + "trial": "4-131101-whole_PN_output_block" +} diff --git a/registry/phase4ab-terminal-scope/evidence/regression/5-131101-all_PN_KC_block.json b/registry/phase4ab-terminal-scope/evidence/regression/5-131101-all_PN_KC_block.json new file mode 100644 index 0000000..b0df240 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/regression/5-131101-all_PN_KC_block.json @@ -0,0 +1,4 @@ +{ + "declared_weight_scope_exact": true, + "trial": "5-131101-all_PN_KC_block" +} diff --git a/registry/phase4ab-terminal-scope/evidence/regression/5-131101-calyx_PN_KC_contact_block.json b/registry/phase4ab-terminal-scope/evidence/regression/5-131101-calyx_PN_KC_contact_block.json new file mode 100644 index 0000000..3804032 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/regression/5-131101-calyx_PN_KC_contact_block.json @@ -0,0 +1,4 @@ +{ + "declared_weight_scope_exact": true, + "trial": "5-131101-calyx_PN_KC_contact_block" +} diff --git a/registry/phase4ab-terminal-scope/evidence/regression/5-131101-frozen_reference.json b/registry/phase4ab-terminal-scope/evidence/regression/5-131101-frozen_reference.json new file mode 100644 index 0000000..50497af --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/regression/5-131101-frozen_reference.json @@ -0,0 +1,12 @@ +{ + "declared_weight_scope_exact": true, + "prior_exact": { + "counts": true, + "events": true, + "final_g": true, + "final_v": true, + "trace": true, + "watched_states": true + }, + "trial": "5-131101-frozen_reference" +} diff --git a/registry/phase4ab-terminal-scope/evidence/regression/5-131101-whole_PN_output_block.json b/registry/phase4ab-terminal-scope/evidence/regression/5-131101-whole_PN_output_block.json new file mode 100644 index 0000000..9e33963 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/regression/5-131101-whole_PN_output_block.json @@ -0,0 +1,4 @@ +{ + "declared_weight_scope_exact": true, + "trial": "5-131101-whole_PN_output_block" +} diff --git a/registry/phase4ab-terminal-scope/evidence/regression/final-integrity.json b/registry/phase4ab-terminal-scope/evidence/regression/final-integrity.json new file mode 100644 index 0000000..a718a97 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/regression/final-integrity.json @@ -0,0 +1,34 @@ +{ + "original": { + "checked": 230239, + "exclusions": [ + ".cache", + ".git", + ".mypy_cache", + ".pytest_cache", + ".venv", + "__pycache__", + "node_modules", + "venv" + ], + "meaning": "All original listed bytes checked; only newly named stage outputs are additions.", + "mismatches": [], + "new_stage_additions_allowed": true, + "pass": true, + "reference_sha256": "6f186112e6102f2f7969de7442fa7ee4432200a3678586cfc4e10c490b31bca4" + }, + "prior_experiment": { + "checked": 68, + "checksums_sha256": "a69b2511689207b0d9ddbe2fabce3be71908f457bb898e3b685a213a796a272a", + "manifest_sha256": "6d75567af2a6c0993d4fc08e272814910c19fa9602811cfacd1ebc4ba76bc737", + "mismatches": [], + "pass": true + }, + "prior_model": { + "checked": 12, + "checksums_sha256": "55dc418f2d62be04601af33cbd8789578447e6a2289d3a581dc713cbb7466a25", + "manifest_sha256": "9120685eb02dc2bd3b38d42b2ade1f38f6bbc2a1ec269fd4d555cead2d628277", + "mismatches": [], + "pass": true + } +} diff --git a/registry/phase4ab-terminal-scope/evidence/regression/five-frozen-trials.json b/registry/phase4ab-terminal-scope/evidence/regression/five-frozen-trials.json new file mode 100644 index 0000000..fc6ec82 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/regression/five-frozen-trials.json @@ -0,0 +1,62 @@ +{ + "oracle": "frozen deterministic-v2", + "original_v1_preserved": true, + "pass": true, + "trials": [ + { + "exact": { + "counts": true, + "g": true, + "neuron_idx": true, + "step": true, + "v": true + }, + "trial": "auditory-10hz", + "wall_seconds": 2.6707512350112665 + }, + { + "exact": { + "counts": true, + "g": true, + "neuron_idx": true, + "step": true, + "v": true + }, + "trial": "auditory-100hz", + "wall_seconds": 5.058842792001087 + }, + { + "exact": { + "counts": true, + "g": true, + "neuron_idx": true, + "step": true, + "v": true + }, + "trial": "olfactory-50hz", + "wall_seconds": 5.067613077990245 + }, + { + "exact": { + "counts": true, + "g": true, + "neuron_idx": true, + "step": true, + "v": true + }, + "trial": "mechanosensory-50hz", + "wall_seconds": 5.076028995012166 + }, + { + "exact": { + "counts": true, + "g": true, + "neuron_idx": true, + "step": true, + "v": true + }, + "trial": "gustatory-50hz", + "wall_seconds": 5.056191121999291 + } + ] +} diff --git a/registry/phase4ab-terminal-scope/evidence/regression/fixed-event-replay.json b/registry/phase4ab-terminal-scope/evidence/regression/fixed-event-replay.json new file mode 100644 index 0000000..376423a --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/regression/fixed-event-replay.json @@ -0,0 +1,4 @@ +{ + "baseline_exact_neurons": 11, + "terminal_nonKC_arrivals_exact": true +} diff --git a/registry/phase4ab-terminal-scope/evidence/regression/preflight.json b/registry/phase4ab-terminal-scope/evidence/regression/preflight.json new file mode 100644 index 0000000..a718a97 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/regression/preflight.json @@ -0,0 +1,34 @@ +{ + "original": { + "checked": 230239, + "exclusions": [ + ".cache", + ".git", + ".mypy_cache", + ".pytest_cache", + ".venv", + "__pycache__", + "node_modules", + "venv" + ], + "meaning": "All original listed bytes checked; only newly named stage outputs are additions.", + "mismatches": [], + "new_stage_additions_allowed": true, + "pass": true, + "reference_sha256": "6f186112e6102f2f7969de7442fa7ee4432200a3678586cfc4e10c490b31bca4" + }, + "prior_experiment": { + "checked": 68, + "checksums_sha256": "a69b2511689207b0d9ddbe2fabce3be71908f457bb898e3b685a213a796a272a", + "manifest_sha256": "6d75567af2a6c0993d4fc08e272814910c19fa9602811cfacd1ebc4ba76bc737", + "mismatches": [], + "pass": true + }, + "prior_model": { + "checked": 12, + "checksums_sha256": "55dc418f2d62be04601af33cbd8789578447e6a2289d3a581dc713cbb7466a25", + "manifest_sha256": "9120685eb02dc2bd3b38d42b2ade1f38f6bbc2a1ec269fd4d555cead2d628277", + "mismatches": [], + "pass": true + } +} diff --git a/registry/phase4ab-terminal-scope/evidence/regression/restored.json b/registry/phase4ab-terminal-scope/evidence/regression/restored.json new file mode 100644 index 0000000..0c05423 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/regression/restored.json @@ -0,0 +1,6 @@ +{ + "APL_matrices": true, + "base": true, + "frozen_effective_weights": true, + "raw": true +} diff --git a/registry/phase4ab-terminal-scope/evidence/regression/run-start.json b/registry/phase4ab-terminal-scope/evidence/regression/run-start.json new file mode 100644 index 0000000..cac7af5 --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/regression/run-start.json @@ -0,0 +1,23 @@ +{ + "ComfyUI_queues": [ + { + "pending": 0, + "port": 8188, + "running": 0 + }, + { + "pending": 0, + "port": 8189, + "running": 0 + }, + { + "pending": 0, + "port": 8190, + "running": 0 + } + ], + "device": "NVIDIA GeForce RTX 4090", + "free_VRAM": 12494438400, + "timestamp_utc": "2026-09-29T16:16:57.370037+00:00", + "total_VRAM": 50864390144 +} diff --git a/registry/phase4ab-terminal-scope/evidence/regression/unit-tests.json b/registry/phase4ab-terminal-scope/evidence/regression/unit-tests.json new file mode 100644 index 0000000..1c17f9f --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/regression/unit-tests.json @@ -0,0 +1,12 @@ +{ + "finite": true, + "fuzz_cases": 10000, + "fuzz_seed": 41337, + "input_nonmutation": true, + "never_sign_flip_or_amplify": true, + "pass": true, + "source_sha256": "971136a667367a84cfc50ebc3fa73a749eddb8b8e1ca6931708ba67bfc12f0c1", + "unit_tests": 6, + "unittest_log": "test_duplicates_rejected (test_scope.ScopeTests) ... ok\ntest_existing_edge_only (test_scope.ScopeTests) ... ok\ntest_invalid_partition_rejected (test_scope.ScopeTests) ... ok\ntest_partial_and_full (test_scope.ScopeTests) ... ok\ntest_roi_and_side_not_guessed (test_scope.ScopeTests) ... ok\ntest_zero_identity_and_nonmutation (test_scope.ScopeTests) ... ok\n\n----------------------------------------------------------------------\nRan 6 tests in 0.017s\n\nOK\n", + "zero_identity_bitwise": true +} diff --git a/registry/phase4ab-terminal-scope/evidence/replay/fixed-event-scope.csv b/registry/phase4ab-terminal-scope/evidence/replay/fixed-event-scope.csv new file mode 100644 index 0000000..6563dba --- /dev/null +++ b/registry/phase4ab-terminal-scope/evidence/replay/fixed-event-scope.csv @@ -0,0 +1,45 @@ +condition,neuron_idx,arrival_unchanged,arrival_L1_difference,conditional_late_spikes,all_other_recorded_events_and_APL_fixed,whole_brain_causality_claim +frozen_reference,30,True,0.0,187,True,False +calyx_PN_KC_contact_block,30,True,0.0,187,True,False +all_PN_KC_block,30,True,0.0,187,True,False +whole_PN_output_block,30,False,2603.4250798225403,186,True,False +frozen_reference,179,True,0.0,164,True,False +calyx_PN_KC_contact_block,179,True,0.0,164,True,False +all_PN_KC_block,179,True,0.0,164,True,False +whole_PN_output_block,179,False,2433.4745279848576,159,True,False +frozen_reference,484,True,0.0,194,True,False +calyx_PN_KC_contact_block,484,True,0.0,194,True,False +all_PN_KC_block,484,True,0.0,194,True,False +whole_PN_output_block,484,False,2778.325125724077,193,True,False +frozen_reference,1197,True,0.0,228,True,False +calyx_PN_KC_contact_block,1197,True,0.0,228,True,False +all_PN_KC_block,1197,True,0.0,228,True,False +whole_PN_output_block,1197,False,233827.83066305518,227,True,False +frozen_reference,1381,True,0.0,228,True,False +calyx_PN_KC_contact_block,1381,True,0.0,228,True,False +all_PN_KC_block,1381,True,0.0,228,True,False +whole_PN_output_block,1381,False,263067.20497968793,227,True,False +frozen_reference,1511,True,0.0,228,True,False +calyx_PN_KC_contact_block,1511,True,0.0,228,True,False +all_PN_KC_block,1511,True,0.0,228,True,False +whole_PN_output_block,1511,False,247104.5574080348,227,True,False +frozen_reference,1644,True,0.0,218,True,False +calyx_PN_KC_contact_block,1644,True,0.0,218,True,False +all_PN_KC_block,1644,True,0.0,218,True,False +whole_PN_output_block,1644,False,27596.52651181817,216,True,False +frozen_reference,6065,True,0.0,164,True,False +calyx_PN_KC_contact_block,6065,True,0.0,164,True,False +all_PN_KC_block,6065,True,0.0,164,True,False +whole_PN_output_block,6065,False,6536.750062584877,152,True,False +frozen_reference,6842,True,0.0,171,True,False +calyx_PN_KC_contact_block,6842,True,0.0,171,True,False +all_PN_KC_block,6842,True,0.0,171,True,False +whole_PN_output_block,6842,False,5408.699882417917,162,True,False +frozen_reference,82312,True,0.0,60,True,False +calyx_PN_KC_contact_block,82312,False,13211.275120049715,0,True,False +all_PN_KC_block,82312,False,13676.575129687786,0,True,False +whole_PN_output_block,82312,False,13676.575129687786,0,True,False +frozen_reference,133666,True,0.0,213,True,False +calyx_PN_KC_contact_block,133666,True,0.0,213,True,False +all_PN_KC_block,133666,True,0.0,213,True,False +whole_PN_output_block,133666,False,14746.32684147358,210,True,False diff --git a/registry/phase4ab-terminal-scope/seal-verification.json b/registry/phase4ab-terminal-scope/seal-verification.json new file mode 100644 index 0000000..fca2888 --- /dev/null +++ b/registry/phase4ab-terminal-scope/seal-verification.json @@ -0,0 +1,16 @@ +{ + "experiments/phase4ab-terminal-scope": { + "checked": 199, + "checksums_sha256": "d83926a3055d9f9ca471ceba328076d7ceba883f267468750914080733e95e31", + "manifest_sha256": "cb3723f9dae29d4889489ae39f40293c927f4f9e532551e2c4d5214bf0a70140", + "mismatches": [], + "pass": true + }, + "models/male-cns-lif/terminal-scope-diagnostic-v1": { + "checked": 11, + "checksums_sha256": "92a03195cb41863027fd0397ad3811248354a5d3f2e91ffa2c297eba62dc2821", + "manifest_sha256": "5cea0035a95345825b73385c6e3056244c2a614d10a6fa6742487a331d8f0f3e", + "mismatches": [], + "pass": true + } +}