From d6843e675dec5ae38a06f2ba70d74836aea53ace Mon Sep 17 00:00:00 2001 From: Digital Drosophila Archive Date: Tue, 29 Sep 2026 23:58:05 +0800 Subject: [PATCH] Audit APL PN scope and localize official synaptic contacts without changing frozen dynamics --- CURRENT.md | 19 + docs/progress/phase4aa-apl-pn-scope.md | 111 ++++++ .../LOCALIZATION-PROTOCOL.md | 18 + .../apl-pn-scope-audit-v1/PROTOCOL.md | 37 ++ .../apl-pn-scope-audit-v1/REPORT.md | 111 ++++++ .../apl-pn-scope-audit-v1/audit.py | 245 ++++++++++++ .../apl-pn-scope-audit-v1/audit.yaml | 31 ++ .../apl-pn-scope-audit-v1/checksums.sha256 | 12 + .../fetch_syn_partners.py | 49 +++ .../apl-pn-scope-audit-v1/finalize.py | 51 +++ .../apl-pn-scope-audit-v1/localize.py | 112 ++++++ .../apl-pn-scope-audit-v1/manifest.json | 65 ++++ .../apl-pn-scope-audit-v1/regression.py | 72 ++++ .../apl-pn-scope-audit-v1/regression_retry.py | 10 + .../apl-pn-scope-audit-v1/test_audit.py | 29 ++ .../validate_localization.py | 34 ++ .../phase4aa-apl-pn-scope/evidence-index.json | 266 +++++++++++++ .../phase4aa-apl-pn-scope/evidence/REPORT.md | 111 ++++++ .../evidence/audit/final-summary.json | 66 ++++ .../frozen-implementation-provenance.json | 6 + .../audit/frozen-matrix-reconstruction.json | 15 + .../evidence/audit/results.json | 41 ++ .../evidence/checksums.sha256 | 68 ++++ .../connectivity/APL-PN-reciprocity.csv | 269 +++++++++++++ .../APL-input-population-summary.csv | 9 + .../APL-output-population-summary.csv | 9 + .../connectivity/watched-PN-reciprocity.csv | 8 + .../evidence-and-limitations.json | 40 ++ .../official-data-access.json | 28 ++ .../authorization-and-source.json | 12 + .../download-verification.json | 10 + .../synaptic-partners/upstream-object.json | 21 + .../protocol-addendum.json | 28 ++ .../ALLN-to-watched-PN-count-check.json | 9 + .../APL-incident-count-check.json | 9 + .../APL-target-PN-to-KC-count-check.json | 9 + .../evidence/localization/actual-schema.json | 49 +++ .../complete-pair-set-validation.json | 29 ++ .../localization/population-ROI-summary.csv | 39 ++ .../evidence/localization/protocol.json | 10 + .../localization/spatial-neighborhoods.csv | 260 +++++++++++++ .../evidence/localization/summary.json | 359 ++++++++++++++++++ .../evidence/localization/watched-PN-ROI.json | 164 ++++++++ .../watched-PN-to-ALLN-count-check.json | 9 + .../evidence/manifest.json | 345 +++++++++++++++++ .../evidence/performance/resources.json | 6 + .../evidence/protocol/preregistered.json | 45 +++ .../regression/final-old-files-integrity.json | 18 + .../evidence/regression/postflight.json | 18 + .../evidence/regression/preflight.json | 18 + .../gpu-frozen-regression/auditory-100hz.json | 17 + .../gpu-frozen-regression/auditory-10hz.json | 17 + .../gpu-reference/extension.json | 17 + .../gpu-frozen-regression/gustatory-50hz.json | 17 + .../mechanosensory-50hz.json | 17 + .../gpu-frozen-regression/olfactory-50hz.json | 17 + .../post-regression-integrity.json | 18 + .../protocol-addendum.json | 28 ++ .../gpu-frozen-regression/summary.json | 97 +++++ .../evidence/spatial/local-schemas.json | 216 +++++++++++ .../evidence/spatial/watched-SWC-audit.json | 92 +++++ .../seal-verification.json | 12 + 62 files changed, 3974 insertions(+) create mode 100644 CURRENT.md create mode 100644 docs/progress/phase4aa-apl-pn-scope.md create mode 100644 models/male-cns-lif/apl-pn-scope-audit-v1/LOCALIZATION-PROTOCOL.md create mode 100644 models/male-cns-lif/apl-pn-scope-audit-v1/PROTOCOL.md create mode 100644 models/male-cns-lif/apl-pn-scope-audit-v1/REPORT.md create mode 100644 models/male-cns-lif/apl-pn-scope-audit-v1/audit.py create mode 100644 models/male-cns-lif/apl-pn-scope-audit-v1/audit.yaml create mode 100644 models/male-cns-lif/apl-pn-scope-audit-v1/checksums.sha256 create mode 100644 models/male-cns-lif/apl-pn-scope-audit-v1/fetch_syn_partners.py create mode 100644 models/male-cns-lif/apl-pn-scope-audit-v1/finalize.py create mode 100644 models/male-cns-lif/apl-pn-scope-audit-v1/localize.py create mode 100644 models/male-cns-lif/apl-pn-scope-audit-v1/manifest.json create mode 100644 models/male-cns-lif/apl-pn-scope-audit-v1/regression.py create mode 100644 models/male-cns-lif/apl-pn-scope-audit-v1/regression_retry.py create mode 100644 models/male-cns-lif/apl-pn-scope-audit-v1/test_audit.py create mode 100644 models/male-cns-lif/apl-pn-scope-audit-v1/validate_localization.py create mode 100644 registry/phase4aa-apl-pn-scope/evidence-index.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/REPORT.md create mode 100644 registry/phase4aa-apl-pn-scope/evidence/audit/final-summary.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/audit/frozen-implementation-provenance.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/audit/frozen-matrix-reconstruction.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/audit/results.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/checksums.sha256 create mode 100644 registry/phase4aa-apl-pn-scope/evidence/connectivity/APL-PN-reciprocity.csv create mode 100644 registry/phase4aa-apl-pn-scope/evidence/connectivity/APL-input-population-summary.csv create mode 100644 registry/phase4aa-apl-pn-scope/evidence/connectivity/APL-output-population-summary.csv create mode 100644 registry/phase4aa-apl-pn-scope/evidence/connectivity/watched-PN-reciprocity.csv create mode 100644 registry/phase4aa-apl-pn-scope/evidence/external-resources/evidence-and-limitations.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/external-resources/official-data-access.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/external-resources/synaptic-partners/authorization-and-source.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/external-resources/synaptic-partners/download-verification.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/external-resources/synaptic-partners/upstream-object.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/gpu-frozen-regression/protocol-addendum.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/localization/ALLN-to-watched-PN-count-check.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/localization/APL-incident-count-check.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/localization/APL-target-PN-to-KC-count-check.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/localization/actual-schema.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/localization/complete-pair-set-validation.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/localization/population-ROI-summary.csv create mode 100644 registry/phase4aa-apl-pn-scope/evidence/localization/protocol.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/localization/spatial-neighborhoods.csv create mode 100644 registry/phase4aa-apl-pn-scope/evidence/localization/summary.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/localization/watched-PN-ROI.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/localization/watched-PN-to-ALLN-count-check.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/manifest.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/performance/resources.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/protocol/preregistered.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/regression/final-old-files-integrity.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/regression/postflight.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/regression/preflight.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/auditory-100hz.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/auditory-10hz.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/gpu-reference/extension.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/gustatory-50hz.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/mechanosensory-50hz.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/olfactory-50hz.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/post-regression-integrity.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/protocol-addendum.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/summary.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/spatial/local-schemas.json create mode 100644 registry/phase4aa-apl-pn-scope/evidence/spatial/watched-SWC-audit.json create mode 100644 registry/phase4aa-apl-pn-scope/seal-verification.json diff --git a/CURRENT.md b/CURRENT.md new file mode 100644 index 0000000..ba26d84 --- /dev/null +++ b/CURRENT.md @@ -0,0 +1,19 @@ +# 当前研究状态 — Phase 4AA + +最新封存结果:**PASS-APL-PN-ANATOMICAL-LOCALIZATION / NO-DYNAMICS-CANDIDATE**。 +初始化 README 与原 registry 快照仍按原字节保留;它们描述初始化时的 Phase 4Z 截止状态。最新结论请从本文件进入。 + +- [本轮完整报告](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) + +新增事实: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 假设和对照,不直接改冻结模型,不调学习率来制造通过。 + +官方 syn-partners 附加数据为 6,777,179,098 bytes,在新实验 external-resources 目录;raw 不变,未下载 EM。 +Git 只保存代码、报告和 manifest;新增完整配对数据尚未异机备份。 diff --git a/docs/progress/phase4aa-apl-pn-scope.md b/docs/progress/phase4aa-apl-pn-scope.md new file mode 100644 index 0000000..38bbcdf --- /dev/null +++ b/docs/progress/phase4aa-apl-pn-scope.md @@ -0,0 +1,111 @@ +# Phase 4AA — APL→PN 作用范围与官方突触定位审计 + +正式结论:**PASS-APL-PN-ANATOMICAL-LOCALIZATION / NO-DYNAMICS-CANDIDATE**。 + +本轮从 Phase 4Z 接续,先完成只读 CPU 范围审计;随后用户明确授权下载官方 syn-partners 并继续定位,也确认 ComfyUI 空闲以便运行 frozen regression。 +原始静态审计 `audit/results.json` 中的空间 unknown/blocked 是追加数据前的状态,保留不覆盖;最终状态以 `audit/final-summary.json` 和本报告为准。 +本轮无训练、无参数修改、无新的正式动力学候选。顶层验收仍为 5/10(50%),不是生物学复现比例。 + +## 核心新证据 + +以实际 annotation 与原始 CSR 识别 2 个 APL、4,064 个 KC、686 个 ALPN,不通过 neurotransmitter 推断 DAN 身份。 +所有 166,700 个 neurons、25,582,938 edges、124,177,617 anatomical contacts 不变。 + +| 已有 APL 实现范围 | 边数 | 原始 contacts | +|---|---:|---:| +| APL 全部出边 | 5,845 | 209,912 | +| KC-only graded output 覆盖 | 4,633 | 196,200 | +| 非 KC 出边,没有 graded 替代 | 1,212 | 13,712 | +| 上述缺口中的 APL→PN | 268 | 4,600 | +| APL 全部入边 | 6,185 | 234,025 | +| 不被 KC/PN-only graded state 使用的入边 | 1,202 | 18,257 | + +268 条 APL→PN 边涉及 259 个 PN;247 对同时存在 PN→APL 反向连接。 +“graded state 未使用”不等于原图入边被删除:普通 LIF APL 仍有这些入边,但其快速出边被既有 overlay 置零。基于 KC/PN 计算的独立 graded state 没有使用其余来源。 +这属于既有模型作用范围,不能把每个未覆盖来源都自动补入;需要额外生理依据。 + +## 官方附加数据与精确核对 + +用户授权下载的 `syn-partners-male-cns-v1.0-minconf-0.5.feather`: + +- 6,777,179,098 bytes;官方 generation `1780494942562468`。 +- 官方 MD5:`58efcf712f8c4d4de5f2ad51e97def76`,验证通过。 +- SHA-256:`959d8ef4173b35382a3e6acfaf5167c795b6d10b877572d146af04e1b487bc07`。 +- 流式读取全部 311,833,243 条配对记录;实际字段和 dtype 已保存。 +- 来源:[MaleCNS 官方下载页](https://male-cns.janelia.org/download/),许可证 CC BY 4.0。新增文件保存在本阶段 external-resources,不写 raw,不下载 EM。 + +| 提取范围 | 配对记录总数 | canonical 配对记录 | canonical neuron pairs | +|---|---:|---:|---:| +| APL 所有入/出接触 | 500,348 | 443,915 | 12,027 | +| APL 所连 PN→KC | 385,229 | 385,229 | 21,978 | +| 七个重点 PN→ALLN | 22,599 | 22,599 | 823 | +| ALLN→七个重点 PN | 19,024 | 19,024 | 886 | + +每组同时检查重复配对、完整 pair 集合及逐边 count:均与原始 CSR 完全一致。不存在只比较出现过的边而漏掉整条缺失边的情况。 +APL 配对中的非 canonical 部分保留来源记录,不加入 neuron-only graph。 + +## 真实 ROI 定位 + +4,600 个 APL→PN 接触都取得真实 pre/post 坐标: + +- `CA(L)` 2,063;`CA(R)` 1,757;合计 3,820(83.04%)。 +- `CentralBrain-unspecified` 731(15.89%):坐标已知,但官方 ROI 未细分,绝不按邻近位置重标为 calyx。 +- 其余实际标注合计 49,分布于 LH、PED、SCL、SLP、a'L;不丢弃非 calyx 结果。 + +CA 对应 calyx,官方作者 [Cell Type Explorer](https://reiserlab.github.io/celltype-explorer-drosophila-male-cns/types/KCg-d_R.html) 提供标签释义。 +七个重点 PN: + +| neuron_idx / body_id | type | APL→PN contacts | CA(R) | ROI 未细分 | +|---|---|---:|---:|---:| +| 30 / 10039 | VL2a_adPN | 50 | 47 | 3 | +| 179 / 10198 | VA7l_adPN | 7 | 7 | 0 | +| 484 / 10522 | VL2p_adPN | 50 | 49 | 1 | +| 1644 / 11761 | VP1d+VP4_l2PN1 | 78 | 70 | 8 | +| 6065 / 16610 | VA7m_lPN | 14 | 13 | 1 | +| 6842 / 17484 | DC2_adPN | 13 | 13 | 0 | +| 133666 / 527577 | VA6_adPN | 35 | 29 | 6 | + +合计 228/247(92.31%)在 CA(R),19 个未细分。 +对同一 PN,APL postsynaptic sites 到最近 PN→KC presynaptic site 的距离,中位数范围为 0.545–0.861 µm;坐标按官方 8 nm voxel 转换。 +距离不是同 bouton 的证明,更不是受体或功能因果证明。保留全部分布和远距离样本,不设“最佳阈值”筛掉例外。 +259 个 APL 靶 PN 中,15 个在本 canonical 图中没有 PN→KC 出边,不能一概当作同一功能入口。 + +七个 PN→ALLN 的 22,599 个接触全部位于 AL(L/R);ALLN→七个 PN 的 19,024 个接触中,19,021 位于 AL(L/R),另有 1 个 LAL(R)、2 个未细分。 +同一 PN 的 calyx 相关接触与触角叶局部回路接触必须区分,不能用单一 whole-neuron 抑制项自动代表两种位置。 + +## 如何解释,不做什么 + +已有原始研究支持 APL 的局部抑制与 PN bouton/KC dendrite 相互作用,但不提供当前 MaleCNS 每条边的受体或强度。 +见 [Prisco et al., eLife](https://doi.org/10.7554/eLife.74172)、[Amin et al., eLife](https://doi.org/10.7554/eLife.56954)。 +本轮数据加强了“空间作用范围缺失”这一机制假设,**没有证明补上它就能修复 KC 持续放电或刺激特异性记忆**。 +仍未知:具体 bouton 身份、GABA 受体、末梢释放变化、时间常数、量化作用系数及 whole-brain 干预效果。 + +下一步应先设计独立的 compartment/terminal-specific input hypothesis 和预声明对照,不直接改变 frozen baseline;对未知系数不能用“学习效果更好”反向调参。 +优先处理 upstream encoding / 作用范围,而不是继续改 dopamine eta、扩大 plastic mask 或调 KC/MBON 阈值。 + +## 回归、完整性与资源 + +独立新目录重跑 deterministic-v2 的五组冻结试次(各一次): + +| trial | biological time | wall time | 事件 / counts / V / g | +|---|---:|---:|---| +| auditory 10 Hz | 1 s | 2.690 s | 全部精确一致 | +| auditory 100 Hz | 1 s | 4.915 s | 全部精确一致 | +| olfactory 50 Hz | 1 s | 4.961 s | 全部精确一致 | +| mechanosensory 50 Hz | 1 s | 4.982 s | 全部精确一致 | +| gustatory 50 Hz | 1 s | 4.977 s | 全部精确一致 | + +均无 NaN/Inf,V/g 最大误差 0;4090 本进程 peak allocated VRAM 为 285,994,496 bytes(约 272.75 MiB),不包括 ComfyUI 已驻留显存。 +本轮不声称重做了 Phase 4P 的 20 次重复实验;旧 v1/v2 reference 均没有覆盖。 +GPU 编译加回归约 85.55 s;CPU 结构审计含两次旧文件哈希扫描约 86.92 s;下载加校验约 375.66 s;空间提取/分析约 37.98 s。 +230,239 个旧科学文件的 SHA-256 复核通过。初始 Git payload 的 681 项校验也通过;新阶段另做 manifest。 +未停止或卸载 ComfyUI,未更新任何环境包。 + +## 异常与处理记录 + +1. 初次建立实验目录遇到写权限限制,在新实验目录单独配置 owner;没有递归修改旧目录。 +2. GPU 首次启动 PATH 未包含原 venv 的 Ninja,未开始模拟;失败目录保留。仅补启动 PATH 后,在另一个新目录完成 5/5 回归。 +3. 下载首次校验选项分隔符错误,下载未开始;修正为 aria2 要求的语法后完成官方校验,没有坏文件被当作通过。 +4. 旧 NumPy→Torch 只读数组警告保留,未修改冻结加载器;文件哈希与数值回归通过。 + +本轮到此结束,不生成 learning candidate,不进入游戏、RL、视觉或动作 decoder。 diff --git a/models/male-cns-lif/apl-pn-scope-audit-v1/LOCALIZATION-PROTOCOL.md b/models/male-cns-lif/apl-pn-scope-audit-v1/LOCALIZATION-PROTOCOL.md new file mode 100644 index 0000000..f8f965e --- /dev/null +++ b/models/male-cns-lif/apl-pn-scope-audit-v1/LOCALIZATION-PROTOCOL.md @@ -0,0 +1,18 @@ +# 授权追加:官方突触位置审计 + +用户已明确授权下载约 6.78 GB 的官方 syn-partners v1.0 作为新增参考数据。 +本追加取代原 CPU 静态审计中“本轮不下载 bulk”的范围限制;不改变原审计结果、原 raw 或任何模型参数。 +原静态审计的 unknown 描述“追加数据前”的证据状态,最终结果另存而不覆盖。 + +在查看位置结果前定义: + +1. 以官方 generation 和 MD5 校验下载,另生成本地 SHA-256;不下载 syn-points 全表或 EM。 +2. 检查实际 schema 后按原字段读取,不猜列名。坐标为 MaleCNS 8 nm voxel;距离乘 0.008 转 µm。 +3. 提取全部 APL 入/出突触对、APL 所连 PN→KC 对、七个既定观察 PN↔ALLN 对。 +4. 每个 canonical body pair 的实际突触对行数必须与 base CSR 原 synapse count 一致;有重复配对或 count 差异即停止机制解释。 +5. 依据真实 primary_post 字符串报告 ROI,不由神经元名称猜 compartment。 +6. 对 APL→PN postsynaptic point 与同一 PN 的 PN→KC presynaptic points 计算最近欧氏距离分布。距离只是空间邻近,不等于同 bouton、受体作用或功能因果。 +7. 分别报告 APL→PN、PN→KC、PN↔ALLN 的 ROI,判断 point-neuron 全局电流会不会混淆不同解剖区域。 +8. 无受体、时间常数、末梢释放系数的部分继续 unknown;不据此增删边、补抑制、改变阈值或训练。 + +4090 仅追加五组已有 frozen-v2 reference regression。原五组输入、参数、初态和数值语义不变;所有新输出留在本阶段目录。 diff --git a/models/male-cns-lif/apl-pn-scope-audit-v1/PROTOCOL.md b/models/male-cns-lif/apl-pn-scope-audit-v1/PROTOCOL.md new file mode 100644 index 0000000..2ee7bc4 --- /dev/null +++ b/models/male-cns-lif/apl-pn-scope-audit-v1/PROTOCOL.md @@ -0,0 +1,37 @@ +# Phase 4AA — APL→PN scope audit(预先声明) + +接续封存 Phase 4Z,仅做 CPU 解剖/实现范围审计。不重新运行旧科学阶段,不使用 GPU,不影响 ComfyUI。 +不训练、不改参数/符号、不增加边、不调整 APL calibration、eligibility-v2 或 14,232 plastic mask。 + +## 选择与检验 + +- 直接从实际 annotation_type == APL、annotation_class == ALPN / Kenyon_Cell 识别;空 class 不靠名称猜测。 +- 审计所有 APL 入/出边,不只选择七个观察 PN。七个 PN 来自封存 Phase 4Z 的全部真实目标 KC 入源。 +- 从 CSR 独立抽取,再流式过滤原始 Feather,逐 body pair / 原始 count 严格核对。 +- 区分 frozen fast-current out-mask、KC-only graded output、KC/PN-only graded input;输入被 graded 计算忽略不等于原图边被删除。 +- 核对 PN↔APL 双向边、PN→KC 与 PN→ALLN 出边;这只证明解剖路径,不宣称空间/生理因果。 +- 检查真实 schema 是否含接触位置、ROI、靶位点受体;SWC centerline 不等同 synaptic partner 坐标。 +- 保存 Phase 4Z 所用运行时代码相关段落与 SHA-256,核实覆盖数量完全一致。 + +## 未知与停止条件 + +缺失的接触 ROI、末梢位置、受体和作用系数均记 unknown。 +有配对边和论文支持不等于这只 MaleCNS 中某条连接已经定位到 calyx bouton。 +不得据本审计自动恢复 APL→PN whole-cell negative current 或扩大 graded target matrix。 +官方 syn-partners/syn-points 只获取 HEAD 元数据;不自动下载数 GB 数据,不请求 EM。 +若继续定位需 neuPrint 授权或新的官方附加数据,输出具体需求,不猜测补齐。 + +## 通过的含义 + +audit PASS = 原始边核对通过、覆盖重建与 Phase 4Z 相符、旧文件哈希不变、未知被保留。 +不等于 learning PASS,不产生新的正式模型候选。全项目顶层 gate 保持 5/10。 +复现用新的 experiment_root;禁止覆盖任何已经封存的输出目录。 + +## 证据 + +- 官方 MaleCNS 下载定义:https://male-cns.janelia.org/download/ +- APL 局部化:https://doi.org/10.7554/eLife.56954 +- PN bouton/KC dendrite 研究:https://doi.org/10.7554/eLife.74172 +- Google Research 项目说明:https://www.research.google/blog/a-connectomics-milestone-mapping-the-complete-male-fruit-fly-brain/ + +Google/Janelia 的解剖数据与论文用于约束来源和机制;不能替代受体/电导测量或学习任务验证。 diff --git a/models/male-cns-lif/apl-pn-scope-audit-v1/REPORT.md b/models/male-cns-lif/apl-pn-scope-audit-v1/REPORT.md new file mode 100644 index 0000000..38bbcdf --- /dev/null +++ b/models/male-cns-lif/apl-pn-scope-audit-v1/REPORT.md @@ -0,0 +1,111 @@ +# Phase 4AA — APL→PN 作用范围与官方突触定位审计 + +正式结论:**PASS-APL-PN-ANATOMICAL-LOCALIZATION / NO-DYNAMICS-CANDIDATE**。 + +本轮从 Phase 4Z 接续,先完成只读 CPU 范围审计;随后用户明确授权下载官方 syn-partners 并继续定位,也确认 ComfyUI 空闲以便运行 frozen regression。 +原始静态审计 `audit/results.json` 中的空间 unknown/blocked 是追加数据前的状态,保留不覆盖;最终状态以 `audit/final-summary.json` 和本报告为准。 +本轮无训练、无参数修改、无新的正式动力学候选。顶层验收仍为 5/10(50%),不是生物学复现比例。 + +## 核心新证据 + +以实际 annotation 与原始 CSR 识别 2 个 APL、4,064 个 KC、686 个 ALPN,不通过 neurotransmitter 推断 DAN 身份。 +所有 166,700 个 neurons、25,582,938 edges、124,177,617 anatomical contacts 不变。 + +| 已有 APL 实现范围 | 边数 | 原始 contacts | +|---|---:|---:| +| APL 全部出边 | 5,845 | 209,912 | +| KC-only graded output 覆盖 | 4,633 | 196,200 | +| 非 KC 出边,没有 graded 替代 | 1,212 | 13,712 | +| 上述缺口中的 APL→PN | 268 | 4,600 | +| APL 全部入边 | 6,185 | 234,025 | +| 不被 KC/PN-only graded state 使用的入边 | 1,202 | 18,257 | + +268 条 APL→PN 边涉及 259 个 PN;247 对同时存在 PN→APL 反向连接。 +“graded state 未使用”不等于原图入边被删除:普通 LIF APL 仍有这些入边,但其快速出边被既有 overlay 置零。基于 KC/PN 计算的独立 graded state 没有使用其余来源。 +这属于既有模型作用范围,不能把每个未覆盖来源都自动补入;需要额外生理依据。 + +## 官方附加数据与精确核对 + +用户授权下载的 `syn-partners-male-cns-v1.0-minconf-0.5.feather`: + +- 6,777,179,098 bytes;官方 generation `1780494942562468`。 +- 官方 MD5:`58efcf712f8c4d4de5f2ad51e97def76`,验证通过。 +- SHA-256:`959d8ef4173b35382a3e6acfaf5167c795b6d10b877572d146af04e1b487bc07`。 +- 流式读取全部 311,833,243 条配对记录;实际字段和 dtype 已保存。 +- 来源:[MaleCNS 官方下载页](https://male-cns.janelia.org/download/),许可证 CC BY 4.0。新增文件保存在本阶段 external-resources,不写 raw,不下载 EM。 + +| 提取范围 | 配对记录总数 | canonical 配对记录 | canonical neuron pairs | +|---|---:|---:|---:| +| APL 所有入/出接触 | 500,348 | 443,915 | 12,027 | +| APL 所连 PN→KC | 385,229 | 385,229 | 21,978 | +| 七个重点 PN→ALLN | 22,599 | 22,599 | 823 | +| ALLN→七个重点 PN | 19,024 | 19,024 | 886 | + +每组同时检查重复配对、完整 pair 集合及逐边 count:均与原始 CSR 完全一致。不存在只比较出现过的边而漏掉整条缺失边的情况。 +APL 配对中的非 canonical 部分保留来源记录,不加入 neuron-only graph。 + +## 真实 ROI 定位 + +4,600 个 APL→PN 接触都取得真实 pre/post 坐标: + +- `CA(L)` 2,063;`CA(R)` 1,757;合计 3,820(83.04%)。 +- `CentralBrain-unspecified` 731(15.89%):坐标已知,但官方 ROI 未细分,绝不按邻近位置重标为 calyx。 +- 其余实际标注合计 49,分布于 LH、PED、SCL、SLP、a'L;不丢弃非 calyx 结果。 + +CA 对应 calyx,官方作者 [Cell Type Explorer](https://reiserlab.github.io/celltype-explorer-drosophila-male-cns/types/KCg-d_R.html) 提供标签释义。 +七个重点 PN: + +| neuron_idx / body_id | type | APL→PN contacts | CA(R) | ROI 未细分 | +|---|---|---:|---:|---:| +| 30 / 10039 | VL2a_adPN | 50 | 47 | 3 | +| 179 / 10198 | VA7l_adPN | 7 | 7 | 0 | +| 484 / 10522 | VL2p_adPN | 50 | 49 | 1 | +| 1644 / 11761 | VP1d+VP4_l2PN1 | 78 | 70 | 8 | +| 6065 / 16610 | VA7m_lPN | 14 | 13 | 1 | +| 6842 / 17484 | DC2_adPN | 13 | 13 | 0 | +| 133666 / 527577 | VA6_adPN | 35 | 29 | 6 | + +合计 228/247(92.31%)在 CA(R),19 个未细分。 +对同一 PN,APL postsynaptic sites 到最近 PN→KC presynaptic site 的距离,中位数范围为 0.545–0.861 µm;坐标按官方 8 nm voxel 转换。 +距离不是同 bouton 的证明,更不是受体或功能因果证明。保留全部分布和远距离样本,不设“最佳阈值”筛掉例外。 +259 个 APL 靶 PN 中,15 个在本 canonical 图中没有 PN→KC 出边,不能一概当作同一功能入口。 + +七个 PN→ALLN 的 22,599 个接触全部位于 AL(L/R);ALLN→七个 PN 的 19,024 个接触中,19,021 位于 AL(L/R),另有 1 个 LAL(R)、2 个未细分。 +同一 PN 的 calyx 相关接触与触角叶局部回路接触必须区分,不能用单一 whole-neuron 抑制项自动代表两种位置。 + +## 如何解释,不做什么 + +已有原始研究支持 APL 的局部抑制与 PN bouton/KC dendrite 相互作用,但不提供当前 MaleCNS 每条边的受体或强度。 +见 [Prisco et al., eLife](https://doi.org/10.7554/eLife.74172)、[Amin et al., eLife](https://doi.org/10.7554/eLife.56954)。 +本轮数据加强了“空间作用范围缺失”这一机制假设,**没有证明补上它就能修复 KC 持续放电或刺激特异性记忆**。 +仍未知:具体 bouton 身份、GABA 受体、末梢释放变化、时间常数、量化作用系数及 whole-brain 干预效果。 + +下一步应先设计独立的 compartment/terminal-specific input hypothesis 和预声明对照,不直接改变 frozen baseline;对未知系数不能用“学习效果更好”反向调参。 +优先处理 upstream encoding / 作用范围,而不是继续改 dopamine eta、扩大 plastic mask 或调 KC/MBON 阈值。 + +## 回归、完整性与资源 + +独立新目录重跑 deterministic-v2 的五组冻结试次(各一次): + +| trial | biological time | wall time | 事件 / counts / V / g | +|---|---:|---:|---| +| auditory 10 Hz | 1 s | 2.690 s | 全部精确一致 | +| auditory 100 Hz | 1 s | 4.915 s | 全部精确一致 | +| olfactory 50 Hz | 1 s | 4.961 s | 全部精确一致 | +| mechanosensory 50 Hz | 1 s | 4.982 s | 全部精确一致 | +| gustatory 50 Hz | 1 s | 4.977 s | 全部精确一致 | + +均无 NaN/Inf,V/g 最大误差 0;4090 本进程 peak allocated VRAM 为 285,994,496 bytes(约 272.75 MiB),不包括 ComfyUI 已驻留显存。 +本轮不声称重做了 Phase 4P 的 20 次重复实验;旧 v1/v2 reference 均没有覆盖。 +GPU 编译加回归约 85.55 s;CPU 结构审计含两次旧文件哈希扫描约 86.92 s;下载加校验约 375.66 s;空间提取/分析约 37.98 s。 +230,239 个旧科学文件的 SHA-256 复核通过。初始 Git payload 的 681 项校验也通过;新阶段另做 manifest。 +未停止或卸载 ComfyUI,未更新任何环境包。 + +## 异常与处理记录 + +1. 初次建立实验目录遇到写权限限制,在新实验目录单独配置 owner;没有递归修改旧目录。 +2. GPU 首次启动 PATH 未包含原 venv 的 Ninja,未开始模拟;失败目录保留。仅补启动 PATH 后,在另一个新目录完成 5/5 回归。 +3. 下载首次校验选项分隔符错误,下载未开始;修正为 aria2 要求的语法后完成官方校验,没有坏文件被当作通过。 +4. 旧 NumPy→Torch 只读数组警告保留,未修改冻结加载器;文件哈希与数值回归通过。 + +本轮到此结束,不生成 learning candidate,不进入游戏、RL、视觉或动作 decoder。 diff --git a/models/male-cns-lif/apl-pn-scope-audit-v1/audit.py b/models/male-cns-lif/apl-pn-scope-audit-v1/audit.py new file mode 100644 index 0000000..e279fa3 --- /dev/null +++ b/models/male-cns-lif/apl-pn-scope-audit-v1/audit.py @@ -0,0 +1,245 @@ +"""CPU-only, read-only APL/PN implementation scope audit. No scientific modules imported.""" +import argparse +import ast +import concurrent.futures as cf +from datetime import datetime, timezone +import gzip +import hashlib +import json +from pathlib import Path +import resource +import time +import urllib.request +import numpy as np +import pandas as pd +import pyarrow as pa +import pyarrow.compute as pc +import yaml + + +def digest(path): + h=hashlib.sha256() + with path.open('rb') as f: + for b in iter(lambda:f.read(8<<20),b''):h.update(b) + return h.hexdigest() + + +def save(path,value): + path.parent.mkdir(parents=True,exist_ok=True) + with path.open('x',encoding='utf-8') as f: + json.dump(value,f,ensure_ascii=False,indent=2,sort_keys=True,allow_nan=False) + f.write('\n') + + +def immutable_check(root,snapshot,workers): + summary=json.loads((snapshot/'summary.json').read_text()) + assert digest(snapshot/'files.jsonl.gz')==summary['files_jsonl_gz_sha256'] + with gzip.open(snapshot/'files.jsonl.gz','rt') as f:rows=[json.loads(x) for x in f] + def check(r): + p=root/r['path'] + if r['kind']=='symlink': + ok=p.is_symlink() and str(p.readlink())==r['target'] + else: + ok=p.is_file() and p.stat().st_size==r['bytes'] and digest(p)==r['sha256'] + return None if ok else r['path'] + with cf.ThreadPoolExecutor(max_workers=workers) as pool:bad=[x for x in pool.map(check,rows) if x] + return {'pass':not bad,'checked':len(rows),'mismatches':bad,'reference_sha256':summary['files_jsonl_gz_sha256'], + 'exclusions':summary['excluded_directory_names'],'new_stage_additions_allowed':True, + 'meaning':'All original listed bytes checked; only newly named stage outputs are additions.'} + + +def population(meta): + out=meta.annotation_class.fillna('UNKNOWN_CLASS').astype(str).to_numpy(object) + for typ in ('APL','DPM'):out[meta.annotation_type.eq(typ).to_numpy()]=typ + return out + + +def edge_frame(ids,sources,targets,weights,meta,pops): + src=sources[ids];dst=targets[ids] + f=pd.DataFrame({'edge_id':ids,'source_neuron_idx':src,'target_neuron_idx':dst,'raw_synapse_count':weights[ids]}) + for pref,arr in [('source',src),('target',dst)]: + f[pref+'_population']=pops[arr] + for col in ('body_id','annotation_class','annotation_type','annotation_instance','annotation_somaSide','neurotransmitter','nt_ground_truth','annotation_receptorType'): + f[pref+'_'+col]=meta[col].to_numpy()[arr] + return f + + +def raw_incident(path,bodyids): + tables=[] + with pa.memory_map(str(path),'r') as f: + reader=pa.ipc.open_file(f) + assert reader.schema.names==['body_pre','body_post','weight'],str(reader.schema) + ids=pa.array(bodyids.astype(np.int64)) + for i in range(reader.num_record_batches): + batch=reader.get_batch(i) + keep=pc.or_(pc.is_in(batch.column(0),value_set=ids),pc.is_in(batch.column(1),value_set=ids)) + selected=batch.filter(keep) + if len(selected):tables.append(pa.Table.from_batches([selected])) + return pa.concat_tables(tables).to_pandas() + + +def official_head(timeout): + base='https://storage.googleapis.com/flyem-male-cns/v1.0/connectome-data/flat-connectome/' + out=[] + for name in ('syn-partners-male-cns-v1.0-minconf-0.5.feather','syn-points-male-cns-v1.0-minconf-0.5.feather'): + row={'url':base+name,'retrieved_utc':datetime.now(timezone.utc).isoformat(),'method':'HEAD','body_downloaded':False} + try: + with urllib.request.urlopen(urllib.request.Request(base+name,method='HEAD'),timeout=timeout) as r: + row.update(status=r.status,content_length=int(r.headers['Content-Length']),etag=r.headers.get('ETag'), + generation=r.headers.get('x-goog-generation'),upstream_hash_header=r.headers.get('x-goog-hash'), + last_modified=r.headers.get('Last-Modified'),accept_ranges=r.headers.get('Accept-Ranges')) + except Exception as e:row.update(status='UNAVAILABLE',error=type(e).__name__+': '+str(e)) + out.append(row) + return out + + +def seal(root): + paths=sorted(p for p in root.rglob('*') if p.is_file() and p.name not in ('manifest.json','checksums.sha256')) + rows=[{'path':p.relative_to(root).as_posix(),'bytes':p.stat().st_size,'sha256':digest(p)} for p in paths] + save(root/'manifest.json',{'files':rows,'created_utc':datetime.now(timezone.utc).isoformat()}) + with (root/'checksums.sha256').open('x') as f: + for r in rows:f.write(r['sha256']+' '+r['path']+'\n') + return len(rows) + + +def run(cfg): + pa.set_cpu_count(4);pa.set_io_thread_count(4) + start=time.perf_counter();root=Path(cfg['root']);exp=Path(cfg['experiment_root']);model=Path(cfg['model_root']) + assert exp.is_relative_to(root/'experiments') and model.is_relative_to(root/'models/male-cns-lif') + if exp.exists() and any(exp.iterdir()):raise RuntimeError('Refusing nonempty experiment directory') + exp.mkdir(parents=True,exist_ok=True) + for d in ('protocol','audit','connectivity','metadata','spatial','external-resources','regression','performance'):(exp/d).mkdir() + save(exp/'protocol/preregistered.json',{'config':cfg,'source_hashes':{p.name:digest(p) for p in model.iterdir() if p.is_file()}, + 'created_utc':datetime.now(timezone.utc).isoformat(),'before_analysis':True}) + pre=immutable_check(root,root/cfg['snapshot'],cfg['scope']['snapshot_workers']);save(exp/'regression/preflight.json',pre) + assert pre['pass'],'original bytes differ' + canonical=root/cfg['canonical'];prior=root/cfg['prior'];expect=cfg['expected'] + meta=pd.read_parquet(canonical/'neuron-index/unified-metadata.parquet').sort_values('neuron_idx').reset_index(drop=True) + ptr=np.load(canonical/'gpu/csr-indptr.int64.npy',mmap_mode='r');dst=np.load(canonical/'gpu/csr-indices.int32.npy',mmap_mode='r');w=np.load(canonical/'gpu/csr-weights.int64.npy',mmap_mode='r') + assert len(meta)==expect['neurons'] and np.array_equal(meta.neuron_idx,np.arange(len(meta))) + assert str(meta.neuron_idx.dtype)=='int32' and str(meta.body_id.dtype)=='uint64' and meta.body_id.is_unique + assert len(ptr)==len(meta)+1 and ptr[0]==0 and ptr[-1]==len(w)==len(dst)==expect['edges'] + assert ptr.dtype==np.int64 and dst.dtype==np.int32 and w.dtype==np.int64 + assert int(w.sum())==expect['synapse_count_sum'] and np.all(np.diff(ptr)>=0) and w.min()>0 + src=np.repeat(np.arange(len(meta),dtype=np.int32),np.diff(ptr));pops=population(meta) + apl=np.flatnonzero(meta.annotation_type.eq('APL'));kc=np.flatnonzero(meta.annotation_class.eq('Kenyon_Cell'));pn=np.flatnonzero(meta.annotation_class.eq('ALPN')) + assert len(apl)==expect['APL'] and len(kc)==expect['KC'] + oi=np.flatnonzero(np.isin(src,apl));ii=np.flatnonzero(np.isin(dst,apl)) + outgoing=edge_frame(oi,src,dst,w,meta,pops);incoming=edge_frame(ii,src,dst,w,meta,pops) + outgoing['fast_current_masked']=True;outgoing['graded_output_covered']=np.isin(dst[oi],kc) + incoming['graded_input_used']=np.isin(src[ii],np.r_[kc,pn]) + # This describes the graded-state input only. Fast synapses into APL remain in CSR/runtime. + watched=json.loads((prior/'protocol/watched.json').read_text())['all_incoming_ALPNs'] + focus=outgoing[outgoing.target_neuron_idx.isin(watched)].copy() + old=pd.read_parquet(prior/'audit/APL-target-coverage.parquet') + fields=['edge_id','source_neuron_idx','target_neuron_idx','raw_synapse_count'] + assert np.array_equal(outgoing[fields].sort_values('edge_id').to_numpy(np.int64),old[fields].sort_values('edge_id').to_numpy(np.int64)) + nonkc=outgoing[~outgoing.graded_output_covered] + assert (len(outgoing),int(outgoing.raw_synapse_count.sum()),len(nonkc),int(nonkc.raw_synapse_count.sum()),len(focus),int(focus.raw_synapse_count.sum()))==(expect['APL_outgoing_edges'],expect['APL_outgoing_contacts'],expect['non_KC_edges'],expect['non_KC_contacts'],expect['watched_PN_edges'],expect['watched_PN_contacts']) + print('CSR and Phase4Z coverage exact',flush=True) + raw_path=root/'datasets/male-cns-v1.0/raw/connectivity/connectome-weights-male-cns-v1.0-minconf-0.5.feather' + raw=raw_incident(raw_path,meta.iloc[apl].body_id.to_numpy()) + valid=raw.body_pre.isin(meta.body_id)&raw.body_post.isin(meta.body_id) + actual=raw.loc[valid].sort_values(['body_pre','body_post']).reset_index(drop=True) + assert not actual.duplicated(['body_pre','body_post']).any() + incident=pd.concat([outgoing,incoming]).drop_duplicates('edge_id') + expected=incident[['source_body_id','target_body_id','raw_synapse_count']].rename(columns={'source_body_id':'body_pre','target_body_id':'body_post','raw_synapse_count':'weight'}).sort_values(['body_pre','body_post']).reset_index(drop=True) + assert np.array_equal(actual.to_numpy(np.int64),expected.to_numpy(np.int64)) + raw.to_parquet(exp/'connectivity/raw-APL-incident-including-noncanonical.parquet',index=False) + print('Raw Feather APL incident edges exact',len(actual),flush=True) + outgoing.to_parquet(exp/'connectivity/APL-outgoing.parquet',index=False);incoming.to_parquet(exp/'connectivity/APL-incoming.parquet',index=False) + for label,frame,col in [('output',outgoing,'target_population'),('input',incoming,'source_population')]: + grouped=frame.groupby(col,dropna=False).agg(edges=('edge_id','size'),contacts=('raw_synapse_count','sum')).reset_index() + grouped.to_parquet(exp/'connectivity'/f'APL-{label}-population-summary.parquet',index=False) + grouped.to_csv(exp/'connectivity'/f'APL-{label}-population-summary.csv',index=False) + ignored=incoming[~incoming.graded_input_used] + ignored.to_parquet(exp/'connectivity/graded-input-not-used.parquet',index=False) + pairs=incoming[['source_neuron_idx','target_neuron_idx','raw_synapse_count','edge_id']].rename(columns={'source_neuron_idx':'target_neuron_idx','target_neuron_idx':'source_neuron_idx','raw_synapse_count':'reverse_contacts','edge_id':'reverse_edge_id'}) + pn_out=outgoing[outgoing.target_neuron_idx.isin(pn)].merge(pairs,on=['source_neuron_idx','target_neuron_idx'],how='left',validate='one_to_one') + pn_out['has_PN_to_APL']=pn_out.reverse_edge_id.notna() + pn_out['watched_in_Phase4Z']=pn_out.target_neuron_idx.isin(watched) + pn_out.to_parquet(exp/'connectivity/APL-PN-reciprocity.parquet',index=False) + pn_out.to_csv(exp/'connectivity/APL-PN-reciprocity.csv',index=False) + downstream=[] + for node in pn_out.target_neuron_idx.unique(): + ids=np.arange(ptr[node],ptr[node+1]);cl=pops[dst[ids]] + for pop in ('Kenyon_Cell','ALLN','APL'): + selected=ids[cl==pop] + downstream.append({'PN_neuron_idx':int(node),'PN_body_id':int(meta.iloc[node].body_id),'PN_type':meta.iloc[node].annotation_type, + 'target_population':pop,'edges':len(selected),'contacts':int(w[selected].sum())}) + pd.DataFrame(downstream).to_parquet(exp/'connectivity/APL-target-PN-downstream.parquet',index=False) + focus=pn_out[pn_out.watched_in_Phase4Z].copy() + focus[['source_neuron_idx','source_body_id','source_annotation_instance','target_neuron_idx','target_body_id','target_annotation_type','raw_synapse_count','reverse_contacts','reverse_edge_id']].to_csv(exp/'connectivity/watched-PN-reciprocity.csv',index=False) + # Reconstruct the exact frozen matrices on CPU; do not simulate or apply any weights. + inp=np.zeros((len(apl),len(meta)),np.float32);output=np.zeros((len(apl),len(kc)),np.float32) + kmap={int(n):i for i,n in enumerate(kc)};amap={int(n):i for i,n in enumerate(apl)} + for r in incoming[incoming.graded_input_used].itertuples():inp[amap[r.target_neuron_idx],r.source_neuron_idx]+=r.raw_synapse_count + for r in outgoing[outgoing.graded_output_covered].itertuples():output[amap[r.source_neuron_idx],kmap[r.target_neuron_idx]]+=r.raw_synapse_count + input_scale=float(inp[inp>0].sum()/np.count_nonzero(np.any(inp>0,axis=0)));output_scale=float(output[output>0].mean()) + coverage={'input_scale':input_scale,'output_scale':output_scale,'input_matrix_shape':list(inp.shape),'output_matrix_shape':list(output.shape), + 'KC_targets_with_graded_input':int(np.count_nonzero(np.any(output>0,axis=0))), + 'normalized_input_matrix_sha256':hashlib.sha256((inp/input_scale).tobytes()).hexdigest(), + 'normalized_output_matrix_sha256':hashlib.sha256((output/output_scale).tobytes()).hexdigest()} + save(exp/'audit/frozen-matrix-reconstruction.json',coverage) + frozen=json.loads((prior/'audit/APL-target-coverage.json').read_text());source=Path(frozen['source']) + assert digest(source)==frozen['source_sha256'] + body=source.read_text();tree=ast.parse(body) + cls=next(n for n in tree.body if isinstance(n,ast.ClassDef) and n.name=='DeterministicAPLSim') + with (exp/'audit/frozen-APL-class-source.txt').open('x') as f:f.write(ast.get_source_segment(body,cls)+'\n') + save(exp/'audit/frozen-implementation-provenance.json',{'path':str(source),'sha256':digest(source),'same_as_Phase4Z':True,'models_imported':False}) + ids=np.unique(np.r_[apl,pn_out.target_neuron_idx]);meta.iloc[ids].to_parquet(exp/'metadata/APL-and-target-PNs.parquet',index=False) + spatial=pn_out[['edge_id','source_neuron_idx','source_body_id','target_neuron_idx','target_body_id','target_annotation_type','raw_synapse_count']].copy() + for col in ('synapse_location','synapse_ROI','PN_subcellular_target','postsynaptic_GABA_receptor','effective_inhibition_coefficient'):spatial[col]='unknown' + spatial['reason']='Local body-pair counts and SWC centerlines do not contain synapse partner locations or target receptor measurements' + spatial.to_parquet(exp/'spatial/APL-PN-unknowns.parquet',index=False) + swc=[] + for node in np.r_[apl,watched]: + p=Path(meta.iloc[node].swc_path) + a=np.loadtxt(p,comments='#',ndmin=2) + assert a.shape[1]==7 and np.all(np.isfinite(a)) + swc.append({'neuron_idx':int(node),'body_id':int(meta.iloc[node].body_id),'path':str(p),'sha256':digest(p), + 'nodes':len(a),'columns':int(a.shape[1]),'synaptic_partner_identity_in_standard_SWC':False, + 'coordinates_used_to_infer_synapse_locations':False}) + save(exp/'spatial/watched-SWC-audit.json',swc) + schemas=[] + for p in sorted((root/'datasets/male-cns-v1.0/raw').glob('*/*.feather')): + with pa.memory_map(str(p),'r') as f:sc=pa.ipc.open_file(f).schema + schemas.append({'path':str(p),'sha256':digest(p),'fields':[{'name':x.name,'dtype':str(x.type)} for x in sc]}) + save(exp/'spatial/local-schemas.json',schemas) + save(exp/'external-resources/official-data-access.json',official_head(cfg['scope']['official_network_timeout_s'])) + evidence={ + 'official_definition':{'url':'https://male-cns.janelia.org/download/','dataset':'male-cns:v1.0','license':'CC-BY-4.0', + 'license_url':'https://creativecommons.org/licenses/by/4.0/','observation':'Official page specifies paired synapse coordinates/primary_post in syn-partners; local flat weights contain none.', + 'required_subset':'All outgoing APL partner records; exact body IDs from metadata; minimum confidence 0.5; include pre/post x/y/z, body IDs and primary_post.', + 'no_EM_needed':True,'coordinate_units':'synapse coordinates and original SWC in 8nm voxels; precomputed skeletons have different units'}, + 'primary_physiology':[ + {'doi':'10.7554/eLife.74172','url':'https://elifesciences.org/articles/74172','claim':'Local APL inhibition at PN boutons and KC dendritic claws was studied; no edge-specific MaleCNS coefficient follows.'}, + {'doi':'10.7554/eLife.56954','url':'https://pmc.ncbi.nlm.nih.gov/articles/PMC7541083/','claim':'APL activity/inhibition can be spatially localized; global point-neuron inhibition is a modeling assumption.'}], + 'google_research':{'url':'https://www.research.google/blog/a-connectomics-milestone-mapping-the-complete-male-fruit-fly-brain/', + 'role':'Primary project provenance, not evidence of associative-learning performance'}, + 'access_choices':['Authorized neuPrint male-cns:v1.0 targeted query, requiring user-configured API token', + 'Explicitly approved official syn-partners bulk download into a NEW external-reference directory'], + 'not_attempted':['bulk synapse download','EM download','credential discovery','unauthenticated query bypass','new dynamics','GPU regression']} + save(exp/'external-resources/evidence-and-limitations.json',evidence) + results={'phase':'4AA','status':'PASS-STATIC-SCOPE-AUDIT / BLOCKED-SPATIAL-PHYSIOLOGY','candidate':False, + 'neurons':len(meta),'graph_edges':len(w),'synapse_count_sum':int(w.sum()),'APL_neurons':len(apl),'KC_neurons':len(kc),'ALPN_neurons':len(pn), + 'APL_outgoing_edges':len(outgoing),'APL_outgoing_contacts':int(outgoing.raw_synapse_count.sum()), + 'non_KC_uncovered_edges':len(nonkc),'non_KC_uncovered_contacts':int(nonkc.raw_synapse_count.sum()),'non_KC_uncovered_targets':int(nonkc.target_neuron_idx.nunique()), + 'APL_to_PN_edges':len(pn_out),'APL_to_PN_contacts':int(pn_out.raw_synapse_count.sum()),'APL_target_PNs':int(pn_out.target_neuron_idx.nunique()), + 'APL_PN_pairs_with_reverse_edge':int(pn_out.has_PN_to_APL.sum()),'watched_PN_contacts':int(focus.raw_synapse_count.sum()), + 'APL_incoming_edges':len(incoming),'APL_incoming_contacts':int(incoming.raw_synapse_count.sum()), + 'incoming_edges_not_used_by_graded_state':len(ignored),'incoming_contacts_not_used_by_graded_state':int(ignored.raw_synapse_count.sum()), + 'raw_APL_incident_canonical_edges_checked':len(actual),'raw_APL_incident_noncanonical_rows':int((~valid).sum()), + 'raw_to_CSR_exact':True,'Phase4Z_static_coverage_exact':True,'APL_PN_pairs_with_confirmed_local_synapse_ROI':0, + 'APL_PN_pairs_with_confirmed_subcellular_target':0,'whole_cell_inhibition_repair_authorized_by_evidence':False, + 'new_simulation':False,'new_scientific_regression_run':False,'old_reference_files_rehashed':True, + 'weights_changed':False,'gpu_used':False,'ComfyUI_models_unloaded':False,'top_level_gates_passed':5,'top_level_gates_total':10} + post=immutable_check(root,root/cfg['snapshot'],cfg['scope']['snapshot_workers']);save(exp/'regression/postflight.json',post);assert post['pass'] + results['frozen_integrity_pass']=post['pass'];save(exp/'audit/results.json',results) + save(exp/'performance/resources.json',{'wall_seconds':time.perf_counter()-start,'max_RSS_KiB':resource.getrusage(resource.RUSAGE_SELF).ru_maxrss,'gpu_used':False,'includes_two_full_integrity_scans':True}) + print(json.dumps(results,indent=2),flush=True) + + +if __name__=='__main__': + ap=argparse.ArgumentParser();ap.add_argument('--config',type=Path,required=True);args=ap.parse_args() + run(yaml.safe_load(args.config.read_text())) diff --git a/models/male-cns-lif/apl-pn-scope-audit-v1/audit.yaml b/models/male-cns-lif/apl-pn-scope-audit-v1/audit.yaml new file mode 100644 index 0000000..8987012 --- /dev/null +++ b/models/male-cns-lif/apl-pn-scope-audit-v1/audit.yaml @@ -0,0 +1,31 @@ +phase: 4AA +name: APL-PN-SCOPE-AUDIT +root: /data/digital-drosophila +model_root: /data/digital-drosophila/models/male-cns-lif/apl-pn-scope-audit-v1 +experiment_root: /data/digital-drosophila/experiments/phase4aa-apl-pn-scope +canonical: datasets/male-cns-v1.0/processed/neuron-only +prior: experiments/phase4z-pn-feedback-audit +snapshot: registry/snapshots/bootstrap-20260929 +expected: + neurons: 166700 + edges: 25582938 + synapse_count_sum: 124177617 + APL: 2 + KC: 4064 + APL_outgoing_edges: 5845 + APL_outgoing_contacts: 209912 + non_KC_edges: 1212 + non_KC_contacts: 13712 + watched_PN_edges: 7 + watched_PN_contacts: 247 +scope: + cpu_only: true + new_simulation: false + conditioning: false + parameter_changes: false + sign_changes: false + learned_candidate: false + bulk_data_download: false + new_spatial_positions_inferred_from_skeletons: false + snapshot_workers: 4 + official_network_timeout_s: 30 diff --git a/models/male-cns-lif/apl-pn-scope-audit-v1/checksums.sha256 b/models/male-cns-lif/apl-pn-scope-audit-v1/checksums.sha256 new file mode 100644 index 0000000..e0fa6c2 --- /dev/null +++ b/models/male-cns-lif/apl-pn-scope-audit-v1/checksums.sha256 @@ -0,0 +1,12 @@ +b87a601d869f0a4cf7f88ccb2b7f5592b22da25d11d3e5bfb1be4bba05c079c0 LOCALIZATION-PROTOCOL.md +e88f765be0fd91178eed1d862b1de8d8b307ba5ec3cc0ae0d0d93202f264acce PROTOCOL.md +fa0bfd5a163a436e061c94e37cf6fe84ca75fdfa94d6f20ce85eda5058ca9ce7 REPORT.md +4ef071ba88f4e1cd78f068be58414dd7f4099dfac69c68266c4f46e175eab9fb audit.py +e0171bbd7dc7e693268eac00152e560e841f885c7d524c74d51fda7f7fbadbbf audit.yaml +23db504ac8f31c62a434b24506cbe8456e2993e923bae4c89040cc6a1d8d06f7 fetch_syn_partners.py +ae203b77c011d01ab8fb1cc76fcf4b0223a71e309d6995445fc7f33ce22a2f06 finalize.py +aca6c69399538a41bc9148f2c837f0546e8a39d6b2b833585b9c55e53fa8414b localize.py +554e9378e068fb13abb4f08dbf9ea710228fa535da2442edb913261fa22fcb20 regression.py +238506a18fb81d544480c815d2517589e5b9d8c1932e86a5fe163a1b2955f712 regression_retry.py +cb67bab972195090d5c4188169982abdc960479b8031477f1f39ac445814e88f test_audit.py +732dcfe1a9c807356f7664393f6678743c61e3fe38a915ca0ce3f00ee7b17d9a validate_localization.py diff --git a/models/male-cns-lif/apl-pn-scope-audit-v1/fetch_syn_partners.py b/models/male-cns-lif/apl-pn-scope-audit-v1/fetch_syn_partners.py new file mode 100644 index 0000000..639bbc2 --- /dev/null +++ b/models/male-cns-lif/apl-pn-scope-audit-v1/fetch_syn_partners.py @@ -0,0 +1,49 @@ +"""User-authorized official additional reference download. Never writes raw.""" +import base64 +import hashlib +import json +from pathlib import Path +import subprocess +import time +import urllib.parse +import urllib.request +from audit import save + +ROOT=Path('/data/digital-drosophila') +OUT=ROOT/'experiments/phase4aa-apl-pn-scope/external-resources/synaptic-partners' +NAME='syn-partners-male-cns-v1.0-minconf-0.5.feather' +OBJECT='v1.0/connectome-data/flat-connectome/'+NAME +META='https://storage.googleapis.com/storage/v1/b/flyem-male-cns/o/'+urllib.parse.quote(OBJECT,safe='') + +def main(): + OUT.mkdir(parents=True,exist_ok=True) + with urllib.request.urlopen(META,timeout=30) as r:meta=json.load(r) + assert meta['name']==OBJECT and int(meta['size'])==6777179098 + assert meta['generation']=='1780494942562468','Stop on an unexpected upstream revision' + md5=base64.b64decode(meta['md5Hash']).hex() + if (OUT/'upstream-object.json').exists(): + prior=json.loads((OUT/'upstream-object.json').read_text()) + assert all(prior[k]==meta[k] for k in ('name','generation','size','md5Hash')) + else:save(OUT/'upstream-object.json',meta) + url='https://storage.googleapis.com/flyem-male-cns/'+OBJECT+'?generation='+meta['generation'] + if not (OUT/'authorization-and-source.json').exists(): + save(OUT/'authorization-and-source.json',{'user_authorized_additional_download':True,'new_reference_only':True, + 'source_page':'https://male-cns.janelia.org/download/','url':url,'metadata_url':META, + 'dataset':'male-cns:v1.0','license':'CC-BY-4.0','EM_downloaded':False, + 'raw_modified':False,'retrieved_utc':time.strftime('%Y-%m-%dT%H:%M:%SZ',time.gmtime())}) + cmd=['aria2c','--continue=true','--max-connection-per-server=8','--split=8','--min-split-size=16M', + '--max-tries=8','--retry-wait=5','--connect-timeout=30','--timeout=60','--auto-file-renaming=false', + '--allow-overwrite=false','--check-integrity=true','--file-allocation=none','--summary-interval=20', + '--enable-color=false','--console-log-level=warn','--checksum=md5='+md5,'--dir='+str(OUT),'--out='+NAME,url] + begin=time.perf_counter();subprocess.run(cmd,check=True) + file=OUT/NAME;hs=hashlib.sha256();hm=hashlib.md5() + with file.open('rb') as f: + for b in iter(lambda:f.read(8<<20),b''):hs.update(b);hm.update(b) + result={'bytes':file.stat().st_size,'sha256':hs.hexdigest(),'md5':hm.hexdigest(),'official_md5':md5, + 'generation':meta['generation'],'download_and_verification_seconds':time.perf_counter()-begin, + 'pass':file.stat().st_size==int(meta['size']) and hm.hexdigest()==md5,'path':str(file)} + assert result['pass'],'Official MD5/size mismatch; retain file and stop' + if not (OUT/'download-verification.json').exists():save(OUT/'download-verification.json',result) + print(json.dumps(result),flush=True) + +if __name__=='__main__':main() diff --git a/models/male-cns-lif/apl-pn-scope-audit-v1/finalize.py b/models/male-cns-lif/apl-pn-scope-audit-v1/finalize.py new file mode 100644 index 0000000..06fe79f --- /dev/null +++ b/models/male-cns-lif/apl-pn-scope-audit-v1/finalize.py @@ -0,0 +1,51 @@ +"""Seal only this newly created audit and copy small evidence into Git registry.""" +import json +from pathlib import Path +import shutil +import time +from audit import save,digest,seal,immutable_check + +ROOT=Path('/data/digital-drosophila');MODEL=ROOT/'models/male-cns-lif/apl-pn-scope-audit-v1';EXP=ROOT/'experiments/phase4aa-apl-pn-scope' +def main(): + assert not (EXP/'manifest.json').exists() and not (MODEL/'manifest.json').exists(),'Already sealed' + static=json.loads((EXP/'audit/results.json').read_text()) + local=json.loads((EXP/'localization/summary.json').read_text()) + pairs=json.loads((EXP/'localization/complete-pair-set-validation.json').read_text()) + gpu=json.loads((EXP/'retry-with-correct-PATH/gpu-frozen-regression/summary.json').read_text()) + external=json.loads((EXP/'external-resources/synaptic-partners/download-verification.json').read_text()) + assert static['frozen_integrity_pass'] and local['pass'] and pairs['pass'] and gpu['pass'] and external['pass'] + post=immutable_check(ROOT,ROOT/'registry/snapshots/bootstrap-20260929',4) + save(EXP/'regression/final-old-files-integrity.json',post);assert post['pass'] + result={'phase':'4AA','status':'PASS-APL-PN-ANATOMICAL-LOCALIZATION / NO-DYNAMICS-CANDIDATE', + 'candidate':False,'previous_static_spatial_block_resolved_by_user_authorized_reference_data':True, + 'old_static_audit_retained_without_overwrite':True,'canonical_neurons':166700,'canonical_edges':25582938, + 'APL_PN_edges':268,'APL_target_PNs':259,'APL_PN_contacts':4600,'calyx_contacts':3820, + 'calyx_fraction':3820/4600,'ROI_unspecified_contacts':731,'other_ROI_contacts':49, + 'watched_PN_contacts':247,'watched_calyx_contacts':228,'watched_unspecified_contacts':19, + 'complete_pair_checks':pairs,'frozen_trials_pass':gpu['pass'],'frozen_trials_count':len(gpu['trials']), + 'old_scientific_files_verified':post['checked'],'old_file_integrity_pass':post['pass'], + 'external_MD5_pass':external['pass'],'external_SHA256':external['sha256'], + 'brain_dynamics_changed':False,'training':False,'receptor_or_terminal_gain_calibrated':False, + 'bouton_identity_confirmed':False,'ComfyUI_stopped_or_unloaded':False,'top_level_gate_fraction':'5/10', + 'failures_preserved':['initial experiment-directory permission before any output','first GPU build lookup of Ninja failed before simulation','first aria2 checksum argument invalid before download'], + 'finalized_utc':time.strftime('%Y-%m-%dT%H:%M:%SZ',time.gmtime())} + save(EXP/'audit/final-summary.json',result) + with (MODEL/'REPORT.md').open('rb') as src,(EXP/'REPORT.md').open('xb') as dst:shutil.copyfileobj(src,dst) + model_count=seal(MODEL);experiment_count=seal(EXP) + verified=[] + for base in (MODEL,EXP): + manifest=json.loads((base/'manifest.json').read_text());bad=[r['path'] for r in manifest['files'] if digest(base/r['path'])!=r['sha256']] + assert not bad;verified.append({'path':str(base),'files':len(manifest['files']),'pass':not bad}) + registry=ROOT/'registry/phase4aa-apl-pn-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>2*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) + records.append({'original_path':str(p.relative_to(ROOT)),'copy_path':str(dst.relative_to(registry)),'sha256':digest(p),'bytes':p.stat().st_size}) + save(registry/'evidence-index.json',records);save(registry/'seal-verification.json',verified) + doc=ROOT/'docs/progress/phase4aa-apl-pn-scope.md';doc.parent.mkdir(parents=True,exist_ok=True) + with (MODEL/'REPORT.md').open('rb') as src,doc.open('xb') as dst:shutil.copyfileobj(src,dst) + print(json.dumps({'result':result['status'],'model_files':model_count,'experiment_files':experiment_count,'evidence_copies':len(records),'all_seals_pass':True}),flush=True) + +if __name__=='__main__':main() diff --git a/models/male-cns-lif/apl-pn-scope-audit-v1/localize.py b/models/male-cns-lif/apl-pn-scope-audit-v1/localize.py new file mode 100644 index 0000000..5d3f8d6 --- /dev/null +++ b/models/male-cns-lif/apl-pn-scope-audit-v1/localize.py @@ -0,0 +1,112 @@ +"""Official paired-synapse localization; numerical counts must reconcile to CSR.""" +from pathlib import Path +import hashlib +import json +import time +import numpy as np +import pandas as pd +import pyarrow as pa +import pyarrow.compute as pc +from scipy.spatial import cKDTree +from audit import save,digest + +ROOT=Path('/data/digital-drosophila');EXP=ROOT/'experiments/phase4aa-apl-pn-scope' + +def main(): + pa.set_cpu_count(4);pa.set_io_thread_count(4);start=time.perf_counter() + out=EXP/'localization';out.mkdir(exist_ok=False) + official=EXP/'external-resources/synaptic-partners' + verified=json.loads((official/'download-verification.json').read_text());assert verified['pass'] + path=Path(verified['path']);assert path.stat().st_size==verified['bytes'] + source_hash=digest(path);assert source_hash==verified['sha256'] + save(out/'protocol.json',{'source_sha256':source_hash,'source_generation':verified['generation'], + 'source_script_sha256':digest(Path(__file__)),'protocol_sha256':digest(Path(__file__).with_name('LOCALIZATION-PROTOCOL.md')), + 'coordinate_unit_nm':8,'distance_to_microns_multiplier':0.008, + 'nearest_neighbor_is_not_bouton_or_functional_identity':True,'before_analysis':True}) + canonical=ROOT/'datasets/male-cns-v1.0/processed/neuron-only' + m=pd.read_parquet(canonical/'neuron-index/unified-metadata.parquet').sort_values('neuron_idx').reset_index(drop=True) + ptr=np.load(canonical/'gpu/csr-indptr.int64.npy',mmap_mode='r');dst=np.load(canonical/'gpu/csr-indices.int32.npy',mmap_mode='r');w=np.load(canonical/'gpu/csr-weights.int64.npy',mmap_mode='r') + body=m.body_id.to_numpy();apl=body[m.annotation_type.eq('APL')];kc=body[m.annotation_class.eq('Kenyon_Cell')];alln=body[m.annotation_class.eq('ALLN')] + pnpairs=pd.read_parquet(EXP/'connectivity/APL-PN-reciprocity.parquet');pn=pnpairs.target_body_id.unique() + watchidx=json.loads((ROOT/'experiments/phase4z-pn-feedback-audit/protocol/watched.json').read_text())['all_incoming_ALPNs'] + watch=body[watchidx] + groups={k:[] for k in ('APL-incident','APL-target-PN-to-KC','watched-PN-to-ALLN','ALLN-to-watched-PN')} + sets={name:pa.array(arr.astype(np.int64)) for name,arr in [('APL',apl),('KC',kc),('ALLN',alln),('PN',pn),('watched',watch)]} + total=0 + with pa.memory_map(str(path),'r') as f: + reader=pa.ipc.open_file(f);names=reader.schema.names + required=['x_pre','y_pre','z_pre','body_pre','conf_pre','x_post','y_post','z_post','body_post','conf_post','primary_post'] + save(out/'actual-schema.json',{'fields':[{'name':x.name,'dtype':str(x.type)} for x in reader.schema],'record_batches':reader.num_record_batches}) + assert set(required).issubset(names),names + for i in range(reader.num_record_batches): + batch=reader.get_batch(i);total+=len(batch) + pre=batch.column(names.index('body_pre'));post=batch.column(names.index('body_post')) + masks={ + 'APL-incident':pc.or_(pc.is_in(pre,value_set=sets['APL']),pc.is_in(post,value_set=sets['APL'])), + 'APL-target-PN-to-KC':pc.and_(pc.is_in(pre,value_set=sets['PN']),pc.is_in(post,value_set=sets['KC'])), + 'watched-PN-to-ALLN':pc.and_(pc.is_in(pre,value_set=sets['watched']),pc.is_in(post,value_set=sets['ALLN'])), + 'ALLN-to-watched-PN':pc.and_(pc.is_in(pre,value_set=sets['ALLN']),pc.is_in(post,value_set=sets['watched']))} + for name,mask in masks.items(): + sub=batch.filter(mask) + if len(sub):groups[name].append(pa.Table.from_batches([sub])) + if (i+1)%500==0:print('streamed_batches',i+1,'rows',total,flush=True) + lookup=pd.Series(m.neuron_idx.to_numpy(),index=body) + dfs={};checks=[] + keys=['body_pre','x_pre','y_pre','z_pre','body_post','x_post','y_post','z_post'] + for name,tables in groups.items(): + a=pa.concat_tables(tables).to_pandas();assert not a.duplicated(keys).any(),name+' duplicate partner row' + a['source_neuron_idx']=a.body_pre.map(lookup);a['target_neuron_idx']=a.body_post.map(lookup) + canonical_rows=a.source_neuron_idx.notna()&a.target_neuron_idx.notna() + pairs=a.loc[canonical_rows].groupby(['source_neuron_idx','target_neuron_idx']).size() + problems=[] + for (s,t),count in pairs.items(): + s,t=int(s),int(t);eid=np.arange(ptr[s],ptr[s+1]);found=eid[dst[eid]==t] + if len(found)!=1 or int(w[found[0]])!=count:problems.append({'source':s,'target':t,'actual_partner_count':int(count),'CSR_weight':int(w[found[0]]) if len(found)==1 else None}) + result={'group':name,'rows':len(a),'canonical_rows':int(canonical_rows.sum()),'canonical_pairs':len(pairs),'duplicate_partner_rows':0,'mismatches':problems,'pass':not problems} + checks.append(result);save(out/(name+'-count-check.json'),result);assert result['pass'],name+' count mismatch' + a.to_parquet(out/(name+'.parquet'),index=False);dfs[name]=a + print(json.dumps(result),flush=True) + a=dfs['APL-incident'];forward=a[a.body_pre.isin(apl)&a.body_post.isin(pn)].copy();reverse=a[a.body_pre.isin(pn)&a.body_post.isin(apl)].copy() + assert len(forward)==int(pnpairs.raw_synapse_count.sum())==4600 + frames={'APL-to-PN':forward,'PN-to-APL':reverse,'PN-to-KC':dfs['APL-target-PN-to-KC'], + 'watched-PN-to-ALLN':dfs['watched-PN-to-ALLN'],'ALLN-to-watched-PN':dfs['ALLN-to-watched-PN']} + roi_rows=[];pair_rows=[] + for name,frame in frames.items(): + for roi,g in frame.groupby('primary_post',dropna=False,observed=True): + roi_rows.append({'group':name,'primary_post':str(roi),'contacts':len(g),'fraction':len(g)/len(frame),'source_bodies':g.body_pre.nunique(),'target_bodies':g.body_post.nunique()}) + for (pre,post,roi),g in frame.groupby(['body_pre','body_post','primary_post'],dropna=False,observed=True): + pair_rows.append({'group':name,'body_pre':int(pre),'body_post':int(post),'primary_post':str(roi),'contacts':len(g)}) + rois=pd.DataFrame(roi_rows);rois.to_csv(out/'population-ROI-summary.csv',index=False);rois.to_parquet(out/'population-ROI-summary.parquet',index=False) + pd.DataFrame(pair_rows).to_parquet(out/'pair-ROI-counts.parquet',index=False) + # Neuropil annotation is a location label, not evidence for receptor or inhibitory coefficient. + distances=[];pnkc=dfs['APL-target-PN-to-KC'] + for b,g in forward.groupby('body_post'): + q=pnkc[pnkc.body_pre==b] + if len(q): + sites=q[['x_pre','y_pre','z_pre']].drop_duplicates().to_numpy(np.float64) + query=g[['x_post','y_post','z_post']].to_numpy(np.float64) + dist=cKDTree(sites).query(query,workers=1)[0]*0.008 + distances.append({'PN_body_id':int(b),'PN_neuron_idx':int(lookup.loc[b]),'APL_postsynaptic_contacts':len(g),'PN_to_KC_unique_presynaptic_sites':len(sites), + 'nearest_distance_microns_min':float(dist.min()),'nearest_distance_microns_median':float(np.median(dist)), + 'nearest_distance_microns_p95':float(np.quantile(dist,.95)),'nearest_distance_microns_max':float(dist.max()), + 'bouton_identity_confirmed':False,'watched':int(lookup.loc[b]) in watchidx}) + else:distances.append({'PN_body_id':int(b),'PN_neuron_idx':int(lookup.loc[b]),'APL_postsynaptic_contacts':len(g),'PN_to_KC_unique_presynaptic_sites':0, + 'bouton_identity_confirmed':False,'watched':int(lookup.loc[b]) in watchidx}) + pd.DataFrame(distances).to_csv(out/'spatial-neighborhoods.csv',index=False) + watched_rows=[] + for node in watchidx: + b=body[node];row={'neuron_idx':node,'body_id':int(b),'type':str(m.iloc[node].annotation_type)} + for name,frame in frames.items(): + sub=frame[frame.body_post==b] if name in ('APL-to-PN','ALLN-to-watched-PN') else frame[frame.body_pre==b] + row[name]={str(k):int(v) for k,v in sub.groupby('primary_post',observed=True).size().items()} + watched_rows.append(row) + save(out/'watched-PN-ROI.json',watched_rows) + summary={'pass':all(x['pass'] for x in checks),'source_sha256':source_hash,'full_source_rows_streamed':total, + 'groups':checks,'APL_to_PN_contacts_localized':len(forward),'APL_to_PN_pairs_localized':len(pnpairs), + 'APL_target_PNs_localized':int(forward.body_post.nunique()),'ROI_counts':rois.to_dict('records'), + 'spatial_location_from_official_partners':True,'bouton_identity_confirmed':False,'target_receptor_confirmed':False, + 'terminal_inhibition_coefficient_known':False,'new_dynamics':False,'whole_brain_functional_intervention_run':False, + 'wall_seconds':time.perf_counter()-start} + save(out/'summary.json',summary);print(json.dumps(summary),flush=True) + +if __name__=='__main__':main() diff --git a/models/male-cns-lif/apl-pn-scope-audit-v1/manifest.json b/models/male-cns-lif/apl-pn-scope-audit-v1/manifest.json new file mode 100644 index 0000000..7f76bb0 --- /dev/null +++ b/models/male-cns-lif/apl-pn-scope-audit-v1/manifest.json @@ -0,0 +1,65 @@ +{ + "created_utc": "2026-09-29T15:56:36.952596+00:00", + "files": [ + { + "bytes": 1607, + "path": "LOCALIZATION-PROTOCOL.md", + "sha256": "b87a601d869f0a4cf7f88ccb2b7f5592b22da25d11d3e5bfb1be4bba05c079c0" + }, + { + "bytes": 2468, + "path": "PROTOCOL.md", + "sha256": "e88f765be0fd91178eed1d862b1de8d8b307ba5ec3cc0ae0d0d93202f264acce" + }, + { + "bytes": 7290, + "path": "REPORT.md", + "sha256": "fa0bfd5a163a436e061c94e37cf6fe84ca75fdfa94d6f20ce85eda5058ca9ce7" + }, + { + "bytes": 18939, + "path": "audit.py", + "sha256": "4ef071ba88f4e1cd78f068be58414dd7f4099dfac69c68266c4f46e175eab9fb" + }, + { + "bytes": 906, + "path": "audit.yaml", + "sha256": "e0171bbd7dc7e693268eac00152e560e841f885c7d524c74d51fda7f7fbadbbf" + }, + { + "bytes": 2939, + "path": "fetch_syn_partners.py", + "sha256": "23db504ac8f31c62a434b24506cbe8456e2993e923bae4c89040cc6a1d8d06f7" + }, + { + "bytes": 4144, + "path": "finalize.py", + "sha256": "ae203b77c011d01ab8fb1cc76fcf4b0223a71e309d6995445fc7f33ce22a2f06" + }, + { + "bytes": 8867, + "path": "localize.py", + "sha256": "aca6c69399538a41bc9148f2c837f0546e8a39d6b2b833585b9c55e53fa8414b" + }, + { + "bytes": 4455, + "path": "regression.py", + "sha256": "554e9378e068fb13abb4f08dbf9ea710228fa535da2442edb913261fa22fcb20" + }, + { + "bytes": 394, + "path": "regression_retry.py", + "sha256": "238506a18fb81d544480c815d2517589e5b9d8c1932e86a5fe163a1b2955f712" + }, + { + "bytes": 1520, + "path": "test_audit.py", + "sha256": "cb67bab972195090d5c4188169982abdc960479b8031477f1f39ac445814e88f" + }, + { + "bytes": 2229, + "path": "validate_localization.py", + "sha256": "732dcfe1a9c807356f7664393f6678743c61e3fe38a915ca0ce3f00ee7b17d9a" + } + ] +} diff --git a/models/male-cns-lif/apl-pn-scope-audit-v1/regression.py b/models/male-cns-lif/apl-pn-scope-audit-v1/regression.py new file mode 100644 index 0000000..4675e96 --- /dev/null +++ b/models/male-cns-lif/apl-pn-scope-audit-v1/regression.py @@ -0,0 +1,72 @@ +"""Supplement: existing five frozen trials on 4090, new output paths only.""" +import json +import os +from pathlib import Path +import sys +import time +import urllib.request +import numpy as np +import pandas as pd +import yaml + +ROOT=Path('/data/digital-drosophila') +MODEL=ROOT/'models/male-cns-lif/apl-pn-scope-audit-v1' +EXP=ROOT/'experiments/phase4aa-apl-pn-scope' +sys.path.insert(0,str(MODEL)) +from audit import save,digest,immutable_check + +def queues(): + result=[] + 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) + result.append({'port':port,'running':len(q.get('queue_running',[])),'pending':len(q.get('queue_pending',[]))}) + return result + +def main(): + out=EXP/'gpu-frozen-regression';out.mkdir(exist_ok=False) + q=queues();assert all(x['running']==0 and x['pending']==0 for x in q),'ComfyUI busy; defer' + runtime=ROOT/'models/male-cns-lif/deterministic-runtime-v2' + cfg=yaml.safe_load((runtime/'phase4p.yaml').read_text()) + os.environ['CUDA_VISIBLE_DEVICES']=cfg['device']['visible_gpu_uuid'] + os.environ['TORCH_CUDA_ARCH_LIST']='8.9' + os.environ['CUDA_HOME']='/usr/local/cuda' + os.environ['MAX_JOBS']='2' + os.environ['PYTHONDONTWRITEBYTECODE']='1' + sys.path.insert(0,str(ROOT/'models/male-cns-lif')) + sys.path.insert(0,str(runtime)) + import torch + import phase4p + free,total=torch.cuda.mem_get_info();assert free>2*1024**3,'Insufficient free VRAM; no service eviction' + save(out/'protocol-addendum.json',{'scope':'Five frozen reference v2 trials only; supplement to CPU structural audit', + 'reason':'User confirmed ComfyUI is not in use; baseline behavior check before any future mechanism intervention', + 'new_mechanism_or_training':False,'ComfyUI_queues':q,'available_vram_bytes':free, + 'reference':'experiments/phase4p-deterministic-runtime/phase4c-v2/reference', + 'historical_files_overwritten':False,'source_sha256':digest(Path(__file__)), + 'runtime_sha256':digest(runtime/'phase4p.py'),'config_sha256':digest(runtime/'phase4p.yaml')}) + torch.cuda.reset_peak_memory_stats();start=time.perf_counter();rt=phase4p.CanonicalRuntime(cfg,runtime,out) + rows=[] + for spec in cfg['reference_trials']: + q=queues();assert all(x['running']==0 and x['pending']==0 for x in q),'ComfyUI work arrived; stop between trials' + ref=ROOT/'experiments/phase4p-deterministic-runtime/phase4c-v2/reference'/spec['name'] + events=pd.read_parquet(ref/'spike-events.parquet') + expected={'step':events.step.to_numpy(),'neuron_idx':events.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')} + result=rt.run(np.flatnonzero(rt.pops[spec['population']]),spec['rate_hz'],spec['seed'],spec['duration_ms']) + exact={k:bool(np.array_equal(result[k],v)) for k,v in expected.items()} + finite=bool(np.isfinite(result['v']).all() and np.isfinite(result['g']).all()) + row={'trial':spec['name'],'exact':exact,'finite':finite,'pass':all(exact.values()) and finite, + 'wall_seconds':result['metrics']['wall_seconds'],'events':len(result['step']), + 'events_sha256':phase4p.sha_bytes(result['step'],result['neuron_idx']), + 'max_abs_V_error':float(np.max(np.abs(result['v'].astype(float)-expected['v']))), + 'max_abs_g_error':float(np.max(np.abs(result['g'].astype(float)-expected['g'])))} + save(out/(spec['name']+'.json'),row);rows.append(row);print(json.dumps(row),flush=True) + assert row['pass'],'Frozen regression diverged' + save(out/'summary.json',{'pass':all(r['pass'] for r in rows),'trials':rows,'total_wall_seconds_including_build':time.perf_counter()-start, + 'peak_allocated_VRAM_bytes':int(torch.cuda.max_memory_allocated()),'device':torch.cuda.get_device_name(), + 'ComfyUI_models_unloaded':False,'new_dynamics':False,'original_reference_v1_not_overwritten':True, + 'oracle':'deterministic v2 / original v1 preserved; not claiming v1 atomic runtime is deterministic'}) + # No old scientific artifact may change even after imports/build/run. + post=immutable_check(ROOT,ROOT/'registry/snapshots/bootstrap-20260929',4) + save(out/'post-regression-integrity.json',post);assert post['pass'] + +if __name__=='__main__':main() diff --git a/models/male-cns-lif/apl-pn-scope-audit-v1/regression_retry.py b/models/male-cns-lif/apl-pn-scope-audit-v1/regression_retry.py new file mode 100644 index 0000000..eddbccf --- /dev/null +++ b/models/male-cns-lif/apl-pn-scope-audit-v1/regression_retry.py @@ -0,0 +1,10 @@ +"""Retry regression with the existing venv/toolkit executables on PATH; no install.""" +from pathlib import Path +import os +import regression + +root=Path('/data/digital-drosophila') +os.environ['PATH']=str(root/'models/male-cns-lif/.venv/bin')+':/usr/local/cuda/bin:'+os.environ['PATH'] +regression.EXP=regression.EXP/'retry-with-correct-PATH' +regression.EXP.mkdir(exist_ok=False) +regression.main() diff --git a/models/male-cns-lif/apl-pn-scope-audit-v1/test_audit.py b/models/male-cns-lif/apl-pn-scope-audit-v1/test_audit.py new file mode 100644 index 0000000..52c24f0 --- /dev/null +++ b/models/male-cns-lif/apl-pn-scope-audit-v1/test_audit.py @@ -0,0 +1,29 @@ +import tempfile +from pathlib import Path +import unittest +import numpy as np +import pandas as pd +import pyarrow as pa +import pyarrow.feather as feather +from audit import raw_incident,population,save + +class AuditTests(unittest.TestCase): + def test_raw_incident_union_keeps_self_loop_once(self): + with tempfile.TemporaryDirectory(prefix='apl-scope-test-') as d: + p=Path(d)/'raw.feather' + frame=pd.DataFrame({'body_pre':[10,10,20,40],'body_post':[10,30,10,50],'weight':[1,2,3,4]},dtype=np.int64) + feather.write_feather(pa.Table.from_pandas(frame,preserve_index=False),p,chunksize=2) + result=raw_incident(p,np.array([10],np.uint64)) + self.assertTrue(np.array_equal(result.to_numpy(),frame.iloc[:3].to_numpy())) + with self.assertRaises(AssertionError): + feather.write_feather(pa.table({'body_pre':[10],'wrong':[30],'weight':[1]}),p) + raw_incident(p,np.array([10],np.uint64)) + def test_population_does_not_equate_dopamine_to_DAN(self): + m=pd.DataFrame({'annotation_class':[None,None,'ALPN','DAN'], 'annotation_type':['APL','DPM','VA6_adPN','PAM01']}) + self.assertEqual(list(population(m)),['APL','DPM','ALPN','DAN']) + def test_exclusive_output(self): + with tempfile.TemporaryDirectory(prefix='apl-scope-test-') as d: + p=Path(d)/'x.json';save(p,{'original':True}) + with self.assertRaises(FileExistsError):save(p,{'original':False}) + +if __name__=='__main__':unittest.main() diff --git a/models/male-cns-lif/apl-pn-scope-audit-v1/validate_localization.py b/models/male-cns-lif/apl-pn-scope-audit-v1/validate_localization.py new file mode 100644 index 0000000..1998609 --- /dev/null +++ b/models/male-cns-lif/apl-pn-scope-audit-v1/validate_localization.py @@ -0,0 +1,34 @@ +"""Independent complete-pair-set and weight check (including entirely missing pairs).""" +from pathlib import Path +import json +import numpy as np +import pandas as pd +from audit import save + +ROOT=Path('/data/digital-drosophila');EXP=ROOT/'experiments/phase4aa-apl-pn-scope' +c=ROOT/'datasets/male-cns-v1.0/processed/neuron-only' +m=pd.read_parquet(c/'neuron-index/unified-metadata.parquet').sort_values('neuron_idx').reset_index(drop=True) +ptr=np.load(c/'gpu/csr-indptr.int64.npy',mmap_mode='r');dst=np.load(c/'gpu/csr-indices.int32.npy',mmap_mode='r');w=np.load(c/'gpu/csr-weights.int64.npy',mmap_mode='r') +src=np.repeat(np.arange(len(m),dtype=np.int32),np.diff(ptr)) +apl=np.flatnonzero(m.annotation_type.eq('APL'));kc=np.flatnonzero(m.annotation_class.eq('Kenyon_Cell'));alln=np.flatnonzero(m.annotation_class.eq('ALLN')) +pn=pd.read_parquet(EXP/'connectivity/APL-PN-reciprocity.parquet').target_neuron_idx.unique() +watch=json.loads((ROOT/'experiments/phase4z-pn-feedback-audit/protocol/watched.json').read_text())['all_incoming_ALPNs'] +selectors={ + 'APL-incident':np.isin(src,apl)|np.isin(dst,apl), + 'APL-target-PN-to-KC':np.isin(src,pn)&np.isin(dst,kc), + 'watched-PN-to-ALLN':np.isin(src,watch)&np.isin(dst,alln), + 'ALLN-to-watched-PN':np.isin(src,alln)&np.isin(dst,watch)} +results=[] +for name,mask in selectors.items(): + frame=pd.read_parquet(EXP/'localization'/(name+'.parquet')) + frame=frame[frame.source_neuron_idx.notna()&frame.target_neuron_idx.notna()] + counts=frame.groupby(['source_neuron_idx','target_neuron_idx']).size().reset_index(name='weight') + actual=counts.to_numpy(np.int64) + ids=np.flatnonzero(mask) + expected=np.column_stack((src[ids],dst[ids],w[ids])).astype(np.int64) + actual=actual[np.lexsort((actual[:,1],actual[:,0]))];expected=expected[np.lexsort((expected[:,1],expected[:,0]))] + passed=np.array_equal(actual,expected) + results.append({'group':name,'expected_CSR_pairs':len(expected),'observed_pairs':len(actual),'complete_pair_set_and_weight_exact':passed}) + assert passed,name +save(EXP/'localization/complete-pair-set-validation.json',{'pass':all(r['complete_pair_set_and_weight_exact'] for r in results),'groups':results}) +print(json.dumps(results,indent=2)) diff --git a/registry/phase4aa-apl-pn-scope/evidence-index.json b/registry/phase4aa-apl-pn-scope/evidence-index.json new file mode 100644 index 0000000..5038a1c --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence-index.json @@ -0,0 +1,266 @@ +[ + { + "bytes": 7290, + "copy_path": "evidence/REPORT.md", + "original_path": "experiments/phase4aa-apl-pn-scope/REPORT.md", + "sha256": "fa0bfd5a163a436e061c94e37cf6fe84ca75fdfa94d6f20ce85eda5058ca9ce7" + }, + { + "bytes": 2128, + "copy_path": "evidence/audit/final-summary.json", + "original_path": "experiments/phase4aa-apl-pn-scope/audit/final-summary.json", + "sha256": "69a381512dcb4a80a974a36ce85d78b06842f67b1ba347f0bdddb325ea3b9b1d" + }, + { + "bytes": 243, + "copy_path": "evidence/audit/frozen-implementation-provenance.json", + "original_path": "experiments/phase4aa-apl-pn-scope/audit/frozen-implementation-provenance.json", + "sha256": "c960b11f471de5ab1edff2ed8adf6a5b38a3d9ba523fed2ff1304f9b00827001" + }, + { + "bytes": 422, + "copy_path": "evidence/audit/frozen-matrix-reconstruction.json", + "original_path": "experiments/phase4aa-apl-pn-scope/audit/frozen-matrix-reconstruction.json", + "sha256": "b7cae9e2557d872c305c1168ebe2748031c0452d2679f1ade11f9ff95e52cbe9" + }, + { + "bytes": 1384, + "copy_path": "evidence/audit/results.json", + "original_path": "experiments/phase4aa-apl-pn-scope/audit/results.json", + "sha256": "206c35bee8bfae6daf87b154854f77e649bebe2655b26b6d22dff04fbd64e160" + }, + { + "bytes": 7860, + "copy_path": "evidence/checksums.sha256", + "original_path": "experiments/phase4aa-apl-pn-scope/checksums.sha256", + "sha256": "a69b2511689207b0d9ddbe2fabce3be71908f457bb898e3b685a213a796a272a" + }, + { + "bytes": 42201, + "copy_path": "evidence/connectivity/APL-PN-reciprocity.csv", + "original_path": "experiments/phase4aa-apl-pn-scope/connectivity/APL-PN-reciprocity.csv", + "sha256": "da4ddcaf4527a1c4bac5055f9865fe10dc36e79daa15685e3be4545f5284b164" + }, + { + "bytes": 148, + "copy_path": "evidence/connectivity/APL-input-population-summary.csv", + "original_path": "experiments/phase4aa-apl-pn-scope/connectivity/APL-input-population-summary.csv", + "sha256": "219ed78d1eae79c41958185740e6745c62015450a6d1f143ec93c068bcc90340" + }, + { + "bytes": 148, + "copy_path": "evidence/connectivity/APL-output-population-summary.csv", + "original_path": "experiments/phase4aa-apl-pn-scope/connectivity/APL-output-population-summary.csv", + "sha256": "1977d1fd85d659de0490928213ae11b11e3e67fa01f37692f555538661fcf5e2" + }, + { + "bytes": 548, + "copy_path": "evidence/connectivity/watched-PN-reciprocity.csv", + "original_path": "experiments/phase4aa-apl-pn-scope/connectivity/watched-PN-reciprocity.csv", + "sha256": "cae347c669207eca2304de672cf5309a7b9f24e8b2f5722e6fd779a51a94ea30" + }, + { + "bytes": 1809, + "copy_path": "evidence/external-resources/evidence-and-limitations.json", + "original_path": "experiments/phase4aa-apl-pn-scope/external-resources/evidence-and-limitations.json", + "sha256": "f171fe0e12ae50da6947f7b636a9f554f7c661942e4c076f54a3dc314f61b0cc" + }, + { + "bytes": 1072, + "copy_path": "evidence/external-resources/official-data-access.json", + "original_path": "experiments/phase4aa-apl-pn-scope/external-resources/official-data-access.json", + "sha256": "11bd6336e51bb3e85a61dfa3deef294767e43362b0731b40cb25384a0cf1ced9" + }, + { + "bytes": 631, + "copy_path": "evidence/external-resources/synaptic-partners/authorization-and-source.json", + "original_path": "experiments/phase4aa-apl-pn-scope/external-resources/synaptic-partners/authorization-and-source.json", + "sha256": "6e2213f296aef1a6ff7d0acb245f69785346daba1bd38eba9a600224c60b791f" + }, + { + "bytes": 472, + "copy_path": "evidence/external-resources/synaptic-partners/download-verification.json", + "original_path": "experiments/phase4aa-apl-pn-scope/external-resources/synaptic-partners/download-verification.json", + "sha256": "4fd796f88f05a08d5f7f3c3ff2c63c939f330e9acc4519a5272c8b3b97fcf4ac" + }, + { + "bytes": 1137, + "copy_path": "evidence/external-resources/synaptic-partners/upstream-object.json", + "original_path": "experiments/phase4aa-apl-pn-scope/external-resources/synaptic-partners/upstream-object.json", + "sha256": "36c941740074f2bd7b9e382b01d7743791f03f9376763a2704ca3d8d7f1888cf" + }, + { + "bytes": 911, + "copy_path": "evidence/gpu-frozen-regression/protocol-addendum.json", + "original_path": "experiments/phase4aa-apl-pn-scope/gpu-frozen-regression/protocol-addendum.json", + "sha256": "5598a6867d6f7f22a5e6472f00c763a9e94850bda18f10df992bba71ef99e982" + }, + { + "bytes": 173, + "copy_path": "evidence/localization/ALLN-to-watched-PN-count-check.json", + "original_path": "experiments/phase4aa-apl-pn-scope/localization/ALLN-to-watched-PN-count-check.json", + "sha256": "4513ec607f278684b4825c5893db18e4e20d660afa44dccd6e0305bc5efa2286" + }, + { + "bytes": 171, + "copy_path": "evidence/localization/APL-incident-count-check.json", + "original_path": "experiments/phase4aa-apl-pn-scope/localization/APL-incident-count-check.json", + "sha256": "aa56cb7c98c9186c69c5ef06f5b80ecc7e13fba7f1d0316c298687e2c9c191af" + }, + { + "bytes": 178, + "copy_path": "evidence/localization/APL-target-PN-to-KC-count-check.json", + "original_path": "experiments/phase4aa-apl-pn-scope/localization/APL-target-PN-to-KC-count-check.json", + "sha256": "2fe50c10f0d497ec522782bfbd7b7a5ecada77e62960737b608d78485638a695" + }, + { + "bytes": 766, + "copy_path": "evidence/localization/actual-schema.json", + "original_path": "experiments/phase4aa-apl-pn-scope/localization/actual-schema.json", + "sha256": "40e14fb1c63a890c6dc3ff126f7429fa9c577a29dad6e2b3dd6c4fe9b06a2ce6" + }, + { + "bytes": 684, + "copy_path": "evidence/localization/complete-pair-set-validation.json", + "original_path": "experiments/phase4aa-apl-pn-scope/localization/complete-pair-set-validation.json", + "sha256": "30bc6ca4a8b92188f52ca2d9d1da9179dfe7de11e9ae83ec6592c4d84a757b8b" + }, + { + "bytes": 1941, + "copy_path": "evidence/localization/population-ROI-summary.csv", + "original_path": "experiments/phase4aa-apl-pn-scope/localization/population-ROI-summary.csv", + "sha256": "c3f8fe2bc18fb2cea7906c8b6ea98fcbe542c19c9f0d835c2b1b5bc3266edb83" + }, + { + "bytes": 478, + "copy_path": "evidence/localization/protocol.json", + "original_path": "experiments/phase4aa-apl-pn-scope/localization/protocol.json", + "sha256": "56d78bcee99d4bd84f0942dac330a12686a02641acbf993ed72b83db93fca941" + }, + { + "bytes": 26346, + "copy_path": "evidence/localization/spatial-neighborhoods.csv", + "original_path": "experiments/phase4aa-apl-pn-scope/localization/spatial-neighborhoods.csv", + "sha256": "271d2a5a857842335e905d7e7665e6484c9492df23e350a1b3f3c7b27df4424f" + }, + { + "bytes": 8667, + "copy_path": "evidence/localization/summary.json", + "original_path": "experiments/phase4aa-apl-pn-scope/localization/summary.json", + "sha256": "b53b5a714d9ba400db1ce5e7ed35e386522ba6c7a47266d2e7fec314aa1e4d1d" + }, + { + "bytes": 2971, + "copy_path": "evidence/localization/watched-PN-ROI.json", + "original_path": "experiments/phase4aa-apl-pn-scope/localization/watched-PN-ROI.json", + "sha256": "e5640846514bac50d667c814197227feaa770e254e333004364c749b406a2153" + }, + { + "bytes": 173, + "copy_path": "evidence/localization/watched-PN-to-ALLN-count-check.json", + "original_path": "experiments/phase4aa-apl-pn-scope/localization/watched-PN-to-ALLN-count-check.json", + "sha256": "b43a48b9ae400172ca8cd5e6d1e327073f29e4b0d18db8402b222ada62113b6d" + }, + { + "bytes": 12563, + "copy_path": "evidence/manifest.json", + "original_path": "experiments/phase4aa-apl-pn-scope/manifest.json", + "sha256": "6d75567af2a6c0993d4fc08e272814910c19fa9602811cfacd1ebc4ba76bc737" + }, + { + "bytes": 132, + "copy_path": "evidence/performance/resources.json", + "original_path": "experiments/phase4aa-apl-pn-scope/performance/resources.json", + "sha256": "eec1917188ab67a73d1c487642fa2eb5d2468ff51d344cf6f37bb93810dcb2c6" + }, + { + "bytes": 1625, + "copy_path": "evidence/protocol/preregistered.json", + "original_path": "experiments/phase4aa-apl-pn-scope/protocol/preregistered.json", + "sha256": "ff9892351ed16d9ef45817c5c104dca9a23547fe97ce2a4adf45b2270595673f" + }, + { + "bytes": 438, + "copy_path": "evidence/regression/final-old-files-integrity.json", + "original_path": "experiments/phase4aa-apl-pn-scope/regression/final-old-files-integrity.json", + "sha256": "1431b9be6dc067f48699f3c3708486718a79380c04a8b342ad247def222cd24c" + }, + { + "bytes": 438, + "copy_path": "evidence/regression/postflight.json", + "original_path": "experiments/phase4aa-apl-pn-scope/regression/postflight.json", + "sha256": "1431b9be6dc067f48699f3c3708486718a79380c04a8b342ad247def222cd24c" + }, + { + "bytes": 438, + "copy_path": "evidence/regression/preflight.json", + "original_path": "experiments/phase4aa-apl-pn-scope/regression/preflight.json", + "sha256": "1431b9be6dc067f48699f3c3708486718a79380c04a8b342ad247def222cd24c" + }, + { + "bytes": 371, + "copy_path": "evidence/retry-with-correct-PATH/gpu-frozen-regression/auditory-100hz.json", + "original_path": "experiments/phase4aa-apl-pn-scope/retry-with-correct-PATH/gpu-frozen-regression/auditory-100hz.json", + "sha256": "41309fea8a1e292e007c6e1cf7646836a83b47e9aef3e0bcb4a0c0caba621493" + }, + { + "bytes": 370, + "copy_path": "evidence/retry-with-correct-PATH/gpu-frozen-regression/auditory-10hz.json", + "original_path": "experiments/phase4aa-apl-pn-scope/retry-with-correct-PATH/gpu-frozen-regression/auditory-10hz.json", + "sha256": "2b76a9c17aa3771c8602da15a823e35c06022d5f92d55a2ef1a23174679b31d9" + }, + { + "bytes": 486, + "copy_path": "evidence/retry-with-correct-PATH/gpu-frozen-regression/gpu-reference/extension.json", + "original_path": "experiments/phase4aa-apl-pn-scope/retry-with-correct-PATH/gpu-frozen-regression/gpu-reference/extension.json", + "sha256": "58797c63494551cab358315feff51a83ad6ea8a854f5e919b1fd5fbae36c7fa0" + }, + { + "bytes": 372, + "copy_path": "evidence/retry-with-correct-PATH/gpu-frozen-regression/gustatory-50hz.json", + "original_path": "experiments/phase4aa-apl-pn-scope/retry-with-correct-PATH/gpu-frozen-regression/gustatory-50hz.json", + "sha256": "6777d390ce499d85a91833d46e645cf2a2604c3e96c809c815d397addfa510b6" + }, + { + "bytes": 378, + "copy_path": "evidence/retry-with-correct-PATH/gpu-frozen-regression/mechanosensory-50hz.json", + "original_path": "experiments/phase4aa-apl-pn-scope/retry-with-correct-PATH/gpu-frozen-regression/mechanosensory-50hz.json", + "sha256": "bd87a77937afd185497f9a538047aa3e5b4960211687524cbac1886cba1ddb26" + }, + { + "bytes": 372, + "copy_path": "evidence/retry-with-correct-PATH/gpu-frozen-regression/olfactory-50hz.json", + "original_path": "experiments/phase4aa-apl-pn-scope/retry-with-correct-PATH/gpu-frozen-regression/olfactory-50hz.json", + "sha256": "5b9284784f76d27517b6dc6c7df56de76bdd8e2b09d1f08a781a42e10ac1ddf6" + }, + { + "bytes": 438, + "copy_path": "evidence/retry-with-correct-PATH/gpu-frozen-regression/post-regression-integrity.json", + "original_path": "experiments/phase4aa-apl-pn-scope/retry-with-correct-PATH/gpu-frozen-regression/post-regression-integrity.json", + "sha256": "1431b9be6dc067f48699f3c3708486718a79380c04a8b342ad247def222cd24c" + }, + { + "bytes": 911, + "copy_path": "evidence/retry-with-correct-PATH/gpu-frozen-regression/protocol-addendum.json", + "original_path": "experiments/phase4aa-apl-pn-scope/retry-with-correct-PATH/gpu-frozen-regression/protocol-addendum.json", + "sha256": "5598a6867d6f7f22a5e6472f00c763a9e94850bda18f10df992bba71ef99e982" + }, + { + "bytes": 2600, + "copy_path": "evidence/retry-with-correct-PATH/gpu-frozen-regression/summary.json", + "original_path": "experiments/phase4aa-apl-pn-scope/retry-with-correct-PATH/gpu-frozen-regression/summary.json", + "sha256": "fb92144b782fb907d3f9090b44b9713b7b32559335a6558ecf72798f4926bc81" + }, + { + "bytes": 4404, + "copy_path": "evidence/spatial/local-schemas.json", + "original_path": "experiments/phase4aa-apl-pn-scope/spatial/local-schemas.json", + "sha256": "784f2105af57bf8d45b9220402360dc3dfa53148f4fa1f89052af5dd4ddb6522" + }, + { + "bytes": 3369, + "copy_path": "evidence/spatial/watched-SWC-audit.json", + "original_path": "experiments/phase4aa-apl-pn-scope/spatial/watched-SWC-audit.json", + "sha256": "22f6f472a221b3f933ded4430e9bde5d554db29507dc18b8f8064c87d3344dae" + } +] diff --git a/registry/phase4aa-apl-pn-scope/evidence/REPORT.md b/registry/phase4aa-apl-pn-scope/evidence/REPORT.md new file mode 100644 index 0000000..38bbcdf --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/REPORT.md @@ -0,0 +1,111 @@ +# Phase 4AA — APL→PN 作用范围与官方突触定位审计 + +正式结论:**PASS-APL-PN-ANATOMICAL-LOCALIZATION / NO-DYNAMICS-CANDIDATE**。 + +本轮从 Phase 4Z 接续,先完成只读 CPU 范围审计;随后用户明确授权下载官方 syn-partners 并继续定位,也确认 ComfyUI 空闲以便运行 frozen regression。 +原始静态审计 `audit/results.json` 中的空间 unknown/blocked 是追加数据前的状态,保留不覆盖;最终状态以 `audit/final-summary.json` 和本报告为准。 +本轮无训练、无参数修改、无新的正式动力学候选。顶层验收仍为 5/10(50%),不是生物学复现比例。 + +## 核心新证据 + +以实际 annotation 与原始 CSR 识别 2 个 APL、4,064 个 KC、686 个 ALPN,不通过 neurotransmitter 推断 DAN 身份。 +所有 166,700 个 neurons、25,582,938 edges、124,177,617 anatomical contacts 不变。 + +| 已有 APL 实现范围 | 边数 | 原始 contacts | +|---|---:|---:| +| APL 全部出边 | 5,845 | 209,912 | +| KC-only graded output 覆盖 | 4,633 | 196,200 | +| 非 KC 出边,没有 graded 替代 | 1,212 | 13,712 | +| 上述缺口中的 APL→PN | 268 | 4,600 | +| APL 全部入边 | 6,185 | 234,025 | +| 不被 KC/PN-only graded state 使用的入边 | 1,202 | 18,257 | + +268 条 APL→PN 边涉及 259 个 PN;247 对同时存在 PN→APL 反向连接。 +“graded state 未使用”不等于原图入边被删除:普通 LIF APL 仍有这些入边,但其快速出边被既有 overlay 置零。基于 KC/PN 计算的独立 graded state 没有使用其余来源。 +这属于既有模型作用范围,不能把每个未覆盖来源都自动补入;需要额外生理依据。 + +## 官方附加数据与精确核对 + +用户授权下载的 `syn-partners-male-cns-v1.0-minconf-0.5.feather`: + +- 6,777,179,098 bytes;官方 generation `1780494942562468`。 +- 官方 MD5:`58efcf712f8c4d4de5f2ad51e97def76`,验证通过。 +- SHA-256:`959d8ef4173b35382a3e6acfaf5167c795b6d10b877572d146af04e1b487bc07`。 +- 流式读取全部 311,833,243 条配对记录;实际字段和 dtype 已保存。 +- 来源:[MaleCNS 官方下载页](https://male-cns.janelia.org/download/),许可证 CC BY 4.0。新增文件保存在本阶段 external-resources,不写 raw,不下载 EM。 + +| 提取范围 | 配对记录总数 | canonical 配对记录 | canonical neuron pairs | +|---|---:|---:|---:| +| APL 所有入/出接触 | 500,348 | 443,915 | 12,027 | +| APL 所连 PN→KC | 385,229 | 385,229 | 21,978 | +| 七个重点 PN→ALLN | 22,599 | 22,599 | 823 | +| ALLN→七个重点 PN | 19,024 | 19,024 | 886 | + +每组同时检查重复配对、完整 pair 集合及逐边 count:均与原始 CSR 完全一致。不存在只比较出现过的边而漏掉整条缺失边的情况。 +APL 配对中的非 canonical 部分保留来源记录,不加入 neuron-only graph。 + +## 真实 ROI 定位 + +4,600 个 APL→PN 接触都取得真实 pre/post 坐标: + +- `CA(L)` 2,063;`CA(R)` 1,757;合计 3,820(83.04%)。 +- `CentralBrain-unspecified` 731(15.89%):坐标已知,但官方 ROI 未细分,绝不按邻近位置重标为 calyx。 +- 其余实际标注合计 49,分布于 LH、PED、SCL、SLP、a'L;不丢弃非 calyx 结果。 + +CA 对应 calyx,官方作者 [Cell Type Explorer](https://reiserlab.github.io/celltype-explorer-drosophila-male-cns/types/KCg-d_R.html) 提供标签释义。 +七个重点 PN: + +| neuron_idx / body_id | type | APL→PN contacts | CA(R) | ROI 未细分 | +|---|---|---:|---:|---:| +| 30 / 10039 | VL2a_adPN | 50 | 47 | 3 | +| 179 / 10198 | VA7l_adPN | 7 | 7 | 0 | +| 484 / 10522 | VL2p_adPN | 50 | 49 | 1 | +| 1644 / 11761 | VP1d+VP4_l2PN1 | 78 | 70 | 8 | +| 6065 / 16610 | VA7m_lPN | 14 | 13 | 1 | +| 6842 / 17484 | DC2_adPN | 13 | 13 | 0 | +| 133666 / 527577 | VA6_adPN | 35 | 29 | 6 | + +合计 228/247(92.31%)在 CA(R),19 个未细分。 +对同一 PN,APL postsynaptic sites 到最近 PN→KC presynaptic site 的距离,中位数范围为 0.545–0.861 µm;坐标按官方 8 nm voxel 转换。 +距离不是同 bouton 的证明,更不是受体或功能因果证明。保留全部分布和远距离样本,不设“最佳阈值”筛掉例外。 +259 个 APL 靶 PN 中,15 个在本 canonical 图中没有 PN→KC 出边,不能一概当作同一功能入口。 + +七个 PN→ALLN 的 22,599 个接触全部位于 AL(L/R);ALLN→七个 PN 的 19,024 个接触中,19,021 位于 AL(L/R),另有 1 个 LAL(R)、2 个未细分。 +同一 PN 的 calyx 相关接触与触角叶局部回路接触必须区分,不能用单一 whole-neuron 抑制项自动代表两种位置。 + +## 如何解释,不做什么 + +已有原始研究支持 APL 的局部抑制与 PN bouton/KC dendrite 相互作用,但不提供当前 MaleCNS 每条边的受体或强度。 +见 [Prisco et al., eLife](https://doi.org/10.7554/eLife.74172)、[Amin et al., eLife](https://doi.org/10.7554/eLife.56954)。 +本轮数据加强了“空间作用范围缺失”这一机制假设,**没有证明补上它就能修复 KC 持续放电或刺激特异性记忆**。 +仍未知:具体 bouton 身份、GABA 受体、末梢释放变化、时间常数、量化作用系数及 whole-brain 干预效果。 + +下一步应先设计独立的 compartment/terminal-specific input hypothesis 和预声明对照,不直接改变 frozen baseline;对未知系数不能用“学习效果更好”反向调参。 +优先处理 upstream encoding / 作用范围,而不是继续改 dopamine eta、扩大 plastic mask 或调 KC/MBON 阈值。 + +## 回归、完整性与资源 + +独立新目录重跑 deterministic-v2 的五组冻结试次(各一次): + +| trial | biological time | wall time | 事件 / counts / V / g | +|---|---:|---:|---| +| auditory 10 Hz | 1 s | 2.690 s | 全部精确一致 | +| auditory 100 Hz | 1 s | 4.915 s | 全部精确一致 | +| olfactory 50 Hz | 1 s | 4.961 s | 全部精确一致 | +| mechanosensory 50 Hz | 1 s | 4.982 s | 全部精确一致 | +| gustatory 50 Hz | 1 s | 4.977 s | 全部精确一致 | + +均无 NaN/Inf,V/g 最大误差 0;4090 本进程 peak allocated VRAM 为 285,994,496 bytes(约 272.75 MiB),不包括 ComfyUI 已驻留显存。 +本轮不声称重做了 Phase 4P 的 20 次重复实验;旧 v1/v2 reference 均没有覆盖。 +GPU 编译加回归约 85.55 s;CPU 结构审计含两次旧文件哈希扫描约 86.92 s;下载加校验约 375.66 s;空间提取/分析约 37.98 s。 +230,239 个旧科学文件的 SHA-256 复核通过。初始 Git payload 的 681 项校验也通过;新阶段另做 manifest。 +未停止或卸载 ComfyUI,未更新任何环境包。 + +## 异常与处理记录 + +1. 初次建立实验目录遇到写权限限制,在新实验目录单独配置 owner;没有递归修改旧目录。 +2. GPU 首次启动 PATH 未包含原 venv 的 Ninja,未开始模拟;失败目录保留。仅补启动 PATH 后,在另一个新目录完成 5/5 回归。 +3. 下载首次校验选项分隔符错误,下载未开始;修正为 aria2 要求的语法后完成官方校验,没有坏文件被当作通过。 +4. 旧 NumPy→Torch 只读数组警告保留,未修改冻结加载器;文件哈希与数值回归通过。 + +本轮到此结束,不生成 learning candidate,不进入游戏、RL、视觉或动作 decoder。 diff --git a/registry/phase4aa-apl-pn-scope/evidence/audit/final-summary.json b/registry/phase4aa-apl-pn-scope/evidence/audit/final-summary.json new file mode 100644 index 0000000..fe0b8fe --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/audit/final-summary.json @@ -0,0 +1,66 @@ +{ + "APL_PN_contacts": 4600, + "APL_PN_edges": 268, + "APL_target_PNs": 259, + "ComfyUI_stopped_or_unloaded": false, + "ROI_unspecified_contacts": 731, + "bouton_identity_confirmed": false, + "brain_dynamics_changed": false, + "calyx_contacts": 3820, + "calyx_fraction": 0.8304347826086956, + "candidate": false, + "canonical_edges": 25582938, + "canonical_neurons": 166700, + "complete_pair_checks": { + "groups": [ + { + "complete_pair_set_and_weight_exact": true, + "expected_CSR_pairs": 12027, + "group": "APL-incident", + "observed_pairs": 12027 + }, + { + "complete_pair_set_and_weight_exact": true, + "expected_CSR_pairs": 21978, + "group": "APL-target-PN-to-KC", + "observed_pairs": 21978 + }, + { + "complete_pair_set_and_weight_exact": true, + "expected_CSR_pairs": 823, + "group": "watched-PN-to-ALLN", + "observed_pairs": 823 + }, + { + "complete_pair_set_and_weight_exact": true, + "expected_CSR_pairs": 886, + "group": "ALLN-to-watched-PN", + "observed_pairs": 886 + } + ], + "pass": true + }, + "external_MD5_pass": true, + "external_SHA256": "959d8ef4173b35382a3e6acfaf5167c795b6d10b877572d146af04e1b487bc07", + "failures_preserved": [ + "initial experiment-directory permission before any output", + "first GPU build lookup of Ninja failed before simulation", + "first aria2 checksum argument invalid before download" + ], + "finalized_utc": "2026-09-29T15:56:36Z", + "frozen_trials_count": 5, + "frozen_trials_pass": true, + "old_file_integrity_pass": true, + "old_scientific_files_verified": 230239, + "old_static_audit_retained_without_overwrite": true, + "other_ROI_contacts": 49, + "phase": "4AA", + "previous_static_spatial_block_resolved_by_user_authorized_reference_data": true, + "receptor_or_terminal_gain_calibrated": false, + "status": "PASS-APL-PN-ANATOMICAL-LOCALIZATION / NO-DYNAMICS-CANDIDATE", + "top_level_gate_fraction": "5/10", + "training": false, + "watched_PN_contacts": 247, + "watched_calyx_contacts": 228, + "watched_unspecified_contacts": 19 +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/audit/frozen-implementation-provenance.json b/registry/phase4aa-apl-pn-scope/evidence/audit/frozen-implementation-provenance.json new file mode 100644 index 0000000..f2c77da --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/audit/frozen-implementation-provenance.json @@ -0,0 +1,6 @@ +{ + "models_imported": false, + "path": "/data/digital-drosophila/models/male-cns-lif/deterministic-runtime-v2/phase4p_revalidate.py", + "same_as_Phase4Z": true, + "sha256": "c7e693a2da70acdce4f53af5c2853e52e8333acc93f88a46a5e8083eac639346" +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/audit/frozen-matrix-reconstruction.json b/registry/phase4aa-apl-pn-scope/evidence/audit/frozen-matrix-reconstruction.json new file mode 100644 index 0000000..6616fa6 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/audit/frozen-matrix-reconstruction.json @@ -0,0 +1,15 @@ +{ + "KC_targets_with_graded_input": 4063, + "input_matrix_shape": [ + 2, + 166700 + ], + "input_scale": 49.65891647338867, + "normalized_input_matrix_sha256": "528a5f6f5ffe424f323c5a44695db4a7cf32570709832eff2f37f49e85c92c3e", + "normalized_output_matrix_sha256": "0dcf02cdb7836ab72da32ac47f5682ca33e25f63a8a662a8452d4ea9d46babb9", + "output_matrix_shape": [ + 2, + 4064 + ], + "output_scale": 42.34836959838867 +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/audit/results.json b/registry/phase4aa-apl-pn-scope/evidence/audit/results.json new file mode 100644 index 0000000..2918335 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/audit/results.json @@ -0,0 +1,41 @@ +{ + "ALPN_neurons": 686, + "APL_PN_pairs_with_confirmed_local_synapse_ROI": 0, + "APL_PN_pairs_with_confirmed_subcellular_target": 0, + "APL_PN_pairs_with_reverse_edge": 247, + "APL_incoming_contacts": 234025, + "APL_incoming_edges": 6185, + "APL_neurons": 2, + "APL_outgoing_contacts": 209912, + "APL_outgoing_edges": 5845, + "APL_target_PNs": 259, + "APL_to_PN_contacts": 4600, + "APL_to_PN_edges": 268, + "ComfyUI_models_unloaded": false, + "KC_neurons": 4064, + "Phase4Z_static_coverage_exact": true, + "candidate": false, + "frozen_integrity_pass": true, + "gpu_used": false, + "graph_edges": 25582938, + "incoming_contacts_not_used_by_graded_state": 18257, + "incoming_edges_not_used_by_graded_state": 1202, + "neurons": 166700, + "new_scientific_regression_run": false, + "new_simulation": false, + "non_KC_uncovered_contacts": 13712, + "non_KC_uncovered_edges": 1212, + "non_KC_uncovered_targets": 999, + "old_reference_files_rehashed": true, + "phase": "4AA", + "raw_APL_incident_canonical_edges_checked": 12027, + "raw_APL_incident_noncanonical_rows": 50386, + "raw_to_CSR_exact": true, + "status": "PASS-STATIC-SCOPE-AUDIT / BLOCKED-SPATIAL-PHYSIOLOGY", + "synapse_count_sum": 124177617, + "top_level_gates_passed": 5, + "top_level_gates_total": 10, + "watched_PN_contacts": 247, + "weights_changed": false, + "whole_cell_inhibition_repair_authorized_by_evidence": false +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/checksums.sha256 b/registry/phase4aa-apl-pn-scope/evidence/checksums.sha256 new file mode 100644 index 0000000..d8f6cfa --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/checksums.sha256 @@ -0,0 +1,68 @@ +fa0bfd5a163a436e061c94e37cf6fe84ca75fdfa94d6f20ce85eda5058ca9ce7 REPORT.md +69a381512dcb4a80a974a36ce85d78b06842f67b1ba347f0bdddb325ea3b9b1d audit/final-summary.json +46a4e4bc1475f121b142e90ddc9d9996856cf91c35a12314c1d9ec36d226cf8e audit/frozen-APL-class-source.txt +c960b11f471de5ab1edff2ed8adf6a5b38a3d9ba523fed2ff1304f9b00827001 audit/frozen-implementation-provenance.json +b7cae9e2557d872c305c1168ebe2748031c0452d2679f1ade11f9ff95e52cbe9 audit/frozen-matrix-reconstruction.json +206c35bee8bfae6daf87b154854f77e649bebe2655b26b6d22dff04fbd64e160 audit/results.json +da4ddcaf4527a1c4bac5055f9865fe10dc36e79daa15685e3be4545f5284b164 connectivity/APL-PN-reciprocity.csv +08b9b6c4ce67f87c88fe645c44589ecde4e2669827f5b83692a255c45f4b9512 connectivity/APL-PN-reciprocity.parquet +140f2d53910d92c7485e176901fea8309deb752f763413c086a622e02d0895f6 connectivity/APL-incoming.parquet +219ed78d1eae79c41958185740e6745c62015450a6d1f143ec93c068bcc90340 connectivity/APL-input-population-summary.csv +1dc1befba0e3a5310a248631019327cb122048fc866d62acc29edd55d1345291 connectivity/APL-input-population-summary.parquet +77d6cc8d8034df77e656153f3f136b7e91ec6ca31eee8107fdbc40966b0162be connectivity/APL-outgoing.parquet +1977d1fd85d659de0490928213ae11b11e3e67fa01f37692f555538661fcf5e2 connectivity/APL-output-population-summary.csv +4f714086b9b8b470c6db2652b71a00f297050f8b734e4033622c4a33eb7a4fee connectivity/APL-output-population-summary.parquet +477724007b55e65d07440288624790e16e5dc6340cf04dd687a09f02f82739eb connectivity/APL-target-PN-downstream.parquet +77516b0b0b3049f2c1e3571c6f0fa48cbb0e7b65379a5508bfbc92bc6e1fdf0f connectivity/graded-input-not-used.parquet +6a0e2e328bd86401507bba8c58934621b0f204e597be0b2acf27b0e41bbbc4b7 connectivity/raw-APL-incident-including-noncanonical.parquet +cae347c669207eca2304de672cf5309a7b9f24e8b2f5722e6fd779a51a94ea30 connectivity/watched-PN-reciprocity.csv +f171fe0e12ae50da6947f7b636a9f554f7c661942e4c076f54a3dc314f61b0cc external-resources/evidence-and-limitations.json +11bd6336e51bb3e85a61dfa3deef294767e43362b0731b40cb25384a0cf1ced9 external-resources/official-data-access.json +6e2213f296aef1a6ff7d0acb245f69785346daba1bd38eba9a600224c60b791f external-resources/synaptic-partners/authorization-and-source.json +4fd796f88f05a08d5f7f3c3ff2c63c939f330e9acc4519a5272c8b3b97fcf4ac external-resources/synaptic-partners/download-verification.json +959d8ef4173b35382a3e6acfaf5167c795b6d10b877572d146af04e1b487bc07 external-resources/synaptic-partners/syn-partners-male-cns-v1.0-minconf-0.5.feather +36c941740074f2bd7b9e382b01d7743791f03f9376763a2704ca3d8d7f1888cf external-resources/synaptic-partners/upstream-object.json +e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 gpu-frozen-regression/gpu-reference/extension-build/lock +5598a6867d6f7f22a5e6472f00c763a9e94850bda18f10df992bba71ef99e982 gpu-frozen-regression/protocol-addendum.json +4513ec607f278684b4825c5893db18e4e20d660afa44dccd6e0305bc5efa2286 localization/ALLN-to-watched-PN-count-check.json +b3ef49f06d5fed9d807aab2cb6adb52091a2fad298f9c9889167b1890d45f837 localization/ALLN-to-watched-PN.parquet +aa56cb7c98c9186c69c5ef06f5b80ecc7e13fba7f1d0316c298687e2c9c191af localization/APL-incident-count-check.json +442b0fa2640cd1bfaf97e558ae912a8601dc3289b420021526353bc3bcfba849 localization/APL-incident.parquet +2fe50c10f0d497ec522782bfbd7b7a5ecada77e62960737b608d78485638a695 localization/APL-target-PN-to-KC-count-check.json +310827739c293b633d6c392d2b59ced6820a0b39606fdb29ff263ce3f5b4847e localization/APL-target-PN-to-KC.parquet +40e14fb1c63a890c6dc3ff126f7429fa9c577a29dad6e2b3dd6c4fe9b06a2ce6 localization/actual-schema.json +30bc6ca4a8b92188f52ca2d9d1da9179dfe7de11e9ae83ec6592c4d84a757b8b localization/complete-pair-set-validation.json +16246a4061d7d7115d15d1a9f683ead9311ceedcccda94c3a7b94b1eb73ef405 localization/pair-ROI-counts.parquet +c3f8fe2bc18fb2cea7906c8b6ea98fcbe542c19c9f0d835c2b1b5bc3266edb83 localization/population-ROI-summary.csv +c9e3b4a5d7858e1237dd4d88a9e6c712059b690d58dec0355a4e61aefb71cdd7 localization/population-ROI-summary.parquet +56d78bcee99d4bd84f0942dac330a12686a02641acbf993ed72b83db93fca941 localization/protocol.json +271d2a5a857842335e905d7e7665e6484c9492df23e350a1b3f3c7b27df4424f localization/spatial-neighborhoods.csv +b53b5a714d9ba400db1ce5e7ed35e386522ba6c7a47266d2e7fec314aa1e4d1d localization/summary.json +e5640846514bac50d667c814197227feaa770e254e333004364c749b406a2153 localization/watched-PN-ROI.json +b43a48b9ae400172ca8cd5e6d1e327073f29e4b0d18db8402b222ada62113b6d localization/watched-PN-to-ALLN-count-check.json +1ae1d00e18c88e84a8e1bdc75b3dd0beb596b93de4b18e23dbc5243ce6008ded localization/watched-PN-to-ALLN.parquet +bfbb2ca509a5f140bb7a42bf07735a1ca4693006d3104796ea3a7970539fc631 metadata/APL-and-target-PNs.parquet +eec1917188ab67a73d1c487642fa2eb5d2468ff51d344cf6f37bb93810dcb2c6 performance/resources.json +ff9892351ed16d9ef45817c5c104dca9a23547fe97ce2a4adf45b2270595673f protocol/preregistered.json +1431b9be6dc067f48699f3c3708486718a79380c04a8b342ad247def222cd24c regression/final-old-files-integrity.json +1431b9be6dc067f48699f3c3708486718a79380c04a8b342ad247def222cd24c regression/postflight.json +1431b9be6dc067f48699f3c3708486718a79380c04a8b342ad247def222cd24c regression/preflight.json +41309fea8a1e292e007c6e1cf7646836a83b47e9aef3e0bcb4a0c0caba621493 retry-with-correct-PATH/gpu-frozen-regression/auditory-100hz.json +2b76a9c17aa3771c8602da15a823e35c06022d5f92d55a2ef1a23174679b31d9 retry-with-correct-PATH/gpu-frozen-regression/auditory-10hz.json +c08864962bfb25ce2103f4c5e792f000cd045e7cc42152f38a68c238e4f86c44 retry-with-correct-PATH/gpu-frozen-regression/gpu-reference/extension-build/.ninja_deps +2e76199498ca4b3dff488d7cc6a5577bf26fd0f88c19fbb301d2e4bc30ecb892 retry-with-correct-PATH/gpu-frozen-regression/gpu-reference/extension-build/.ninja_log +c570f72b9a2f486e104ed3bf5b1b9f2ccc729ecab02046cd62389d629fb4f48f retry-with-correct-PATH/gpu-frozen-regression/gpu-reference/extension-build/build.ninja +e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 retry-with-correct-PATH/gpu-frozen-regression/gpu-reference/extension-build/lock +587b2bd64186e62b628800536613ac1245937405236e51143dedc159cdd9d235 retry-with-correct-PATH/gpu-frozen-regression/gpu-reference/extension-build/male_cns_lif_deterministic_v2_ext.so +bc256cf493b979dc8c00ed54c133c371f7704ffaf491f118a0f5cfe860cc903b retry-with-correct-PATH/gpu-frozen-regression/gpu-reference/extension-build/phase4p_ext.cuda.o +27d284f6a369221a931251b5a03ce133cc8231a97942567d4efafbfb45483811 retry-with-correct-PATH/gpu-frozen-regression/gpu-reference/extension-build/phase4p_ext.o +58797c63494551cab358315feff51a83ad6ea8a854f5e919b1fd5fbae36c7fa0 retry-with-correct-PATH/gpu-frozen-regression/gpu-reference/extension.json +6777d390ce499d85a91833d46e645cf2a2604c3e96c809c815d397addfa510b6 retry-with-correct-PATH/gpu-frozen-regression/gustatory-50hz.json +bd87a77937afd185497f9a538047aa3e5b4960211687524cbac1886cba1ddb26 retry-with-correct-PATH/gpu-frozen-regression/mechanosensory-50hz.json +5b9284784f76d27517b6dc6c7df56de76bdd8e2b09d1f08a781a42e10ac1ddf6 retry-with-correct-PATH/gpu-frozen-regression/olfactory-50hz.json +1431b9be6dc067f48699f3c3708486718a79380c04a8b342ad247def222cd24c retry-with-correct-PATH/gpu-frozen-regression/post-regression-integrity.json +5598a6867d6f7f22a5e6472f00c763a9e94850bda18f10df992bba71ef99e982 retry-with-correct-PATH/gpu-frozen-regression/protocol-addendum.json +fb92144b782fb907d3f9090b44b9713b7b32559335a6558ecf72798f4926bc81 retry-with-correct-PATH/gpu-frozen-regression/summary.json +70fd8e78eedc9ddacbaa8627caa3d662efad90727b63cb352d2ebb412f89f3c8 spatial/APL-PN-unknowns.parquet +784f2105af57bf8d45b9220402360dc3dfa53148f4fa1f89052af5dd4ddb6522 spatial/local-schemas.json +22f6f472a221b3f933ded4430e9bde5d554db29507dc18b8f8064c87d3344dae spatial/watched-SWC-audit.json diff --git a/registry/phase4aa-apl-pn-scope/evidence/connectivity/APL-PN-reciprocity.csv b/registry/phase4aa-apl-pn-scope/evidence/connectivity/APL-PN-reciprocity.csv new file mode 100644 index 0000000..918e997 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/connectivity/APL-PN-reciprocity.csv @@ -0,0 +1,269 @@ +edge_id,source_neuron_idx,target_neuron_idx,raw_synapse_count,source_population,source_body_id,source_annotation_class,source_annotation_type,source_annotation_instance,source_annotation_somaSide,source_neurotransmitter,source_nt_ground_truth,source_annotation_receptorType,target_population,target_body_id,target_annotation_class,target_annotation_type,target_annotation_instance,target_annotation_somaSide,target_neurotransmitter,target_nt_ground_truth,target_annotation_receptorType,fast_current_masked,graded_output_covered,reverse_contacts,reverse_edge_id,has_PN_to_APL,watched_in_Phase4Z +762232,502,30,50,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,10039,ALPN,VL2a_adPN,VL2a_adPN_R,R,acetylcholine,acetylcholine,,True,False,70.0,46118.0,True,True +762234,502,71,73,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,10084,ALPN,DP1m_adPN,DP1m_adPN_R,R,acetylcholine,acetylcholine,,True,False,36.0,150788.0,True,False +762237,502,159,131,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,10176,ALPN,DM1_lPN,DM1_lPN_R,R,acetylcholine,acetylcholine,,True,False,44.0,315078.0,True,False +762239,502,179,7,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,10198,ALPN,VA7l_adPN,VA7l_adPN_R,R,acetylcholine,acetylcholine,,True,False,52.0,347211.0,True,True +762241,502,241,6,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,10262,ALPN,V_ilPN,V_ilPN_L,L,acetylcholine,acetylcholine,,True,False,14.0,438131.0,True,False +762248,502,360,54,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,10390,ALPN,VA2_adPN,VA2_adPN_R,R,acetylcholine,acetylcholine,,True,False,46.0,604101.0,True,False +762250,502,390,79,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,10423,ALPN,DP1l_adPN,DP1l_adPN_R,R,acetylcholine,acetylcholine,,True,False,40.0,631717.0,True,False +762252,502,484,50,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,10522,ALPN,VL2p_adPN,VL2p_adPN_R,R,acetylcholine,acetylcholine,,True,False,86.0,748443.0,True,True +762253,502,492,2,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,10530,ALPN,VL1_ilPN,VL1_ilPN_L,L,acetylcholine,acetylcholine,,True,False,7.0,753875.0,True,False +762256,502,530,32,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,10569,ALPN,DC1_adPN,DC1_adPN_R,R,acetylcholine,acetylcholine,,True,False,73.0,789558.0,True,False +762257,502,571,44,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,10613,ALPN,DM4_adPN,DM4_adPN_R,R,acetylcholine,acetylcholine,,True,False,33.0,827996.0,True,False +762261,502,700,18,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,10756,ALPN,VC2_lPN,VC2_lPN_R,R,acetylcholine,acetylcholine,,True,False,23.0,939821.0,True,False +762262,502,728,11,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,10786,ALPN,VC5_lvPN,VC5_lvPN_R,R,acetylcholine,acetylcholine,,True,False,67.0,956945.0,True,False +762264,502,835,29,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,10904,ALPN,VC1_lPN,VC1_lPN_R,R,acetylcholine,acetylcholine,,True,False,45.0,1060367.0,True,False +762265,502,837,24,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,10906,ALPN,VM3_adPN,VM3_adPN_R,R,acetylcholine,acetylcholine,,True,False,26.0,1061532.0,True,False +762267,502,900,11,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,10973,ALPN,VP1m+VP5_ilPN,VP1m+VP5_ilPN_L,L,acetylcholine,acetylcholine,,True,False,2.0,1115270.0,True,False +762269,502,921,21,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,10996,ALPN,VA4_lPN,VA4_lPN_R,R,acetylcholine,acetylcholine,,True,False,20.0,1131006.0,True,False +762275,502,1138,6,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,11229,ALPN,V_ilPN,V_ilPN_R,R,acetylcholine,acetylcholine,,True,False,19.0,1301252.0,True,False +762278,502,1262,11,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,11355,ALPN,VA1d_adPN,VA1d_adPN_R,R,acetylcholine,acetylcholine,,True,False,17.0,1385980.0,True,False +762279,502,1294,4,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,11390,ALPN,VL1_ilPN,VL1_ilPN_R,R,acetylcholine,acetylcholine,,True,False,7.0,1408888.0,True,False +762281,502,1372,9,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,11469,ALPN,DM3_adPN,DM3_adPN_R,R,acetylcholine,acetylcholine,,True,False,43.0,1459577.0,True,False +762282,502,1413,11,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,11514,ALPN,DL4_adPN,DL4_adPN_R,R,acetylcholine,acetylcholine,,True,False,54.0,1489039.0,True,False +762283,502,1420,40,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,11521,ALPN,VP1m_l2PN,VP1m_l2PN_R,R,acetylcholine,,,True,False,46.0,1492690.0,True,False +762289,502,1514,12,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,11624,ALPN,DC2_adPN,DC2_adPN_R,R,acetylcholine,acetylcholine,,True,False,25.0,1560733.0,True,False +762296,502,1644,78,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,11761,ALPN,VP1d+VP4_l2PN1,VP1d+VP4_l2PN1_R,R,acetylcholine,,,True,False,21.0,1645422.0,True,True +762298,502,1661,7,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,11780,ALPN,DA1_lPN,DA1_lPN_R,R,acetylcholine,acetylcholine,,True,False,20.0,1654484.0,True,False +762301,502,1694,5,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,11816,ALPN,DA1_lPN,DA1_lPN_R,R,acetylcholine,acetylcholine,,True,False,10.0,1674757.0,True,False +762305,502,1866,8,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,11996,ALPN,DA1_lPN,DA1_lPN_R,R,acetylcholine,acetylcholine,,True,False,48.0,1772954.0,True,False +762308,502,1982,9,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,12121,ALPN,VC5_lvPN,VC5_lvPN_R,R,acetylcholine,acetylcholine,,True,False,19.0,1836818.0,True,False +762309,502,1983,20,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,12122,ALPN,DA1_lPN,DA1_lPN_R,R,acetylcholine,acetylcholine,,True,False,32.0,1837355.0,True,False +762310,502,2018,3,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,12160,ALPN,DC4_adPN,DC4_adPN_R,R,acetylcholine,acetylcholine,,True,False,4.0,1861378.0,True,False +762311,502,2021,15,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,12163,ALPN,VA5_lPN,VA5_lPN_R,R,acetylcholine,acetylcholine,,True,False,20.0,1864414.0,True,False +762312,502,2022,17,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,12164,ALPN,VM3_adPN,VM3_adPN_R,R,acetylcholine,acetylcholine,,True,False,38.0,1864924.0,True,False +762313,502,2029,30,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,12171,ALPN,DM2_lPN,DM2_lPN_R,R,acetylcholine,acetylcholine,,True,False,26.0,1867527.0,True,False +762314,502,2157,24,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,12309,ALPN,DC3_adPN,DC3_adPN_R,R,acetylcholine,acetylcholine,,True,False,36.0,1939728.0,True,False +762315,502,2186,6,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,12340,ALPN,DA1_lPN,DA1_lPN_R,R,acetylcholine,acetylcholine,,True,False,37.0,1952315.0,True,False +762316,502,2231,13,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,12387,ALPN,D_adPN,D_adPN_R,R,acetylcholine,acetylcholine,,True,False,8.0,1972169.0,True,False +762321,502,2493,2,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,12667,ALPN,VA1v_adPN,VA1v_adPN_R,R,acetylcholine,acetylcholine,,True,False,1.0,2111273.0,True,False +762324,502,2552,23,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,12728,ALPN,DC3_adPN,DC3_adPN_R,R,acetylcholine,acetylcholine,,True,False,23.0,2148041.0,True,False +762327,502,2601,34,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,12782,ALPN,DL1_adPN,DL1_adPN_R,R,acetylcholine,acetylcholine,,True,False,58.0,2170055.0,True,False +762331,502,2867,6,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,13064,ALPN,DA1_lPN,DA1_lPN_R,R,acetylcholine,acetylcholine,,True,False,18.0,2290216.0,True,False +762334,502,2994,5,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,13198,ALPN,VA1v_adPN,VA1v_adPN_R,R,acetylcholine,acetylcholine,,True,False,,,False,False +762335,502,3016,7,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,13225,ALPN,VM7d_adPN,VM7d_adPN_R,R,acetylcholine,acetylcholine,,True,False,2.0,2357578.0,True,False +762336,502,3073,22,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,13283,ALPN,VM1_lPN,VM1_lPN_R,R,acetylcholine,acetylcholine,,True,False,53.0,2382965.0,True,False +762338,502,3120,7,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,13334,ALPN,VP1m+VP5_ilPN,VP1m+VP5_ilPN_R,R,acetylcholine,acetylcholine,,True,False,1.0,2405914.0,True,False +762339,502,3161,8,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,13379,ALPN,VA1v_adPN,VA1v_adPN_R,R,acetylcholine,acetylcholine,,True,False,3.0,2425091.0,True,False +762340,502,3168,14,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,13386,ALPN,VM7v_adPN,VM7v_adPN_R,R,acetylcholine,acetylcholine,,True,False,24.0,2428472.0,True,False +762341,502,3171,2,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,13389,ALPN,M_vPNml50,M_vPNml50_R,R,gaba,gaba,,True,False,27.0,2430462.0,True,False +762342,502,3253,15,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,13480,ALPN,VC3_adPN,VC3_adPN_R,R,acetylcholine,acetylcholine,,True,False,8.0,2465839.0,True,False +762346,502,3369,1,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,13610,ALPN,M_l2PNm16,M_l2PNm16_R,R,acetylcholine,,,True,False,,,False,False +762348,502,3474,9,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,13725,ALPN,VA1d_adPN,VA1d_adPN_R,R,acetylcholine,acetylcholine,,True,False,10.0,2573017.0,True,False +762361,502,4072,1,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,14391,ALPN,M_ilPNm90,M_ilPNm90(M_ilPN8t91)_L,L,acetylcholine,acetylcholine,,True,False,6.0,2833650.0,True,False +762362,502,4113,13,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,14437,ALPN,VP3+VP1l_ivPN,VP3+VP1l_ivPN_R,R,acetylcholine,,,True,False,2.0,2846214.0,True,False +762363,502,4173,9,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,14510,ALPN,VA1v_adPN,VA1v_adPN_R,R,acetylcholine,acetylcholine,,True,False,1.0,2871710.0,True,False +762364,502,4192,5,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,14530,ALPN,DA4l_adPN,DA4l_adPN_R,R,acetylcholine,acetylcholine,,True,False,33.0,2879645.0,True,False +762366,502,4441,8,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,14802,ALPN,VA7m_lPN,VA7m_lPN_R,R,acetylcholine,acetylcholine,,True,False,3.0,2969669.0,True,False +762367,502,4482,4,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,14849,ALPN,DM5_lPN,DM5_lPN_R,R,acetylcholine,acetylcholine,,True,False,10.0,2981676.0,True,False +762369,502,4584,3,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,14962,ALPN,VC5_lvPN,VC5_lvPN_R,R,acetylcholine,acetylcholine,,True,False,16.0,3022866.0,True,False +762370,502,4605,10,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,14985,ALPN,VA5_lPN,VA5_lPN_R,R,acetylcholine,acetylcholine,,True,False,17.0,3031454.0,True,False +762371,502,4624,14,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,15005,ALPN,DM6_adPN,DM6_adPN_R,R,acetylcholine,acetylcholine,,True,False,27.0,3038213.0,True,False +762378,502,4768,21,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,15164,ALPN,DC3_adPN,DC3_adPN_R,R,acetylcholine,acetylcholine,,True,False,33.0,3097663.0,True,False +762379,502,4905,10,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,15313,ALPN,VA1d_adPN,VA1d_adPN_R,R,acetylcholine,acetylcholine,,True,False,11.0,3149154.0,True,False +762382,502,5004,7,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,15431,ALPN,VM5d_adPN,VM5d_adPN_R,R,acetylcholine,acetylcholine,,True,False,10.0,3184454.0,True,False +762388,502,5519,12,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,16005,ALPN,D_adPN,D_adPN_R,R,acetylcholine,acetylcholine,,True,False,5.0,3360042.0,True,False +762390,502,5584,8,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,16083,ALPN,VM2_adPN,VM2_adPN_R,R,acetylcholine,acetylcholine,,True,False,31.0,3385292.0,True,False +762391,502,5634,17,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,16141,ALPN,VM4_adPN,VM4_adPN_R,R,acetylcholine,acetylcholine,,True,False,34.0,3403164.0,True,False +762392,502,5890,11,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,16426,ALPN,VM5v_adPN,VM5v_adPN_R,R,acetylcholine,acetylcholine,,True,False,4.0,3492698.0,True,False +762395,502,6065,14,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,16610,ALPN,VA7m_lPN,VA7m_lPN_R,R,acetylcholine,acetylcholine,,True,False,6.0,3559819.0,True,True +762397,502,6099,5,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,16648,ALPN,VP1d_il2PN,VP1d_il2PN_L,L,acetylcholine,,,True,False,3.0,3570929.0,True,False +762399,502,6842,13,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,17484,ALPN,DC2_adPN,DC2_adPN_R,R,acetylcholine,acetylcholine,,True,False,45.0,3810910.0,True,True +762401,502,6994,27,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,17650,ALPN,VC3_adPN,VC3_adPN_R,R,acetylcholine,acetylcholine,,True,False,12.0,3864914.0,True,False +762406,502,7354,3,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,18049,ALPN,VP1d_il2PN,VP1d_il2PN_R,R,acetylcholine,,,True,False,5.0,3976343.0,True,False +762407,502,7385,9,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,18084,ALPN,VM7d_adPN,VM7d_adPN_R,R,acetylcholine,acetylcholine,,True,False,8.0,3985239.0,True,False +762408,502,7680,13,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,18417,ALPN,DM6_adPN,DM6_adPN_R,R,acetylcholine,acetylcholine,,True,False,20.0,4079640.0,True,False +762409,502,7746,7,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,18493,ALPN,DM5_lPN,DM5_lPN_R,R,acetylcholine,acetylcholine,,True,False,25.0,4099088.0,True,False +762410,502,7781,4,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,18536,ALPN,D_adPN,D_adPN_R,R,acetylcholine,acetylcholine,,True,False,3.0,4108591.0,True,False +762418,502,8955,10,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,19845,ALPN,VP3+VP1l_ivPN,VP3+VP1l_ivPN_L,L,acetylcholine,,,True,False,4.0,4451808.0,True,False +762420,502,9052,13,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,19953,ALPN,DM6_adPN,DM6_adPN_R,R,acetylcholine,acetylcholine,,True,False,21.0,4479205.0,True,False +762421,502,9096,12,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,20001,ALPN,VM5v_adPN,VM5v_adPN_R,R,acetylcholine,acetylcholine,,True,False,19.0,4492802.0,True,False +762423,502,9370,1,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,20311,ALPN,DA2_lPN,DA2_lPN_R,R,acetylcholine,acetylcholine,,True,False,2.0,4570000.0,True,False +762425,502,9484,10,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,20445,ALPN,VM5v_adPN,VM5v_adPN_R,R,acetylcholine,acetylcholine,,True,False,7.0,4603215.0,True,False +762428,502,9752,29,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,20739,ALPN,DL2v_adPN,DL2v_adPN_R,R,acetylcholine,acetylcholine,,True,False,28.0,4679429.0,True,False +762438,502,10769,1,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,21876,ALPN,DA2_lPN,DA2_lPN_R,R,acetylcholine,acetylcholine,,True,False,6.0,4955209.0,True,False +762443,502,11316,1,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,22473,ALPN,VM4_lvPN,VM4_lvPN_R,R,acetylcholine,acetylcholine,,True,False,,,False,False +762445,502,11598,11,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,22787,ALPN,DL2d_adPN,DL2d_adPN_R,R,acetylcholine,acetylcholine,,True,False,25.0,5168666.0,True,False +762446,502,11770,1,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,22977,ALPN,VL2a_vPN,VL2a_vPN_R,R,gaba,gaba,,True,False,,,False,False +762450,502,11961,8,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,23200,ALPN,DL2d_adPN,DL2d_adPN_R,R,acetylcholine,acetylcholine,,True,False,7.0,5260104.0,True,False +762452,502,12644,2,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,23958,ALPN,DA2_lPN,DA2_lPN_R,R,acetylcholine,acetylcholine,,True,False,,,False,False +762456,502,13262,2,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,24660,ALPN,DL3_lPN,DL3_lPN_R,R,acetylcholine,acetylcholine,,True,False,3.0,5589353.0,True,False +762462,502,13715,7,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,25166,ALPN,VC4_adPN,VC4_adPN_R,R,acetylcholine,acetylcholine,,True,False,4.0,5697043.0,True,False +762464,502,13955,1,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,25433,ALPN,CB2004,CB2004_R,R,gaba,gaba,,True,False,,,False,False +762468,502,14519,1,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,26071,ALPN,M_lPNm11D,M_lPNm11D_R,R,acetylcholine,acetylcholine,,True,False,3.0,5880048.0,True,False +762469,502,14547,23,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,26102,ALPN,DL2v_adPN,DL2v_adPN_R,R,acetylcholine,acetylcholine,,True,False,21.0,5887059.0,True,False +762470,502,14655,5,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,26223,ALPN,M_lPNm11D,M_lPNm11D_R,R,acetylcholine,acetylcholine,,True,False,14.0,5911780.0,True,False +762471,502,14805,10,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,26387,ALPN,VC4_adPN,VC4_adPN_R,R,acetylcholine,acetylcholine,,True,False,4.0,5949622.0,True,False +762475,502,15369,8,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,27024,ALPN,VM5d_adPN,VM5d_adPN_R,R,acetylcholine,acetylcholine,,True,False,4.0,6067738.0,True,False +762478,502,15687,2,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,27379,ALPN,M_lPNm11D,M_lPNm11D_R,R,acetylcholine,acetylcholine,,True,False,4.0,6133873.0,True,False +762483,502,16042,13,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,27775,ALPN,VM5d_adPN,VM5d_adPN_R,R,acetylcholine,acetylcholine,,True,False,6.0,6208174.0,True,False +762487,502,17293,9,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,29176,ALPN,DL2v_adPN,DL2v_adPN_R,R,acetylcholine,acetylcholine,,True,False,4.0,6475484.0,True,False +762491,502,17809,11,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,29750,ALPN,VM4_lvPN,VM4_lvPN_R,R,acetylcholine,acetylcholine,,True,False,57.0,6580854.0,True,False +762498,502,19004,5,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,31117,ALPN,M_lPNm11D,M_lPNm11D_R,R,acetylcholine,acetylcholine,,True,False,3.0,6823261.0,True,False +762512,502,21524,1,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,33987,ALPN,VP1m+_lvPN,VP1m+_lvPN_R,R,glutamate,,,True,False,1.0,7300739.0,True,False +762514,502,21802,2,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,34301,ALPN,DA2_lPN,DA2_lPN_R,R,acetylcholine,acetylcholine,,True,False,23.0,7350146.0,True,False +762515,502,21875,13,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,34385,ALPN,VM5d_adPN,VM5d_adPN_R,R,acetylcholine,acetylcholine,,True,False,24.0,7364609.0,True,False +762551,502,25520,6,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,38510,ALPN,VM5d_adPN,VM5d_adPN_R,R,acetylcholine,acetylcholine,,True,False,5.0,8015926.0,True,False +762620,502,29804,1,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,43363,ALPN,M_lvPNm30,M_lvPNm30_R,R,acetylcholine,acetylcholine,,True,False,,,False,False +762625,502,29917,1,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,43489,ALPN,M_vPNml67,M_vPNml67_R,R,gaba,gaba,,True,False,,,False,False +762653,502,31238,5,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,44995,ALPN,M_lPNm11D,M_lPNm11D_R,R,acetylcholine,acetylcholine,,True,False,4.0,9001958.0,True,False +762833,502,37369,4,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,52099,ALPN,M_lPNm11D,M_lPNm11D_R,R,acetylcholine,acetylcholine,,True,False,6.0,10005648.0,True,False +762839,502,37468,3,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,52223,ALPN,M_adPNm4,M_adPNm4_R,R,acetylcholine,acetylcholine,,True,False,2.0,10020743.0,True,False +764005,502,70280,1,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,92909,ALPN,M_vPNml67,M_vPNml67_R,R,gaba,gaba,,True,False,,,False,False +764076,502,72419,2,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,95720,ALPN,M_adPNm5,M_adPNm5_R,R,acetylcholine,acetylcholine,,True,False,2.0,14809507.0,True,False +764552,502,101754,1,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,140108,ALPN,CB2703,CB2703_R,R,gaba,gaba,,True,False,1.0,17560365.0,True,False +764930,502,125773,7,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,511807,ALPN,VM7d_adPN,VM7d_adPN_R,R,acetylcholine,acetylcholine,,True,False,9.0,19313862.0,True,False +764934,502,126350,7,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,512883,ALPN,DL2d_adPN,DL2d_adPN_R,R,acetylcholine,acetylcholine,,True,False,15.0,19455428.0,True,False +764939,502,126688,30,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,513513,ALPN,VC3_adPN,VC3_adPN_R,R,acetylcholine,acetylcholine,,True,False,12.0,19530810.0,True,False +764947,502,128185,1,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,516097,ALPN,M_ilPNm90,M_ilPNm90(M_ilPN8t91)_R,R,acetylcholine,acetylcholine,,True,False,,,False,False +764948,502,128229,11,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,516162,ALPN,VC4_adPN,VC4_adPN_R,R,acetylcholine,acetylcholine,,True,False,4.0,19835828.0,True,False +764950,502,129486,5,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,518294,ALPN,VA5_lPN,VA5_lPN_R,R,acetylcholine,acetylcholine,,True,False,11.0,20057404.0,True,False +764960,502,130257,12,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,519572,ALPN,DM6_adPN,DM6_adPN_R,R,acetylcholine,acetylcholine,,True,False,22.0,20205074.0,True,False +764963,502,130400,6,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,519850,ALPN,DA4m_adPN,DA4m_adPN_R,R,acetylcholine,acetylcholine,,True,False,3.0,20242668.0,True,False +764966,502,130472,25,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,519970,ALPN,VA3_adPN,VA3_adPN_R,R,acetylcholine,acetylcholine,,True,False,16.0,20265963.0,True,False +764967,502,130497,39,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,520003,ALPN,DL1_adPN,DL1_adPN_R,R,acetylcholine,acetylcholine,,True,False,39.0,20274074.0,True,False +764975,502,130753,17,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,520466,ALPN,DM2_lPN,DM2_lPN_R,R,acetylcholine,acetylcholine,,True,False,28.0,20342295.0,True,False +764977,502,130758,2,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,520475,ALPN,DM5_lPN,DM5_lPN_R,R,acetylcholine,acetylcholine,,True,False,13.0,20345290.0,True,False +764981,502,130990,19,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,520916,ALPN,VM6_adPN,VM6_adPN_R,R,acetylcholine,acetylcholine,,True,False,32.0,20398820.0,True,False +764985,502,131226,35,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,521437,ALPN,VA3_adPN,VA3_adPN_R,R,acetylcholine,acetylcholine,,True,False,25.0,20462077.0,True,False +764987,502,131311,17,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,521575,ALPN,DL2v_adPN,DL2v_adPN_R,R,acetylcholine,acetylcholine,,True,False,8.0,20480513.0,True,False +764995,502,131777,21,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,523351,ALPN,DL2d_adPN,DL2d_adPN_R,R,acetylcholine,acetylcholine,,True,False,12.0,20611553.0,True,False +765005,502,132182,14,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,524207,ALPN,VA7m_lPN,VA7m_lPN_R,R,acetylcholine,acetylcholine,,True,False,7.0,20721529.0,True,False +765009,502,132659,26,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,525105,ALPN,DL5_adPN,DL5_adPN_R,R,acetylcholine,acetylcholine,,True,False,27.0,20822655.0,True,False +765019,502,133646,8,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,527523,ALPN,VM7d_adPN,VM7d_adPN_R,R,acetylcholine,acetylcholine,,True,False,13.0,20988951.0,True,False +765020,502,133647,8,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,527524,ALPN,VM5d_adPN,VM5d_adPN_R,R,acetylcholine,acetylcholine,,True,False,6.0,20989417.0,True,False +765021,502,133666,35,APL,10540,,APL,APL_R,R,gaba,gaba,,ALPN,527577,ALPN,VA6_adPN,VA6_adPN_R,R,acetylcholine,acetylcholine,,True,False,45.0,20992269.0,True,True +1119569,904,40,14,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,10049,ALPN,VA7m_lPN,VA7m_lPN_L,L,acetylcholine,acetylcholine,,True,False,14.0,69565.0,True,False +1119571,904,62,13,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,10075,ALPN,DA1_lPN,DA1_lPN_L,L,acetylcholine,acetylcholine,,True,False,30.0,138529.0,True,False +1119573,904,97,21,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,10111,ALPN,DM3_adPN,DM3_adPN_L,L,acetylcholine,acetylcholine,,True,False,41.0,226812.0,True,False +1119574,904,112,97,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,10126,ALPN,DP1m_adPN,DP1m_adPN_L,L,acetylcholine,acetylcholine,,True,False,61.0,248380.0,True,False +1119575,904,120,58,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,10134,ALPN,VL2a_adPN,VL2a_adPN_L,L,acetylcholine,acetylcholine,,True,False,90.0,263380.0,True,False +1119577,904,189,242,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,10208,ALPN,DM1_lPN,DM1_lPN_L,L,acetylcholine,acetylcholine,,True,False,58.0,358462.0,True,False +1119579,904,241,12,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,10262,ALPN,V_ilPN,V_ilPN_L,L,acetylcholine,acetylcholine,,True,False,18.0,438143.0,True,False +1119582,904,296,59,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,10321,ALPN,VL2p_adPN,VL2p_adPN_L,L,acetylcholine,acetylcholine,,True,False,84.0,532837.0,True,False +1119584,904,331,51,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,10359,ALPN,DL1_adPN,DL1_adPN_L,L,acetylcholine,acetylcholine,,True,False,57.0,581952.0,True,False +1119586,904,394,22,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,10429,ALPN,VM6_adPN,VM6_adPN_L,L,acetylcholine,acetylcholine,,True,False,31.0,641333.0,True,False +1119587,904,434,72,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,10470,ALPN,DC1_adPN,DC1_adPN_L,L,acetylcholine,acetylcholine,,True,False,107.0,695994.0,True,False +1119590,904,486,73,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,10524,ALPN,DP1l_adPN,DP1l_adPN_L,L,acetylcholine,acetylcholine,,True,False,19.0,749793.0,True,False +1119591,904,492,2,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,10530,ALPN,VL1_ilPN,VL1_ilPN_L,L,acetylcholine,acetylcholine,,True,False,5.0,753887.0,True,False +1119593,904,522,72,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,10561,ALPN,VA2_adPN,VA2_adPN_L,L,acetylcholine,acetylcholine,,True,False,66.0,783800.0,True,False +1119599,904,607,17,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,10653,ALPN,VA5_lPN,VA5_lPN_L,L,acetylcholine,acetylcholine,,True,False,21.0,855614.0,True,False +1119600,904,622,77,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,10670,ALPN,DM4_adPN,DM4_adPN_L,L,acetylcholine,acetylcholine,,True,False,55.0,867234.0,True,False +1119602,904,666,26,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,10716,ALPN,DC3_adPN,DC3_adPN_L,L,acetylcholine,acetylcholine,,True,False,40.0,914984.0,True,False +1119603,904,683,2,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,10736,ALPN,VP2_adPN,VP2_adPN_L,L,acetylcholine,acetylcholine,,True,False,7.0,929722.0,True,False +1119605,904,710,35,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,10767,ALPN,DL5_adPN,DL5_adPN_L,L,acetylcholine,acetylcholine,,True,False,43.0,944572.0,True,False +1119606,904,749,25,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,10808,ALPN,VC1_lPN,VC1_lPN_L,L,acetylcholine,acetylcholine,,True,False,32.0,976737.0,True,False +1119610,904,813,59,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,10877,ALPN,VA6_adPN,VA6_adPN_L,L,acetylcholine,acetylcholine,,True,False,79.0,1041596.0,True,False +1119611,904,900,9,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,10973,ALPN,VP1m+VP5_ilPN,VP1m+VP5_ilPN_L,L,acetylcholine,acetylcholine,,True,False,7.0,1115279.0,True,False +1119614,904,972,75,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,11050,ALPN,VP1d+VP4_l2PN1,VP1d+VP4_l2PN1_L,L,acetylcholine,,,True,False,12.0,1179458.0,True,False +1119615,904,999,47,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,11080,ALPN,DM2_lPN,DM2_lPN_L,L,acetylcholine,acetylcholine,,True,False,47.0,1200299.0,True,False +1119616,904,1011,43,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,11092,ALPN,DM2_lPN,DM2_lPN_L,L,acetylcholine,acetylcholine,,True,False,42.0,1209511.0,True,False +1119617,904,1022,29,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,11105,ALPN,VC2_lPN,VC2_lPN_L,L,acetylcholine,acetylcholine,,True,False,21.0,1216205.0,True,False +1119618,904,1050,9,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,11135,ALPN,DA4m_adPN,DA4m_adPN_L,L,acetylcholine,acetylcholine,,True,False,16.0,1235742.0,True,False +1119619,904,1056,44,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,11143,ALPN,VP1m_l2PN,VP1m_l2PN_L,L,acetylcholine,,,True,False,14.0,1238708.0,True,False +1119622,904,1138,7,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,11229,ALPN,V_ilPN,V_ilPN_R,R,acetylcholine,acetylcholine,,True,False,8.0,1301268.0,True,False +1119625,904,1191,16,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,11283,ALPN,VA1v_adPN,VA1v_adPN_L,L,acetylcholine,acetylcholine,,True,False,2.0,1334630.0,True,False +1119630,904,1294,2,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,11390,ALPN,VL1_ilPN,VL1_ilPN_R,R,acetylcholine,acetylcholine,,True,False,3.0,1408899.0,True,False +1119633,904,1370,29,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,11467,ALPN,VA4_lPN,VA4_lPN_L,L,acetylcholine,acetylcholine,,True,False,21.0,1458653.0,True,False +1119634,904,1374,24,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,11471,ALPN,VA1d_adPN,VA1d_adPN_L,L,acetylcholine,acetylcholine,,True,False,35.0,1461033.0,True,False +1119635,904,1458,13,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,11564,ALPN,DA1_lPN,DA1_lPN_L,L,acetylcholine,acetylcholine,,True,False,18.0,1521135.0,True,False +1119638,904,1590,32,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,11703,ALPN,VM1_lPN,VM1_lPN_L,L,acetylcholine,acetylcholine,,True,False,101.0,1614877.0,True,False +1119639,904,1607,12,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,11721,ALPN,DA1_lPN,DA1_lPN_L,L,acetylcholine,acetylcholine,,True,False,22.0,1625269.0,True,False +1119643,904,1695,15,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,11817,ALPN,VA5_lPN,VA5_lPN_L,L,acetylcholine,acetylcholine,,True,False,13.0,1675160.0,True,False +1119644,904,1707,5,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,11829,ALPN,DL4_adPN,DL4_adPN_L,L,acetylcholine,acetylcholine,,True,False,14.0,1680304.0,True,False +1119650,904,1890,28,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,12023,ALPN,VA3_adPN,VA3_adPN_L,L,acetylcholine,acetylcholine,,True,False,19.0,1787710.0,True,False +1119651,904,1898,2,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,12031,ALPN,DC4_adPN,DC4_adPN_L,L,acetylcholine,acetylcholine,,True,False,2.0,1790881.0,True,False +1119652,904,1916,6,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,12050,ALPN,VA1d_adPN,VA1d_adPN_L,L,acetylcholine,acetylcholine,,True,False,6.0,1801068.0,True,False +1119653,904,1923,37,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,12057,ALPN,VM3_adPN,VM3_adPN_L,L,acetylcholine,acetylcholine,,True,False,51.0,1804289.0,True,False +1119654,904,1927,36,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,12061,ALPN,DL1_adPN,DL1_adPN_L,L,acetylcholine,acetylcholine,,True,False,40.0,1805735.0,True,False +1119656,904,2010,26,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,12152,ALPN,DC2_adPN,DC2_adPN_L,L,acetylcholine,acetylcholine,,True,False,61.0,1854856.0,True,False +1119659,904,2160,30,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,12312,ALPN,DC3_adPN,DC3_adPN_L,L,acetylcholine,acetylcholine,,True,False,59.0,1941085.0,True,False +1119660,904,2162,4,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,12314,ALPN,DA1_lPN,DA1_lPN_L,L,acetylcholine,acetylcholine,,True,False,24.0,1942170.0,True,False +1119661,904,2212,27,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,12367,ALPN,VM3_adPN,VM3_adPN_L,L,acetylcholine,acetylcholine,,True,False,34.0,1964547.0,True,False +1119663,904,2302,11,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,12460,ALPN,VA1d_adPN,VA1d_adPN_L,L,acetylcholine,acetylcholine,,True,False,7.0,2008167.0,True,False +1119664,904,2347,35,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,12509,ALPN,VA3_adPN,VA3_adPN_L,L,acetylcholine,acetylcholine,,True,False,23.0,2029356.0,True,False +1119669,904,2481,14,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,12653,ALPN,DA1_lPN,DA1_lPN_L,L,acetylcholine,acetylcholine,,True,False,18.0,2106838.0,True,False +1119672,904,2577,16,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,12756,ALPN,VA5_lPN,VA5_lPN_L,L,acetylcholine,acetylcholine,,True,False,16.0,2158032.0,True,False +1119674,904,2769,15,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,12958,ALPN,DL2d_adPN,DL2d_adPN_L,L,acetylcholine,acetylcholine,,True,False,28.0,2242156.0,True,False +1119676,904,2834,13,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,13027,ALPN,VC5_lvPN,VC5_lvPN_L,L,acetylcholine,acetylcholine,,True,False,24.0,2273529.0,True,False +1119677,904,2943,8,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,13143,ALPN,VA1v_adPN,VA1v_adPN_L,L,acetylcholine,acetylcholine,,True,False,1.0,2327343.0,True,False +1119679,904,3021,10,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,13230,ALPN,VC5_lvPN,VC5_lvPN_L,L,acetylcholine,acetylcholine,,True,False,19.0,2359583.0,True,False +1119681,904,3120,7,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,13334,ALPN,VP1m+VP5_ilPN,VP1m+VP5_ilPN_R,R,acetylcholine,acetylcholine,,True,False,4.0,2405920.0,True,False +1119682,904,3139,26,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,13356,ALPN,VM4_adPN,VM4_adPN_L,L,acetylcholine,acetylcholine,,True,False,52.0,2414973.0,True,False +1119684,904,3202,17,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,13423,ALPN,D_adPN,D_adPN_L,L,acetylcholine,acetylcholine,,True,False,15.0,2442555.0,True,False +1119686,904,3244,34,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,13470,ALPN,DC3_adPN,DC3_adPN_L,L,acetylcholine,acetylcholine,,True,False,50.0,2462759.0,True,False +1119687,904,3252,24,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,13479,ALPN,DC2_adPN,DC2_adPN_L,L,acetylcholine,acetylcholine,,True,False,59.0,2465265.0,True,False +1119688,904,3256,12,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,13483,ALPN,DA1_lPN,DA1_lPN_L,L,acetylcholine,acetylcholine,,True,False,26.0,2467881.0,True,False +1119689,904,3345,9,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,13582,ALPN,VA1v_adPN,VA1v_adPN_L,L,acetylcholine,acetylcholine,,True,False,4.0,2509268.0,True,False +1119690,904,3346,1,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,13583,ALPN,DA1_lPN,DA1_lPN_L,L,acetylcholine,acetylcholine,,True,False,7.0,2509711.0,True,False +1119692,904,3435,1,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,13683,ALPN,M_vPNml55,M_vPNml55_L,L,gaba,gaba,,True,False,,,False,False +1119693,904,3436,16,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,13684,ALPN,VC3_adPN,VC3_adPN_L,L,acetylcholine,acetylcholine,,True,False,2.0,2559482.0,True,False +1119699,904,3682,2,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,13951,ALPN,M_vPNml50,M_vPNml50_L,L,gaba,gaba,,True,False,37.0,2668047.0,True,False +1119700,904,3702,8,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,13972,ALPN,VM7v_adPN,VM7v_adPN_L,L,acetylcholine,acetylcholine,,True,False,3.0,2679241.0,True,False +1119704,904,4026,12,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,14339,ALPN,VA1v_adPN,VA1v_adPN_L,L,acetylcholine,acetylcholine,,True,False,1.0,2814675.0,True,False +1119705,904,4044,1,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,14360,ALPN,M_smPNm1,M_smPNm1_R,R,gaba,,,True,False,,,False,False +1119706,904,4104,16,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,14427,ALPN,VM5v_adPN,VM5v_adPN_L,L,acetylcholine,acetylcholine,,True,False,7.0,2843574.0,True,False +1119707,904,4107,8,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,14430,ALPN,VM7d_adPN,VM7d_adPN_L,L,acetylcholine,acetylcholine,,True,False,3.0,2844234.0,True,False +1119708,904,4113,8,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,14437,ALPN,VP3+VP1l_ivPN,VP3+VP1l_ivPN_R,R,acetylcholine,,,True,False,3.0,2846227.0,True,False +1119709,904,4117,33,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,14442,ALPN,VC3_adPN,VC3_adPN_L,L,acetylcholine,acetylcholine,,True,False,18.0,2848285.0,True,False +1119711,904,4260,8,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,14607,ALPN,VM5v_adPN,VM5v_adPN_L,L,acetylcholine,acetylcholine,,True,False,7.0,2904642.0,True,False +1119713,904,4311,19,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,14661,ALPN,D_adPN,D_adPN_L,L,acetylcholine,acetylcholine,,True,False,11.0,2922497.0,True,False +1119714,904,4315,8,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,14665,ALPN,VM2_adPN,VM2_adPN_L,L,acetylcholine,acetylcholine,,True,False,20.0,2924017.0,True,False +1119715,904,4334,23,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,14685,ALPN,VC3_adPN,VC3_adPN_L,L,acetylcholine,acetylcholine,,True,False,12.0,2931447.0,True,False +1119716,904,4505,13,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,14874,ALPN,D_adPN,D_adPN_L,L,acetylcholine,acetylcholine,,True,False,9.0,2991016.0,True,False +1119718,904,4523,7,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,14895,ALPN,VM7d_adPN,VM7d_adPN_L,L,acetylcholine,acetylcholine,,True,False,9.0,3000058.0,True,False +1119722,904,4786,22,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,15184,ALPN,DM6_adPN,DM6_adPN_L,L,acetylcholine,acetylcholine,,True,False,43.0,3104063.0,True,False +1119727,904,5359,3,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,15823,ALPN,DM5_lPN,DM5_lPN_L,L,acetylcholine,acetylcholine,,True,False,18.0,3304571.0,True,False +1119728,904,5507,11,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,15992,ALPN,VM2_adPN,VM2_adPN_L,L,acetylcholine,acetylcholine,,True,False,8.0,3355471.0,True,False +1119729,904,5692,19,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,16206,ALPN,VA7m_lPN,VA7m_lPN_L,L,acetylcholine,acetylcholine,,True,False,8.0,3423393.0,True,False +1119730,904,5693,24,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,16207,ALPN,VC5_lvPN,VC5_lvPN_L,L,acetylcholine,acetylcholine,,True,False,70.0,3423774.0,True,False +1119731,904,5712,3,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,16228,ALPN,DL3_lPN,DL3_lPN_L,L,acetylcholine,acetylcholine,,True,False,12.0,3431466.0,True,False +1119732,904,5897,13,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,16433,ALPN,VC4_adPN,VC4_adPN_L,L,acetylcholine,acetylcholine,,True,False,3.0,3495778.0,True,False +1119733,904,5984,15,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,16524,ALPN,VM7v_adPN,VM7v_adPN_L,L,acetylcholine,acetylcholine,,True,False,12.0,3528885.0,True,False +1119735,904,6099,2,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,16648,ALPN,VP1d_il2PN,VP1d_il2PN_L,L,acetylcholine,,,True,False,,,False,False +1119736,904,6435,28,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,17027,ALPN,DL2v_adPN,DL2v_adPN_L,L,acetylcholine,acetylcholine,,True,False,7.0,3678385.0,True,False +1119737,904,6455,1,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,17052,ALPN,DM5_lPN,DM5_lPN_L,L,acetylcholine,acetylcholine,,True,False,24.0,3684536.0,True,False +1119739,904,6721,20,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,17350,ALPN,DM6_adPN,DM6_adPN_L,L,acetylcholine,acetylcholine,,True,False,39.0,3776761.0,True,False +1119741,904,6892,26,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,17540,ALPN,DL2v_adPN,DL2v_adPN_L,L,acetylcholine,acetylcholine,,True,False,10.0,3830161.0,True,False +1119742,904,6919,26,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,17569,ALPN,VC3_adPN,VC3_adPN_L,L,acetylcholine,acetylcholine,,True,False,8.0,3839610.0,True,False +1119743,904,6920,11,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,17570,ALPN,VM5d_adPN,VM5d_adPN_L,L,acetylcholine,acetylcholine,,True,False,8.0,3840021.0,True,False +1119745,904,7322,20,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,18015,ALPN,DM6_adPN,DM6_adPN_L,L,acetylcholine,acetylcholine,,True,False,32.0,3965997.0,True,False +1119751,904,8001,1,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,18776,ALPN,DA2_lPN,DA2_lPN_L,L,acetylcholine,acetylcholine,,True,False,5.0,4180219.0,True,False +1119752,904,8055,4,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,18834,ALPN,VM7d_adPN,VM7d_adPN_L,L,acetylcholine,acetylcholine,,True,False,2.0,4195262.0,True,False +1119753,904,8083,19,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,18867,ALPN,VM5d_adPN,VM5d_adPN_L,L,acetylcholine,acetylcholine,,True,False,9.0,4204580.0,True,False +1119757,904,8504,4,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,19339,ALPN,DA2_lPN,DA2_lPN_L,L,acetylcholine,acetylcholine,,True,False,7.0,4329600.0,True,False +1119759,904,8717,15,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,19579,ALPN,VC4_adPN,VC4_adPN_L,L,acetylcholine,acetylcholine,,True,False,8.0,4386039.0,True,False +1119760,904,8866,15,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,19743,ALPN,VA7m_lPN,VA7m_lPN_L,L,acetylcholine,acetylcholine,,True,False,4.0,4428297.0,True,False +1119762,904,8955,3,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,19845,ALPN,VP3+VP1l_ivPN,VP3+VP1l_ivPN_L,L,acetylcholine,,,True,False,,,False,False +1119763,904,9188,1,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,20105,ALPN,DA2_lPN,DA2_lPN_L,L,acetylcholine,acetylcholine,,True,False,1.0,4518534.0,True,False +1119765,904,9904,8,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,20910,ALPN,M_lPNm11D,M_lPNm11D_L,L,acetylcholine,acetylcholine,,True,False,11.0,4716582.0,True,False +1119766,904,10097,14,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,21132,ALPN,VC4_adPN,VC4_adPN_L,L,acetylcholine,acetylcholine,,True,False,8.0,4770061.0,True,False +1119774,904,11334,10,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,22494,ALPN,VM5d_adPN,VM5d_adPN_L,L,acetylcholine,acetylcholine,,True,False,7.0,5100754.0,True,False +1119775,904,11398,16,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,22569,ALPN,VM5d_adPN,VM5d_adPN_L,L,acetylcholine,acetylcholine,,True,False,18.0,5119826.0,True,False +1119776,904,11533,2,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,22717,ALPN,M_lPNm11D,M_lPNm11D_L,L,acetylcholine,acetylcholine,,True,False,4.0,5153282.0,True,False +1119779,904,12088,8,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,23339,ALPN,VM5d_adPN,VM5d_adPN_L,L,acetylcholine,acetylcholine,,True,False,11.0,5289769.0,True,False +1119780,904,12423,1,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,23718,ALPN,DM5_lPN,DM5_lPN_L,L,acetylcholine,acetylcholine,,True,False,13.0,5374786.0,True,False +1119782,904,12997,2,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,24352,ALPN,DM5_lPN,DM5_lPN_L,L,acetylcholine,acetylcholine,,True,False,15.0,5523195.0,True,False +1119784,904,13128,6,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,24502,ALPN,M_lPNm11D,M_lPNm11D_L,L,acetylcholine,acetylcholine,,True,False,,,False,False +1119785,904,13423,6,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,24841,ALPN,DL2v_adPN,DL2v_adPN_L,L,acetylcholine,acetylcholine,,True,False,7.0,5625430.0,True,False +1119788,904,14395,1,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,25927,ALPN,VL2a_vPN,VL2a_vPN_L,L,gaba,gaba,,True,False,,,False,False +1119790,904,14839,6,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,26423,ALPN,DA2_lPN,DA2_lPN_L,L,acetylcholine,acetylcholine,,True,False,11.0,5956881.0,True,False +1119792,904,15212,11,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,26845,ALPN,DL2v_adPN,DL2v_adPN_L,L,acetylcholine,acetylcholine,,True,False,7.0,6037034.0,True,False +1119797,904,16855,19,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,28680,ALPN,VM5d_adPN,VM5d_adPN_L,L,acetylcholine,acetylcholine,,True,False,12.0,6385014.0,True,False +1119800,904,17327,8,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,29217,ALPN,DL2d_adPN,DL2d_adPN_L,L,acetylcholine,acetylcholine,,True,False,14.0,6482455.0,True,False +1119803,904,17874,16,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,29824,ALPN,M_adPNm4,M_adPNm4_L,L,acetylcholine,acetylcholine,,True,False,5.0,6593613.0,True,False +1119806,904,19196,1,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,31348,ALPN,M_lPNm11D,M_lPNm11D_L,L,acetylcholine,acetylcholine,,True,False,8.0,6859919.0,True,False +1119858,904,26772,2,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,39922,ALPN,M_lPNm11D,M_lPNm11D_L,L,acetylcholine,acetylcholine,,True,False,6.0,8237794.0,True,False +1120076,904,39352,2,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,54383,ALPN,M_lvPNm30,M_lvPNm30_L,L,acetylcholine,acetylcholine,,True,False,,,False,False +1120537,904,58326,1,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,77438,ALPN,M_vPNml80,M_vPNml80_L,L,gaba,gaba,,True,False,,,False,False +1120806,904,66580,6,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,87970,ALPN,M_adPNm5,M_adPNm5_L,L,acetylcholine,acetylcholine,,True,False,3.0,14158527.0,True,False +1120845,904,68010,10,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,89871,ALPN,M_adPNm5,M_adPNm5_L,L,acetylcholine,acetylcholine,,True,False,6.0,14323074.0,True,False +1120968,904,73384,10,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,97057,ALPN,M_adPNm5,M_adPNm5_L,L,acetylcholine,acetylcholine,,True,False,1.0,14910286.0,True,False +1122334,904,127785,1,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,515440,ALPN,DP1m_vPN,DP1m_vPN_L,L,gaba,gaba,,True,False,,,False,False +1122336,904,128299,1,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,516322,ALPN,VL1_vPN,VL1_vPN_L,L,gaba,gaba,,True,False,,,False,False +1122337,904,128946,11,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,517351,ALPN,DL2d_adPN,DL2d_adPN_L,L,acetylcholine,acetylcholine,,True,False,19.0,19961681.0,True,False +1122390,904,134090,23,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,529665,ALPN,VA7l_adPN,VA7l_adPN_L,L,acetylcholine,acetylcholine,,True,False,31.0,21075891.0,True,False +1122409,904,137761,1,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,538094,ALPN,M_adPNm8,M_adPNm8_L,L,acetylcholine,acetylcholine,,True,False,,,False,False +1122434,904,140635,8,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,547655,ALPN,DL2d_adPN,DL2d_adPN_L,L,acetylcholine,acetylcholine,,True,False,6.0,21963162.0,True,False +1122461,904,143201,3,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,563873,ALPN,M_lPNm11D,M_lPNm11D_L,L,acetylcholine,acetylcholine,,True,False,2.0,22241944.0,True,False +1122462,904,143218,35,APL,10977,,APL,APL_L,L,gaba,gaba,,ALPN,564174,ALPN,DL2d_adPN,DL2d_adPN_L,L,acetylcholine,acetylcholine,,True,False,47.0,22243770.0,True,False diff --git a/registry/phase4aa-apl-pn-scope/evidence/connectivity/APL-input-population-summary.csv b/registry/phase4aa-apl-pn-scope/evidence/connectivity/APL-input-population-summary.csv new file mode 100644 index 0000000..0153a3a --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/connectivity/APL-input-population-summary.csv @@ -0,0 +1,9 @@ +source_population,edges,contacts +ALPN,290,5416 +APL,3,22 +CX,9,12 +DAN,621,8099 +DPM,4,3521 +Kenyon_Cell,4693,210352 +MBON,79,2383 +UNKNOWN_CLASS,486,4220 diff --git a/registry/phase4aa-apl-pn-scope/evidence/connectivity/APL-output-population-summary.csv b/registry/phase4aa-apl-pn-scope/evidence/connectivity/APL-output-population-summary.csv new file mode 100644 index 0000000..64a94a1 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/connectivity/APL-output-population-summary.csv @@ -0,0 +1,9 @@ +target_population,edges,contacts +ALPN,268,4600 +APL,3,22 +CX,6,7 +DAN,451,1747 +DPM,4,1595 +Kenyon_Cell,4633,196200 +MBON,120,4466 +UNKNOWN_CLASS,360,1275 diff --git a/registry/phase4aa-apl-pn-scope/evidence/connectivity/watched-PN-reciprocity.csv b/registry/phase4aa-apl-pn-scope/evidence/connectivity/watched-PN-reciprocity.csv new file mode 100644 index 0000000..723e590 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/connectivity/watched-PN-reciprocity.csv @@ -0,0 +1,8 @@ +source_neuron_idx,source_body_id,source_annotation_instance,target_neuron_idx,target_body_id,target_annotation_type,raw_synapse_count,reverse_contacts,reverse_edge_id +502,10540,APL_R,30,10039,VL2a_adPN,50,70.0,46118.0 +502,10540,APL_R,179,10198,VA7l_adPN,7,52.0,347211.0 +502,10540,APL_R,484,10522,VL2p_adPN,50,86.0,748443.0 +502,10540,APL_R,1644,11761,VP1d+VP4_l2PN1,78,21.0,1645422.0 +502,10540,APL_R,6065,16610,VA7m_lPN,14,6.0,3559819.0 +502,10540,APL_R,6842,17484,DC2_adPN,13,45.0,3810910.0 +502,10540,APL_R,133666,527577,VA6_adPN,35,45.0,20992269.0 diff --git a/registry/phase4aa-apl-pn-scope/evidence/external-resources/evidence-and-limitations.json b/registry/phase4aa-apl-pn-scope/evidence/external-resources/evidence-and-limitations.json new file mode 100644 index 0000000..74ef7c9 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/external-resources/evidence-and-limitations.json @@ -0,0 +1,40 @@ +{ + "access_choices": [ + "Authorized neuPrint male-cns:v1.0 targeted query, requiring user-configured API token", + "Explicitly approved official syn-partners bulk download into a NEW external-reference directory" + ], + "google_research": { + "role": "Primary project provenance, not evidence of associative-learning performance", + "url": "https://www.research.google/blog/a-connectomics-milestone-mapping-the-complete-male-fruit-fly-brain/" + }, + "not_attempted": [ + "bulk synapse download", + "EM download", + "credential discovery", + "unauthenticated query bypass", + "new dynamics", + "GPU regression" + ], + "official_definition": { + "coordinate_units": "synapse coordinates and original SWC in 8nm voxels; precomputed skeletons have different units", + "dataset": "male-cns:v1.0", + "license": "CC-BY-4.0", + "license_url": "https://creativecommons.org/licenses/by/4.0/", + "no_EM_needed": true, + "observation": "Official page specifies paired synapse coordinates/primary_post in syn-partners; local flat weights contain none.", + "required_subset": "All outgoing APL partner records; exact body IDs from metadata; minimum confidence 0.5; include pre/post x/y/z, body IDs and primary_post.", + "url": "https://male-cns.janelia.org/download/" + }, + "primary_physiology": [ + { + "claim": "Local APL inhibition at PN boutons and KC dendritic claws was studied; no edge-specific MaleCNS coefficient follows.", + "doi": "10.7554/eLife.74172", + "url": "https://elifesciences.org/articles/74172" + }, + { + "claim": "APL activity/inhibition can be spatially localized; global point-neuron inhibition is a modeling assumption.", + "doi": "10.7554/eLife.56954", + "url": "https://pmc.ncbi.nlm.nih.gov/articles/PMC7541083/" + } + ] +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/external-resources/official-data-access.json b/registry/phase4aa-apl-pn-scope/evidence/external-resources/official-data-access.json new file mode 100644 index 0000000..87653e3 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/external-resources/official-data-access.json @@ -0,0 +1,28 @@ +[ + { + "accept_ranges": "bytes", + "body_downloaded": false, + "content_length": 6777179098, + "etag": "\"58efcf712f8c4d4de5f2ad51e97def76\"", + "generation": "1780494942562468", + "last_modified": "Wed, 03 Jun 2026 13:55:42 GMT", + "method": "HEAD", + "retrieved_utc": "2026-09-29T15:38:48.136961+00:00", + "status": 200, + "upstream_hash_header": "crc32c=jTlNIA==", + "url": "https://storage.googleapis.com/flyem-male-cns/v1.0/connectome-data/flat-connectome/syn-partners-male-cns-v1.0-minconf-0.5.feather" + }, + { + "accept_ranges": "bytes", + "body_downloaded": false, + "content_length": 13061489098, + "etag": "\"c69d08758de07582035cc8843574493a\"", + "generation": "1780494991007477", + "last_modified": "Wed, 03 Jun 2026 13:56:31 GMT", + "method": "HEAD", + "retrieved_utc": "2026-09-29T15:38:50.617894+00:00", + "status": 200, + "upstream_hash_header": "crc32c=1E7gRw==", + "url": "https://storage.googleapis.com/flyem-male-cns/v1.0/connectome-data/flat-connectome/syn-points-male-cns-v1.0-minconf-0.5.feather" + } +] diff --git a/registry/phase4aa-apl-pn-scope/evidence/external-resources/synaptic-partners/authorization-and-source.json b/registry/phase4aa-apl-pn-scope/evidence/external-resources/synaptic-partners/authorization-and-source.json new file mode 100644 index 0000000..6e67db7 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/external-resources/synaptic-partners/authorization-and-source.json @@ -0,0 +1,12 @@ +{ + "EM_downloaded": false, + "dataset": "male-cns:v1.0", + "license": "CC-BY-4.0", + "metadata_url": "https://storage.googleapis.com/storage/v1/b/flyem-male-cns/o/v1.0%2Fconnectome-data%2Fflat-connectome%2Fsyn-partners-male-cns-v1.0-minconf-0.5.feather", + "new_reference_only": true, + "raw_modified": false, + "retrieved_utc": "2026-09-29T15:44:03Z", + "source_page": "https://male-cns.janelia.org/download/", + "url": "https://storage.googleapis.com/flyem-male-cns/v1.0/connectome-data/flat-connectome/syn-partners-male-cns-v1.0-minconf-0.5.feather?generation=1780494942562468", + "user_authorized_additional_download": true +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/external-resources/synaptic-partners/download-verification.json b/registry/phase4aa-apl-pn-scope/evidence/external-resources/synaptic-partners/download-verification.json new file mode 100644 index 0000000..5a81d50 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/external-resources/synaptic-partners/download-verification.json @@ -0,0 +1,10 @@ +{ + "bytes": 6777179098, + "download_and_verification_seconds": 375.65567960299086, + "generation": "1780494942562468", + "md5": "58efcf712f8c4d4de5f2ad51e97def76", + "official_md5": "58efcf712f8c4d4de5f2ad51e97def76", + "pass": true, + "path": "/data/digital-drosophila/experiments/phase4aa-apl-pn-scope/external-resources/synaptic-partners/syn-partners-male-cns-v1.0-minconf-0.5.feather", + "sha256": "959d8ef4173b35382a3e6acfaf5167c795b6d10b877572d146af04e1b487bc07" +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/external-resources/synaptic-partners/upstream-object.json b/registry/phase4aa-apl-pn-scope/evidence/external-resources/synaptic-partners/upstream-object.json new file mode 100644 index 0000000..f947ee3 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/external-resources/synaptic-partners/upstream-object.json @@ -0,0 +1,21 @@ +{ + "bucket": "flyem-male-cns", + "contentLanguage": "en", + "contentType": "application/octet-stream", + "crc32c": "jTlNIA==", + "etag": "CKTRzcSc65QDEAE=", + "generation": "1780494942562468", + "id": "flyem-male-cns/v1.0/connectome-data/flat-connectome/syn-partners-male-cns-v1.0-minconf-0.5.feather/1780494942562468", + "kind": "storage#object", + "md5Hash": "WO/PcS+MTU3l8q1R6X3vdg==", + "mediaLink": "https://storage.googleapis.com/download/storage/v1/b/flyem-male-cns/o/v1.0%2Fconnectome-data%2Fflat-connectome%2Fsyn-partners-male-cns-v1.0-minconf-0.5.feather?generation=1780494942562468&alt=media", + "metageneration": "1", + "name": "v1.0/connectome-data/flat-connectome/syn-partners-male-cns-v1.0-minconf-0.5.feather", + "selfLink": "https://www.googleapis.com/storage/v1/b/flyem-male-cns/o/v1.0%2Fconnectome-data%2Fflat-connectome%2Fsyn-partners-male-cns-v1.0-minconf-0.5.feather", + "size": "6777179098", + "storageClass": "STANDARD", + "timeCreated": "2026-06-03T13:55:42.664Z", + "timeFinalized": "2026-06-03T13:55:42.664Z", + "timeStorageClassUpdated": "2026-06-03T13:55:42.664Z", + "updated": "2026-06-03T13:55:42.664Z" +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/gpu-frozen-regression/protocol-addendum.json b/registry/phase4aa-apl-pn-scope/evidence/gpu-frozen-regression/protocol-addendum.json new file mode 100644 index 0000000..bd68ec9 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/gpu-frozen-regression/protocol-addendum.json @@ -0,0 +1,28 @@ +{ + "ComfyUI_queues": [ + { + "pending": 0, + "port": 8188, + "running": 0 + }, + { + "pending": 0, + "port": 8189, + "running": 0 + }, + { + "pending": 0, + "port": 8190, + "running": 0 + } + ], + "available_vram_bytes": 12494438400, + "config_sha256": "6d0189f4ec570cb3352d15ed8d195d1ccb32ee1d29c33dc1e4f00d377b74787e", + "historical_files_overwritten": false, + "new_mechanism_or_training": false, + "reason": "User confirmed ComfyUI is not in use; baseline behavior check before any future mechanism intervention", + "reference": "experiments/phase4p-deterministic-runtime/phase4c-v2/reference", + "runtime_sha256": "c8a13dbdd58dd222f73c1224de448e54bdf90c3f533163427a2bb25446a03999", + "scope": "Five frozen reference v2 trials only; supplement to CPU structural audit", + "source_sha256": "554e9378e068fb13abb4f08dbf9ea710228fa535da2442edb913261fa22fcb20" +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/localization/ALLN-to-watched-PN-count-check.json b/registry/phase4aa-apl-pn-scope/evidence/localization/ALLN-to-watched-PN-count-check.json new file mode 100644 index 0000000..4909c62 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/localization/ALLN-to-watched-PN-count-check.json @@ -0,0 +1,9 @@ +{ + "canonical_pairs": 886, + "canonical_rows": 19024, + "duplicate_partner_rows": 0, + "group": "ALLN-to-watched-PN", + "mismatches": [], + "pass": true, + "rows": 19024 +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/localization/APL-incident-count-check.json b/registry/phase4aa-apl-pn-scope/evidence/localization/APL-incident-count-check.json new file mode 100644 index 0000000..a43bcf7 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/localization/APL-incident-count-check.json @@ -0,0 +1,9 @@ +{ + "canonical_pairs": 12027, + "canonical_rows": 443915, + "duplicate_partner_rows": 0, + "group": "APL-incident", + "mismatches": [], + "pass": true, + "rows": 500348 +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/localization/APL-target-PN-to-KC-count-check.json b/registry/phase4aa-apl-pn-scope/evidence/localization/APL-target-PN-to-KC-count-check.json new file mode 100644 index 0000000..98f0c13 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/localization/APL-target-PN-to-KC-count-check.json @@ -0,0 +1,9 @@ +{ + "canonical_pairs": 21978, + "canonical_rows": 385229, + "duplicate_partner_rows": 0, + "group": "APL-target-PN-to-KC", + "mismatches": [], + "pass": true, + "rows": 385229 +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/localization/actual-schema.json b/registry/phase4aa-apl-pn-scope/evidence/localization/actual-schema.json new file mode 100644 index 0000000..9d1014d --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/localization/actual-schema.json @@ -0,0 +1,49 @@ +{ + "fields": [ + { + "dtype": "int32", + "name": "x_pre" + }, + { + "dtype": "int32", + "name": "y_pre" + }, + { + "dtype": "int32", + "name": "z_pre" + }, + { + "dtype": "int64", + "name": "body_pre" + }, + { + "dtype": "float", + "name": "conf_pre" + }, + { + "dtype": "int32", + "name": "x_post" + }, + { + "dtype": "int32", + "name": "y_post" + }, + { + "dtype": "int32", + "name": "z_post" + }, + { + "dtype": "int64", + "name": "body_post" + }, + { + "dtype": "float", + "name": "conf_post" + }, + { + "dtype": "dictionary", + "name": "primary_post" + } + ], + "record_batches": 4759 +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/localization/complete-pair-set-validation.json b/registry/phase4aa-apl-pn-scope/evidence/localization/complete-pair-set-validation.json new file mode 100644 index 0000000..6099374 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/localization/complete-pair-set-validation.json @@ -0,0 +1,29 @@ +{ + "groups": [ + { + "complete_pair_set_and_weight_exact": true, + "expected_CSR_pairs": 12027, + "group": "APL-incident", + "observed_pairs": 12027 + }, + { + "complete_pair_set_and_weight_exact": true, + "expected_CSR_pairs": 21978, + "group": "APL-target-PN-to-KC", + "observed_pairs": 21978 + }, + { + "complete_pair_set_and_weight_exact": true, + "expected_CSR_pairs": 823, + "group": "watched-PN-to-ALLN", + "observed_pairs": 823 + }, + { + "complete_pair_set_and_weight_exact": true, + "expected_CSR_pairs": 886, + "group": "ALLN-to-watched-PN", + "observed_pairs": 886 + } + ], + "pass": true +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/localization/population-ROI-summary.csv b/registry/phase4aa-apl-pn-scope/evidence/localization/population-ROI-summary.csv new file mode 100644 index 0000000..84e6746 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/localization/population-ROI-summary.csv @@ -0,0 +1,39 @@ +group,primary_post,contacts,fraction,source_bodies,target_bodies +APL-to-PN,CA(L),2063,0.4484782608695652,1,118 +APL-to-PN,CA(R),1757,0.3819565217391304,1,122 +APL-to-PN,LH(L),2,0.0004347826086956522,1,2 +APL-to-PN,PED(R),2,0.0004347826086956522,1,1 +APL-to-PN,SCL(L),34,0.007391304347826087,1,22 +APL-to-PN,SLP(R),8,0.0017391304347826088,1,8 +APL-to-PN,a'L(L),3,0.0006521739130434783,1,2 +APL-to-PN,CentralBrain-unspecified,731,0.15891304347826088,2,163 +PN-to-APL,CA(L),2272,0.43449990437942243,117,1 +PN-to-APL,CA(R),2204,0.4214955058328552,119,1 +PN-to-APL,CRE(L),6,0.0011474469305794606,1,1 +PN-to-APL,CRE(R),4,0.0007649646203863071,1,1 +PN-to-APL,LH(L),6,0.0011474469305794606,3,1 +PN-to-APL,LH(R),12,0.002294893861158921,2,1 +PN-to-APL,PED(R),3,0.0005737234652897303,1,1 +PN-to-APL,SCL(L),43,0.008223369669152802,18,1 +PN-to-APL,SIP(L),12,0.002294893861158921,1,1 +PN-to-APL,SIP(R),7,0.0013386880856760374,1,1 +PN-to-APL,SLP(R),8,0.0015299292407726143,3,1 +PN-to-APL,SMP(L),4,0.0007649646203863071,1,1 +PN-to-APL,a'L(L),10,0.0019124115509657677,1,1 +PN-to-APL,aL(L),2,0.00038248231019315357,1,1 +PN-to-APL,CentralBrain-unspecified,636,0.12162937464142283,130,2 +PN-to-KC,CA(L),153554,0.3986044664342508,123,1870 +PN-to-KC,CA(R),184483,0.4788917760604731,123,1890 +PN-to-KC,LH(L),15,3.893787850862734e-05,2,1 +PN-to-KC,PLP(L),14,3.634201994138552e-05,3,1 +PN-to-KC,SCL(L),792,0.0020559199852555232,25,62 +PN-to-KC,SCL(R),140,0.00036342019941385515,9,20 +PN-to-KC,SLP(R),57,0.00014796393833278388,11,18 +PN-to-KC,SMP(L),15,3.893787850862734e-05,1,9 +PN-to-KC,CentralBrain-unspecified,46159,0.11982223560531528,189,2519 +watched-PN-to-ALLN,AL(L),857,0.037922031948316295,1,100 +watched-PN-to-ALLN,AL(R),21742,0.9620779680516837,7,197 +ALLN-to-watched-PN,AL(L),943,0.04956896551724138,132,1 +ALLN-to-watched-PN,AL(R),18078,0.950273338940286,220,7 +ALLN-to-watched-PN,LAL(R),1,5.256518082422203e-05,1,1 +ALLN-to-watched-PN,CentralBrain-unspecified,2,0.00010513036164844407,2,1 diff --git a/registry/phase4aa-apl-pn-scope/evidence/localization/protocol.json b/registry/phase4aa-apl-pn-scope/evidence/localization/protocol.json new file mode 100644 index 0000000..b3a1e0d --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/localization/protocol.json @@ -0,0 +1,10 @@ +{ + "before_analysis": true, + "coordinate_unit_nm": 8, + "distance_to_microns_multiplier": 0.008, + "nearest_neighbor_is_not_bouton_or_functional_identity": true, + "protocol_sha256": "b87a601d869f0a4cf7f88ccb2b7f5592b22da25d11d3e5bfb1be4bba05c079c0", + "source_generation": "1780494942562468", + "source_script_sha256": "aca6c69399538a41bc9148f2c837f0546e8a39d6b2b833585b9c55e53fa8414b", + "source_sha256": "959d8ef4173b35382a3e6acfaf5167c795b6d10b877572d146af04e1b487bc07" +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/localization/spatial-neighborhoods.csv b/registry/phase4aa-apl-pn-scope/evidence/localization/spatial-neighborhoods.csv new file mode 100644 index 0000000..c21a612 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/localization/spatial-neighborhoods.csv @@ -0,0 +1,260 @@ +PN_body_id,PN_neuron_idx,APL_postsynaptic_contacts,PN_to_KC_unique_presynaptic_sites,nearest_distance_microns_min,nearest_distance_microns_median,nearest_distance_microns_p95,nearest_distance_microns_max,bouton_identity_confirmed,watched +10039,30,50,760,0.32614107377023216,0.6377925913705558,1.0157144370388704,1.038183028179521,False,True +10049,40,14,245,0.29869047524151154,0.5070181997019045,0.6956626167431111,0.7455467792164352,False,False +10075,62,13,160,0.4121358999165203,0.7135712998712883,5.210429213570748,6.738840256305235,False,False +10084,71,73,1490,0.1643411086733931,0.6488389630717317,1.235898708508112,6.909022506838432,False,False +10111,97,21,705,0.19563230817019975,0.5261786768769712,1.1529440576194494,1.31835048450706,False,False +10126,112,97,1954,0.318898102847916,0.6312400494265237,1.067649862983311,2.611727397719754,False,False +10134,120,58,791,0.2573713270743266,0.5799221993097676,0.8263424135347435,26.008841573588008,False,False +10176,159,131,1187,0.28833314065504156,0.6899507228780908,1.2866005144428363,5.110127982741724,False,False +10198,179,7,436,0.2692805228753094,0.5452925820144632,0.9529021783619328,0.9987832597716083,False,True +10208,189,242,1815,0.19249935064825544,0.7015405674292241,1.3275406085019374,29.84357619321116,False,False +10262,241,18,679,0.28599300690751167,0.6585069777901823,7.330699538507631,10.971768863770327,False,False +10321,296,59,910,0.28855502074994294,0.6648187722981355,0.9567395499684019,1.0458604113360443,False,False +10359,331,51,487,0.2819361629872975,0.6230762393158641,0.9828316447841321,1.208185416233783,False,False +10390,360,54,963,0.24851559307214507,0.6404856063390175,1.1311501585139474,5.960300663557167,False,False +10423,390,79,949,0.30473595127585457,0.6720952313474632,1.1543230357208136,2.147281071494833,False,False +10429,394,22,615,0.37710475998056564,0.7223503097087192,1.9780408516324008,2.3923076725204058,False,False +10470,434,72,1544,0.261686835740738,0.5755012228571407,1.3499778960888393,3.1809633760859306,False,False +10522,484,50,922,0.18948350851723217,0.6133988644854391,1.0063114755667468,1.1817546276617663,False,True +10524,486,73,1033,0.26868568997994663,0.6228707731142954,1.208067778367167,13.04661182069889,False,False +10530,492,4,128,0.417612260356422,0.6297676320484469,0.7068760993035946,0.7166142616498782,False,False +10561,522,72,1154,0.2892196397204035,0.5594334554511577,0.9075554799533935,8.317765084444257,False,False +10569,530,32,1622,0.34344140693865094,0.5911886331789541,1.007924544778516,1.166629332735981,False,False +10613,571,44,1026,0.2845347079004598,0.7007599396676927,1.3020943384042432,3.6613527554716714,False,False +10653,607,17,228,0.35072496346852755,0.6557072517518775,7.569693664215983,8.24450750499992,False,False +10670,622,77,1234,0.21150886506243657,0.624256357596781,0.991618336822589,12.156275745474023,False,False +10716,666,26,264,0.41630757860024603,0.6325346181862803,2.9666127297868234,36.74516523299358,False,False +10736,683,2,564,0.7581451048447125,0.8036758967332555,0.8446536094329441,0.8492066886217984,False,False +10756,700,18,509,0.4395634197701169,0.6719841756401636,0.9931510483404092,1.0864400581716416,False,False +10767,710,35,456,0.32819506394825626,0.5933498125052371,0.7820672190543125,2.0333224043422136,False,False +10786,728,11,295,0.35290792000180443,0.5934037411408862,1.0593272677927135,1.3445951063424262,False,False +10808,749,25,391,0.46606437323614425,0.6743292964123685,1.0249367606869804,1.1931538040001382,False,False +10877,813,59,921,0.2007984063681781,0.5932419405267972,0.9891269815447413,12.505842474619612,False,False +10904,835,29,484,0.31414646265714974,0.66332495807108,0.9225660722748511,1.0092056282046786,False,False +10906,837,24,366,0.30630703550522637,0.5997045290661167,1.798333495903597,2.2306806136244606,False,False +10973,900,20,313,0.5832323722153975,0.9738278971635564,1.3573624290600375,1.4574498276098564,False,False +10996,921,21,703,0.13096564434995922,0.6802352534234021,1.1897697256192057,4.319770364267064,False,False +11050,972,75,580,0.3089077532209252,0.7907464827617003,3.66819676789212,11.449786024201499,False,False +11080,999,47,533,0.23879698490558882,0.6376958522681483,1.3184664869397695,14.67713105480768,False,False +11092,1011,43,638,0.3283900120283807,0.6287511431401139,1.7176082059335904,8.594688592380763,False,False +11105,1022,29,644,0.264,0.5513039089286416,4.199204667204444,7.757875997977797,False,False +11135,1050,9,137,0.3740374312819507,0.6630354439997911,1.747743054697715,2.2039528125620116,False,False +11143,1056,44,483,0.2745760368276882,0.6900834677187604,1.8152050919471376,6.851349648062052,False,False +11229,1138,13,639,0.379810479055015,0.6812224306348111,1.731704442588357,2.6925913169287314,False,False +11283,1191,16,116,0.38690567325899994,0.856325302116866,6.500469046082351,16.003751560181133,False,False +11355,1262,11,322,0.4608166663652694,0.646615805559994,0.8102247777993361,0.8573820618604054,False,False +11390,1294,6,125,0.5452338947644396,0.6921425091298001,0.8236643705374138,0.8253968742368728,False,False +11467,1370,29,791,0.4004797123450825,0.6110450065257059,3.2373904688166864,4.612705930362351,False,False +11469,1372,9,616,0.21346662502602134,0.5479270024373685,0.6600577648809263,0.6716665839536756,False,False +11471,1374,24,391,0.2433105012119288,0.5968700246024764,0.9242375461303489,3.9988958476059366,False,False +11514,1413,11,188,0.03752332607858744,0.5996799146211251,1.047557367064608,1.1092628182716664,False,False +11521,1420,40,434,0.3015692291995322,0.7886809052834882,1.9885164239505988,10.202340123716715,False,False +11564,1458,13,162,0.34185376990754396,0.6055212630453204,3.469547371838683,7.118768432811957,False,False +11624,1514,12,387,0.49198373956869756,0.7084754807733484,0.9886078724779322,1.0037370173506603,False,False +11703,1590,32,451,0.28385911998736274,0.6247977041659403,1.124298660328737,1.322155815325864,False,False +11721,1607,12,188,0.48166378315169184,0.6680994997077767,0.9803144047290633,1.048518955479585,False,False +11761,1644,78,621,0.266172876153826,0.8609996955826638,2.8232245881500204,5.2193486183622575,False,True +11780,1661,7,187,0.29131426329653,0.5675491168172143,1.223570895379603,1.3624918348379191,False,False +11816,1694,5,158,0.513186126079028,0.5871694814957603,0.7837760630111454,0.8197950963503013,False,False +11817,1695,15,212,0.19216659439142902,0.504,0.7864841691009086,0.8051832089655124,False,False +11829,1707,5,184,0.39686773615399884,0.7209327291779727,3.6690674457928947,4.3511322664336465,False,False +11996,1866,8,145,0.2921917178839948,0.7676937679415607,27.277332948710583,41.49681587784778,False,False +12023,1890,28,381,0.29869047524151154,0.5200568172261075,0.8341553215412327,0.9759672125640287,False,False +12031,1898,2,284,0.3180943256331367,0.5136737269653924,0.6896951881644224,0.709253128297648,False,False +12050,1916,6,198,0.6502184248389152,0.7103485838339838,1.6589125897071337,1.7610905712086473,False,False +12057,1923,37,480,0.24383601046605075,0.5811436999572481,0.8946469221044793,4.539187592510361,False,False +12061,1927,36,427,0.29697137909232935,0.6187552781122321,1.0834408318251099,4.276821249479571,False,False +12121,1982,9,203,0.3307204257375102,0.5797102724637542,0.7273878574986796,0.7723211767134189,False,False +12122,1983,20,192,0.4176888794306116,0.6005565733348903,1.1961133273759836,1.457098486719412,False,False +12152,2010,26,384,0.13023056476879766,0.6078182273914833,2.159064439048579,3.528226750082823,False,False +12160,2018,3,252,0.2827295527531567,0.6568287448033924,1.355789474727001,1.4334517780518465,False,False +12163,2021,15,282,0.3299454500368205,0.5829030794222998,1.265568037608132,1.5102847413650182,False,False +12164,2022,17,405,0.2581162528784269,0.5542562584220408,0.7955910056481913,0.9386287871144802,False,False +12171,2029,30,615,0.29208218021645893,0.6688763423187132,3.543990151781294,4.919941463066405,False,False +12309,2157,24,304,0.3766802357437937,0.8219136756235398,6.1256513607654455,20.381145797035064,False,False +12312,2160,30,317,0.33466401061363027,0.5238238027968327,1.0423692977830707,2.065580789995879,False,False +12314,2162,4,155,0.45663114217057077,0.5811944314729927,1.074252900627574,1.154053724919252,False,False +12340,2186,6,186,0.5072908435996061,0.6166014333140507,1.847429967736642,2.1971472413108777,False,False +12367,2212,27,379,0.3365709434874021,0.6161038873436849,0.9180164599393732,2.0235256361113887,False,False +12387,2231,13,226,0.3712896443479134,0.7878680092502804,1.1248211628712794,1.4648959007383426,False,False +12460,2302,11,215,0.41523005671555135,0.5838355932966061,0.6560632988814886,0.687255411037265,False,False +12509,2347,35,470,0.3257483691440373,0.6239487158412941,0.9168967699182743,1.7971533045347021,False,False +12653,2481,14,186,0.29686360504447157,0.6668383067701869,1.2592524435973163,1.7961024469667648,False,False +12667,2493,2,116,0.78097375115941,2.2100868316139977,3.496288604023127,3.6391999120685856,False,False +12728,2552,23,307,0.3407286310247497,0.7341280542248743,1.3381074128537256,13.739754874087092,False,False +12756,2577,16,261,0.34834465691323585,0.6190715352783277,1.3601982044558092,2.04455961028286,False,False +12782,2601,34,440,0.1848675201326615,0.6427815214276122,1.8864652439762222,2.7969926707090247,False,False +12958,2769,15,186,0.3678260458423248,0.6775012915116841,0.8132295773227166,0.848490424224104,False,False +13027,2834,13,298,0.28102668912400475,0.4785310857196218,0.8814884521506193,1.1695606012515982,False,False +13064,2867,6,207,0.604675119382301,0.6724499884806354,17.244028143678836,22.69306149465074,False,False +13143,2943,8,129,0.6930512246580335,0.8955212003391351,8.650116076626958,12.514787413296322,False,False +13198,2994,5,86,0.5500836300054747,0.6263034408335947,13.210571011605778,16.322803680740634,False,False +13225,3016,7,152,0.34834465691323585,0.6203998710509214,0.7886940270708234,0.8500729380470831,False,False +13230,3021,10,312,0.28408449447303524,0.5310310273191101,0.6829924200646902,0.7485880041785334,False,False +13283,3073,22,347,0.3212973700483713,0.6751091132487539,1.306834754206641,3.3692349279918137,False,False +13334,3120,14,304,0.4911374553014665,0.96656492789931,1.4580662464634182,1.5603486789817205,False,False +13356,3139,26,492,0.29120439557122074,0.567304240899144,2.0570103732234926,4.568224162625999,False,False +13379,3161,8,120,0.3974317551479751,1.1133827711251554,7.701570847794709,8.257678124024936,False,False +13386,3168,14,273,0.4267083312990268,0.7406497852340362,5.563681943926102,6.230957550810309,False,False +13389,3171,2,0,,,,,False,False +13423,3202,17,243,0.2892196397204035,0.7249165469210922,0.9027194353201443,0.9238874390314007,False,False +13470,3244,34,276,0.243047320495413,0.6980657173443017,1.3119277161320917,8.612404077840287,False,False +13479,3252,24,385,0.3123075407350902,0.5836262172991361,3.8609463069298298,5.2185576551380555,False,False +13480,3253,15,270,0.43992726671576066,0.7965525720252242,2.8313405547340573,3.418387924153723,False,False +13483,3256,12,161,0.45536798306424664,0.6468204096746626,1.6328343647898786,2.4628308914742805,False,False +13582,3345,9,106,0.5547756303227459,0.8081979955431714,11.27385077521004,17.964444884270705,False,False +13583,3346,1,76,0.6996684929307593,0.6996684929307593,0.6996684929307593,0.6996684929307593,False,False +13610,3369,1,19,4.531037850206065,4.531037850206065,4.531037850206065,4.531037850206065,False,False +13683,3435,1,0,,,,,False,False +13684,3436,16,194,0.5358208655884912,1.0557811359284477,24.678444027325526,37.96116668386261,False,False +13725,3474,9,257,0.40823522630953835,0.7411126769931817,0.9794265945325361,0.9997759749063787,False,False +13951,3682,2,0,,,,,False,False +13972,3702,8,233,0.3391282943076263,0.6037041840745634,18.71503213735075,27.57875704233242,False,False +14339,4026,12,129,0.4402181277503233,0.7623138335811543,1.0162622747665608,1.027525182173167,False,False +14360,4044,1,1,39.70692634793078,39.70692634793078,39.70692634793078,39.70692634793078,False,False +14391,4072,1,7,10.831816837446985,10.831816837446985,10.831816837446985,10.831816837446985,False,False +14427,4104,16,183,0.3930597918892239,0.872913893910148,32.97647726049697,39.942211856631076,False,False +14430,4107,8,154,0.383833297148645,0.5425917248177344,0.8140275818219435,0.8770860847146078,False,False +14437,4113,21,422,0.384166630513375,0.6562926176637979,0.9122806585694997,0.9408081632298905,False,False +14442,4117,33,286,0.38023150842611664,0.7903821860340731,13.067605094312134,30.320102374497353,False,False +14510,4173,9,141,0.5324659613533996,0.624461367900369,4.627706419637789,7.127609416908309,False,False +14530,4192,5,356,0.19216659439142902,0.7040454530781376,7.251532012278495,8.81106940161068,False,False +14607,4260,8,166,0.38607771238443694,0.7603700534836302,13.836575017990047,14.303046948115636,False,False +14661,4311,19,228,0.43715443495405604,0.6290055643633051,1.0473098525141546,1.2635695469581403,False,False +14665,4315,8,253,0.32741411087489797,0.5041621920962851,0.7653150967589325,0.7720725354524663,False,False +14685,4334,23,240,0.3015692291995322,0.6887437840009883,1.2719550995462838,5.294072156667304,False,False +14802,4441,8,204,0.5286057131738173,0.733251144571315,2.2208673423373395,2.9886505315944856,False,False +14849,4482,4,221,0.7109205300172445,1.7497595853179138,3.7452396237330268,3.9286516771024638,False,False +14874,4505,13,224,0.39815574842013773,0.7125840301325873,1.0645507790499926,1.2754418842111155,False,False +14895,4523,7,170,0.28011426240018555,0.5678309607620915,4.139939101956552,5.663514103452026,False,False +14962,4584,3,171,0.34576292455958896,0.4509190614733425,0.6501489943629835,0.6722856535729436,False,False +14985,4605,10,280,0.2858810941632902,0.5954338313083036,5.9247690925651755,10.22323001795421,False,False +15005,4624,14,282,0.3638900932974131,0.6415649582765385,7.788698750353716,8.365858234514855,False,False +15164,4768,21,267,0.36494383129462543,0.7984384760268007,1.3458320846227436,4.420468753424234,False,False +15184,4786,22,281,0.3585749572962395,0.4929957778627513,3.7383476333898455,4.527250821414692,False,False +15313,4905,10,215,0.4565610583481688,0.6478016084383897,0.9002416938618388,0.9528735487985802,False,False +15431,5004,7,194,0.285657137141714,0.5412282328186512,5.729870312008391,7.8146406187360915,False,False +15823,5359,3,225,0.40776463799598905,0.4186836514601448,2.4204088251760725,2.642822733366731,False,False +15992,5507,11,262,0.42580746822948046,0.6162077571728548,8.53305777861707,9.51156937629117,False,False +16005,5519,12,228,0.29076450952617994,0.7907462441011601,2.7027797281064845,4.54587989282603,False,False +16083,5584,8,387,0.36599453547833194,0.539097723240848,0.8355479273804274,0.8476603093220775,False,False +16141,5634,17,378,0.274342851191716,0.5962549790148506,0.9909685196291255,1.9081132041888922,False,False +16206,5692,19,209,0.3035786553761644,0.7768243044601527,5.4874302355127424,5.983545437280476,False,False +16207,5693,24,283,0.3243701589234127,0.6178784342440413,1.0783867888984282,6.477994751464376,False,False +16228,5712,3,143,0.4903549734631026,3.6921105075552654,3.798021596702911,3.809789495497094,False,False +16426,5890,11,175,0.22936433898930322,0.5182123117024526,0.8032976515015535,0.8826505537300705,False,False +16433,5897,13,259,0.34953683639925565,0.5315035277399389,0.8879205333546676,0.9802530285594634,False,False +16524,5984,15,216,0.3050508154390019,0.5820790324345999,2.7022572275446475,7.230265278674082,False,False +16610,6065,14,218,0.37360942172273975,0.6314137793312602,8.825866879945405,12.344259232533963,False,True +16648,6099,7,336,0.34176014981270125,0.6555120136198879,2.8780222562961333,3.7979194304250323,False,False +17027,6435,28,211,0.379810479055015,0.7206300427718736,15.660008961121113,18.972259327765897,False,False +17052,6455,1,245,1.319078466202826,1.319078466202826,1.319078466202826,1.319078466202826,False,False +17350,6721,20,292,0.3056795707926848,0.4391915491386068,1.1807609819159,10.560906021738854,False,False +17484,6842,13,421,0.27573900703382537,0.6296665784365564,0.957697250580957,0.9940945629063667,False,True +17540,6892,26,245,0.3123075407350902,0.6493715536314535,2.489415542034171,14.362642653773714,False,False +17569,6919,26,287,0.37480661680391936,0.7462821325774369,3.664540378398322,7.110060477942505,False,False +17570,6920,11,179,0.3426018096858217,0.6294124244086702,10.271299374166786,19.65846301214823,False,False +17650,6994,27,265,0.298261630116916,0.6137100292483414,0.9932412956038068,1.113150483986779,False,False +18015,7322,20,275,0.13994284547628721,0.5846721320199835,1.1286013411558016,1.48069173023962,False,False +18049,7354,3,350,0.44130714927360964,0.5436469442570242,0.8290258074293176,0.860734570004017,False,False +18084,7385,9,203,0.25298221281347033,0.4773929199307422,0.5995161554216086,0.60398675482166,False,False +18417,7680,13,287,0.3130239607442216,0.6418473338730948,17.023961709794467,32.108076491748925,False,False +18493,7746,7,198,0.3089077532209252,0.7910701612372951,1.8621990317976387,2.0591881895543205,False,False +18536,7781,4,213,0.46551476883123694,0.913160758925206,1.3092432200734123,1.3684911399055533,False,False +18776,8001,1,106,0.5410508294051494,0.5410508294051494,0.5410508294051494,0.5410508294051494,False,False +18834,8055,4,149,0.3741229744348775,0.6965902118078217,0.8348221255215589,0.8348796320428472,False,False +18867,8083,19,247,0.3111784054204276,0.8104122407762608,10.856442784627307,12.620301105758136,False,False +19339,8504,4,118,0.3638900932974131,0.7282490506400698,1.7489609139183684,1.9105266289690912,False,False +19579,8717,15,187,0.4058768286069063,0.5494433546781688,7.503907063971629,8.713410354160994,False,False +19743,8866,15,211,0.3062025473440742,0.6503168458528504,5.393470834937232,6.490150075306426,False,False +19845,8955,13,419,0.4359816509900388,0.7095237839565353,1.0166321472193651,1.2009596163068932,False,False +19953,9052,13,298,0.33447271936587,0.47227110858065413,2.630796352417527,4.888739714895855,False,False +20001,9096,12,194,0.45747131057586554,0.6190283022935843,1.0780469612097254,1.1440279716860073,False,False +20105,9188,1,125,0.4912677477710093,0.4912677477710093,0.4912677477710093,0.4912677477710093,False,False +20311,9370,1,100,0.42835499296728174,0.42835499296728174,0.42835499296728174,0.42835499296728174,False,False +20445,9484,10,186,0.2636361128525453,0.5653575968201356,2.174781152295212,2.6065149145938147,False,False +20739,9752,29,267,0.35354207670374965,0.7008109588184249,8.159526941202612,8.483976426181298,False,False +20910,9904,8,65,0.4653772663119676,1.0311387039609627,5.822773263040927,6.067086285854191,False,False +21132,10097,14,222,0.2772435752186153,0.6437360612164347,11.005588317436994,16.629038697411225,False,False +21876,10769,1,98,0.5753885643632484,0.5753885643632484,0.5753885643632484,0.5753885643632484,False,False +22473,11316,1,1,6.806255945819259,6.806255945819259,6.806255945819259,6.806255945819259,False,False +22494,11334,10,144,0.32760952367109236,0.6716545429864358,1.6171792970700571,2.1280300749754457,False,False +22569,11398,16,183,0.24119701490690137,0.6570809663203359,1.299892996308553,2.3309946374884696,False,False +22717,11533,2,50,1.1347598864958173,5.830603290209351,10.05686235355153,10.526446693922884,False,False +22787,11598,11,133,0.5365966828074882,1.075873598523544,9.223309871278309,9.271257951324621,False,False +22977,11770,1,0,,,,,False,False +23200,11961,8,109,0.4963224758158752,0.7047155791018018,6.512475442450915,7.454364627518566,False,False +23339,12088,8,186,0.39232639472765535,0.6128411390522497,0.723230286030349,0.7251372283919783,False,False +23718,12423,1,133,0.5041269681340208,0.5041269681340208,0.5041269681340208,0.5041269681340208,False,False +23958,12644,2,100,0.622459637245661,5.217853912641039,9.353708760496879,9.813248188036416,False,False +24352,12997,2,226,0.7926865710985648,3.1462640116794014,5.264483708202154,5.499841452260238,False,False +24502,13128,6,0,,,,,False,False +24660,13262,2,108,0.39597979746446665,0.4999832761430633,0.5935864069538003,0.60398675482166,False,False +24841,13423,6,59,0.34446480226577575,0.49995595811598204,9.226590093766102,12.113294514705732,False,False +25166,13715,7,236,0.30082553083141067,0.7576806715233009,0.8850323383283332,0.9299978494598792,False,False +25433,13955,1,0,,,,,False,False +25927,14395,1,0,,,,,False,False +26071,14519,1,59,1.1997066308060484,1.1997066308060484,1.1997066308060484,1.1997066308060484,False,False +26102,14547,23,197,0.4046133957248574,0.6625526394181824,1.1825500512074387,10.060985240024955,False,False +26223,14655,5,62,0.11482160075525859,0.7376069413990083,8.038708970049392,9.82740657549081,False,False +26387,14805,10,233,0.38449967490233333,0.5823594241803629,10.438049311835266,12.647283977202378,False,False +26423,14839,6,99,0.14333178293735133,0.48817005300913824,0.5905625698615347,0.6206061553030231,False,False +26845,15212,11,113,0.23919866220361688,0.7725697379525036,9.144603734119638,13.287255849120992,False,False +27024,15369,8,184,0.5067859508707794,0.5562855686616777,0.9255250400952805,1.0835497219786454,False,False +27379,15687,2,31,0.4303672850020085,0.6039457805751742,0.7601664265910234,0.77752427614834,False,False +27775,16042,13,199,0.3226887044815793,0.5832323722153975,5.743631709563589,13.233315533153437,False,False +28680,16855,19,180,0.4488563244513772,7.079606768740762,33.296315845558894,38.256225846259326,False,False +29176,17293,9,128,0.3410102637751538,0.5452925820144632,4.496604934294457,4.5205167846165555,False,False +29217,17327,8,93,0.3794733192202055,0.7988114731436029,67.24376940287789,67.97712415217343,False,False +29750,17809,11,195,0.37820629291433006,0.5829030794222998,8.852515500389558,10.94168981464929,False,False +29824,17874,16,112,0.4023133107417651,4.849410006905966,36.703932503508454,36.73136120537871,False,False +31117,19004,5,28,0.3286822173467862,0.4978674522400515,4.064437160856841,4.342961201760844,False,False +31348,19196,1,14,0.5452338947644396,0.5452338947644396,0.5452338947644396,0.5452338947644396,False,False +33987,21524,1,1,0.1732512626216617,0.1732512626216617,0.1732512626216617,0.1732512626216617,False,False +34301,21802,2,102,0.6251271870587617,0.6390478963679707,0.6515765347462587,0.6529686056771795,False,False +34385,21875,13,168,0.3426018096858217,0.6206061553030231,1.407714419242509,2.1950927087483114,False,False +38510,25520,6,125,0.39879819457966453,0.5570715217642417,6.6850951708542246,8.573682522697,False,False +39922,26772,2,46,0.3287795614085523,0.5008180791573046,0.6556527451311817,0.6728565969060569,False,False +43363,29804,1,0,,,,,False,False +43489,29917,1,0,,,,,False,False +44995,31238,5,24,0.3688685402687521,0.581418953939412,1.9946418707315496,2.2240143884426646,False,False +52099,37369,4,16,0.1470782104868019,0.6014202214289611,4.257956130003902,4.889551308658086,False,False +52223,37468,3,78,0.318898102847916,2.4198776828591977,12.563241133102341,13.690281516462692,False,False +54383,39352,2,0,,,,,False,False +77438,58326,1,0,,,,,False,False +87970,66580,6,12,0.5443528267585279,17.261144311009964,37.018028485976764,38.3107588021955,False,False +89871,68010,10,32,0.2583640841912823,4.798347125417276,46.6074945655719,46.76536496168933,False,False +92909,70280,1,0,,,,,False,False +95720,72419,2,11,0.5970594610254493,10.512318841317784,19.436052283580885,20.42757822161012,False,False +97057,73384,10,3,0.9848451654955717,29.791203086187352,38.59962633030649,39.990717322898824,False,False +140108,101754,1,0,,,,,False,False +511807,125773,7,156,0.4279813080030482,0.5526373132534573,0.628847793076934,0.6484442921331022,False,False +512883,126350,7,118,0.630986529174752,1.0737299474262605,1.9429483680333606,2.2373984893174486,False,False +513513,126688,30,288,0.2976172038038124,0.6582979886793796,6.286241844673976,12.77225994098147,False,False +515440,127785,1,0,,,,,False,False +516097,128185,1,10,8.032880429833373,8.032880429833373,8.032880429833373,8.032880429833373,False,False +516162,128229,11,213,0.4773929199307422,0.8118324950382314,4.652621054210245,5.035992057181981,False,False +516322,128299,1,0,,,,,False,False +517351,128946,11,133,0.36318590281011737,0.7301068414965032,20.41046665011151,35.61922896414239,False,False +518294,129486,5,200,0.42835499296728174,0.7207107602915334,13.64557938863755,16.192351774834933,False,False +519572,130257,12,243,0.4107359248957899,0.6399896128347567,17.17223333138889,25.57381035356288,False,False +519850,130400,6,155,0.38937899275641463,0.6860508519851847,0.8587043874263335,0.8621090418270766,False,False +519970,130472,25,420,0.261686835740738,0.6014382761348,0.8964241177210769,1.0453095235383632,False,False +520003,130497,39,510,0.24488364584022346,0.6913870117379991,1.0493931052332905,1.8535328429785107,False,False +520466,130753,17,574,0.2902137143554729,0.6767924349458998,4.239893907283367,16.721069822233265,False,False +520475,130758,2,213,0.14444376068214232,0.41083079930216404,0.6505791340601836,0.6772178379221858,False,False +520916,130990,19,589,0.3403527581789224,0.6434904816700865,1.4966526803993225,1.6595710289107846,False,False +521437,131226,35,475,0.3850818094898797,0.6405997190133633,1.686069575556858,19.195529479542884,False,False +521575,131311,17,190,0.41523005671555135,0.6961838837548597,8.861712960683988,14.063638220602805,False,False +523351,131777,21,213,0.5445879176037602,1.0626758677978907,11.597089289989967,15.740963121740677,False,False +524207,132182,14,213,0.3855800824731485,0.6310360908570465,1.431911259528012,2.3861600952157422,False,False +525105,132659,26,435,0.34770102099361166,0.723303499565019,3.6806594944390745,8.314709856633604,False,False +527523,133646,8,194,0.1670449041425688,0.7109879102488461,4.88861310969004,6.946257697494385,False,False +527524,133647,8,177,0.4608166663652694,0.7883505242132749,3.4457338073328163,4.4332705759969135,False,False +527577,133666,35,836,0.28955137713366175,0.6166749548992565,0.9691512753099297,2.8537582238164463,False,True +529665,134090,23,462,0.3407286310247497,0.7365650005260906,1.1474987180891179,3.9528096336656535,False,False +538094,137761,1,13,41.03361899711016,41.03361899711016,41.03361899711016,41.03361899711016,False,False +547655,140635,8,66,0.3883091551843711,0.6145628340339906,6.248013503990884,9.046231480566922,False,False +563873,143201,3,16,2.0108823933785884,2.668848440807383,6.498084484599408,6.923555156131855,False,False +564174,143218,35,290,0.27011108825814617,0.6163635290962631,2.242550067586304,12.19257478960043,False,False diff --git a/registry/phase4aa-apl-pn-scope/evidence/localization/summary.json b/registry/phase4aa-apl-pn-scope/evidence/localization/summary.json new file mode 100644 index 0000000..8574a84 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/localization/summary.json @@ -0,0 +1,359 @@ +{ + "APL_target_PNs_localized": 259, + "APL_to_PN_contacts_localized": 4600, + "APL_to_PN_pairs_localized": 268, + "ROI_counts": [ + { + "contacts": 2063, + "fraction": 0.4484782608695652, + "group": "APL-to-PN", + "primary_post": "CA(L)", + "source_bodies": 1, + "target_bodies": 118 + }, + { + "contacts": 1757, + "fraction": 0.3819565217391304, + "group": "APL-to-PN", + "primary_post": "CA(R)", + "source_bodies": 1, + "target_bodies": 122 + }, + { + "contacts": 2, + "fraction": 0.0004347826086956522, + "group": "APL-to-PN", + "primary_post": "LH(L)", + "source_bodies": 1, + "target_bodies": 2 + }, + { + "contacts": 2, + "fraction": 0.0004347826086956522, + "group": "APL-to-PN", + "primary_post": "PED(R)", + "source_bodies": 1, + "target_bodies": 1 + }, + { + "contacts": 34, + "fraction": 0.007391304347826087, + "group": "APL-to-PN", + "primary_post": "SCL(L)", + "source_bodies": 1, + "target_bodies": 22 + }, + { + "contacts": 8, + "fraction": 0.0017391304347826088, + "group": "APL-to-PN", + "primary_post": "SLP(R)", + "source_bodies": 1, + "target_bodies": 8 + }, + { + "contacts": 3, + "fraction": 0.0006521739130434783, + "group": "APL-to-PN", + "primary_post": "a'L(L)", + "source_bodies": 1, + "target_bodies": 2 + }, + { + "contacts": 731, + "fraction": 0.15891304347826088, + "group": "APL-to-PN", + "primary_post": "CentralBrain-unspecified", + "source_bodies": 2, + "target_bodies": 163 + }, + { + "contacts": 2272, + "fraction": 0.43449990437942243, + "group": "PN-to-APL", + "primary_post": "CA(L)", + "source_bodies": 117, + "target_bodies": 1 + }, + { + "contacts": 2204, + "fraction": 0.4214955058328552, + "group": "PN-to-APL", + "primary_post": "CA(R)", + "source_bodies": 119, + "target_bodies": 1 + }, + { + "contacts": 6, + "fraction": 0.0011474469305794606, + "group": "PN-to-APL", + "primary_post": "CRE(L)", + "source_bodies": 1, + "target_bodies": 1 + }, + { + "contacts": 4, + "fraction": 0.0007649646203863071, + "group": "PN-to-APL", + "primary_post": "CRE(R)", + "source_bodies": 1, + "target_bodies": 1 + }, + { + "contacts": 6, + "fraction": 0.0011474469305794606, + "group": "PN-to-APL", + "primary_post": "LH(L)", + "source_bodies": 3, + "target_bodies": 1 + }, + { + "contacts": 12, + "fraction": 0.002294893861158921, + "group": "PN-to-APL", + "primary_post": "LH(R)", + "source_bodies": 2, + "target_bodies": 1 + }, + { + "contacts": 3, + "fraction": 0.0005737234652897303, + "group": "PN-to-APL", + "primary_post": "PED(R)", + "source_bodies": 1, + "target_bodies": 1 + }, + { + "contacts": 43, + "fraction": 0.008223369669152802, + "group": "PN-to-APL", + "primary_post": "SCL(L)", + "source_bodies": 18, + "target_bodies": 1 + }, + { + "contacts": 12, + "fraction": 0.002294893861158921, + "group": "PN-to-APL", + "primary_post": "SIP(L)", + "source_bodies": 1, + "target_bodies": 1 + }, + { + "contacts": 7, + "fraction": 0.0013386880856760374, + "group": "PN-to-APL", + "primary_post": "SIP(R)", + "source_bodies": 1, + "target_bodies": 1 + }, + { + "contacts": 8, + "fraction": 0.0015299292407726143, + "group": "PN-to-APL", + "primary_post": "SLP(R)", + "source_bodies": 3, + "target_bodies": 1 + }, + { + "contacts": 4, + "fraction": 0.0007649646203863071, + "group": "PN-to-APL", + "primary_post": "SMP(L)", + "source_bodies": 1, + "target_bodies": 1 + }, + { + "contacts": 10, + "fraction": 0.0019124115509657677, + "group": "PN-to-APL", + "primary_post": "a'L(L)", + "source_bodies": 1, + "target_bodies": 1 + }, + { + "contacts": 2, + "fraction": 0.00038248231019315357, + "group": "PN-to-APL", + "primary_post": "aL(L)", + "source_bodies": 1, + "target_bodies": 1 + }, + { + "contacts": 636, + "fraction": 0.12162937464142283, + "group": "PN-to-APL", + "primary_post": "CentralBrain-unspecified", + "source_bodies": 130, + "target_bodies": 2 + }, + { + "contacts": 153554, + "fraction": 0.3986044664342508, + "group": "PN-to-KC", + "primary_post": "CA(L)", + "source_bodies": 123, + "target_bodies": 1870 + }, + { + "contacts": 184483, + "fraction": 0.4788917760604731, + "group": "PN-to-KC", + "primary_post": "CA(R)", + "source_bodies": 123, + "target_bodies": 1890 + }, + { + "contacts": 15, + "fraction": 3.893787850862734e-05, + "group": "PN-to-KC", + "primary_post": "LH(L)", + "source_bodies": 2, + "target_bodies": 1 + }, + { + "contacts": 14, + "fraction": 3.634201994138552e-05, + "group": "PN-to-KC", + "primary_post": "PLP(L)", + "source_bodies": 3, + "target_bodies": 1 + }, + { + "contacts": 792, + "fraction": 0.0020559199852555232, + "group": "PN-to-KC", + "primary_post": "SCL(L)", + "source_bodies": 25, + "target_bodies": 62 + }, + { + "contacts": 140, + "fraction": 0.00036342019941385515, + "group": "PN-to-KC", + "primary_post": "SCL(R)", + "source_bodies": 9, + "target_bodies": 20 + }, + { + "contacts": 57, + "fraction": 0.00014796393833278388, + "group": "PN-to-KC", + "primary_post": "SLP(R)", + "source_bodies": 11, + "target_bodies": 18 + }, + { + "contacts": 15, + "fraction": 3.893787850862734e-05, + "group": "PN-to-KC", + "primary_post": "SMP(L)", + "source_bodies": 1, + "target_bodies": 9 + }, + { + "contacts": 46159, + "fraction": 0.11982223560531528, + "group": "PN-to-KC", + "primary_post": "CentralBrain-unspecified", + "source_bodies": 189, + "target_bodies": 2519 + }, + { + "contacts": 857, + "fraction": 0.037922031948316295, + "group": "watched-PN-to-ALLN", + "primary_post": "AL(L)", + "source_bodies": 1, + "target_bodies": 100 + }, + { + "contacts": 21742, + "fraction": 0.9620779680516837, + "group": "watched-PN-to-ALLN", + "primary_post": "AL(R)", + "source_bodies": 7, + "target_bodies": 197 + }, + { + "contacts": 943, + "fraction": 0.04956896551724138, + "group": "ALLN-to-watched-PN", + "primary_post": "AL(L)", + "source_bodies": 132, + "target_bodies": 1 + }, + { + "contacts": 18078, + "fraction": 0.950273338940286, + "group": "ALLN-to-watched-PN", + "primary_post": "AL(R)", + "source_bodies": 220, + "target_bodies": 7 + }, + { + "contacts": 1, + "fraction": 5.256518082422203e-05, + "group": "ALLN-to-watched-PN", + "primary_post": "LAL(R)", + "source_bodies": 1, + "target_bodies": 1 + }, + { + "contacts": 2, + "fraction": 0.00010513036164844407, + "group": "ALLN-to-watched-PN", + "primary_post": "CentralBrain-unspecified", + "source_bodies": 2, + "target_bodies": 1 + } + ], + "bouton_identity_confirmed": false, + "full_source_rows_streamed": 311833243, + "groups": [ + { + "canonical_pairs": 12027, + "canonical_rows": 443915, + "duplicate_partner_rows": 0, + "group": "APL-incident", + "mismatches": [], + "pass": true, + "rows": 500348 + }, + { + "canonical_pairs": 21978, + "canonical_rows": 385229, + "duplicate_partner_rows": 0, + "group": "APL-target-PN-to-KC", + "mismatches": [], + "pass": true, + "rows": 385229 + }, + { + "canonical_pairs": 823, + "canonical_rows": 22599, + "duplicate_partner_rows": 0, + "group": "watched-PN-to-ALLN", + "mismatches": [], + "pass": true, + "rows": 22599 + }, + { + "canonical_pairs": 886, + "canonical_rows": 19024, + "duplicate_partner_rows": 0, + "group": "ALLN-to-watched-PN", + "mismatches": [], + "pass": true, + "rows": 19024 + } + ], + "new_dynamics": false, + "pass": true, + "source_sha256": "959d8ef4173b35382a3e6acfaf5167c795b6d10b877572d146af04e1b487bc07", + "spatial_location_from_official_partners": true, + "target_receptor_confirmed": false, + "terminal_inhibition_coefficient_known": false, + "wall_seconds": 37.98379981498874, + "whole_brain_functional_intervention_run": false +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/localization/watched-PN-ROI.json b/registry/phase4aa-apl-pn-scope/evidence/localization/watched-PN-ROI.json new file mode 100644 index 0000000..b126e90 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/localization/watched-PN-ROI.json @@ -0,0 +1,164 @@ +[ + { + "ALLN-to-watched-PN": { + "AL(R)": 3277 + }, + "APL-to-PN": { + "CA(R)": 47, + "CentralBrain-unspecified": 3 + }, + "PN-to-APL": { + "CA(R)": 66, + "CentralBrain-unspecified": 4 + }, + "PN-to-KC": { + "CA(R)": 3168, + "CentralBrain-unspecified": 342 + }, + "body_id": 10039, + "neuron_idx": 30, + "type": "VL2a_adPN", + "watched-PN-to-ALLN": { + "AL(R)": 4771 + } + }, + { + "ALLN-to-watched-PN": { + "AL(R)": 1703 + }, + "APL-to-PN": { + "CA(R)": 7 + }, + "PN-to-APL": { + "CA(R)": 52 + }, + "PN-to-KC": { + "CA(R)": 1654, + "CentralBrain-unspecified": 17, + "SLP(R)": 13 + }, + "body_id": 10198, + "neuron_idx": 179, + "type": "VA7l_adPN", + "watched-PN-to-ALLN": { + "AL(R)": 2769 + } + }, + { + "ALLN-to-watched-PN": { + "AL(R)": 4768, + "CentralBrain-unspecified": 2 + }, + "APL-to-PN": { + "CA(R)": 49, + "CentralBrain-unspecified": 1 + }, + "PN-to-APL": { + "CA(R)": 86 + }, + "PN-to-KC": { + "CA(R)": 4779, + "CentralBrain-unspecified": 9 + }, + "body_id": 10522, + "neuron_idx": 484, + "type": "VL2p_adPN", + "watched-PN-to-ALLN": { + "AL(R)": 5906 + } + }, + { + "ALLN-to-watched-PN": { + "AL(L)": 943, + "AL(R)": 2361, + "LAL(R)": 1 + }, + "APL-to-PN": { + "CA(R)": 70, + "CentralBrain-unspecified": 8 + }, + "PN-to-APL": { + "CA(R)": 18, + "CentralBrain-unspecified": 1, + "LH(R)": 2 + }, + "PN-to-KC": { + "CA(R)": 2876, + "CentralBrain-unspecified": 345, + "SCL(R)": 2 + }, + "body_id": 11761, + "neuron_idx": 1644, + "type": "VP1d+VP4_l2PN1", + "watched-PN-to-ALLN": { + "AL(L)": 857, + "AL(R)": 2920 + } + }, + { + "ALLN-to-watched-PN": { + "AL(R)": 442 + }, + "APL-to-PN": { + "CA(R)": 13, + "CentralBrain-unspecified": 1 + }, + "PN-to-APL": { + "CA(R)": 3, + "CentralBrain-unspecified": 3 + }, + "PN-to-KC": { + "CA(R)": 1022, + "CentralBrain-unspecified": 36 + }, + "body_id": 16610, + "neuron_idx": 6065, + "type": "VA7m_lPN", + "watched-PN-to-ALLN": { + "AL(R)": 384 + } + }, + { + "ALLN-to-watched-PN": { + "AL(R)": 1547 + }, + "APL-to-PN": { + "CA(R)": 13 + }, + "PN-to-APL": { + "CA(R)": 45 + }, + "PN-to-KC": { + "CA(R)": 2304 + }, + "body_id": 17484, + "neuron_idx": 6842, + "type": "DC2_adPN", + "watched-PN-to-ALLN": { + "AL(R)": 1312 + } + }, + { + "ALLN-to-watched-PN": { + "AL(R)": 3980 + }, + "APL-to-PN": { + "CA(R)": 29, + "CentralBrain-unspecified": 6 + }, + "PN-to-APL": { + "CA(R)": 42, + "CentralBrain-unspecified": 3 + }, + "PN-to-KC": { + "CA(R)": 3857, + "CentralBrain-unspecified": 1101 + }, + "body_id": 527577, + "neuron_idx": 133666, + "type": "VA6_adPN", + "watched-PN-to-ALLN": { + "AL(R)": 3680 + } + } +] diff --git a/registry/phase4aa-apl-pn-scope/evidence/localization/watched-PN-to-ALLN-count-check.json b/registry/phase4aa-apl-pn-scope/evidence/localization/watched-PN-to-ALLN-count-check.json new file mode 100644 index 0000000..b329bf5 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/localization/watched-PN-to-ALLN-count-check.json @@ -0,0 +1,9 @@ +{ + "canonical_pairs": 823, + "canonical_rows": 22599, + "duplicate_partner_rows": 0, + "group": "watched-PN-to-ALLN", + "mismatches": [], + "pass": true, + "rows": 22599 +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/manifest.json b/registry/phase4aa-apl-pn-scope/evidence/manifest.json new file mode 100644 index 0000000..4ea5de5 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/manifest.json @@ -0,0 +1,345 @@ +{ + "created_utc": "2026-09-29T15:56:41.973999+00:00", + "files": [ + { + "bytes": 7290, + "path": "REPORT.md", + "sha256": "fa0bfd5a163a436e061c94e37cf6fe84ca75fdfa94d6f20ce85eda5058ca9ce7" + }, + { + "bytes": 2128, + "path": "audit/final-summary.json", + "sha256": "69a381512dcb4a80a974a36ce85d78b06842f67b1ba347f0bdddb325ea3b9b1d" + }, + { + "bytes": 8772, + "path": "audit/frozen-APL-class-source.txt", + "sha256": "46a4e4bc1475f121b142e90ddc9d9996856cf91c35a12314c1d9ec36d226cf8e" + }, + { + "bytes": 243, + "path": "audit/frozen-implementation-provenance.json", + "sha256": "c960b11f471de5ab1edff2ed8adf6a5b38a3d9ba523fed2ff1304f9b00827001" + }, + { + "bytes": 422, + "path": "audit/frozen-matrix-reconstruction.json", + "sha256": "b7cae9e2557d872c305c1168ebe2748031c0452d2679f1ade11f9ff95e52cbe9" + }, + { + "bytes": 1384, + "path": "audit/results.json", + "sha256": "206c35bee8bfae6daf87b154854f77e649bebe2655b26b6d22dff04fbd64e160" + }, + { + "bytes": 42201, + "path": "connectivity/APL-PN-reciprocity.csv", + "sha256": "da4ddcaf4527a1c4bac5055f9865fe10dc36e79daa15685e3be4545f5284b164" + }, + { + "bytes": 26825, + "path": "connectivity/APL-PN-reciprocity.parquet", + "sha256": "08b9b6c4ce67f87c88fe645c44589ecde4e2669827f5b83692a255c45f4b9512" + }, + { + "bytes": 157283, + "path": "connectivity/APL-incoming.parquet", + "sha256": "140f2d53910d92c7485e176901fea8309deb752f763413c086a622e02d0895f6" + }, + { + "bytes": 148, + "path": "connectivity/APL-input-population-summary.csv", + "sha256": "219ed78d1eae79c41958185740e6745c62015450a6d1f143ec93c068bcc90340" + }, + { + "bytes": 2522, + "path": "connectivity/APL-input-population-summary.parquet", + "sha256": "1dc1befba0e3a5310a248631019327cb122048fc866d62acc29edd55d1345291" + }, + { + "bytes": 142814, + "path": "connectivity/APL-outgoing.parquet", + "sha256": "77d6cc8d8034df77e656153f3f136b7e91ec6ca31eee8107fdbc40966b0162be" + }, + { + "bytes": 148, + "path": "connectivity/APL-output-population-summary.csv", + "sha256": "1977d1fd85d659de0490928213ae11b11e3e67fa01f37692f555538661fcf5e2" + }, + { + "bytes": 2520, + "path": "connectivity/APL-output-population-summary.parquet", + "sha256": "4f714086b9b8b470c6db2652b71a00f297050f8b734e4033622c4a33eb7a4fee" + }, + { + "bytes": 13722, + "path": "connectivity/APL-target-PN-downstream.parquet", + "sha256": "477724007b55e65d07440288624790e16e5dc6340cf04dd687a09f02f82739eb" + }, + { + "bytes": 44897, + "path": "connectivity/graded-input-not-used.parquet", + "sha256": "77516b0b0b3049f2c1e3571c6f0fa48cbb0e7b65379a5508bfbc92bc6e1fdf0f" + }, + { + "bytes": 468066, + "path": "connectivity/raw-APL-incident-including-noncanonical.parquet", + "sha256": "6a0e2e328bd86401507bba8c58934621b0f204e597be0b2acf27b0e41bbbc4b7" + }, + { + "bytes": 548, + "path": "connectivity/watched-PN-reciprocity.csv", + "sha256": "cae347c669207eca2304de672cf5309a7b9f24e8b2f5722e6fd779a51a94ea30" + }, + { + "bytes": 1809, + "path": "external-resources/evidence-and-limitations.json", + "sha256": "f171fe0e12ae50da6947f7b636a9f554f7c661942e4c076f54a3dc314f61b0cc" + }, + { + "bytes": 1072, + "path": "external-resources/official-data-access.json", + "sha256": "11bd6336e51bb3e85a61dfa3deef294767e43362b0731b40cb25384a0cf1ced9" + }, + { + "bytes": 631, + "path": "external-resources/synaptic-partners/authorization-and-source.json", + "sha256": "6e2213f296aef1a6ff7d0acb245f69785346daba1bd38eba9a600224c60b791f" + }, + { + "bytes": 472, + "path": "external-resources/synaptic-partners/download-verification.json", + "sha256": "4fd796f88f05a08d5f7f3c3ff2c63c939f330e9acc4519a5272c8b3b97fcf4ac" + }, + { + "bytes": 6777179098, + "path": "external-resources/synaptic-partners/syn-partners-male-cns-v1.0-minconf-0.5.feather", + "sha256": "959d8ef4173b35382a3e6acfaf5167c795b6d10b877572d146af04e1b487bc07" + }, + { + "bytes": 1137, + "path": "external-resources/synaptic-partners/upstream-object.json", + "sha256": "36c941740074f2bd7b9e382b01d7743791f03f9376763a2704ca3d8d7f1888cf" + }, + { + "bytes": 0, + "path": "gpu-frozen-regression/gpu-reference/extension-build/lock", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "bytes": 911, + "path": "gpu-frozen-regression/protocol-addendum.json", + "sha256": "5598a6867d6f7f22a5e6472f00c763a9e94850bda18f10df992bba71ef99e982" + }, + { + "bytes": 173, + "path": "localization/ALLN-to-watched-PN-count-check.json", + "sha256": "4513ec607f278684b4825c5893db18e4e20d660afa44dccd6e0305bc5efa2286" + }, + { + "bytes": 501904, + "path": "localization/ALLN-to-watched-PN.parquet", + "sha256": "b3ef49f06d5fed9d807aab2cb6adb52091a2fad298f9c9889167b1890d45f837" + }, + { + "bytes": 171, + "path": "localization/APL-incident-count-check.json", + "sha256": "aa56cb7c98c9186c69c5ef06f5b80ecc7e13fba7f1d0316c298687e2c9c191af" + }, + { + "bytes": 10065020, + "path": "localization/APL-incident.parquet", + "sha256": "442b0fa2640cd1bfaf97e558ae912a8601dc3289b420021526353bc3bcfba849" + }, + { + "bytes": 178, + "path": "localization/APL-target-PN-to-KC-count-check.json", + "sha256": "2fe50c10f0d497ec522782bfbd7b7a5ecada77e62960737b608d78485638a695" + }, + { + "bytes": 6749567, + "path": "localization/APL-target-PN-to-KC.parquet", + "sha256": "310827739c293b633d6c392d2b59ced6820a0b39606fdb29ff263ce3f5b4847e" + }, + { + "bytes": 766, + "path": "localization/actual-schema.json", + "sha256": "40e14fb1c63a890c6dc3ff126f7429fa9c577a29dad6e2b3dd6c4fe9b06a2ce6" + }, + { + "bytes": 684, + "path": "localization/complete-pair-set-validation.json", + "sha256": "30bc6ca4a8b92188f52ca2d9d1da9179dfe7de11e9ae83ec6592c4d84a757b8b" + }, + { + "bytes": 105908, + "path": "localization/pair-ROI-counts.parquet", + "sha256": "16246a4061d7d7115d15d1a9f683ead9311ceedcccda94c3a7b94b1eb73ef405" + }, + { + "bytes": 1941, + "path": "localization/population-ROI-summary.csv", + "sha256": "c3f8fe2bc18fb2cea7906c8b6ea98fcbe542c19c9f0d835c2b1b5bc3266edb83" + }, + { + "bytes": 4932, + "path": "localization/population-ROI-summary.parquet", + "sha256": "c9e3b4a5d7858e1237dd4d88a9e6c712059b690d58dec0355a4e61aefb71cdd7" + }, + { + "bytes": 478, + "path": "localization/protocol.json", + "sha256": "56d78bcee99d4bd84f0942dac330a12686a02641acbf993ed72b83db93fca941" + }, + { + "bytes": 26346, + "path": "localization/spatial-neighborhoods.csv", + "sha256": "271d2a5a857842335e905d7e7665e6484c9492df23e350a1b3f3c7b27df4424f" + }, + { + "bytes": 8667, + "path": "localization/summary.json", + "sha256": "b53b5a714d9ba400db1ce5e7ed35e386522ba6c7a47266d2e7fec314aa1e4d1d" + }, + { + "bytes": 2971, + "path": "localization/watched-PN-ROI.json", + "sha256": "e5640846514bac50d667c814197227feaa770e254e333004364c749b406a2153" + }, + { + "bytes": 173, + "path": "localization/watched-PN-to-ALLN-count-check.json", + "sha256": "b43a48b9ae400172ca8cd5e6d1e327073f29e4b0d18db8402b222ada62113b6d" + }, + { + "bytes": 504592, + "path": "localization/watched-PN-to-ALLN.parquet", + "sha256": "1ae1d00e18c88e84a8e1bdc75b3dd0beb596b93de4b18e23dbc5243ce6008ded" + }, + { + "bytes": 61718, + "path": "metadata/APL-and-target-PNs.parquet", + "sha256": "bfbb2ca509a5f140bb7a42bf07735a1ca4693006d3104796ea3a7970539fc631" + }, + { + "bytes": 132, + "path": "performance/resources.json", + "sha256": "eec1917188ab67a73d1c487642fa2eb5d2468ff51d344cf6f37bb93810dcb2c6" + }, + { + "bytes": 1625, + "path": "protocol/preregistered.json", + "sha256": "ff9892351ed16d9ef45817c5c104dca9a23547fe97ce2a4adf45b2270595673f" + }, + { + "bytes": 438, + "path": "regression/final-old-files-integrity.json", + "sha256": "1431b9be6dc067f48699f3c3708486718a79380c04a8b342ad247def222cd24c" + }, + { + "bytes": 438, + "path": "regression/postflight.json", + "sha256": "1431b9be6dc067f48699f3c3708486718a79380c04a8b342ad247def222cd24c" + }, + { + "bytes": 438, + "path": "regression/preflight.json", + "sha256": "1431b9be6dc067f48699f3c3708486718a79380c04a8b342ad247def222cd24c" + }, + { + "bytes": 371, + "path": "retry-with-correct-PATH/gpu-frozen-regression/auditory-100hz.json", + "sha256": "41309fea8a1e292e007c6e1cf7646836a83b47e9aef3e0bcb4a0c0caba621493" + }, + { + "bytes": 370, + "path": "retry-with-correct-PATH/gpu-frozen-regression/auditory-10hz.json", + "sha256": "2b76a9c17aa3771c8602da15a823e35c06022d5f92d55a2ef1a23174679b31d9" + }, + { + "bytes": 723996, + "path": "retry-with-correct-PATH/gpu-frozen-regression/gpu-reference/extension-build/.ninja_deps", + "sha256": "c08864962bfb25ce2103f4c5e792f000cd045e7cc42152f38a68c238e4f86c44" + }, + { + "bytes": 224, + "path": "retry-with-correct-PATH/gpu-frozen-regression/gpu-reference/extension-build/.ninja_log", + "sha256": "2e76199498ca4b3dff488d7cc6a5577bf26fd0f88c19fbb301d2e4bc30ecb892" + }, + { + "bytes": 2109, + "path": "retry-with-correct-PATH/gpu-frozen-regression/gpu-reference/extension-build/build.ninja", + "sha256": "c570f72b9a2f486e104ed3bf5b1b9f2ccc729ecab02046cd62389d629fb4f48f" + }, + { + "bytes": 0, + "path": "retry-with-correct-PATH/gpu-frozen-regression/gpu-reference/extension-build/lock", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "bytes": 291280, + "path": "retry-with-correct-PATH/gpu-frozen-regression/gpu-reference/extension-build/male_cns_lif_deterministic_v2_ext.so", + "sha256": "587b2bd64186e62b628800536613ac1245937405236e51143dedc159cdd9d235" + }, + { + "bytes": 101992, + "path": "retry-with-correct-PATH/gpu-frozen-regression/gpu-reference/extension-build/phase4p_ext.cuda.o", + "sha256": "bc256cf493b979dc8c00ed54c133c371f7704ffaf491f118a0f5cfe860cc903b" + }, + { + "bytes": 377136, + "path": "retry-with-correct-PATH/gpu-frozen-regression/gpu-reference/extension-build/phase4p_ext.o", + "sha256": "27d284f6a369221a931251b5a03ce133cc8231a97942567d4efafbfb45483811" + }, + { + "bytes": 486, + "path": "retry-with-correct-PATH/gpu-frozen-regression/gpu-reference/extension.json", + "sha256": "58797c63494551cab358315feff51a83ad6ea8a854f5e919b1fd5fbae36c7fa0" + }, + { + "bytes": 372, + "path": "retry-with-correct-PATH/gpu-frozen-regression/gustatory-50hz.json", + "sha256": "6777d390ce499d85a91833d46e645cf2a2604c3e96c809c815d397addfa510b6" + }, + { + "bytes": 378, + "path": "retry-with-correct-PATH/gpu-frozen-regression/mechanosensory-50hz.json", + "sha256": "bd87a77937afd185497f9a538047aa3e5b4960211687524cbac1886cba1ddb26" + }, + { + "bytes": 372, + "path": "retry-with-correct-PATH/gpu-frozen-regression/olfactory-50hz.json", + "sha256": "5b9284784f76d27517b6dc6c7df56de76bdd8e2b09d1f08a781a42e10ac1ddf6" + }, + { + "bytes": 438, + "path": "retry-with-correct-PATH/gpu-frozen-regression/post-regression-integrity.json", + "sha256": "1431b9be6dc067f48699f3c3708486718a79380c04a8b342ad247def222cd24c" + }, + { + "bytes": 911, + "path": "retry-with-correct-PATH/gpu-frozen-regression/protocol-addendum.json", + "sha256": "5598a6867d6f7f22a5e6472f00c763a9e94850bda18f10df992bba71ef99e982" + }, + { + "bytes": 2600, + "path": "retry-with-correct-PATH/gpu-frozen-regression/summary.json", + "sha256": "fb92144b782fb907d3f9090b44b9713b7b32559335a6558ecf72798f4926bc81" + }, + { + "bytes": 14582, + "path": "spatial/APL-PN-unknowns.parquet", + "sha256": "70fd8e78eedc9ddacbaa8627caa3d662efad90727b63cb352d2ebb412f89f3c8" + }, + { + "bytes": 4404, + "path": "spatial/local-schemas.json", + "sha256": "784f2105af57bf8d45b9220402360dc3dfa53148f4fa1f89052af5dd4ddb6522" + }, + { + "bytes": 3369, + "path": "spatial/watched-SWC-audit.json", + "sha256": "22f6f472a221b3f933ded4430e9bde5d554db29507dc18b8f8064c87d3344dae" + } + ] +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/performance/resources.json b/registry/phase4aa-apl-pn-scope/evidence/performance/resources.json new file mode 100644 index 0000000..4b795d5 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/performance/resources.json @@ -0,0 +1,6 @@ +{ + "gpu_used": false, + "includes_two_full_integrity_scans": true, + "max_RSS_KiB": 1869292, + "wall_seconds": 86.91751456000202 +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/protocol/preregistered.json b/registry/phase4aa-apl-pn-scope/evidence/protocol/preregistered.json new file mode 100644 index 0000000..77f1cae --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/protocol/preregistered.json @@ -0,0 +1,45 @@ +{ + "before_analysis": true, + "config": { + "canonical": "datasets/male-cns-v1.0/processed/neuron-only", + "expected": { + "APL": 2, + "APL_outgoing_contacts": 209912, + "APL_outgoing_edges": 5845, + "KC": 4064, + "edges": 25582938, + "neurons": 166700, + "non_KC_contacts": 13712, + "non_KC_edges": 1212, + "synapse_count_sum": 124177617, + "watched_PN_contacts": 247, + "watched_PN_edges": 7 + }, + "experiment_root": "/data/digital-drosophila/experiments/phase4aa-apl-pn-scope", + "model_root": "/data/digital-drosophila/models/male-cns-lif/apl-pn-scope-audit-v1", + "name": "APL-PN-SCOPE-AUDIT", + "phase": "4AA", + "prior": "experiments/phase4z-pn-feedback-audit", + "root": "/data/digital-drosophila", + "scope": { + "bulk_data_download": false, + "conditioning": false, + "cpu_only": true, + "learned_candidate": false, + "new_simulation": false, + "new_spatial_positions_inferred_from_skeletons": false, + "official_network_timeout_s": 30, + "parameter_changes": false, + "sign_changes": false, + "snapshot_workers": 4 + }, + "snapshot": "registry/snapshots/bootstrap-20260929" + }, + "created_utc": "2026-09-29T15:38:02.340663+00:00", + "source_hashes": { + "PROTOCOL.md": "e88f765be0fd91178eed1d862b1de8d8b307ba5ec3cc0ae0d0d93202f264acce", + "audit.py": "4ef071ba88f4e1cd78f068be58414dd7f4099dfac69c68266c4f46e175eab9fb", + "audit.yaml": "e0171bbd7dc7e693268eac00152e560e841f885c7d524c74d51fda7f7fbadbbf", + "test_audit.py": "cb67bab972195090d5c4188169982abdc960479b8031477f1f39ac445814e88f" + } +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/regression/final-old-files-integrity.json b/registry/phase4aa-apl-pn-scope/evidence/regression/final-old-files-integrity.json new file mode 100644 index 0000000..6b644a2 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/regression/final-old-files-integrity.json @@ -0,0 +1,18 @@ +{ + "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" +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/regression/postflight.json b/registry/phase4aa-apl-pn-scope/evidence/regression/postflight.json new file mode 100644 index 0000000..6b644a2 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/regression/postflight.json @@ -0,0 +1,18 @@ +{ + "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" +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/regression/preflight.json b/registry/phase4aa-apl-pn-scope/evidence/regression/preflight.json new file mode 100644 index 0000000..6b644a2 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/regression/preflight.json @@ -0,0 +1,18 @@ +{ + "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" +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/auditory-100hz.json b/registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/auditory-100hz.json new file mode 100644 index 0000000..bc78354 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/auditory-100hz.json @@ -0,0 +1,17 @@ +{ + "events": 2321608, + "events_sha256": "75715419bbe78776dc1561742945ef717e066b66d7bcab402615be535f543fc9", + "exact": { + "counts": true, + "g": true, + "neuron_idx": true, + "step": true, + "v": true + }, + "finite": true, + "max_abs_V_error": 0.0, + "max_abs_g_error": 0.0, + "pass": true, + "trial": "auditory-100hz", + "wall_seconds": 4.91487040699576 +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/auditory-10hz.json b/registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/auditory-10hz.json new file mode 100644 index 0000000..075e90f --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/auditory-10hz.json @@ -0,0 +1,17 @@ +{ + "events": 609920, + "events_sha256": "683a692a7ea2b822bac3ff23af3f6e6e8fb5d4fb2e7f36582f7cd59a86758b12", + "exact": { + "counts": true, + "g": true, + "neuron_idx": true, + "step": true, + "v": true + }, + "finite": true, + "max_abs_V_error": 0.0, + "max_abs_g_error": 0.0, + "pass": true, + "trial": "auditory-10hz", + "wall_seconds": 2.690246092999587 +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/gpu-reference/extension.json b/registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/gpu-reference/extension.json new file mode 100644 index 0000000..afd7830 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/gpu-reference/extension.json @@ -0,0 +1,17 @@ +{ + "binary": "/data/digital-drosophila/experiments/phase4aa-apl-pn-scope/retry-with-correct-PATH/gpu-frozen-regression/gpu-reference/extension-build/male_cns_lif_deterministic_v2_ext.so", + "binary_sha256": "587b2bd64186e62b628800536613ac1245937405236e51143dedc159cdd9d235", + "build_seconds": 58.11084882100113, + "flags": { + "cuda": [ + "-O3", + "--fmad=false", + "-std=c++20" + ], + "cxx": [ + "-O3", + "-ffp-contract=off" + ] + }, + "status": "PASS" +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/gustatory-50hz.json b/registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/gustatory-50hz.json new file mode 100644 index 0000000..fa796da --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/gustatory-50hz.json @@ -0,0 +1,17 @@ +{ + "events": 2452226, + "events_sha256": "c079c04cb723f455014049718cfbc7cccc5b4b9fb2d95cb00972b6fada528b08", + "exact": { + "counts": true, + "g": true, + "neuron_idx": true, + "step": true, + "v": true + }, + "finite": true, + "max_abs_V_error": 0.0, + "max_abs_g_error": 0.0, + "pass": true, + "trial": "gustatory-50hz", + "wall_seconds": 4.977326081992942 +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/mechanosensory-50hz.json b/registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/mechanosensory-50hz.json new file mode 100644 index 0000000..813144e --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/mechanosensory-50hz.json @@ -0,0 +1,17 @@ +{ + "events": 2414779, + "events_sha256": "1d53f2eedb710182cdb7990516653611c787fe53d4852e7fd283875262871160", + "exact": { + "counts": true, + "g": true, + "neuron_idx": true, + "step": true, + "v": true + }, + "finite": true, + "max_abs_V_error": 0.0, + "max_abs_g_error": 0.0, + "pass": true, + "trial": "mechanosensory-50hz", + "wall_seconds": 4.9816199540073285 +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/olfactory-50hz.json b/registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/olfactory-50hz.json new file mode 100644 index 0000000..bcdd9b6 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/olfactory-50hz.json @@ -0,0 +1,17 @@ +{ + "events": 2806702, + "events_sha256": "0a96a16ab0f4ea559238206e3feab22954bb090ad4e791f47a4ca530a23a460d", + "exact": { + "counts": true, + "g": true, + "neuron_idx": true, + "step": true, + "v": true + }, + "finite": true, + "max_abs_V_error": 0.0, + "max_abs_g_error": 0.0, + "pass": true, + "trial": "olfactory-50hz", + "wall_seconds": 4.961361207999289 +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/post-regression-integrity.json b/registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/post-regression-integrity.json new file mode 100644 index 0000000..6b644a2 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/post-regression-integrity.json @@ -0,0 +1,18 @@ +{ + "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" +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/protocol-addendum.json b/registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/protocol-addendum.json new file mode 100644 index 0000000..bd68ec9 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/protocol-addendum.json @@ -0,0 +1,28 @@ +{ + "ComfyUI_queues": [ + { + "pending": 0, + "port": 8188, + "running": 0 + }, + { + "pending": 0, + "port": 8189, + "running": 0 + }, + { + "pending": 0, + "port": 8190, + "running": 0 + } + ], + "available_vram_bytes": 12494438400, + "config_sha256": "6d0189f4ec570cb3352d15ed8d195d1ccb32ee1d29c33dc1e4f00d377b74787e", + "historical_files_overwritten": false, + "new_mechanism_or_training": false, + "reason": "User confirmed ComfyUI is not in use; baseline behavior check before any future mechanism intervention", + "reference": "experiments/phase4p-deterministic-runtime/phase4c-v2/reference", + "runtime_sha256": "c8a13dbdd58dd222f73c1224de448e54bdf90c3f533163427a2bb25446a03999", + "scope": "Five frozen reference v2 trials only; supplement to CPU structural audit", + "source_sha256": "554e9378e068fb13abb4f08dbf9ea710228fa535da2442edb913261fa22fcb20" +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/summary.json b/registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/summary.json new file mode 100644 index 0000000..d6a8f00 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/retry-with-correct-PATH/gpu-frozen-regression/summary.json @@ -0,0 +1,97 @@ +{ + "ComfyUI_models_unloaded": false, + "device": "NVIDIA GeForce RTX 4090", + "new_dynamics": false, + "oracle": "deterministic v2 / original v1 preserved; not claiming v1 atomic runtime is deterministic", + "original_reference_v1_not_overwritten": true, + "pass": true, + "peak_allocated_VRAM_bytes": 285994496, + "total_wall_seconds_including_build": 85.55151132598985, + "trials": [ + { + "events": 609920, + "events_sha256": "683a692a7ea2b822bac3ff23af3f6e6e8fb5d4fb2e7f36582f7cd59a86758b12", + "exact": { + "counts": true, + "g": true, + "neuron_idx": true, + "step": true, + "v": true + }, + "finite": true, + "max_abs_V_error": 0.0, + "max_abs_g_error": 0.0, + "pass": true, + "trial": "auditory-10hz", + "wall_seconds": 2.690246092999587 + }, + { + "events": 2321608, + "events_sha256": "75715419bbe78776dc1561742945ef717e066b66d7bcab402615be535f543fc9", + "exact": { + "counts": true, + "g": true, + "neuron_idx": true, + "step": true, + "v": true + }, + "finite": true, + "max_abs_V_error": 0.0, + "max_abs_g_error": 0.0, + "pass": true, + "trial": "auditory-100hz", + "wall_seconds": 4.91487040699576 + }, + { + "events": 2806702, + "events_sha256": "0a96a16ab0f4ea559238206e3feab22954bb090ad4e791f47a4ca530a23a460d", + "exact": { + "counts": true, + "g": true, + "neuron_idx": true, + "step": true, + "v": true + }, + "finite": true, + "max_abs_V_error": 0.0, + "max_abs_g_error": 0.0, + "pass": true, + "trial": "olfactory-50hz", + "wall_seconds": 4.961361207999289 + }, + { + "events": 2414779, + "events_sha256": "1d53f2eedb710182cdb7990516653611c787fe53d4852e7fd283875262871160", + "exact": { + "counts": true, + "g": true, + "neuron_idx": true, + "step": true, + "v": true + }, + "finite": true, + "max_abs_V_error": 0.0, + "max_abs_g_error": 0.0, + "pass": true, + "trial": "mechanosensory-50hz", + "wall_seconds": 4.9816199540073285 + }, + { + "events": 2452226, + "events_sha256": "c079c04cb723f455014049718cfbc7cccc5b4b9fb2d95cb00972b6fada528b08", + "exact": { + "counts": true, + "g": true, + "neuron_idx": true, + "step": true, + "v": true + }, + "finite": true, + "max_abs_V_error": 0.0, + "max_abs_g_error": 0.0, + "pass": true, + "trial": "gustatory-50hz", + "wall_seconds": 4.977326081992942 + } + ] +} diff --git a/registry/phase4aa-apl-pn-scope/evidence/spatial/local-schemas.json b/registry/phase4aa-apl-pn-scope/evidence/spatial/local-schemas.json new file mode 100644 index 0000000..7964274 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/spatial/local-schemas.json @@ -0,0 +1,216 @@ +[ + { + "fields": [ + { + "dtype": "double", + "name": "assignedOlHex1" + }, + { + "dtype": "double", + "name": "assignedOlHex2" + }, + { + "dtype": "int64", + "name": "bodyId" + }, + { + "dtype": "string", + "name": "flywireType" + }, + { + "dtype": "double", + "name": "group" + }, + { + "dtype": "string", + "name": "instance" + }, + { + "dtype": "string", + "name": "somaSide" + }, + { + "dtype": "dictionary", + "name": "statusLabel" + }, + { + "dtype": "string", + "name": "superclass" + }, + { + "dtype": "string", + "name": "type" + }, + { + "dtype": "string", + "name": "vfbId" + }, + { + "dtype": "string", + "name": "hemibrainType" + }, + { + "dtype": "string", + "name": "itoleeHl" + }, + { + "dtype": "string", + "name": "supertype" + }, + { + "dtype": "string", + "name": "birthtime" + }, + { + "dtype": "double", + "name": "mancBodyid" + }, + { + "dtype": "double", + "name": "mancGroup" + }, + { + "dtype": "string", + "name": "mancType" + }, + { + "dtype": "string", + "name": "subclass" + }, + { + "dtype": "string", + "name": "synonyms" + }, + { + "dtype": "string", + "name": "class" + }, + { + "dtype": "string", + "name": "rootSide" + }, + { + "dtype": "string", + "name": "somaNeuromere" + }, + { + "dtype": "string", + "name": "trumanHl" + }, + { + "dtype": "string", + "name": "dimorphism" + }, + { + "dtype": "string", + "name": "matchingNotes" + }, + { + "dtype": "string", + "name": "entryNerve" + }, + { + "dtype": "double", + "name": "mancSerial" + }, + { + "dtype": "double", + "name": "mcnsSerial" + }, + { + "dtype": "string", + "name": "serialMotif" + }, + { + "dtype": "string", + "name": "fruDsx" + }, + { + "dtype": "string", + "name": "exitNerve" + }, + { + "dtype": "string", + "name": "receptorType" + }, + { + "dtype": "list", + "name": "somaLocation" + }, + { + "dtype": "list", + "name": "tosomaLocation" + }, + { + "dtype": "string", + "name": "status" + } + ], + "path": "/data/digital-drosophila/datasets/male-cns-v1.0/raw/annotations/body-annotations-male-cns-v1.0-minconf-0.5.feather", + "sha256": "2177e246113e4cfbf1e7772ec37c6da1955ff22e8063d0b1f833101f99a9a3b2" + }, + { + "fields": [ + { + "dtype": "int64", + "name": "body" + }, + { + "dtype": "string", + "name": "cell_type" + }, + { + "dtype": "int32", + "name": "total_nt_predictions" + }, + { + "dtype": "double", + "name": "predicted_nt_confidence" + }, + { + "dtype": "string", + "name": "predicted_nt" + }, + { + "dtype": "string", + "name": "ground_truth" + }, + { + "dtype": "int32", + "name": "celltype_total_nt_predictions" + }, + { + "dtype": "string", + "name": "celltype_predicted_nt" + }, + { + "dtype": "double", + "name": "celltype_predicted_nt_confidence" + }, + { + "dtype": "string", + "name": "consensus_nt" + } + ], + "path": "/data/digital-drosophila/datasets/male-cns-v1.0/raw/annotations/body-neurotransmitters-male-cns-v1.0.feather", + "sha256": "95c9289220663abeb3409f3ad9e5a7f8a53f8093f5139d15502cd08da8879621" + }, + { + "fields": [ + { + "dtype": "int64", + "name": "body_pre" + }, + { + "dtype": "int64", + "name": "body_post" + }, + { + "dtype": "int64", + "name": "weight" + } + ], + "path": "/data/digital-drosophila/datasets/male-cns-v1.0/raw/connectivity/connectome-weights-male-cns-v1.0-minconf-0.5.feather", + "sha256": "e35da783d1c686b2b58b3b87cd6a403ae43bfcfba8bff28e08ef752c1a56afc1" + } +] diff --git a/registry/phase4aa-apl-pn-scope/evidence/spatial/watched-SWC-audit.json b/registry/phase4aa-apl-pn-scope/evidence/spatial/watched-SWC-audit.json new file mode 100644 index 0000000..687e3dd --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/evidence/spatial/watched-SWC-audit.json @@ -0,0 +1,92 @@ +[ + { + "body_id": 10540, + "columns": 7, + "coordinates_used_to_infer_synapse_locations": false, + "neuron_idx": 502, + "nodes": 43737, + "path": "/data/digital-drosophila/datasets/male-cns-v1.0/raw/skeletons/10540.swc", + "sha256": "22372942488c2e9222a1634a63c980c94d8130f4f497c5c62d4bbda4a784170f", + "synaptic_partner_identity_in_standard_SWC": false + }, + { + "body_id": 10977, + "columns": 7, + "coordinates_used_to_infer_synapse_locations": false, + "neuron_idx": 904, + "nodes": 45168, + "path": "/data/digital-drosophila/datasets/male-cns-v1.0/raw/skeletons/10977.swc", + "sha256": "34123fc48a5ffee6b9b29e857219776ccdcb737d885b9de90e2a43d57ecaf9cf", + "synaptic_partner_identity_in_standard_SWC": false + }, + { + "body_id": 10039, + "columns": 7, + "coordinates_used_to_infer_synapse_locations": false, + "neuron_idx": 30, + "nodes": 1123, + "path": "/data/digital-drosophila/datasets/male-cns-v1.0/raw/skeletons/10039.swc", + "sha256": "d3f488e036a6aad36d2059312c41c2a7256cfce7001bc186a07563cce23d5880", + "synaptic_partner_identity_in_standard_SWC": false + }, + { + "body_id": 10198, + "columns": 7, + "coordinates_used_to_infer_synapse_locations": false, + "neuron_idx": 179, + "nodes": 1025, + "path": "/data/digital-drosophila/datasets/male-cns-v1.0/raw/skeletons/10198.swc", + "sha256": "87f74746d1ef32a1b6246b3a856d1fa3dba20278d1104511ad3162b4ea7eb790", + "synaptic_partner_identity_in_standard_SWC": false + }, + { + "body_id": 10522, + "columns": 7, + "coordinates_used_to_infer_synapse_locations": false, + "neuron_idx": 484, + "nodes": 1356, + "path": "/data/digital-drosophila/datasets/male-cns-v1.0/raw/skeletons/10522.swc", + "sha256": "5f928524aee4f020b0a673dfd1dbcc1e0bff17e8040a8cb9a46efc60a65ecd5b", + "synaptic_partner_identity_in_standard_SWC": false + }, + { + "body_id": 11761, + "columns": 7, + "coordinates_used_to_infer_synapse_locations": false, + "neuron_idx": 1644, + "nodes": 4630, + "path": "/data/digital-drosophila/datasets/male-cns-v1.0/raw/skeletons/11761.swc", + "sha256": "e807d8d0f406b292bd12b13696c15338ffa37c4592866acc7a18159e434dad34", + "synaptic_partner_identity_in_standard_SWC": false + }, + { + "body_id": 16610, + "columns": 7, + "coordinates_used_to_infer_synapse_locations": false, + "neuron_idx": 6065, + "nodes": 1054, + "path": "/data/digital-drosophila/datasets/male-cns-v1.0/raw/skeletons/16610.swc", + "sha256": "a5b97c041c0dad1a976fe651137b00d1555c98892f71d9eb0dc59e8396189832", + "synaptic_partner_identity_in_standard_SWC": false + }, + { + "body_id": 17484, + "columns": 7, + "coordinates_used_to_infer_synapse_locations": false, + "neuron_idx": 6842, + "nodes": 1195, + "path": "/data/digital-drosophila/datasets/male-cns-v1.0/raw/skeletons/17484.swc", + "sha256": "85c77e6476a0bbbe06ad02dcfb04221602c9197b0a286b5dccba3c41ffac2f65", + "synaptic_partner_identity_in_standard_SWC": false + }, + { + "body_id": 527577, + "columns": 7, + "coordinates_used_to_infer_synapse_locations": false, + "neuron_idx": 133666, + "nodes": 1106, + "path": "/data/digital-drosophila/datasets/male-cns-v1.0/raw/skeletons/527577.swc", + "sha256": "75ce5117fce904bf45214ce94729d1e50748ba9af8ee59f69cf22497cbefec19", + "synaptic_partner_identity_in_standard_SWC": false + } +] diff --git a/registry/phase4aa-apl-pn-scope/seal-verification.json b/registry/phase4aa-apl-pn-scope/seal-verification.json new file mode 100644 index 0000000..258a946 --- /dev/null +++ b/registry/phase4aa-apl-pn-scope/seal-verification.json @@ -0,0 +1,12 @@ +[ + { + "files": 12, + "pass": true, + "path": "/data/digital-drosophila/models/male-cns-lif/apl-pn-scope-audit-v1" + }, + { + "files": 68, + "pass": true, + "path": "/data/digital-drosophila/experiments/phase4aa-apl-pn-scope" + } +]