Audit frozen LIF semantics and real recurrent motifs without learning changes

This commit is contained in:
Digital Drosophila Archive
2026-09-30 01:00:16 +08:00
parent 3213aada79
commit 6fc326ccd1
55 changed files with 2809 additions and 26 deletions
@@ -0,0 +1,71 @@
# Phase 4AC:反馈环路足以持续放电,尚未得到学习修复
状态:`COMPLETE-SEMANTICS-AUDIT / LEARNING-NOT-ACHIEVED`。
## 这次真正增加的证据
从已有异常传播路径选取真实 MaleCNS 神经元和 13 条真实连接。
只施加一次初始脉冲,随后无外部输入,观察 1 s。所有真实回路测试继续使用冻结动力学。
| 小回路 | 总放电数 | 500–1,000 ms 放电数 |
|---|---:|---:|
| 两枚 ALLN 互相连接 | 473 | 238 |
| 三枚 ALLN | 1,064 | 535 |
| 三枚 ALLN + VA6 PN + KC | 1,483 | 747 |
| 只保留四条真实前向连接的对照 | 3 | 0 |
| 五神经元回路,无初始输入 | 0 | 0 |
最小互相连接的两枚神经元是:
- neuron_idx 1381 / body_id 11478 → neuron_idx 1511 / body_id 11620:235 contacts。
- neuron_idx 1511 / body_id 11620 → neuron_idx 1381 / body_id 11478:283 contacts。
- 两者 metadata 均为 ALLN / lLN1_bc,递质 annotation 和 ground truth 均为 acetylcholine。未改变符号。
它们在冻结 LIF 下,从一次输入即可相互维持放电到 1 s 观察期末。
五神经元回路的 VA6 PN(133666 / 527577)有 297 次放电,KC(82312 / 109321)有 80 次放电。
这把“持续反馈驱动 KC”缩小到可逐步检查的真实局部回路。
**限定结论:**这是隔离回路中的充分性证据,不是全脑必要性证据;外部抑制、分级 APL 及其他回路在这里不参与。
前向对照移除了反馈连接,只是诊断 harness,不是提交了一个删边新模型。1 s 持续不等于证明无限持续。
## 原作者语义差异,不等于已找到修复
[Shiu 作者固定版本代码](https://github.com/philshiu/Drosophila_brain_model/blob/91bdd1e7dcf193f3e7ca5a8933497fcef63b7960/model.py)
在 spike 后清零 g,v/g 的不应期更新受限,使用 linear 积分和严格 > 阈值;刺激细胞的 Poisson 输入及不应期也与本项目不同。
本项目的冻结版本明确记录了保留 g、不应期继续衰减/接收输入、Euler 积分等适配选择。
因此不能把它说成 CUDA 引入的新错误,也不能把“g 清零”称为严格复现原作者模型。
本次单细胞 component tests 有意保留冻结的其他数学语义,仅分别比较 g reset 和 refractory gate。
真实 13 条连接强度加一个单突触 fixture 下,冻结策略、reset-only、reset+gate 的单次输入 spike 数相同(0 或 1)。
单独冻结不应期 g、但不清零 g,反而在 283-contact fixture 中产生 2 次 spike,而其他三种策略为 1 次。
人工持续输入停止后,冻结策略有 4 次尾随 spike,reset-only 有 1 次、reset+gate 有 0 次,gate-only 则有 14 次。
这些结果表明组件选择确实会改变响应,但不支持“随便加一个不应期限制就能解决”。
两个强连接各自仍能从一次输入触发一次响应,所以也不能仅凭单细胞 reset 测试宣称真实反馈环已被消除。
所有替代组件仅运行于人工单细胞 fixture,没有部署到 MaleCNS 全脑或训练实验。
[Brian2 2.5.1 固定实现](https://github.com/brian-team/brian2/blob/577bb35ec677947d6f3d4af367a8a4b3b88815ee/brian2/groups/neurongroup.py)
在默认非 legacy 设置下,不应期是 22 steps;第 23 step 才积分某些新到达输入属于调度顺序,不是不应期延长。
原作者模型、license、环境文件、固定 commit、SHA-256 与源码位置均已记录;尚未执行独立 Brian2 oracle。
## 验证
- 7 项单元测试通过;17 组单细胞 fixture × 4 策略均有限且重复一致。
- 五个真实小回路的全部事件、计数、每步 V/g/ref、最终状态和环形队列 CPU/GPU 精确一致。
- 五组 deterministic-v2 全脑参考 trial 的事件、计数、最终 V/g 精确一致。
- 逐条核对真实 edge_id、源 CSR 行、目标和原始 count;准备输入另有 SHA-256。
- 完整性终检覆盖原快照 230,239 项,以及 Phase 4AA / 4AB 的模型与实验 manifest。
- GPU 诊断含构建/观察/回归共 95.398 s;本进程 peak allocated VRAM 285,994,496 bytes。不是性能 benchmark,不含 ComfyUI 驻留显存。
- 保留旧加载器只读 NumPy→Torch 警告;未修改加载器,完整性和回归另行验证。
## 学习目标与下一道关口
当前没有新的 learned model,没有训练,也没有重新宣称学习 PASS。
可用学习仍须在独立评价种子上证明 A 相对中性 B 的特异性、MBON/downstream 功能变化及完整对照;权重变化、稀疏化或静默都不能替代。
下一步应先在明确授权的新模型分支中验证作者算子与有生理依据的局部反馈机制,并用独立 oracle 区分每一项语义。
不能将减少放电自动选为正确模型;还必须保留输入区别、可传播性和后续关联记忆能力。
不改 raw、CSR、原始突触数、已定递质符号、冻结版本、APL calibration、eligibility-v2 或 plastic mask。
不进入游戏、decoder、RL 或视觉路线。
Git 只同步源代码、小报告与校验清单。完整数据仍在服务器,不能声称已完成异机大数据备份。
@@ -0,0 +1,83 @@
# Phase 4AC — LIF semantics and unchanged-dynamics motif audit
Status: COMPLETE-SEMANTICS-AUDIT / LEARNING-NOT-ACHIEVED.
No alternative dynamics deployed to MaleCNS; no conditioning, learned candidate or new formal runtime.
## Author model versus frozen adapted model
Pinned author model resets g on a spike and declares v/g `(unless refractory)`, uses linear integration, strict > threshold and voltage Poisson input with zero refractory on stimulated cells.
The frozen adapted model retains g, decays/accepts events during refractory, uses explicit Euler and >= threshold, and forced sensory spikes respect refractory.
These are documented model choices, not a newly established GPU regression. g is an additive voltage-valued drive, not a measured conductance.
W_syn=0.275 is transferred from a free parameter calibrated in the original FlyWire feeding model, not a measured universal MaleCNS synaptic efficacy.
## Synthetic single-cell component tests
All impulse amplitudes derive from the complete unique contact counts of the predeclared 13 real motif edges plus a one-contact fixture; other boundary/sustained cases are explicitly synthetic unit tests.
These ablations retain frozen Euler arithmetic/scheduling and are NOT complete Brian2 replication. No successful amplitude or policy was selected after seeing results.
| Single-impulse fixture | Frozen | Reset g only | Refractory gate only | Reset + gate |
|---|---:|---:|---:|---:|
| one_impulse_contacts_1 | 0 | 0 | 0 | 0 |
| one_impulse_contacts_104 | 0 | 0 | 0 | 0 |
| one_impulse_contacts_172 | 1 | 1 | 1 | 1 |
| one_impulse_contacts_210 | 1 | 1 | 1 | 1 |
| one_impulse_contacts_226 | 1 | 1 | 1 | 1 |
| one_impulse_contacts_235 | 1 | 1 | 1 | 1 |
| one_impulse_contacts_259 | 1 | 1 | 1 | 1 |
| one_impulse_contacts_283 | 1 | 1 | 2 | 1 |
| one_impulse_contacts_43 | 0 | 0 | 0 | 0 |
| one_impulse_contacts_57 | 0 | 0 | 0 | 0 |
| one_impulse_contacts_64 | 0 | 0 | 0 | 0 |
| one_impulse_contacts_70 | 0 | 0 | 0 | 0 |
| one_impulse_contacts_76 | 0 | 0 | 0 | 0 |
| one_impulse_contacts_95 | 0 | 0 | 0 | 0 |
Reset-only and combined policies can produce at most one spike from a single isolated input by construction. This does not establish biological correctness or whole-brain learning improvement.
## Real anatomical motifs — frozen mathematics ONLY
One forced seed spike at step 0 except the no-input control; no subsequent input; observed for 1 s. Late window=500–1,000 ms.
The recurrent pair/trio/five are induced subgraphs. The feedforward control selects four existing edges and removes feedback only within this isolated diagnostic harness.
External inhibition, graded APL and other whole-brain inputs are absent. A sustained isolated motif is evidence of sufficiency in this harness, NOT necessity in the complete brain.
| Motif | neuron_idx | Total spikes | Late spikes | Last ms |
|---|---:|---:|---:|---:|
| pair | 1381 | 237 | 119 | 999.3 |
| pair | 1511 | 236 | 119 | 997.5 |
| trio | 1197 | 355 | 179 | 999.3 |
| trio | 1381 | 355 | 178 | 997.8 |
| trio | 1511 | 354 | 178 | 997.4 |
| five | 1197 | 370 | 185 | 998.8 |
| five | 1381 | 369 | 185 | 997.4 |
| five | 1511 | 367 | 186 | 999.5 |
| five | 82312 | 80 | 41 | 990.3 |
| five | 133666 | 297 | 150 | 999.5 |
| feedforward | 1197 | 1 | 0 | 10.0 |
| feedforward | 1381 | 1 | 0 | 0.0 |
| feedforward | 1511 | 1 | 0 | 4.9 |
| feedforward | 82312 | 0 | 0 | none |
| feedforward | 133666 | 0 | 0 | none |
| no_input | 1197 | 0 | 0 | none |
| no_input | 1381 | 0 | 0 | none |
| no_input | 1511 | 0 | 0 | none |
| no_input | 82312 | 0 | 0 | none |
| no_input | 133666 | 0 | 0 | none |
## Verification and boundaries
Seven unit tests; all five real motifs CPU/GPU event, count, final V/g/refractory, queue and timestep history exact; five archived deterministic-v2 full-brain trials exact.
Every selected edge_id, source CSR row, destination and original weight validated; generated prepared inputs hashed. All original snapshot files and Phase 4AA/4AB model/experiment manifests checked before and after.
Diagnostic wall time including compilation and observation: 95.398 s. Peak allocated process VRAM: 285994496 bytes. Not a runtime-speed benchmark.
Original author code was inspected, not executed; no Brian2 oracle run and no new package installation. ComfyUI was not stopped or unloaded.
## Decision
The usable-learning gate remains unmet: independent evaluation, A-vs-neutral-B specificity in MBON/downstream, multiple training seeds and conditioning controls still required.
Before any full-network alternative, obtain explicit separate model authorization and distinguish each semantic component; do not claim g reset alone reproduces the author implementation.
No evidence here permits changing eta, thresholds, gain, frozen APL calibration, transmitter signs or the plastic mask.
## Primary provenance
[Shiu et al. 2024](https://www.nature.com/articles/s41586-024-07763-9)
[Pinned author implementation](https://github.com/philshiu/Drosophila_brain_model/blob/91bdd1e7dcf193f3e7ca5a8933497fcef63b7960/model.py)
Downloaded source, MIT license, environment specification, exact commit, SHA-256 and source clauses retained under external-resources and audit.
@@ -0,0 +1,40 @@
[
{
"clause": "dg/dt = -g / tau",
"line_numbers_1based": [
46
]
},
{
"clause": "(unless refractory)",
"line_numbers_1based": [
45,
46
]
},
{
"clause": "v = v_rst; w = 0; g = 0 * mV",
"line_numbers_1based": [
52
]
},
{
"clause": "method='linear'",
"line_numbers_1based": [
163
]
},
{
"clause": "'v > v_th'",
"line_numbers_1based": [
50
]
},
{
"clause": "neu[i].rfc = 0 * ms",
"line_numbers_1based": [
92,
103
]
}
]
@@ -0,0 +1,7 @@
{
"documented_adaptation_not_GPU_regression": true,
"frozen_integrity_pass": true,
"goal_remains_active": true,
"new_model_authorization_separate": true,
"status": "COMPLETE-SEMANTICS-AUDIT / LEARNING-NOT-ACHIEVED"
}
@@ -0,0 +1,33 @@
neuron_idx,body_id,annotation_type,annotation_hemibrainType,annotation_flywireType,annotation_matchingNotes,neurotransmitter,nt_ground_truth
119,10133,lLN2F_b,lLN2F_b,lLN2F_b,,gaba,
153,10169,lLN2F_b,lLN2F_b,lLN2F_b,,gaba,
348,10376,lLN2F_b,lLN2F_b,lLN2F_b,,gaba,
478,10515,lLN2F_b,lLN2F_b,lLN2F_b,,gaba,
1495,11603,lLN2P_a,lLN2P_a,lLN2P_a,,gaba,
3104,13315,lLN2P_b,lLN2P_b,lLN2P_b,,gaba,gaba
6699,17325,lLN2P_a,lLN2P_a,lLN2P_a,,gaba,
7323,18016,lLN2P_c,lLN2P_c,lLN2P_c,,gaba,
7454,18165,lLN2P_b,lLN2P_b,lLN2P_b,,gaba,gaba
7955,18726,lLN2P_c,lLN2P_c,lLN2P_c,,gaba,
7959,18730,lLN2P_b,lLN2P_b,lLN2P_b,,gaba,gaba
8889,19767,lLN2P_b,lLN2P_b,lLN2P_b,,gaba,gaba
9025,19921,lLN2P_a,lLN2P_a,lLN2P_a,,gaba,
9447,20402,lLN2P_b,lLN2P_b,lLN2P_b,,gaba,gaba
9607,20581,lLN2P_c,lLN2P_c,lLN2P_c,,gaba,
9643,20620,lLN2P_b,lLN2P_b,lLN2P_b,,gaba,gaba
10488,21567,lLN2P_c,lLN2P_c,lLN2P_c,,gaba,
11035,22166,lLN2P_c,lLN2P_c,lLN2P_c,,gaba,
11106,22243,lLN2P_c,lLN2P_c,lLN2P_c,,gaba,
11136,22276,lLN2P_a,lLN2P_a,lLN2P_a,,gaba,
12550,23854,lLN2P_a,lLN2P_a,lLN2P_a,,gaba,
13411,24828,lLN2P_b,lLN2P_b,lLN2P_b,,gaba,gaba
15720,27416,lLN2P_b,lLN2P_b,lLN2P_b,,gaba,gaba
15896,27614,lLN2P_b,lLN2P_b,lLN2P_b,,gaba,gaba
16611,28406,lLN2P_c,lLN2P_c,lLN2P_c,,gaba,
16714,28525,lLN2P_b,lLN2P_b,lLN2P_b,,gaba,gaba
18392,30421,lLN2P_b,lLN2P_b,lLN2P_b,,gaba,gaba
22591,35196,lLN2P_a,lLN2P_a,lLN2P_a,,gaba,
96266,130279,lLN2P_b,lLN2P_b,lLN2P_b,,gaba,gaba
123710,267437,lLN2P_c,lLN2P_c,lLN2P_c,,gaba,
141783,551294,lLN2P_c,lLN2P_c,lLN2P_c,,gaba,
164024,918582,lLN2P_a,lLN2P_a,lLN2P_a,,gaba,
1 neuron_idx body_id annotation_type annotation_hemibrainType annotation_flywireType annotation_matchingNotes neurotransmitter nt_ground_truth
2 119 10133 lLN2F_b lLN2F_b lLN2F_b gaba
3 153 10169 lLN2F_b lLN2F_b lLN2F_b gaba
4 348 10376 lLN2F_b lLN2F_b lLN2F_b gaba
5 478 10515 lLN2F_b lLN2F_b lLN2F_b gaba
6 1495 11603 lLN2P_a lLN2P_a lLN2P_a gaba
7 3104 13315 lLN2P_b lLN2P_b lLN2P_b gaba gaba
8 6699 17325 lLN2P_a lLN2P_a lLN2P_a gaba
9 7323 18016 lLN2P_c lLN2P_c lLN2P_c gaba
10 7454 18165 lLN2P_b lLN2P_b lLN2P_b gaba gaba
11 7955 18726 lLN2P_c lLN2P_c lLN2P_c gaba
12 7959 18730 lLN2P_b lLN2P_b lLN2P_b gaba gaba
13 8889 19767 lLN2P_b lLN2P_b lLN2P_b gaba gaba
14 9025 19921 lLN2P_a lLN2P_a lLN2P_a gaba
15 9447 20402 lLN2P_b lLN2P_b lLN2P_b gaba gaba
16 9607 20581 lLN2P_c lLN2P_c lLN2P_c gaba
17 9643 20620 lLN2P_b lLN2P_b lLN2P_b gaba gaba
18 10488 21567 lLN2P_c lLN2P_c lLN2P_c gaba
19 11035 22166 lLN2P_c lLN2P_c lLN2P_c gaba
20 11106 22243 lLN2P_c lLN2P_c lLN2P_c gaba
21 11136 22276 lLN2P_a lLN2P_a lLN2P_a gaba
22 12550 23854 lLN2P_a lLN2P_a lLN2P_a gaba
23 13411 24828 lLN2P_b lLN2P_b lLN2P_b gaba gaba
24 15720 27416 lLN2P_b lLN2P_b lLN2P_b gaba gaba
25 15896 27614 lLN2P_b lLN2P_b lLN2P_b gaba gaba
26 16611 28406 lLN2P_c lLN2P_c lLN2P_c gaba
27 16714 28525 lLN2P_b lLN2P_b lLN2P_b gaba gaba
28 18392 30421 lLN2P_b lLN2P_b lLN2P_b gaba gaba
29 22591 35196 lLN2P_a lLN2P_a lLN2P_a gaba
30 96266 130279 lLN2P_b lLN2P_b lLN2P_b gaba gaba
31 123710 267437 lLN2P_c lLN2P_c lLN2P_c gaba
32 141783 551294 lLN2P_c lLN2P_c lLN2P_c gaba
33 164024 918582 lLN2P_a lLN2P_a lLN2P_a gaba
@@ -0,0 +1,8 @@
{
"all_CPU_GPU_exact": true,
"alternative_MaleCNS_dynamics_run": false,
"learning_achieved": false,
"original_author_code_executed": false,
"real_motifs_frozen_only": 5,
"synthetic_policies": 4
}
@@ -0,0 +1,14 @@
edge_id,source_neuron_idx,target_neuron_idx,raw_count,source_body_id,target_body_id
1336648,1197,1381,210,11289,11478
1336655,1197,1511,172,11289,11620
1337065,1197,133666,104,11289,527577
1467340,1381,1197,259,11478,11289
1467355,1381,1511,235,11478,11620
1467852,1381,133666,64,11478,527577
1559765,1511,1197,226,11620,11289
1559772,1511,1381,283,11620,11478
1560267,1511,133666,70,11620,527577
20992285,133666,1197,95,527577,11289
20992291,133666,1381,57,527577,11478
20992294,133666,1511,76,527577,11620
20992891,133666,82312,43,527577,109321
1 edge_id source_neuron_idx target_neuron_idx raw_count source_body_id target_body_id
2 1336648 1197 1381 210 11289 11478
3 1336655 1197 1511 172 11289 11620
4 1337065 1197 133666 104 11289 527577
5 1467340 1381 1197 259 11478 11289
6 1467355 1381 1511 235 11478 11620
7 1467852 1381 133666 64 11478 527577
8 1559765 1511 1197 226 11620 11289
9 1559772 1511 1381 283 11620 11478
10 1560267 1511 133666 70 11620 527577
11 20992285 133666 1197 95 527577 11289
12 20992291 133666 1381 57 527577 11478
13 20992294 133666 1511 76 527577 11620
14 20992891 133666 82312 43 527577 109321
@@ -0,0 +1,8 @@
item,author,frozen_adapted
spike reset g,reset to zero,retain g
g during refractory,ODE paused; synaptic writes blocked,decay and accept arrivals
integration,linear exact state updater,forward Euler with decayed g
threshold,strict >,>=
within-step arrivals,"after integration, before reset",before integration
stimulated neurons,voltage Poisson input; refractory=0,forced spikes subject to 22-step refractory
W_syn,free parameter calibrated on FlyWire feeding response,same value transferred to MaleCNS; not independently measured
1 item author frozen_adapted
2 spike reset g reset to zero retain g
3 g during refractory ODE paused; synaptic writes blocked decay and accept arrivals
4 integration linear exact state updater forward Euler with decayed g
5 threshold strict > >=
6 within-step arrivals after integration, before reset before integration
7 stimulated neurons voltage Poisson input; refractory=0 forced spikes subject to 22-step refractory
8 W_syn free parameter calibrated on FlyWire feeding response same value transferred to MaleCNS; not independently measured
@@ -0,0 +1,57 @@
e62102c1084dd513dec04f9fdc41570441b25100d5fdcea9e43427f70870f0d7 INTERPRETATION.zh.md
a8b24e795ee1fc8b2c212367525ef9508d4edce74876a361a9164ce146158569 REPORT.md
7cce72b98892eac115e500340a8c11f6737c0dd83bfd7c9fbd28b2167bf2f60e audit/author-source-clauses.json
c61d57cfb8808b0af5133e5d061e3ed6c435a6475f7a23b90f16c2de45d999fb audit/final-status.json
d2e2c65cffa100598c6f991bcf8df3b094501fbe59d34519839df280a2d8b087 audit/local-inhibition-crosswalk.csv
4480a78f84ecca51e4153fa8cc9650a7f77ca3a91c04cd14cbe653a4f9162e4c audit/run-complete.json
c1dde5df5408aeb878d6c422bc1c86ba44c3c5770f986014e594e356412a013d audit/selected-metadata.parquet
9103e9d03fa21058a4f6cd21780c56fed8cdcfca26c34c2a43726e39aed8ec55 audit/selected-real-edges.csv
1ea234a0a1fff64234dbff05e1f25513151295b0cfb0a1fc7bd174d3f5b7e3e6 audit/semantics-differences.csv
3621f6d6476189190e2960fa43f11b275ba4eca848fdac50a1ba2925de6223e8 external-resources/LICENSE
402fcef4968c99397b0e908b3323ab9e6ef86af5583e46e6427f96f3d1091adf external-resources/environment_full.yml
fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e external-resources/model.py
7dc4014bbf9fbe64665a82d4542bba71df7c4497064850d30ef0278f23ba2e49 external-resources/provenance.json
cb6874d704e9a87f617eef07b92ab961a0440c6667a2f1a501982c9d9dfdee6d gpu-reference/extension-build/.ninja_deps
d7d7f7a1769a481f922466bc05f05c1e8684c46da24d46d0edc0ffe434a5be23 gpu-reference/extension-build/.ninja_log
c570f72b9a2f486e104ed3bf5b1b9f2ccc729ecab02046cd62389d629fb4f48f gpu-reference/extension-build/build.ninja
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 gpu-reference/extension-build/lock
f65d7c0d58aa7434a74eab446c528146b3fbd7282a1d5c47e3253999ba037721 gpu-reference/extension-build/male_cns_lif_deterministic_v2_ext.so
0635c52d1a7ffe457b52cf01fa71edf99295136abe73f0abd75ac8152e415151 gpu-reference/extension-build/phase4p_ext.cuda.o
27d284f6a369221a931251b5a03ce133cc8231a97942567d4efafbfb45483811 gpu-reference/extension-build/phase4p_ext.o
9d88976e53ac778d64887e0708aaf06922af3fddb69717b4cda2ea4bb750c2ae gpu-reference/extension.json
add7a3b450e3f3043af602baf8e770e5358c1c024d44bb21a74ef18429c0680e motifs/feedforward-edges.csv
f687cf303d9318404c954e2e699d65d7893ad3f33115c0f9c5ea45b9698ff275 motifs/feedforward-events.parquet
6a24c8d2ad476e2250af49172be12de9d43346bc84f043b19d012fa0c53d2fba motifs/feedforward-state.npz
9103e9d03fa21058a4f6cd21780c56fed8cdcfca26c34c2a43726e39aed8ec55 motifs/five-edges.csv
19fef92b32be32ced2ec6b6581c9dac05055e9d550c104dd0d5ec5e33e25e759 motifs/five-events.parquet
15095ada05014741f6b6576c2d12d1a8f1ae482ae6f012d5e2be346c796baf4b motifs/five-state.npz
9103e9d03fa21058a4f6cd21780c56fed8cdcfca26c34c2a43726e39aed8ec55 motifs/no_input-edges.csv
071326bc3033505f431e38d716cb8ec681dc192b8389792059bb8a75027a1f10 motifs/no_input-events.parquet
a74134da72381d0dbff10bb5143691add6081487dede488a939bb0a4dbf5c20e motifs/no_input-state.npz
05a7c7a5547aaeea4d1522f9cea75463405f0c3cdfbc4d563f111ad51cb80e00 motifs/pair-edges.csv
962a440924a9b2a4a3677b8968e63042de0b80ea4e496c213ebcf40d5e530e85 motifs/pair-events.parquet
924774344956dd5a530c3d00c8103fe4d1b584837d5e91f05b60094540a78897 motifs/pair-state.npz
4e762a26ecc7d3c3f862260495b6064a60832431b61dd41b944e8c501617a906 motifs/summary.csv
c842c5bce0b11275c0eba9532955026a4b58931c2346e178bfa8a84227289c71 motifs/trio-edges.csv
a39d58de867f4f1ce1291e0ece25a52b70a3e04024508f77cb4a29eb4e09fa0e motifs/trio-events.parquet
46c8a495ee1358a6173a2eebebe9ce2d6481b27f10e0c56cf9602c7969cd8702 motifs/trio-state.npz
ef768705779fdf1fa5563e00d80b703ee70804742bbf4fa701c4d63532896f80 performance/summary.json
a5aa62f5588fbf754c6164b69d61a5154d23fc8f749ae4c36aea3f4ad1fa2576 protocol/dynamics.json
6cbe6b4b43f7e3928b247a2188b955be5431224a01f8c0838544a0b9f34fe569 protocol/frozen-input-hashes.json
726e949b87ebd4e15e10ed3a57336f03bc8e4c2e13ebe8b7e8dbb718166b4f6e protocol/prepared-input-hashes.json
00a18f5e7e41892011cc69e25a151e61d1a44352b2152a11f77ef4576dfb83bf protocol/preregistered.json
96eed02282d703f483873bf56cacc9147ebdfb6c7cd25d159a8161a2d3532ee5 regression/anatomical-edge-validation.json
1125ada92933e1f69c53b1f2085c9678c154854b2ff1bbfcc68ffe851bac118b regression/feedforward.json
f39187d9efcc54ca48beed0b6daf3e18368652e11bef62065bcc988a9fc4fcdc regression/final-integrity.json
1125ada92933e1f69c53b1f2085c9678c154854b2ff1bbfcc68ffe851bac118b regression/five.json
0aa4d6b309121bf203ea475ea797136f21a46aba8e1dc513c2b522d3b2c97434 regression/frozen-five.json
31716107c5c2c6b9d05b81373f0ec7d95be15147e9cb84296fd8ef898e2338af regression/motifs.json
1125ada92933e1f69c53b1f2085c9678c154854b2ff1bbfcc68ffe851bac118b regression/no_input.json
1125ada92933e1f69c53b1f2085c9678c154854b2ff1bbfcc68ffe851bac118b regression/pair.json
f39187d9efcc54ca48beed0b6daf3e18368652e11bef62065bcc988a9fc4fcdc regression/preflight.json
68c3f652297bd8e7f8de7fb286ff45f1d3a59668df8313f17d1b6793ddada6ab regression/run-start.json
25cf81371c5a05ba841406f2ede9c4ddd4e2dec00230e90c3985879624337336 regression/synthetic.json
1125ada92933e1f69c53b1f2085c9678c154854b2ff1bbfcc68ffe851bac118b regression/trio.json
abe9ac4065f0ddeb5697b971e12aab4f36946eaa819536a06ecc58d0d2f0eb70 regression/unit-tests.json
3a05e5a7f0d95935c1e14ad4eb733575759f1f170f3c61ee9e94c7d86dd917c4 synthetic/results.csv
b5d14e98dda652c18dc626371d85f8239348feb7aedf78e9d2b6f0a14858f986 synthetic/traces.npz
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2023 Philip Shiu and Nico Spiller
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
@@ -0,0 +1,109 @@
name: brian2
channels:
- defaults
- conda-forge
dependencies:
- abseil-cpp=20211102.0=h0e60522_0
- arrow-cpp=11.0.0=py310h7cee713_0
- asttokens=2.2.1=pyhd8ed1ab_0
- aws-c-common=0.4.57=ha925a31_1
- aws-c-event-stream=0.1.6=hd77b12b_5
- aws-checksums=0.1.9=ha925a31_0
- aws-sdk-cpp=1.8.185=hd77b12b_0
- backcall=0.2.0=pyh9f0ad1d_0
- backports=1.0=pyhd8ed1ab_3
- backports.functools_lru_cache=1.6.4=pyhd8ed1ab_0
- boost-cpp=1.78.0=h5b4e17d_0
- brian2=2.5.1=py310hc781a3c_0
- bzip2=1.0.8=he774522_0
- c-ares=1.19.0=h2bbff1b_0
- ca-certificates=2023.5.7=h56e8100_0
- colorama=0.4.6=pyhd8ed1ab_0
- cython=0.29.33=py310hd77b12b_0
- debugpy=1.5.1=py310hd77b12b_0
- decorator=5.1.1=pyhd8ed1ab_0
- executing=1.2.0=pyhd8ed1ab_0
- gflags=2.2.2=ha925a31_1004
- glog=0.5.0=h4797de2_0
- gsl=2.7=hdfb1a43_0
- importlib-metadata=6.6.0=pyha770c72_0
- importlib_metadata=6.6.0=hd8ed1ab_0
- intel-openmp=2023.1.0=h57928b3_46319
- ipykernel=6.15.0=pyh025b116_0
- ipython=8.14.0=pyh08f2357_0
- jedi=0.18.2=pyhd8ed1ab_0
- jinja2=2.11.3=pyhd8ed1ab_2
- joblib=1.2.0=pyhd8ed1ab_0
- jupyter_client=8.2.0=pyhd8ed1ab_0
- jupyter_core=5.3.0=py310h5588dad_0
- libblas=3.9.0=8_mkl
- libbrotlicommon=1.0.9=h8ffe710_7
- libbrotlidec=1.0.9=h8ffe710_7
- libbrotlienc=1.0.9=h8ffe710_7
- libcblas=3.9.0=8_mkl
- libcurl=7.88.1=h86230a5_0
- libffi=3.4.4=hd77b12b_0
- liblapack=3.9.0=8_mkl
- libprotobuf=3.20.3=h23ce68f_0
- libsodium=1.0.18=h8d14728_1
- libssh2=1.10.0=hcd4344a_0
- libthrift=0.15.0=h636ae23_0
- lz4-c=1.9.4=h2bbff1b_0
- m2w64-gcc-libgfortran=5.3.0=6
- m2w64-gcc-libs=5.3.0=7
- m2w64-gcc-libs-core=5.3.0=7
- m2w64-gmp=6.1.0=2
- m2w64-libwinpthread-git=5.0.0.4634.697f757=2
- markupsafe=1.1.1=py310he2412df_4
- matplotlib-inline=0.1.6=pyhd8ed1ab_0
- mkl=2020.4=hb70f87d_311
- mpmath=1.3.0=pyhd8ed1ab_0
- msys2-conda-epoch=20160418=1
- nest-asyncio=1.5.6=pyhd8ed1ab_0
- numpy=1.22.3=py310hed7ac4c_2
- openssl=1.1.1t=h2bbff1b_0
- orc=1.7.4=h623e30f_1
- packaging=23.1=pyhd8ed1ab_0
- pandas=1.4.3=py310hf5e1058_0
- parso=0.8.3=pyhd8ed1ab_0
- pickleshare=0.7.5=py_1003
- pip=23.0.1=py310haa95532_0
- platformdirs=3.5.1=pyhd8ed1ab_0
- prompt-toolkit=3.0.38=pyha770c72_0
- prompt_toolkit=3.0.38=hd8ed1ab_0
- psutil=5.9.0=py310h2bbff1b_0
- pure_eval=0.2.2=pyhd8ed1ab_0
- py-cpuinfo=9.0.0=pyhd8ed1ab_0
- pyarrow=11.0.0=py310h790e06d_0
- pygments=2.15.1=pyhd8ed1ab_0
- pyparsing=3.0.9=pyhd8ed1ab_0
- python=3.10.11=h966fe2a_2
- python-dateutil=2.8.2=pyhd8ed1ab_0
- python_abi=3.10=2_cp310
- pytz=2023.3=pyhd8ed1ab_0
- pywin32=305=py310h2bbff1b_0
- pyzmq=25.0.2=py310hd77b12b_0
- re2=2022.04.01=h0e60522_0
- scipy=1.8.1=py310h7c00807_2
- setuptools=67.8.0=py310haa95532_0
- six=1.16.0=pyh6c4a22f_0
- snappy=1.1.9=h6c2663c_0
- sqlite=3.41.2=h2bbff1b_0
- stack_data=0.6.2=pyhd8ed1ab_0
- sympy=1.12=pyh04b8f61_3
- tk=8.6.12=h2bbff1b_0
- tornado=6.2=py310he2412df_0
- traitlets=5.9.0=pyhd8ed1ab_0
- typing-extensions=4.6.3=hd8ed1ab_0
- typing_extensions=4.6.3=pyha770c72_0
- tzdata=2023c=h04d1e81_0
- utf8proc=2.6.1=h2bbff1b_0
- vc=14.2=h21ff451_1
- vs2015_runtime=14.27.29016=h5e58377_2
- wcwidth=0.2.6=pyhd8ed1ab_0
- wheel=0.38.4=py310haa95532_0
- xz=5.4.2=h8cc25b3_0
- zeromq=4.3.4=h0e60522_1
- zipp=3.15.0=pyhd8ed1ab_0
- zlib=1.2.13=h8cc25b3_0
- zstd=1.5.5=hd43e919_0
@@ -0,0 +1,373 @@
import pandas as pd
from textwrap import dedent
# brian 2
from brian2 import NeuronGroup, Synapses, PoissonInput, SpikeMonitor, Network
from brian2 import mV, ms, Hz
# file handling
from pathlib import Path
# parallelization
from joblib import Parallel, delayed, parallel_backend
from time import time
default_params = {
# trials
't_run' : 1000 * ms, # duration of trial
'n_run' : 30, # number of runs
# network constants
# Kakaria and de Bivort 2017 https://doi.org/10.3389/fnbeh.2017.00008
'v_0' : -52 * mV, # resting potential
'v_rst' : -52 * mV, # reset potential after spike
'v_th' : -45 * mV, # threshold for spiking
't_mbr' : 20 * ms, # membrane time scale (capacitance * resistance = .002 * uF * 10. * Mohm)
# Jürgensen et al https://doi.org/10.1088/2634-4386/ac3ba6
'tau' : 5 * ms, # time constant
# Lazar et al https://doi.org/10.7554/eLife.62362
't_rfc' : 2.2 * ms, # refractory period
# Paul et al 2015 doi: 10.3389/fncel.2015.00029
't_dly' : 1.8*ms, # delay for changes in post-synaptic neuron
# Free parameter
'w_syn' : .275 * mV, # weight per synapse (note: modulated by exponential decay)
# Default activation rates
'r_poi' : 150*Hz, # default rate of the Poisson inputs
'r_poi2' : 0*Hz, # default rate of a 2nd class of Poisson inputs
'f_poi' : 250, # scaling factor for Poisson synapse; 250 is sufficient to cause spiking
# equations for neurons # alpha synapse https://doi.org/10.1017/CBO9780511815706; See https://brian2.readthedocs.io/en/stable/user/converting_from_integrated_form.html
'eqs' : dedent('''
dv/dt = (v_0 - v + g) / t_mbr : volt (unless refractory)
dg/dt = -g / tau : volt (unless refractory)
rfc : second
'''),
# condition for spike
'eq_th' : 'v > v_th',
# rules for spike
'eq_rst' : 'v = v_rst; w = 0; g = 0 * mV',
}
#######################
# brian2 model setup
def poi(neu, exc, exc2, params):
'''Create PoissonInput for neurons.
For each neuron in 'names' a PoissonInput is generated and
the refractory period of that neuron is set to 0 in NeuronGroup.
Parameters
----------
neu : NeuronGroup
Defined brian2.NeuronGroup object
exc : list
Indices of neurons for which to create Poisson input
exc2 : list
Indices of neurons for which to create Poisson input with `r_poi`
params : dict
Constants and equations that are used to construct the brian2 network model
Returns
-------
pois : list
PoissonInput objects for each neuron in 'exc'
neu : NeuronGroup
NeuronGroup with adjusted refractory periods
'''
pois = []
for i in exc:
p = PoissonInput(
target=neu[i],
target_var='v',
N=1,
rate=params['r_poi'],
weight=params['w_syn']*params['f_poi']
)
neu[i].rfc = 0 * ms # no refractory period for Poisson targets
pois.append(p)
for i in exc2:
p = PoissonInput(
target=neu[i],
target_var='v',
N=1,
rate=params['r_poi2'],
weight=params['w_syn']*params['f_poi']
)
neu[i].rfc = 0 * ms # no refractory period for Poisson targets
pois.append(p)
return pois, neu
def silence(slnc, syn):
'''Silence neuron by setting weights of all synapses from it to 0
Parameters
----------
slnc : list
List of neuron indices to silence
syn : brian2.Synapses
Defined synapses object
Returns
-------
syn : brian2.Synapses
Synapses with modified weights
'''
for i in slnc:
syn.w[' {} == i'.format(i)] = 0*mV
return syn
def create_model(path_comp, path_con, params):
'''Create default network model.
Convert the "completeness materialization" and "connectivity" dataframes
into a brian2 neural network model. Network constants and equations
are defined at the beginning of this file.
Parameters
----------
path_comp : str
path to "completeness materialization" dataframe
path_con : str
path to "connectivity" dataframe
params : dict
Constants and equations that are used to construct the brian2 network model
Returns
-------
neu : NeuronGroup
brian2.NeuronGroup object with neurons as in 'path_comp'
syn : Synapses
brian2.Synapses object with connections as in 'path_con'
spk_mon : SpikeMonitor
brian2.SpikeMonitor object, which records time of spike events
'''
# load neuron connectivity dataframes
df_comp = pd.read_csv(path_comp, index_col=0)
df_con = pd.read_parquet(path_con)
neu = NeuronGroup( # create neurons
N=len(df_comp),
model=params['eqs'],
method='linear',
threshold=params['eq_th'],
reset=params['eq_rst'],
refractory='rfc',
name='default_neurons',
namespace=params,
)
neu.v = params['v_0'] # initialize values
neu.g = 0
neu.rfc = params['t_rfc']
# create synapses
syn = Synapses(neu, neu, 'w : volt', on_pre='g += w', delay=params['t_dly'], name='default_synapses')
# connect synapses
i_pre = df_con.loc[:, 'Presynaptic_Index'].values
i_post = df_con.loc[:, 'Postsynaptic_Index'].values
syn.connect(i=i_pre, j=i_post)
# define connection weight
syn.w = df_con.loc[:,'Excitatory x Connectivity'].values * params['w_syn']
# object to record spikes
spk_mon = SpikeMonitor(neu)
return neu, syn, spk_mon
#####################
# running simulations
def get_spk_trn(spk_mon):
'''Extracts spike times from 'spk_mon'
The spike times recorded in the SpikeMonitor object during
simulation are converted to a list of times for each neurons.
Returns dict with "brian ID": "list of spike times".
Parameters
----------
spk_mon : SpikeMonitor
Contains recorded spike times
Returns
-------
spk_trn : dict
Mapping between brian neuron IDs and spike times
'''
spk_trn = {k: v for k, v in spk_mon.spike_trains().items() if len(v)}
return spk_trn
def construct_dataframe(res, exp_name, i2flyid):
'''Take spike time dict and collects spikes in pandas dataframe
Parameters
----------
res : list
List with spike time dicts for each trial
exp_name : str
Name of the experiment
i2flyid : dict
Mapping between Brian IDs and flywire IDs
Returns
-------
df : pandas.DataFrame
Dataframe where each row is one spike
'''
ids, ts, nrun = [], [], []
for n, i in enumerate(res):
for j, k in i.items():
ids.extend([j for _ in k])
nrun.extend([n for _ in k])
ts.extend([float(l) for l in k])
d = {
't': ts,
'trial': nrun,
'flywire_id': [i2flyid[i] for i in ids],
'exp_name': exp_name
}
df = pd.DataFrame(d)
return df
def run_trial(exc, exc2, slnc, path_comp, path_con, params):
'''Run single trial of coactivation/silencng experiment
During the coactivation experiment, the neurons in 'exc' are
Poisson inputs. The simulation runs for 't_run'.
Parameters
----------
exc: list
contains indices of neurons for PoissonInput
exc2: list
contains indices of neurons for PoissonInput of different frequency `r_poi2`
slnc: list
contains indices of neurons to silence
path_comp: Path
path to "completeness materialization" dataframe
path_con: Path
path to "connectivity" dataframe
params : dict
Constants and equations that are used to construct the brian2 network model
Returns
-------
spk_trn : dict
Mapping between brian neuron IDs and spike times
'''
# get default network
neu, syn, spk_mon = create_model(path_comp, path_con, params)
# define Poisson input for excitation
poi_inp, neu = poi(neu, exc, exc2, params)
# silence neurons
syn = silence(slnc, syn)
# collect in Network object
net = Network(neu, syn, spk_mon, *poi_inp)
# run simulation
net.run(duration=params['t_run'])
# spike times
spk_trn = get_spk_trn(spk_mon)
return spk_trn
def run_exp(exp_name, neu_exc, path_res, path_comp, path_con,
params=default_params, neu_slnc=[], neu_exc2=[],
n_proc=-1, force_overwrite=False):
'''
Run default network experiment
Neurons in `neu_exc` are Poisson external inputs
Neurons in `neu_slnc` are silenced
Parameters
----------
exp_name: str
name of the experiment
neu_exc: list
contains custom names or flywire IDs of neurons to be excited
path_res: str
path to the output folder where spike data is stored
path_comp: str
path to "completeness materialization" dataframe
path_con: str
path to "connectivity" dataframe
params : dict
Constants and equations that are used to construct the brian2 network model
neu_slnc : list (optional)
contains custom names or flywire IDs of neurons to be silenced
neu_exc2 : list (optional)
contains custom names or flywire IDs of neurons to be excited with different frequency
requires `r_poi2` to be defined in `params`
n_proc: int (optional)
number of cores to be used for parallel runs
default: -1 (use all available cores)
n_proc=1 is equivalent serial code
force_overwrite : bool (optional)
If True, overwrite output files, else skip simulation, by default False
'''
# convert to Path objects
path_res, path_comp, path_con = [ Path(i) for i in [path_res, path_comp, path_con] ]
# define output files
path_save = path_res / '{}.parquet'.format(exp_name)
if path_save.is_file() and not force_overwrite:
print('>>> Skipping experiment {} because {} exists and force_overwrite = {}'.format(exp_name, path_save, force_overwrite))
return
# load name/id mappings
df_comp = pd.read_csv(path_comp, index_col=0) # load completeness dataframe
flyid2i = {j: i for i, j in enumerate(df_comp.index)} # flywire id: biran ID
i2flyid = {j: i for i, j in flyid2i.items()} # brian ID: flywire ID
# print info
print('>>> Experiment: {}'.format(exp_name))
print(' Output file: {}'.format(path_save))
print(' Excited neurons: {}'.format(len(neu_exc + neu_exc2)))
if neu_slnc:
print(' Silenced neurons: {}'.format(len(neu_slnc)))
# start parallel calculation
n_run = params['n_run']
start = time()
with parallel_backend('loky', n_jobs=n_proc):
exc = [ flyid2i[n] for n in neu_exc ]
exc2 = [ flyid2i[n] for n in neu_exc2 ]
slnc = [ flyid2i[n] for n in neu_slnc ]
res = Parallel()(
delayed(
run_trial)(exc, exc2, slnc, path_comp, path_con, params) for _ in range(n_run))
# print simulation time
walltime = time() - start
print(' Elapsed time: {} s'.format(int(walltime)))
# dataframe with spike times
df = construct_dataframe(res, exp_name, i2flyid)
# store spike data
df.to_parquet(path_save, compression='brotli')
@@ -0,0 +1,29 @@
{
"commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960",
"downloaded_code_executed": false,
"files": [
{
"bytes": 11900,
"license": "MIT",
"path": "model.py",
"sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e",
"url": "https://raw.githubusercontent.com/philshiu/Drosophila_brain_model/91bdd1e7dcf193f3e7ca5a8933497fcef63b7960/model.py"
},
{
"bytes": 1085,
"license": "MIT",
"path": "LICENSE",
"sha256": "3621f6d6476189190e2960fa43f11b275ba4eca848fdac50a1ba2925de6223e8",
"url": "https://raw.githubusercontent.com/philshiu/Drosophila_brain_model/91bdd1e7dcf193f3e7ca5a8933497fcef63b7960/LICENSE"
},
{
"bytes": 3445,
"license": "MIT",
"path": "environment_full.yml",
"sha256": "402fcef4968c99397b0e908b3323ab9e6ef86af5583e46e6427f96f3d1091adf",
"url": "https://raw.githubusercontent.com/philshiu/Drosophila_brain_model/91bdd1e7dcf193f3e7ca5a8933497fcef63b7960/environment_full.yml"
}
],
"new_dependencies_installed": false,
"paper": "https://www.nature.com/articles/s41586-024-07763-9"
}
@@ -0,0 +1,17 @@
{
"binary": "/data/digital-drosophila/experiments/phase4ac-lif-semantics/gpu-reference/extension-build/male_cns_lif_deterministic_v2_ext.so",
"binary_sha256": "f65d7c0d58aa7434a74eab446c528146b3fbd7282a1d5c47e3253999ba037721",
"build_seconds": 58.064692621002905,
"flags": {
"cuda": [
"-O3",
"--fmad=false",
"-std=c++20"
],
"cxx": [
"-O3",
"-ffp-contract=off"
]
},
"status": "PASS"
}
@@ -0,0 +1,290 @@
{
"created_utc": "2026-09-29T16:58:20.625630+00:00",
"files": [
{
"bytes": 5154,
"path": "INTERPRETATION.zh.md",
"sha256": "e62102c1084dd513dec04f9fdc41570441b25100d5fdcea9e43427f70870f0d7"
},
{
"bytes": 5210,
"path": "REPORT.md",
"sha256": "a8b24e795ee1fc8b2c212367525ef9508d4edce74876a361a9164ce146158569"
},
{
"bytes": 558,
"path": "audit/author-source-clauses.json",
"sha256": "7cce72b98892eac115e500340a8c11f6737c0dd83bfd7c9fbd28b2167bf2f60e"
},
{
"bytes": 227,
"path": "audit/final-status.json",
"sha256": "c61d57cfb8808b0af5133e5d061e3ed6c435a6475f7a23b90f16c2de45d999fb"
},
{
"bytes": 1552,
"path": "audit/local-inhibition-crosswalk.csv",
"sha256": "d2e2c65cffa100598c6f991bcf8df3b094501fbe59d34519839df280a2d8b087"
},
{
"bytes": 208,
"path": "audit/run-complete.json",
"sha256": "4480a78f84ecca51e4153fa8cc9650a7f77ca3a91c04cd14cbe653a4f9162e4c"
},
{
"bytes": 34348,
"path": "audit/selected-metadata.parquet",
"sha256": "c1dde5df5408aeb878d6c422bc1c86ba44c3c5770f986014e594e356412a013d"
},
{
"bytes": 547,
"path": "audit/selected-real-edges.csv",
"sha256": "9103e9d03fa21058a4f6cd21780c56fed8cdcfca26c34c2a43726e39aed8ec55"
},
{
"bytes": 531,
"path": "audit/semantics-differences.csv",
"sha256": "1ea234a0a1fff64234dbff05e1f25513151295b0cfb0a1fc7bd174d3f5b7e3e6"
},
{
"bytes": 1085,
"path": "external-resources/LICENSE",
"sha256": "3621f6d6476189190e2960fa43f11b275ba4eca848fdac50a1ba2925de6223e8"
},
{
"bytes": 3445,
"path": "external-resources/environment_full.yml",
"sha256": "402fcef4968c99397b0e908b3323ab9e6ef86af5583e46e6427f96f3d1091adf"
},
{
"bytes": 11900,
"path": "external-resources/model.py",
"sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e"
},
{
"bytes": 1137,
"path": "external-resources/provenance.json",
"sha256": "7dc4014bbf9fbe64665a82d4542bba71df7c4497064850d30ef0278f23ba2e49"
},
{
"bytes": 723996,
"path": "gpu-reference/extension-build/.ninja_deps",
"sha256": "cb6874d704e9a87f617eef07b92ab961a0440c6667a2f1a501982c9d9dfdee6d"
},
{
"bytes": 224,
"path": "gpu-reference/extension-build/.ninja_log",
"sha256": "d7d7f7a1769a481f922466bc05f05c1e8684c46da24d46d0edc0ffe434a5be23"
},
{
"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": "f65d7c0d58aa7434a74eab446c528146b3fbd7282a1d5c47e3253999ba037721"
},
{
"bytes": 101992,
"path": "gpu-reference/extension-build/phase4p_ext.cuda.o",
"sha256": "0635c52d1a7ffe457b52cf01fa71edf99295136abe73f0abd75ac8152e415151"
},
{
"bytes": 377136,
"path": "gpu-reference/extension-build/phase4p_ext.o",
"sha256": "27d284f6a369221a931251b5a03ce133cc8231a97942567d4efafbfb45483811"
},
{
"bytes": 442,
"path": "gpu-reference/extension.json",
"sha256": "9d88976e53ac778d64887e0708aaf06922af3fddb69717b4cda2ea4bb750c2ae"
},
{
"bytes": 228,
"path": "motifs/feedforward-edges.csv",
"sha256": "add7a3b450e3f3043af602baf8e770e5358c1c024d44bb21a74ef18429c0680e"
},
{
"bytes": 1716,
"path": "motifs/feedforward-events.parquet",
"sha256": "f687cf303d9318404c954e2e699d65d7893ad3f33115c0f9c5ea45b9698ff275"
},
{
"bytes": 85957,
"path": "motifs/feedforward-state.npz",
"sha256": "6a24c8d2ad476e2250af49172be12de9d43346bc84f043b19d012fa0c53d2fba"
},
{
"bytes": 547,
"path": "motifs/five-edges.csv",
"sha256": "9103e9d03fa21058a4f6cd21780c56fed8cdcfca26c34c2a43726e39aed8ec55"
},
{
"bytes": 9974,
"path": "motifs/five-events.parquet",
"sha256": "19fef92b32be32ced2ec6b6581c9dac05055e9d550c104dd0d5ec5e33e25e759"
},
{
"bytes": 268297,
"path": "motifs/five-state.npz",
"sha256": "15095ada05014741f6b6576c2d12d1a8f1ae482ae6f012d5e2be346c796baf4b"
},
{
"bytes": 547,
"path": "motifs/no_input-edges.csv",
"sha256": "9103e9d03fa21058a4f6cd21780c56fed8cdcfca26c34c2a43726e39aed8ec55"
},
{
"bytes": 1472,
"path": "motifs/no_input-events.parquet",
"sha256": "071326bc3033505f431e38d716cb8ec681dc192b8389792059bb8a75027a1f10"
},
{
"bytes": 3114,
"path": "motifs/no_input-state.npz",
"sha256": "a74134da72381d0dbff10bb5143691add6081487dede488a939bb0a4dbf5c20e"
},
{
"bytes": 152,
"path": "motifs/pair-edges.csv",
"sha256": "05a7c7a5547aaeea4d1522f9cea75463405f0c3cdfbc4d563f111ad51cb80e00"
},
{
"bytes": 4157,
"path": "motifs/pair-events.parquet",
"sha256": "962a440924a9b2a4a3677b8968e63042de0b80ea4e496c213ebcf40d5e530e85"
},
{
"bytes": 14660,
"path": "motifs/pair-state.npz",
"sha256": "924774344956dd5a530c3d00c8103fe4d1b584837d5e91f05b60094540a78897"
},
{
"bytes": 1009,
"path": "motifs/summary.csv",
"sha256": "4e762a26ecc7d3c3f862260495b6064a60832431b61dd41b944e8c501617a906"
},
{
"bytes": 288,
"path": "motifs/trio-edges.csv",
"sha256": "c842c5bce0b11275c0eba9532955026a4b58931c2346e178bfa8a84227289c71"
},
{
"bytes": 7476,
"path": "motifs/trio-events.parquet",
"sha256": "a39d58de867f4f1ce1291e0ece25a52b70a3e04024508f77cb4a29eb4e09fa0e"
},
{
"bytes": 18538,
"path": "motifs/trio-state.npz",
"sha256": "46c8a495ee1358a6173a2eebebe9ce2d6481b27f10e0c56cf9602c7969cd8702"
},
{
"bytes": 138,
"path": "performance/summary.json",
"sha256": "ef768705779fdf1fa5563e00d80b703ee70804742bbf4fa701c4d63532896f80"
},
{
"bytes": 291,
"path": "protocol/dynamics.json",
"sha256": "a5aa62f5588fbf754c6164b69d61a5154d23fc8f749ae4c36aea3f4ad1fa2576"
},
{
"bytes": 434,
"path": "protocol/frozen-input-hashes.json",
"sha256": "6cbe6b4b43f7e3928b247a2188b955be5431224a01f8c0838544a0b9f34fe569"
},
{
"bytes": 524,
"path": "protocol/prepared-input-hashes.json",
"sha256": "726e949b87ebd4e15e10ed3a57336f03bc8e4c2e13ebe8b7e8dbb718166b4f6e"
},
{
"bytes": 3227,
"path": "protocol/preregistered.json",
"sha256": "00a18f5e7e41892011cc69e25a151e61d1a44352b2152a11f77ef4576dfb83bf"
},
{
"bytes": 182,
"path": "regression/anatomical-edge-validation.json",
"sha256": "96eed02282d703f483873bf56cacc9147ebdfb6c7cd25d159a8161a2d3532ee5"
},
{
"bytes": 185,
"path": "regression/feedforward.json",
"sha256": "1125ada92933e1f69c53b1f2085c9678c154854b2ff1bbfcc68ffe851bac118b"
},
{
"bytes": 1664,
"path": "regression/final-integrity.json",
"sha256": "f39187d9efcc54ca48beed0b6daf3e18368652e11bef62065bcc988a9fc4fcdc"
},
{
"bytes": 185,
"path": "regression/five.json",
"sha256": "1125ada92933e1f69c53b1f2085c9678c154854b2ff1bbfcc68ffe851bac118b"
},
{
"bytes": 1206,
"path": "regression/frozen-five.json",
"sha256": "0aa4d6b309121bf203ea475ea797136f21a46aba8e1dc513c2b522d3b2c97434"
},
{
"bytes": 494,
"path": "regression/motifs.json",
"sha256": "31716107c5c2c6b9d05b81373f0ec7d95be15147e9cb84296fd8ef898e2338af"
},
{
"bytes": 185,
"path": "regression/no_input.json",
"sha256": "1125ada92933e1f69c53b1f2085c9678c154854b2ff1bbfcc68ffe851bac118b"
},
{
"bytes": 185,
"path": "regression/pair.json",
"sha256": "1125ada92933e1f69c53b1f2085c9678c154854b2ff1bbfcc68ffe851bac118b"
},
{
"bytes": 1664,
"path": "regression/preflight.json",
"sha256": "f39187d9efcc54ca48beed0b6daf3e18368652e11bef62065bcc988a9fc4fcdc"
},
{
"bytes": 179,
"path": "regression/run-start.json",
"sha256": "68c3f652297bd8e7f8de7fb286ff45f1d3a59668df8313f17d1b6793ddada6ab"
},
{
"bytes": 155,
"path": "regression/synthetic.json",
"sha256": "25cf81371c5a05ba841406f2ede9c4ddd4e2dec00230e90c3985879624337336"
},
{
"bytes": 185,
"path": "regression/trio.json",
"sha256": "1125ada92933e1f69c53b1f2085c9678c154854b2ff1bbfcc68ffe851bac118b"
},
{
"bytes": 33,
"path": "regression/unit-tests.json",
"sha256": "abe9ac4065f0ddeb5697b971e12aab4f36946eaa819536a06ecc58d0d2f0eb70"
},
{
"bytes": 7495,
"path": "synthetic/results.csv",
"sha256": "3a05e5a7f0d95935c1e14ad4eb733575759f1f170f3c61ee9e94c7d86dd917c4"
},
{
"bytes": 366125,
"path": "synthetic/traces.npz",
"sha256": "b5d14e98dda652c18dc626371d85f8239348feb7aedf78e9d2b6f0a14858f986"
}
]
}
@@ -0,0 +1,5 @@
edge_id,source_neuron_idx,target_neuron_idx,raw_count,source_body_id,target_body_id
1337065,1197,133666,104,11289,527577
1467355,1381,1511,235,11478,11620
1559765,1511,1197,226,11620,11289
20992891,133666,82312,43,527577,109321
1 edge_id source_neuron_idx target_neuron_idx raw_count source_body_id target_body_id
2 1337065 1197 133666 104 11289 527577
3 1467355 1381 1511 235 11478 11620
4 1559765 1511 1197 226 11620 11289
5 20992891 133666 82312 43 527577 109321
@@ -0,0 +1,14 @@
edge_id,source_neuron_idx,target_neuron_idx,raw_count,source_body_id,target_body_id
1336648,1197,1381,210,11289,11478
1336655,1197,1511,172,11289,11620
1337065,1197,133666,104,11289,527577
1467340,1381,1197,259,11478,11289
1467355,1381,1511,235,11478,11620
1467852,1381,133666,64,11478,527577
1559765,1511,1197,226,11620,11289
1559772,1511,1381,283,11620,11478
1560267,1511,133666,70,11620,527577
20992285,133666,1197,95,527577,11289
20992291,133666,1381,57,527577,11478
20992294,133666,1511,76,527577,11620
20992891,133666,82312,43,527577,109321
1 edge_id source_neuron_idx target_neuron_idx raw_count source_body_id target_body_id
2 1336648 1197 1381 210 11289 11478
3 1336655 1197 1511 172 11289 11620
4 1337065 1197 133666 104 11289 527577
5 1467340 1381 1197 259 11478 11289
6 1467355 1381 1511 235 11478 11620
7 1467852 1381 133666 64 11478 527577
8 1559765 1511 1197 226 11620 11289
9 1559772 1511 1381 283 11620 11478
10 1560267 1511 133666 70 11620 527577
11 20992285 133666 1197 95 527577 11289
12 20992291 133666 1381 57 527577 11478
13 20992294 133666 1511 76 527577 11620
14 20992891 133666 82312 43 527577 109321
@@ -0,0 +1,14 @@
edge_id,source_neuron_idx,target_neuron_idx,raw_count,source_body_id,target_body_id
1336648,1197,1381,210,11289,11478
1336655,1197,1511,172,11289,11620
1337065,1197,133666,104,11289,527577
1467340,1381,1197,259,11478,11289
1467355,1381,1511,235,11478,11620
1467852,1381,133666,64,11478,527577
1559765,1511,1197,226,11620,11289
1559772,1511,1381,283,11620,11478
1560267,1511,133666,70,11620,527577
20992285,133666,1197,95,527577,11289
20992291,133666,1381,57,527577,11478
20992294,133666,1511,76,527577,11620
20992891,133666,82312,43,527577,109321
1 edge_id source_neuron_idx target_neuron_idx raw_count source_body_id target_body_id
2 1336648 1197 1381 210 11289 11478
3 1336655 1197 1511 172 11289 11620
4 1337065 1197 133666 104 11289 527577
5 1467340 1381 1197 259 11478 11289
6 1467355 1381 1511 235 11478 11620
7 1467852 1381 133666 64 11478 527577
8 1559765 1511 1197 226 11620 11289
9 1559772 1511 1381 283 11620 11478
10 1560267 1511 133666 70 11620 527577
11 20992285 133666 1197 95 527577 11289
12 20992291 133666 1381 57 527577 11478
13 20992294 133666 1511 76 527577 11620
14 20992891 133666 82312 43 527577 109321
@@ -0,0 +1,3 @@
edge_id,source_neuron_idx,target_neuron_idx,raw_count,source_body_id,target_body_id
1467355,1381,1511,235,11478,11620
1559772,1511,1381,283,11620,11478
1 edge_id source_neuron_idx target_neuron_idx raw_count source_body_id target_body_id
2 1467355 1381 1511 235 11478 11620
3 1559772 1511 1381 283 11620 11478
@@ -0,0 +1,21 @@
motif,neuron_idx,spikes,late_spikes,first_ms,last_ms,external_force_requests,frozen_math_unchanged,whole_brain_necessity_proven
pair,1381,237,119,0.0,999.3000000000001,1,True,False
pair,1511,236,119,4.9,997.5,0,True,False
trio,1197,355,179,4.5,999.3000000000001,0,True,False
trio,1381,355,178,0.0,997.8000000000001,1,True,False
trio,1511,354,178,4.9,997.4000000000001,0,True,False
five,1197,370,185,4.5,998.8000000000001,0,True,False
five,1381,369,185,0.0,997.4000000000001,1,True,False
five,1511,367,186,4.9,999.5,0,True,False
five,82312,80,41,26.400000000000002,990.3000000000001,0,True,False
five,133666,297,150,8.8,999.5,0,True,False
feedforward,1197,1,0,10.0,10.0,0,True,False
feedforward,1381,1,0,0.0,0.0,1,True,False
feedforward,1511,1,0,4.9,4.9,0,True,False
feedforward,82312,0,0,,,0,True,False
feedforward,133666,0,0,,,0,True,False
no_input,1197,0,0,,,0,True,False
no_input,1381,0,0,,,0,True,False
no_input,1511,0,0,,,0,True,False
no_input,82312,0,0,,,0,True,False
no_input,133666,0,0,,,0,True,False
1 motif neuron_idx spikes late_spikes first_ms last_ms external_force_requests frozen_math_unchanged whole_brain_necessity_proven
2 pair 1381 237 119 0.0 999.3000000000001 1 True False
3 pair 1511 236 119 4.9 997.5 0 True False
4 trio 1197 355 179 4.5 999.3000000000001 0 True False
5 trio 1381 355 178 0.0 997.8000000000001 1 True False
6 trio 1511 354 178 4.9 997.4000000000001 0 True False
7 five 1197 370 185 4.5 998.8000000000001 0 True False
8 five 1381 369 185 0.0 997.4000000000001 1 True False
9 five 1511 367 186 4.9 999.5 0 True False
10 five 82312 80 41 26.400000000000002 990.3000000000001 0 True False
11 five 133666 297 150 8.8 999.5 0 True False
12 feedforward 1197 1 0 10.0 10.0 0 True False
13 feedforward 1381 1 0 0.0 0.0 1 True False
14 feedforward 1511 1 0 4.9 4.9 0 True False
15 feedforward 82312 0 0 0 True False
16 feedforward 133666 0 0 0 True False
17 no_input 1197 0 0 0 True False
18 no_input 1381 0 0 0 True False
19 no_input 1511 0 0 0 True False
20 no_input 82312 0 0 0 True False
21 no_input 133666 0 0 0 True False
@@ -0,0 +1,7 @@
edge_id,source_neuron_idx,target_neuron_idx,raw_count,source_body_id,target_body_id
1336648,1197,1381,210,11289,11478
1336655,1197,1511,172,11289,11620
1467340,1381,1197,259,11478,11289
1467355,1381,1511,235,11478,11620
1559765,1511,1197,226,11620,11289
1559772,1511,1381,283,11620,11478
1 edge_id source_neuron_idx target_neuron_idx raw_count source_body_id target_body_id
2 1336648 1197 1381 210 11289 11478
3 1336655 1197 1511 172 11289 11620
4 1467340 1381 1197 259 11478 11289
5 1467355 1381 1511 235 11478 11620
6 1559765 1511 1197 226 11620 11289
7 1559772 1511 1381 283 11620 11478
@@ -0,0 +1,6 @@
{
"ComfyUI_unloaded": false,
"not_runtime_benchmark": true,
"peak_allocated_VRAM": 285994496,
"wall_seconds": 95.39833069499582
}
@@ -0,0 +1,12 @@
{
"dt_ms": 0.1,
"integration": "forward_euler",
"membrane_tau_ms": 20.0,
"refractory_ms": 2.2,
"reset_potential_mv": -52.0,
"resting_potential_mv": -52.0,
"synaptic_delay_ms": 1.8,
"synaptic_tau_ms": 5.0,
"threshold_mv": -45.0,
"w_syn_mv_per_anatomical_synapse": 0.275
}
@@ -0,0 +1,7 @@
{
"baseline_phase4b": "693468685a7ff3db1d09a088e0bbdaa78c595d64086b27e9cc18abceb4c7d174",
"metadata": "922af16846a065c3dbfca7c11146b83ca217fcbd7392edc745f444a04eae8c63",
"runtime_config": "6d0189f4ec570cb3352d15ed8d195d1ccb32ee1d29c33dc1e4f00d377b74787e",
"runtime_cpp": "9d204d77d70b3723567671a61ce8e2e6162e261f48825e86fb34565e3faa622d",
"runtime_cuda": "c24985f4e366f90790d25ab5eceb9d6aff0f9064dd61c7413c13d2a2a4fa5fcd"
}
@@ -0,0 +1,7 @@
{
"audit/local-inhibition-crosswalk.csv": "d2e2c65cffa100598c6f991bcf8df3b094501fbe59d34519839df280a2d8b087",
"audit/selected-metadata.parquet": "c1dde5df5408aeb878d6c422bc1c86ba44c3c5770f986014e594e356412a013d",
"audit/selected-real-edges.csv": "9103e9d03fa21058a4f6cd21780c56fed8cdcfca26c34c2a43726e39aed8ec55",
"protocol/dynamics.json": "a5aa62f5588fbf754c6164b69d61a5154d23fc8f749ae4c36aea3f4ad1fa2576",
"protocol/frozen-input-hashes.json": "6cbe6b4b43f7e3928b247a2188b955be5431224a01f8c0838544a0b9f34fe569"
}
@@ -0,0 +1,123 @@
{
"before_analysis": true,
"config": {
"additional_frozen": [
"models/male-cns-lif/apl-pn-scope-audit-v1",
"experiments/phase4aa-apl-pn-scope",
"models/male-cns-lif/terminal-scope-diagnostic-v1",
"experiments/phase4ab-terminal-scope"
],
"author": {
"commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960",
"model_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e",
"paper": "https://www.nature.com/articles/s41586-024-07763-9",
"repository": "https://github.com/philshiu/Drosophila_brain_model"
},
"canonical": "datasets/male-cns-v1.0/processed/neuron-only",
"duration_ms": 1000,
"experiment": "experiments/phase4ac-lif-semantics",
"late_start_ms": 500,
"model": "models/male-cns-lif/lif-semantics-audit-v1",
"motifs": [
{
"name": "pair",
"nodes": [
1381,
1511
]
},
{
"name": "trio",
"nodes": [
1197,
1381,
1511
]
},
{
"name": "five",
"nodes": [
1197,
1381,
1511,
82312,
133666
]
},
{
"name": "feedforward",
"nodes": [
1197,
1381,
1511,
82312,
133666
],
"pairs": [
[
1381,
1511
],
[
1511,
1197
],
[
1197,
133666
],
[
133666,
82312
]
]
},
{
"force": false,
"name": "no_input",
"nodes": [
1197,
1381,
1511,
82312,
133666
]
}
],
"old_snapshot": "registry/snapshots/bootstrap-20260929",
"phase": "4AC",
"root": "/data/digital-drosophila",
"runtime": "models/male-cns-lif/deterministic-runtime-v2",
"scope": {
"conditioning": false,
"full_brain_alternative_dynamics": false,
"learned_candidate": false,
"requires_separate_authorization_for_new_brain_model": true
},
"seed_node": 1381,
"selected_nodes": [
1197,
1381,
1511,
82312,
133666
],
"synthetic_policies": [
"frozen",
"reset_g_only",
"refractory_gate_only",
"reset_and_refractory"
]
},
"parent_commit": "3213aada793740961885ba525494e95f019be6f8",
"sources": {
"PROTOCOL.md": "484296e132a836900efaa336d387b6974aa39c6af2dee211b7ba668cf71be257",
"audit_semantics.py": "f20724387ca7ed63b9e35fb9ce3d2964da44f85318856b7403b5536a442422b8",
"brian2-evidence.json": "bebd4dfa2dda1aca601a52b24e3eabdd887ce261c3548e377198ab154d81f16e",
"config.yaml": "433151183a4755f5fdfec33f6a9404aa5fb186ec45866ebb58be4ba3e4ebb568",
"math_reference.py": "5166366251f99359b1301f514f5d9ae5f0f041fd3a3f98902386192117f01aea",
"report.py": "76a21eca32ff8caba88ab84616e226e687dd0d2df5da62816c81b5ba08297394",
"test_math.py": "9ee96ed78bfa692b12f0db6862087a19dc351c4afd9bb94cf02733ec6a002f01"
},
"timestamp_utc": "2026-09-29T16:52:46.554275+00:00"
}
@@ -0,0 +1,10 @@
{
"checks": [
"canonical edge_id in source CSR row",
"exact target",
"exact raw int64 count",
"exact effective float32 weight"
],
"edges": 13,
"pass": true
}
@@ -0,0 +1,13 @@
{
"exact": {
"counts": true,
"g": true,
"history": true,
"neuron_idx": true,
"queue": true,
"ref": true,
"step": true,
"v": true
},
"pass": true
}
@@ -0,0 +1,48 @@
{
"experiments/phase4aa-apl-pn-scope": {
"checked": 68,
"checksums_sha256": "a69b2511689207b0d9ddbe2fabce3be71908f457bb898e3b685a213a796a272a",
"manifest_sha256": "6d75567af2a6c0993d4fc08e272814910c19fa9602811cfacd1ebc4ba76bc737",
"mismatches": [],
"pass": true
},
"experiments/phase4ab-terminal-scope": {
"checked": 199,
"checksums_sha256": "d83926a3055d9f9ca471ceba328076d7ceba883f267468750914080733e95e31",
"manifest_sha256": "cb3723f9dae29d4889489ae39f40293c927f4f9e532551e2c4d5214bf0a70140",
"mismatches": [],
"pass": true
},
"models/male-cns-lif/apl-pn-scope-audit-v1": {
"checked": 12,
"checksums_sha256": "55dc418f2d62be04601af33cbd8789578447e6a2289d3a581dc713cbb7466a25",
"manifest_sha256": "9120685eb02dc2bd3b38d42b2ade1f38f6bbc2a1ec269fd4d555cead2d628277",
"mismatches": [],
"pass": true
},
"models/male-cns-lif/terminal-scope-diagnostic-v1": {
"checked": 11,
"checksums_sha256": "92a03195cb41863027fd0397ad3811248354a5d3f2e91ffa2c297eba62dc2821",
"manifest_sha256": "5cea0035a95345825b73385c6e3056244c2a614d10a6fa6742487a331d8f0f3e",
"mismatches": [],
"pass": true
},
"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"
}
}
@@ -0,0 +1,13 @@
{
"exact": {
"counts": true,
"g": true,
"history": true,
"neuron_idx": true,
"queue": true,
"ref": true,
"step": true,
"v": true
},
"pass": true
}
@@ -0,0 +1,61 @@
{
"oracle": "frozen deterministic-v2, not Brian2",
"pass": true,
"trials": [
{
"exact": {
"counts": true,
"g": true,
"neuron_idx": true,
"step": true,
"v": true
},
"trial": "auditory-10hz",
"wall_seconds": 2.72041380200244
},
{
"exact": {
"counts": true,
"g": true,
"neuron_idx": true,
"step": true,
"v": true
},
"trial": "auditory-100hz",
"wall_seconds": 4.963989064999623
},
{
"exact": {
"counts": true,
"g": true,
"neuron_idx": true,
"step": true,
"v": true
},
"trial": "olfactory-50hz",
"wall_seconds": 4.997483518993249
},
{
"exact": {
"counts": true,
"g": true,
"neuron_idx": true,
"step": true,
"v": true
},
"trial": "mechanosensory-50hz",
"wall_seconds": 5.009357625996927
},
{
"exact": {
"counts": true,
"g": true,
"neuron_idx": true,
"step": true,
"v": true
},
"trial": "gustatory-50hz",
"wall_seconds": 4.982761088991538
}
]
}
@@ -0,0 +1,27 @@
[
{
"CPU_GPU_exact": true,
"motif": "pair",
"wall_seconds": 1.4125005870009772
},
{
"CPU_GPU_exact": true,
"motif": "trio",
"wall_seconds": 1.4483178199880058
},
{
"CPU_GPU_exact": true,
"motif": "five",
"wall_seconds": 1.5178599859937094
},
{
"CPU_GPU_exact": true,
"motif": "feedforward",
"wall_seconds": 1.3267560910026077
},
{
"CPU_GPU_exact": true,
"motif": "no_input",
"wall_seconds": 1.3030154559965013
}
]
@@ -0,0 +1,13 @@
{
"exact": {
"counts": true,
"g": true,
"history": true,
"neuron_idx": true,
"queue": true,
"ref": true,
"step": true,
"v": true
},
"pass": true
}
@@ -0,0 +1,13 @@
{
"exact": {
"counts": true,
"g": true,
"history": true,
"neuron_idx": true,
"queue": true,
"ref": true,
"step": true,
"v": true
},
"pass": true
}
@@ -0,0 +1,48 @@
{
"experiments/phase4aa-apl-pn-scope": {
"checked": 68,
"checksums_sha256": "a69b2511689207b0d9ddbe2fabce3be71908f457bb898e3b685a213a796a272a",
"manifest_sha256": "6d75567af2a6c0993d4fc08e272814910c19fa9602811cfacd1ebc4ba76bc737",
"mismatches": [],
"pass": true
},
"experiments/phase4ab-terminal-scope": {
"checked": 199,
"checksums_sha256": "d83926a3055d9f9ca471ceba328076d7ceba883f267468750914080733e95e31",
"manifest_sha256": "cb3723f9dae29d4889489ae39f40293c927f4f9e532551e2c4d5214bf0a70140",
"mismatches": [],
"pass": true
},
"models/male-cns-lif/apl-pn-scope-audit-v1": {
"checked": 12,
"checksums_sha256": "55dc418f2d62be04601af33cbd8789578447e6a2289d3a581dc713cbb7466a25",
"manifest_sha256": "9120685eb02dc2bd3b38d42b2ade1f38f6bbc2a1ec269fd4d555cead2d628277",
"mismatches": [],
"pass": true
},
"models/male-cns-lif/terminal-scope-diagnostic-v1": {
"checked": 11,
"checksums_sha256": "92a03195cb41863027fd0397ad3811248354a5d3f2e91ffa2c297eba62dc2821",
"manifest_sha256": "5cea0035a95345825b73385c6e3056244c2a614d10a6fa6742487a331d8f0f3e",
"mismatches": [],
"pass": true
},
"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"
}
}
@@ -0,0 +1,6 @@
{
"alternative_policies_only_synthetic_single_cell": true,
"device": "NVIDIA GeForce RTX 4090",
"free_VRAM": 12494438400,
"whole_brain_uses_only_frozen_reference": true
}
@@ -0,0 +1,8 @@
{
"Brian2_executed": false,
"brain_model_modified": false,
"cases": 17,
"pass": true,
"policies": 4,
"proves_only_operator_difference": true
}
@@ -0,0 +1,13 @@
{
"exact": {
"counts": true,
"g": true,
"history": true,
"neuron_idx": true,
"queue": true,
"ref": true,
"step": true,
"v": true
},
"pass": true
}
@@ -0,0 +1,4 @@
{
"pass": true,
"tests": 7
}
@@ -0,0 +1,69 @@
case,policy,spikes,spike_times_ms,post_input_spikes,final_g,finite,exact_repeat,not_full_Brian2_replication
one_impulse_contacts_1,frozen,0,[],,4.722705559956353e-10,True,True,True
one_impulse_contacts_1,reset_g_only,0,[],,4.722705559956353e-10,True,True,True
one_impulse_contacts_1,refractory_gate_only,0,[],,4.722705559956353e-10,True,True,True
one_impulse_contacts_1,reset_and_refractory,0,[],,4.722705559956353e-10,True,True,True
one_impulse_contacts_43,frozen,0,[],,2.030761692140004e-08,True,True,True
one_impulse_contacts_43,reset_g_only,0,[],,2.030761692140004e-08,True,True,True
one_impulse_contacts_43,refractory_gate_only,0,[],,2.030761692140004e-08,True,True,True
one_impulse_contacts_43,reset_and_refractory,0,[],,2.030761692140004e-08,True,True,True
one_impulse_contacts_57,frozen,0,[],,2.691940537147275e-08,True,True,True
one_impulse_contacts_57,reset_g_only,0,[],,2.691940537147275e-08,True,True,True
one_impulse_contacts_57,refractory_gate_only,0,[],,2.691940537147275e-08,True,True,True
one_impulse_contacts_57,reset_and_refractory,0,[],,2.691940537147275e-08,True,True,True
one_impulse_contacts_64,frozen,0,[],,3.022531558372066e-08,True,True,True
one_impulse_contacts_64,reset_g_only,0,[],,3.022531558372066e-08,True,True,True
one_impulse_contacts_64,refractory_gate_only,0,[],,3.022531558372066e-08,True,True,True
one_impulse_contacts_64,reset_and_refractory,0,[],,3.022531558372066e-08,True,True,True
one_impulse_contacts_70,frozen,0,[],,3.3058963566645616e-08,True,True,True
one_impulse_contacts_70,reset_g_only,0,[],,3.3058963566645616e-08,True,True,True
one_impulse_contacts_70,refractory_gate_only,0,[],,3.3058963566645616e-08,True,True,True
one_impulse_contacts_70,reset_and_refractory,0,[],,3.3058963566645616e-08,True,True,True
one_impulse_contacts_76,frozen,0,[],,3.589252628444228e-08,True,True,True
one_impulse_contacts_76,reset_g_only,0,[],,3.589252628444228e-08,True,True,True
one_impulse_contacts_76,refractory_gate_only,0,[],,3.589252628444228e-08,True,True,True
one_impulse_contacts_76,reset_and_refractory,0,[],,3.589252628444228e-08,True,True,True
one_impulse_contacts_95,frozen,0,[],,4.486569693540332e-08,True,True,True
one_impulse_contacts_95,reset_g_only,0,[],,4.486569693540332e-08,True,True,True
one_impulse_contacts_95,refractory_gate_only,0,[],,4.486569693540332e-08,True,True,True
one_impulse_contacts_95,reset_and_refractory,0,[],,4.486569693540332e-08,True,True,True
one_impulse_contacts_104,frozen,0,[],,4.911609963187402e-08,True,True,True
one_impulse_contacts_104,reset_g_only,0,[],,4.911609963187402e-08,True,True,True
one_impulse_contacts_104,refractory_gate_only,0,[],,4.911609963187402e-08,True,True,True
one_impulse_contacts_104,reset_and_refractory,0,[],,4.911609963187402e-08,True,True,True
one_impulse_contacts_172,frozen,1,[6.0],,8.123046768560016e-08,True,True,True
one_impulse_contacts_172,reset_g_only,1,[6.0],,0.0,True,True,True
one_impulse_contacts_172,refractory_gate_only,1,[6.0],,1.2415698336099013e-07,True,True,True
one_impulse_contacts_172,reset_and_refractory,1,[6.0],,0.0,True,True,True
one_impulse_contacts_210,frozen,1,[3.8000000000000003],,9.917685872551374e-08,True,True,True
one_impulse_contacts_210,reset_g_only,1,[3.8000000000000003],,0.0,True,True,True
one_impulse_contacts_210,refractory_gate_only,1,[3.8000000000000003],,1.5158722987962392e-07,True,True,True
one_impulse_contacts_210,reset_and_refractory,1,[3.8000000000000003],,0.0,True,True,True
one_impulse_contacts_226,frozen,1,[3.3000000000000003],,1.0673294070784323e-07,True,True,True
one_impulse_contacts_226,reset_g_only,1,[3.3000000000000003],,0.0,True,True,True
one_impulse_contacts_226,refractory_gate_only,1,[3.3000000000000003],,1.6313636308495916e-07,True,True,True
one_impulse_contacts_226,reset_and_refractory,1,[3.3000000000000003],,0.0,True,True,True
one_impulse_contacts_235,frozen,1,[3.1],,1.109835494617073e-07,True,True,True
one_impulse_contacts_235,reset_g_only,1,[3.1],,0.0,True,True,True
one_impulse_contacts_235,refractory_gate_only,1,[3.1],,1.6963321058938163e-07,True,True,True
one_impulse_contacts_235,reset_and_refractory,1,[3.1],,0.0,True,True,True
one_impulse_contacts_259,frozen,1,[2.7],,1.2231805612827884e-07,True,True,True
one_impulse_contacts_259,reset_g_only,1,[2.7],,0.0,True,True,True
one_impulse_contacts_259,refractory_gate_only,1,[2.7],,1.8695746462071838e-07,True,True,True
one_impulse_contacts_259,reset_and_refractory,1,[2.7],,0.0,True,True,True
one_impulse_contacts_283,frozen,1,[2.3000000000000003],,1.3365253437314095e-07,True,True,True
one_impulse_contacts_283,reset_g_only,1,[2.3000000000000003],,0.0,True,True,True
one_impulse_contacts_283,refractory_gate_only,2,"[2.3000000000000003, 10.3]",,3.122351870388229e-07,True,True,True
one_impulse_contacts_283,reset_and_refractory,1,[2.3000000000000003],,0.0,True,True,True
refractory_boundary,frozen,7,"[0.0, 2.3000000000000003, 4.6000000000000005, 7.0, 9.600000000000001, 12.600000000000001, 16.400000000000002]",,37.13106155395508,True,True,True
refractory_boundary,reset_g_only,1,[0.0],,1.2371366024017334,True,True,True
refractory_boundary,refractory_gate_only,10,"[0.0, 2.2, 4.4, 6.6000000000000005, 8.8, 11.0, 13.200000000000001, 15.4, 17.6, 19.8]",,1676.00341796875,True,True,True
refractory_boundary,reset_and_refractory,1,[0.0],,0.5655308961868286,True,True,True
sustained_then_off,frozen,45,"[1.7000000000000002, 4.3, 6.800000000000001, 9.3, 11.8, 14.200000000000001, 16.6, 19.0, 21.400000000000002, 23.8, 26.200000000000003, 28.6, 31.0, 33.4, 35.800000000000004, 38.2, 40.6, 43.0, 45.400000000000006, 47.800000000000004, 50.2, 52.6, 55.0, 57.400000000000006, 59.800000000000004, 62.2, 64.60000000000001, 67.0, 69.4, 71.8, 74.2, 76.60000000000001, 79.0, 81.4, 83.80000000000001, 86.2, 88.60000000000001, 91.0, 93.4, 95.80000000000001, 98.2, 100.7, 103.4, 106.5, 110.80000000000001]",4.0,8.414999115302635e-07,True,True,True
sustained_then_off,reset_g_only,35,"[1.7000000000000002, 4.6000000000000005, 7.5, 10.4, 13.3, 16.2, 19.1, 22.0, 24.900000000000002, 27.8, 30.700000000000003, 33.6, 36.5, 39.400000000000006, 42.300000000000004, 45.2, 48.1, 51.0, 53.900000000000006, 56.800000000000004, 59.7, 62.6, 65.5, 68.4, 71.3, 74.2, 77.10000000000001, 80.0, 82.9, 85.80000000000001, 88.7, 91.60000000000001, 94.5, 97.4, 100.30000000000001]",1.0,0.0,True,True,True
sustained_then_off,refractory_gate_only,54,"[1.7000000000000002, 4.6000000000000005, 7.4, 10.100000000000001, 12.700000000000001, 15.3, 17.900000000000002, 20.5, 23.0, 25.5, 28.0, 30.5, 33.0, 35.5, 38.0, 40.5, 43.0, 45.5, 48.0, 50.5, 53.0, 55.5, 58.0, 60.5, 63.0, 65.5, 68.0, 70.5, 72.9, 75.3, 77.7, 80.10000000000001, 82.5, 84.9, 87.30000000000001, 89.7, 92.10000000000001, 94.5, 96.9, 99.30000000000001, 101.80000000000001, 104.30000000000001, 106.80000000000001, 109.30000000000001, 111.9, 114.5, 117.2, 119.9, 122.7, 125.60000000000001, 128.70000000000002, 132.1, 135.9, 140.70000000000002]",14.0,0.0004200958937872201,True,True,True
sustained_then_off,reset_and_refractory,26,"[1.7000000000000002, 5.6000000000000005, 9.5, 13.4, 17.3, 21.200000000000003, 25.1, 29.0, 32.9, 36.800000000000004, 40.7, 44.6, 48.5, 52.400000000000006, 56.300000000000004, 60.2, 64.10000000000001, 68.0, 71.9, 75.8, 79.7, 83.60000000000001, 87.5, 91.4, 95.30000000000001, 99.2]",0.0,0.0,True,True,True
zero_input,frozen,0,[],,0.0,True,True,True
zero_input,reset_g_only,0,[],,0.0,True,True,True
zero_input,refractory_gate_only,0,[],,0.0,True,True,True
zero_input,reset_and_refractory,0,[],,0.0,True,True,True
1 case policy spikes spike_times_ms post_input_spikes final_g finite exact_repeat not_full_Brian2_replication
2 one_impulse_contacts_1 frozen 0 [] 4.722705559956353e-10 True True True
3 one_impulse_contacts_1 reset_g_only 0 [] 4.722705559956353e-10 True True True
4 one_impulse_contacts_1 refractory_gate_only 0 [] 4.722705559956353e-10 True True True
5 one_impulse_contacts_1 reset_and_refractory 0 [] 4.722705559956353e-10 True True True
6 one_impulse_contacts_43 frozen 0 [] 2.030761692140004e-08 True True True
7 one_impulse_contacts_43 reset_g_only 0 [] 2.030761692140004e-08 True True True
8 one_impulse_contacts_43 refractory_gate_only 0 [] 2.030761692140004e-08 True True True
9 one_impulse_contacts_43 reset_and_refractory 0 [] 2.030761692140004e-08 True True True
10 one_impulse_contacts_57 frozen 0 [] 2.691940537147275e-08 True True True
11 one_impulse_contacts_57 reset_g_only 0 [] 2.691940537147275e-08 True True True
12 one_impulse_contacts_57 refractory_gate_only 0 [] 2.691940537147275e-08 True True True
13 one_impulse_contacts_57 reset_and_refractory 0 [] 2.691940537147275e-08 True True True
14 one_impulse_contacts_64 frozen 0 [] 3.022531558372066e-08 True True True
15 one_impulse_contacts_64 reset_g_only 0 [] 3.022531558372066e-08 True True True
16 one_impulse_contacts_64 refractory_gate_only 0 [] 3.022531558372066e-08 True True True
17 one_impulse_contacts_64 reset_and_refractory 0 [] 3.022531558372066e-08 True True True
18 one_impulse_contacts_70 frozen 0 [] 3.3058963566645616e-08 True True True
19 one_impulse_contacts_70 reset_g_only 0 [] 3.3058963566645616e-08 True True True
20 one_impulse_contacts_70 refractory_gate_only 0 [] 3.3058963566645616e-08 True True True
21 one_impulse_contacts_70 reset_and_refractory 0 [] 3.3058963566645616e-08 True True True
22 one_impulse_contacts_76 frozen 0 [] 3.589252628444228e-08 True True True
23 one_impulse_contacts_76 reset_g_only 0 [] 3.589252628444228e-08 True True True
24 one_impulse_contacts_76 refractory_gate_only 0 [] 3.589252628444228e-08 True True True
25 one_impulse_contacts_76 reset_and_refractory 0 [] 3.589252628444228e-08 True True True
26 one_impulse_contacts_95 frozen 0 [] 4.486569693540332e-08 True True True
27 one_impulse_contacts_95 reset_g_only 0 [] 4.486569693540332e-08 True True True
28 one_impulse_contacts_95 refractory_gate_only 0 [] 4.486569693540332e-08 True True True
29 one_impulse_contacts_95 reset_and_refractory 0 [] 4.486569693540332e-08 True True True
30 one_impulse_contacts_104 frozen 0 [] 4.911609963187402e-08 True True True
31 one_impulse_contacts_104 reset_g_only 0 [] 4.911609963187402e-08 True True True
32 one_impulse_contacts_104 refractory_gate_only 0 [] 4.911609963187402e-08 True True True
33 one_impulse_contacts_104 reset_and_refractory 0 [] 4.911609963187402e-08 True True True
34 one_impulse_contacts_172 frozen 1 [6.0] 8.123046768560016e-08 True True True
35 one_impulse_contacts_172 reset_g_only 1 [6.0] 0.0 True True True
36 one_impulse_contacts_172 refractory_gate_only 1 [6.0] 1.2415698336099013e-07 True True True
37 one_impulse_contacts_172 reset_and_refractory 1 [6.0] 0.0 True True True
38 one_impulse_contacts_210 frozen 1 [3.8000000000000003] 9.917685872551374e-08 True True True
39 one_impulse_contacts_210 reset_g_only 1 [3.8000000000000003] 0.0 True True True
40 one_impulse_contacts_210 refractory_gate_only 1 [3.8000000000000003] 1.5158722987962392e-07 True True True
41 one_impulse_contacts_210 reset_and_refractory 1 [3.8000000000000003] 0.0 True True True
42 one_impulse_contacts_226 frozen 1 [3.3000000000000003] 1.0673294070784323e-07 True True True
43 one_impulse_contacts_226 reset_g_only 1 [3.3000000000000003] 0.0 True True True
44 one_impulse_contacts_226 refractory_gate_only 1 [3.3000000000000003] 1.6313636308495916e-07 True True True
45 one_impulse_contacts_226 reset_and_refractory 1 [3.3000000000000003] 0.0 True True True
46 one_impulse_contacts_235 frozen 1 [3.1] 1.109835494617073e-07 True True True
47 one_impulse_contacts_235 reset_g_only 1 [3.1] 0.0 True True True
48 one_impulse_contacts_235 refractory_gate_only 1 [3.1] 1.6963321058938163e-07 True True True
49 one_impulse_contacts_235 reset_and_refractory 1 [3.1] 0.0 True True True
50 one_impulse_contacts_259 frozen 1 [2.7] 1.2231805612827884e-07 True True True
51 one_impulse_contacts_259 reset_g_only 1 [2.7] 0.0 True True True
52 one_impulse_contacts_259 refractory_gate_only 1 [2.7] 1.8695746462071838e-07 True True True
53 one_impulse_contacts_259 reset_and_refractory 1 [2.7] 0.0 True True True
54 one_impulse_contacts_283 frozen 1 [2.3000000000000003] 1.3365253437314095e-07 True True True
55 one_impulse_contacts_283 reset_g_only 1 [2.3000000000000003] 0.0 True True True
56 one_impulse_contacts_283 refractory_gate_only 2 [2.3000000000000003, 10.3] 3.122351870388229e-07 True True True
57 one_impulse_contacts_283 reset_and_refractory 1 [2.3000000000000003] 0.0 True True True
58 refractory_boundary frozen 7 [0.0, 2.3000000000000003, 4.6000000000000005, 7.0, 9.600000000000001, 12.600000000000001, 16.400000000000002] 37.13106155395508 True True True
59 refractory_boundary reset_g_only 1 [0.0] 1.2371366024017334 True True True
60 refractory_boundary refractory_gate_only 10 [0.0, 2.2, 4.4, 6.6000000000000005, 8.8, 11.0, 13.200000000000001, 15.4, 17.6, 19.8] 1676.00341796875 True True True
61 refractory_boundary reset_and_refractory 1 [0.0] 0.5655308961868286 True True True
62 sustained_then_off frozen 45 [1.7000000000000002, 4.3, 6.800000000000001, 9.3, 11.8, 14.200000000000001, 16.6, 19.0, 21.400000000000002, 23.8, 26.200000000000003, 28.6, 31.0, 33.4, 35.800000000000004, 38.2, 40.6, 43.0, 45.400000000000006, 47.800000000000004, 50.2, 52.6, 55.0, 57.400000000000006, 59.800000000000004, 62.2, 64.60000000000001, 67.0, 69.4, 71.8, 74.2, 76.60000000000001, 79.0, 81.4, 83.80000000000001, 86.2, 88.60000000000001, 91.0, 93.4, 95.80000000000001, 98.2, 100.7, 103.4, 106.5, 110.80000000000001] 4.0 8.414999115302635e-07 True True True
63 sustained_then_off reset_g_only 35 [1.7000000000000002, 4.6000000000000005, 7.5, 10.4, 13.3, 16.2, 19.1, 22.0, 24.900000000000002, 27.8, 30.700000000000003, 33.6, 36.5, 39.400000000000006, 42.300000000000004, 45.2, 48.1, 51.0, 53.900000000000006, 56.800000000000004, 59.7, 62.6, 65.5, 68.4, 71.3, 74.2, 77.10000000000001, 80.0, 82.9, 85.80000000000001, 88.7, 91.60000000000001, 94.5, 97.4, 100.30000000000001] 1.0 0.0 True True True
64 sustained_then_off refractory_gate_only 54 [1.7000000000000002, 4.6000000000000005, 7.4, 10.100000000000001, 12.700000000000001, 15.3, 17.900000000000002, 20.5, 23.0, 25.5, 28.0, 30.5, 33.0, 35.5, 38.0, 40.5, 43.0, 45.5, 48.0, 50.5, 53.0, 55.5, 58.0, 60.5, 63.0, 65.5, 68.0, 70.5, 72.9, 75.3, 77.7, 80.10000000000001, 82.5, 84.9, 87.30000000000001, 89.7, 92.10000000000001, 94.5, 96.9, 99.30000000000001, 101.80000000000001, 104.30000000000001, 106.80000000000001, 109.30000000000001, 111.9, 114.5, 117.2, 119.9, 122.7, 125.60000000000001, 128.70000000000002, 132.1, 135.9, 140.70000000000002] 14.0 0.0004200958937872201 True True True
65 sustained_then_off reset_and_refractory 26 [1.7000000000000002, 5.6000000000000005, 9.5, 13.4, 17.3, 21.200000000000003, 25.1, 29.0, 32.9, 36.800000000000004, 40.7, 44.6, 48.5, 52.400000000000006, 56.300000000000004, 60.2, 64.10000000000001, 68.0, 71.9, 75.8, 79.7, 83.60000000000001, 87.5, 91.4, 95.30000000000001, 99.2] 0.0 0.0 True True True
66 zero_input frozen 0 [] 0.0 True True True
67 zero_input reset_g_only 0 [] 0.0 True True True
68 zero_input refractory_gate_only 0 [] 0.0 True True True
69 zero_input reset_and_refractory 0 [] 0.0 True True True