From 92241aea027cdd0df1c771b56007279a1b04c273 Mon Sep 17 00:00:00 2001 From: Digital Drosophila Archive Date: Wed, 30 Sep 2026 07:23:09 +0800 Subject: [PATCH] Validate isolated author LIF semantics without changing frozen models --- CURRENT.md | 69 +- docs/progress/phase4ad-author-semantics.md | 71 + docs/progress/phase4ad-interpretation.md | 54 + .../author-semantics-lab-v1/PROTOCOL.md | 71 + .../author-semantics-lab-v1/checksums.sha256 | 12 + .../author-semantics-lab-v1/config.json | 36 + .../author-semantics-lab-v1/context.py | 27 + .../author-semantics-lab-v1/finalize.py | 411 ++ .../interface_audit.py | 149 + .../author-semantics-lab-v1/manifest.json | 67 + .../author-semantics-lab-v1/math_lab.py | 70 + .../author-semantics-lab-v1/oracle_runner.py | 346 ++ .../author-semantics-lab-v1/prepare.py | 56 + .../requirements-oracle.txt | 20 + .../author-semantics-lab-v1/run_lab.py | 158 + .../author-semantics-lab-v1/verify_frozen.py | 47 + .../evidence-index.json | 2648 +++++++++++++ .../evidence/REPORT.md | 71 + .../evidence/audit/all-motif-results.csv | 121 + .../evidence/audit/final-summary.json | 3290 +++++++++++++++++ .../evidence/audit/finalize-start.json | 7 + .../evidence/audit/run-complete.json | 7 + .../evidence/audit/run-start.json | 16 + .../evidence/checksums.sha256 | 566 +++ .../components/feedforward-frozen/events.csv | 4 + .../events.csv | 4 + .../events.csv | 4 + .../feedforward-reset_g_only/events.csv | 4 + .../components/five-frozen/events.csv | 1484 ++++++++ .../five-refractory_gate_only/events.csv | 1511 ++++++++ .../five-reset_and_refractory/events.csv | 635 ++++ .../components/five-reset_g_only/events.csv | 869 +++++ .../components/no_input-frozen/events.csv | 1 + .../no_input-refractory_gate_only/events.csv | 1 + .../no_input-reset_and_refractory/events.csv | 1 + .../no_input-reset_g_only/events.csv | 1 + .../components/pair-frozen/events.csv | 474 +++ .../pair-refractory_gate_only/events.csv | 636 ++++ .../pair-reset_and_refractory/events.csv | 224 ++ .../components/pair-reset_g_only/events.csv | 224 ++ .../evidence/components/summary.csv | 81 + .../components/trio-frozen/events.csv | 1065 ++++++ .../trio-refractory_gate_only/events.csv | 1101 ++++++ .../trio-reset_and_refractory/events.csv | 470 +++ .../components/trio-reset_g_only/events.csv | 566 +++ .../evidence/environment/bootstrap-notes.json | 9 + .../frozen-scientific-environment.json | 12 + .../evidence/environment/install-report.json | 1051 ++++++ .../environment/installed-packages.json | 78 + .../evidence/external-resources/LICENSE | 21 + .../external-resources/environment_full.yml | 109 + .../evidence/external-resources/model.py | 373 ++ .../evidence/gpu-reference/extension.json | 17 + .../evidence/manifest.json | 2837 ++++++++++++++ .../actual-weights.json | 20 + .../brian-output/events.csv | 4 + .../completeness.csv | 6 + .../environment.json | 102 + .../generated-code.json | 127 + .../feedforward-float32-repeat/run-spec.json | 123 + .../feedforward-float32-repeat/schedule.json | 11 + .../feedforward-float32-repeat/seed.json | 7 + .../feedforward-float32/actual-weights.json | 20 + .../brian-output/events.csv | 4 + .../feedforward-float32/comparison.json | 11 + .../feedforward-float32/completeness.csv | 6 + .../feedforward-float32/environment.json | 102 + .../feedforward-float32/generated-code.json | 127 + .../independent-output/events.csv | 4 + .../oracle/feedforward-float32/run-spec.json | 123 + .../oracle/feedforward-float32/schedule.json | 11 + .../oracle/feedforward-float32/seed.json | 7 + .../actual-weights.json | 20 + .../brian-output/events.csv | 4 + .../completeness.csv | 6 + .../environment.json | 102 + .../generated-code.json | 127 + .../feedforward-float64-repeat/run-spec.json | 123 + .../feedforward-float64-repeat/schedule.json | 11 + .../feedforward-float64-repeat/seed.json | 7 + .../feedforward-float64/actual-weights.json | 20 + .../brian-output/events.csv | 4 + .../feedforward-float64/comparison.json | 11 + .../feedforward-float64/completeness.csv | 6 + .../feedforward-float64/environment.json | 102 + .../feedforward-float64/generated-code.json | 127 + .../independent-output/events.csv | 4 + .../oracle/feedforward-float64/run-spec.json | 123 + .../oracle/feedforward-float64/schedule.json | 11 + .../oracle/feedforward-float64/seed.json | 7 + .../five-float32-repeat/actual-weights.json | 47 + .../brian-output/events.csv | 611 +++ .../five-float32-repeat/completeness.csv | 6 + .../five-float32-repeat/environment.json | 102 + .../five-float32-repeat/generated-code.json | 127 + .../oracle/five-float32-repeat/run-spec.json | 132 + .../oracle/five-float32-repeat/schedule.json | 11 + .../oracle/five-float32-repeat/seed.json | 7 + .../oracle/five-float32/actual-weights.json | 47 + .../five-float32/brian-output/events.csv | 611 +++ .../oracle/five-float32/comparison.json | 11 + .../oracle/five-float32/completeness.csv | 6 + .../oracle/five-float32/environment.json | 102 + .../oracle/five-float32/generated-code.json | 127 + .../independent-output/events.csv | 611 +++ .../oracle/five-float32/run-spec.json | 132 + .../oracle/five-float32/schedule.json | 11 + .../evidence/oracle/five-float32/seed.json | 7 + .../five-float64-repeat/actual-weights.json | 47 + .../brian-output/events.csv | 611 +++ .../five-float64-repeat/completeness.csv | 6 + .../five-float64-repeat/environment.json | 102 + .../five-float64-repeat/generated-code.json | 127 + .../oracle/five-float64-repeat/run-spec.json | 132 + .../oracle/five-float64-repeat/schedule.json | 11 + .../oracle/five-float64-repeat/seed.json | 7 + .../oracle/five-float64/actual-weights.json | 47 + .../five-float64/brian-output/events.csv | 611 +++ .../oracle/five-float64/comparison.json | 11 + .../oracle/five-float64/completeness.csv | 6 + .../oracle/five-float64/environment.json | 102 + .../oracle/five-float64/generated-code.json | 127 + .../independent-output/events.csv | 611 +++ .../oracle/five-float64/run-spec.json | 132 + .../oracle/five-float64/schedule.json | 11 + .../evidence/oracle/five-float64/seed.json | 7 + .../actual-weights.json | 47 + .../brian-output/events.csv | 1 + .../no_input-float32-repeat/completeness.csv | 6 + .../no_input-float32-repeat/environment.json | 102 + .../generated-code.json | 119 + .../no_input-float32-repeat/run-spec.json | 132 + .../no_input-float32-repeat/schedule.json | 11 + .../oracle/no_input-float32-repeat/seed.json | 5 + .../no_input-float32/actual-weights.json | 47 + .../no_input-float32/brian-output/events.csv | 1 + .../oracle/no_input-float32/comparison.json | 11 + .../oracle/no_input-float32/completeness.csv | 6 + .../oracle/no_input-float32/environment.json | 102 + .../no_input-float32/generated-code.json | 119 + .../independent-output/events.csv | 1 + .../oracle/no_input-float32/run-spec.json | 132 + .../oracle/no_input-float32/schedule.json | 11 + .../oracle/no_input-float32/seed.json | 5 + .../actual-weights.json | 47 + .../brian-output/events.csv | 1 + .../no_input-float64-repeat/completeness.csv | 6 + .../no_input-float64-repeat/environment.json | 102 + .../generated-code.json | 119 + .../no_input-float64-repeat/run-spec.json | 132 + .../no_input-float64-repeat/schedule.json | 11 + .../oracle/no_input-float64-repeat/seed.json | 5 + .../no_input-float64/actual-weights.json | 47 + .../no_input-float64/brian-output/events.csv | 1 + .../oracle/no_input-float64/comparison.json | 11 + .../oracle/no_input-float64/completeness.csv | 6 + .../oracle/no_input-float64/environment.json | 102 + .../no_input-float64/generated-code.json | 119 + .../independent-output/events.csv | 1 + .../oracle/no_input-float64/run-spec.json | 132 + .../oracle/no_input-float64/schedule.json | 11 + .../oracle/no_input-float64/seed.json | 5 + .../pair-float32-repeat/actual-weights.json | 14 + .../brian-output/events.csv | 214 ++ .../pair-float32-repeat/completeness.csv | 3 + .../pair-float32-repeat/environment.json | 102 + .../pair-float32-repeat/generated-code.json | 127 + .../oracle/pair-float32-repeat/run-spec.json | 118 + .../oracle/pair-float32-repeat/schedule.json | 11 + .../oracle/pair-float32-repeat/seed.json | 7 + .../oracle/pair-float32/actual-weights.json | 14 + .../pair-float32/brian-output/events.csv | 214 ++ .../oracle/pair-float32/comparison.json | 11 + .../oracle/pair-float32/completeness.csv | 3 + .../oracle/pair-float32/environment.json | 102 + .../oracle/pair-float32/generated-code.json | 127 + .../independent-output/events.csv | 214 ++ .../oracle/pair-float32/run-spec.json | 118 + .../oracle/pair-float32/schedule.json | 11 + .../evidence/oracle/pair-float32/seed.json | 7 + .../pair-float64-repeat/actual-weights.json | 14 + .../brian-output/events.csv | 214 ++ .../pair-float64-repeat/completeness.csv | 3 + .../pair-float64-repeat/environment.json | 102 + .../pair-float64-repeat/generated-code.json | 127 + .../oracle/pair-float64-repeat/run-spec.json | 118 + .../oracle/pair-float64-repeat/schedule.json | 11 + .../oracle/pair-float64-repeat/seed.json | 7 + .../oracle/pair-float64/actual-weights.json | 14 + .../pair-float64/brian-output/events.csv | 214 ++ .../oracle/pair-float64/comparison.json | 11 + .../oracle/pair-float64/completeness.csv | 3 + .../oracle/pair-float64/environment.json | 102 + .../oracle/pair-float64/generated-code.json | 127 + .../independent-output/events.csv | 214 ++ .../oracle/pair-float64/run-spec.json | 118 + .../oracle/pair-float64/schedule.json | 11 + .../evidence/oracle/pair-float64/seed.json | 7 + .../evidence/oracle/poi-interface/audit.json | 76 + .../oracle/poi-interface/completeness.csv | 3 + .../oracle/poi-interface/environment.json | 102 + .../oracle/poi-interface/generated-code.json | 119 + .../oracle/poi-interface/schedule.json | 11 + .../trio-float32-repeat/actual-weights.json | 26 + .../brian-output/events.csv | 449 +++ .../trio-float32-repeat/completeness.csv | 4 + .../trio-float32-repeat/environment.json | 102 + .../trio-float32-repeat/generated-code.json | 127 + .../oracle/trio-float32-repeat/run-spec.json | 123 + .../oracle/trio-float32-repeat/schedule.json | 11 + .../oracle/trio-float32-repeat/seed.json | 7 + .../oracle/trio-float32/actual-weights.json | 26 + .../trio-float32/brian-output/events.csv | 449 +++ .../oracle/trio-float32/comparison.json | 11 + .../oracle/trio-float32/completeness.csv | 4 + .../oracle/trio-float32/environment.json | 102 + .../oracle/trio-float32/generated-code.json | 127 + .../independent-output/events.csv | 449 +++ .../oracle/trio-float32/run-spec.json | 123 + .../oracle/trio-float32/schedule.json | 11 + .../evidence/oracle/trio-float32/seed.json | 7 + .../trio-float64-repeat/actual-weights.json | 26 + .../brian-output/events.csv | 449 +++ .../trio-float64-repeat/completeness.csv | 4 + .../trio-float64-repeat/environment.json | 102 + .../trio-float64-repeat/generated-code.json | 127 + .../oracle/trio-float64-repeat/run-spec.json | 123 + .../oracle/trio-float64-repeat/schedule.json | 11 + .../oracle/trio-float64-repeat/seed.json | 7 + .../oracle/trio-float64/actual-weights.json | 26 + .../trio-float64/brian-output/events.csv | 449 +++ .../oracle/trio-float64/comparison.json | 11 + .../oracle/trio-float64/completeness.csv | 4 + .../oracle/trio-float64/environment.json | 102 + .../oracle/trio-float64/generated-code.json | 127 + .../independent-output/events.csv | 449 +++ .../oracle/trio-float64/run-spec.json | 123 + .../oracle/trio-float64/schedule.json | 11 + .../evidence/oracle/trio-float64/seed.json | 7 + .../actual-weights.json | 11 + .../brian-output/events.csv | 2 + .../comparison.json | 11 + .../completeness.csv | 2 + .../environment.json | 102 + .../external-arrivals.csv | 1 + .../generated-code.json | 127 + .../independent-output/events.csv | 2 + .../run-spec.json | 116 + .../schedule.json | 11 + .../unit-above_threshold-float32/seed.json | 7 + .../actual-weights.json | 11 + .../brian-output/events.csv | 2 + .../comparison.json | 11 + .../completeness.csv | 2 + .../environment.json | 102 + .../external-arrivals.csv | 1 + .../generated-code.json | 127 + .../independent-output/events.csv | 2 + .../run-spec.json | 116 + .../schedule.json | 11 + .../unit-above_threshold-float64/seed.json | 7 + .../unit-delay_18-float32/actual-weights.json | 11 + .../brian-output/events.csv | 2 + .../unit-delay_18-float32/comparison.json | 11 + .../unit-delay_18-float32/completeness.csv | 3 + .../unit-delay_18-float32/environment.json | 102 + .../unit-delay_18-float32/generated-code.json | 127 + .../independent-output/events.csv | 2 + .../unit-delay_18-float32/run-spec.json | 117 + .../unit-delay_18-float32/schedule.json | 11 + .../oracle/unit-delay_18-float32/seed.json | 7 + .../unit-delay_18-float64/actual-weights.json | 11 + .../brian-output/events.csv | 2 + .../unit-delay_18-float64/comparison.json | 11 + .../unit-delay_18-float64/completeness.csv | 3 + .../unit-delay_18-float64/environment.json | 102 + .../unit-delay_18-float64/generated-code.json | 127 + .../independent-output/events.csv | 2 + .../unit-delay_18-float64/run-spec.json | 117 + .../unit-delay_18-float64/schedule.json | 11 + .../oracle/unit-delay_18-float64/seed.json | 7 + .../actual-weights.json | 11 + .../brian-output/events.csv | 1 + .../comparison.json | 11 + .../completeness.csv | 2 + .../environment.json | 102 + .../external-arrivals.csv | 1 + .../generated-code.json | 127 + .../independent-output/events.csv | 1 + .../run-spec.json | 116 + .../schedule.json | 11 + .../unit-equal_threshold-float32/seed.json | 7 + .../actual-weights.json | 11 + .../brian-output/events.csv | 1 + .../comparison.json | 11 + .../completeness.csv | 2 + .../environment.json | 102 + .../external-arrivals.csv | 1 + .../generated-code.json | 127 + .../independent-output/events.csv | 1 + .../run-spec.json | 116 + .../schedule.json | 11 + .../unit-equal_threshold-float64/seed.json | 7 + .../actual-weights.json | 11 + .../brian-output/events.csv | 1 + .../unit-inhibition-float32/comparison.json | 11 + .../unit-inhibition-float32/completeness.csv | 2 + .../unit-inhibition-float32/environment.json | 102 + .../external-arrivals.csv | 2 + .../generated-code.json | 164 + .../independent-output/events.csv | 1 + .../unit-inhibition-float32/run-spec.json | 120 + .../unit-inhibition-float32/schedule.json | 11 + .../oracle/unit-inhibition-float32/seed.json | 5 + .../actual-weights.json | 11 + .../brian-output/events.csv | 1 + .../unit-inhibition-float64/comparison.json | 11 + .../unit-inhibition-float64/completeness.csv | 2 + .../unit-inhibition-float64/environment.json | 102 + .../external-arrivals.csv | 2 + .../generated-code.json | 164 + .../independent-output/events.csv | 1 + .../unit-inhibition-float64/run-spec.json | 120 + .../unit-inhibition-float64/schedule.json | 11 + .../oracle/unit-inhibition-float64/seed.json | 5 + .../actual-weights.json | 11 + .../brian-output/events.csv | 2 + .../comparison.json | 11 + .../completeness.csv | 2 + .../environment.json | 102 + .../external-arrivals.csv | 2 + .../generated-code.json | 164 + .../independent-output/events.csv | 2 + .../run-spec.json | 120 + .../schedule.json | 11 + .../unit-nonzero_g_reset-float32/seed.json | 5 + .../actual-weights.json | 11 + .../brian-output/events.csv | 2 + .../comparison.json | 11 + .../completeness.csv | 2 + .../environment.json | 102 + .../external-arrivals.csv | 2 + .../generated-code.json | 164 + .../independent-output/events.csv | 2 + .../run-spec.json | 120 + .../schedule.json | 11 + .../unit-nonzero_g_reset-float64/seed.json | 5 + .../actual-weights.json | 11 + .../brian-output/events.csv | 2 + .../comparison.json | 11 + .../completeness.csv | 2 + .../environment.json | 102 + .../external-arrivals.csv | 5 + .../generated-code.json | 172 + .../independent-output/events.csv | 2 + .../run-spec.json | 123 + .../schedule.json | 11 + .../seed.json | 7 + .../actual-weights.json | 11 + .../brian-output/events.csv | 2 + .../comparison.json | 11 + .../completeness.csv | 2 + .../environment.json | 102 + .../external-arrivals.csv | 5 + .../generated-code.json | 172 + .../independent-output/events.csv | 2 + .../run-spec.json | 123 + .../schedule.json | 11 + .../seed.json | 7 + .../actual-weights.json | 11 + .../brian-output/events.csv | 1 + .../comparison.json | 11 + .../completeness.csv | 2 + .../environment.json | 102 + .../external-arrivals.csv | 2 + .../generated-code.json | 164 + .../independent-output/events.csv | 1 + .../run-spec.json | 120 + .../schedule.json | 11 + .../unit-weak_excitation-float32/seed.json | 5 + .../actual-weights.json | 11 + .../brian-output/events.csv | 1 + .../comparison.json | 11 + .../completeness.csv | 2 + .../environment.json | 102 + .../external-arrivals.csv | 2 + .../generated-code.json | 164 + .../independent-output/events.csv | 1 + .../run-spec.json | 120 + .../schedule.json | 11 + .../unit-weak_excitation-float64/seed.json | 5 + .../unit-zero-float32/actual-weights.json | 11 + .../unit-zero-float32/brian-output/events.csv | 1 + .../oracle/unit-zero-float32/comparison.json | 11 + .../oracle/unit-zero-float32/completeness.csv | 2 + .../oracle/unit-zero-float32/environment.json | 102 + .../unit-zero-float32/external-arrivals.csv | 1 + .../unit-zero-float32/generated-code.json | 119 + .../independent-output/events.csv | 1 + .../oracle/unit-zero-float32/run-spec.json | 116 + .../oracle/unit-zero-float32/schedule.json | 11 + .../oracle/unit-zero-float32/seed.json | 5 + .../unit-zero-float64/actual-weights.json | 11 + .../unit-zero-float64/brian-output/events.csv | 1 + .../oracle/unit-zero-float64/comparison.json | 11 + .../oracle/unit-zero-float64/completeness.csv | 2 + .../oracle/unit-zero-float64/environment.json | 102 + .../unit-zero-float64/external-arrivals.csv | 1 + .../unit-zero-float64/generated-code.json | 119 + .../independent-output/events.csv | 1 + .../oracle/unit-zero-float64/run-spec.json | 116 + .../oracle/unit-zero-float64/schedule.json | 11 + .../oracle/unit-zero-float64/seed.json | 5 + .../evidence/performance/summary.json | 5 + .../evidence/protocol/preregistered.json | 175 + .../evidence/regression/author-motifs.json | 152 + .../feedforward-float32-repeat.json | 10 + .../feedforward-float64-repeat.json | 10 + ...eedforward-precision-cross-comparison.json | 11 + .../regression/five-float32-repeat.json | 10 + .../regression/five-float64-repeat.json | 10 + .../five-precision-cross-comparison.json | 11 + .../regression/frozen-auditory-100hz.json | 11 + .../regression/frozen-auditory-10hz.json | 11 + .../regression/frozen-components.json | 62 + .../evidence/regression/frozen-five.json | 65 + .../regression/frozen-gustatory-50hz.json | 11 + .../frozen-mechanosensory-50hz.json | 11 + .../regression/frozen-olfactory-50hz.json | 11 + .../regression/no_input-float32-repeat.json | 10 + .../regression/no_input-float64-repeat.json | 10 + .../no_input-precision-cross-comparison.json | 11 + .../regression/old-integrity-after.json | 73 + .../regression/old-integrity-before.json | 69 + .../regression/pair-float32-repeat.json | 10 + .../regression/pair-float64-repeat.json | 10 + .../pair-precision-cross-comparison.json | 11 + .../regression/preregistration-after.json | 373 ++ .../regression/trio-float32-repeat.json | 10 + .../regression/trio-float64-repeat.json | 10 + .../trio-precision-cross-comparison.json | 11 + .../unit-above_threshold-float32.json | 19 + .../unit-above_threshold-float64.json | 19 + .../regression/unit-delay_18-float32.json | 21 + .../regression/unit-delay_18-float64.json | 21 + .../unit-equal_threshold-float32.json | 18 + .../unit-equal_threshold-float64.json | 18 + .../evidence/regression/unit-fixtures.json | 322 ++ .../regression/unit-inhibition-float32.json | 20 + .../regression/unit-inhibition-float64.json | 20 + .../unit-nonzero_g_reset-float32.json | 20 + .../unit-nonzero_g_reset-float64.json | 20 + .../unit-refractory_boundary-float32.json | 22 + .../unit-refractory_boundary-float64.json | 22 + .../unit-weak_excitation-float32.json | 20 + .../unit-weak_excitation-float64.json | 20 + .../regression/unit-zero-float32.json | 20 + .../regression/unit-zero-float64.json | 20 + .../seal-verification.json | 16 + tools/publish_phase4ad.py | 35 + 460 files changed, 46900 insertions(+), 47 deletions(-) create mode 100644 docs/progress/phase4ad-author-semantics.md create mode 100644 docs/progress/phase4ad-interpretation.md create mode 100644 models/male-cns-lif/author-semantics-lab-v1/PROTOCOL.md create mode 100644 models/male-cns-lif/author-semantics-lab-v1/checksums.sha256 create mode 100644 models/male-cns-lif/author-semantics-lab-v1/config.json create mode 100644 models/male-cns-lif/author-semantics-lab-v1/context.py create mode 100644 models/male-cns-lif/author-semantics-lab-v1/finalize.py create mode 100644 models/male-cns-lif/author-semantics-lab-v1/interface_audit.py create mode 100644 models/male-cns-lif/author-semantics-lab-v1/manifest.json create mode 100644 models/male-cns-lif/author-semantics-lab-v1/math_lab.py create mode 100644 models/male-cns-lif/author-semantics-lab-v1/oracle_runner.py create mode 100644 models/male-cns-lif/author-semantics-lab-v1/prepare.py create mode 100644 models/male-cns-lif/author-semantics-lab-v1/requirements-oracle.txt create mode 100644 models/male-cns-lif/author-semantics-lab-v1/run_lab.py create mode 100644 models/male-cns-lif/author-semantics-lab-v1/verify_frozen.py create mode 100644 registry/phase4ad-author-semantics/evidence-index.json create mode 100644 registry/phase4ad-author-semantics/evidence/REPORT.md create mode 100644 registry/phase4ad-author-semantics/evidence/audit/all-motif-results.csv create mode 100644 registry/phase4ad-author-semantics/evidence/audit/final-summary.json create mode 100644 registry/phase4ad-author-semantics/evidence/audit/finalize-start.json create mode 100644 registry/phase4ad-author-semantics/evidence/audit/run-complete.json create mode 100644 registry/phase4ad-author-semantics/evidence/audit/run-start.json create mode 100644 registry/phase4ad-author-semantics/evidence/checksums.sha256 create mode 100644 registry/phase4ad-author-semantics/evidence/components/feedforward-frozen/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/components/feedforward-refractory_gate_only/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/components/feedforward-reset_and_refractory/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/components/feedforward-reset_g_only/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/components/five-frozen/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/components/five-refractory_gate_only/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/components/five-reset_and_refractory/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/components/five-reset_g_only/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/components/no_input-frozen/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/components/no_input-refractory_gate_only/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/components/no_input-reset_and_refractory/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/components/no_input-reset_g_only/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/components/pair-frozen/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/components/pair-refractory_gate_only/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/components/pair-reset_and_refractory/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/components/pair-reset_g_only/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/components/summary.csv create mode 100644 registry/phase4ad-author-semantics/evidence/components/trio-frozen/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/components/trio-refractory_gate_only/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/components/trio-reset_and_refractory/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/components/trio-reset_g_only/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/environment/bootstrap-notes.json create mode 100644 registry/phase4ad-author-semantics/evidence/environment/frozen-scientific-environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/environment/install-report.json create mode 100644 registry/phase4ad-author-semantics/evidence/environment/installed-packages.json create mode 100644 registry/phase4ad-author-semantics/evidence/external-resources/LICENSE create mode 100644 registry/phase4ad-author-semantics/evidence/external-resources/environment_full.yml create mode 100644 registry/phase4ad-author-semantics/evidence/external-resources/model.py create mode 100644 registry/phase4ad-author-semantics/evidence/gpu-reference/extension.json create mode 100644 registry/phase4ad-author-semantics/evidence/manifest.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/comparison.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/independent-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/comparison.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/independent-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float32/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float32/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float32/comparison.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float32/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float32/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float32/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float32/independent-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float32/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float32/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float32/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float64/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float64/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float64/comparison.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float64/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float64/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float64/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float64/independent-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float64/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float64/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/five-float64/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/comparison.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/independent-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/comparison.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/independent-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float32/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float32/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float32/comparison.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float32/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float32/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float32/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float32/independent-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float32/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float32/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float32/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float64/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float64/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float64/comparison.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float64/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float64/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float64/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float64/independent-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float64/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float64/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/pair-float64/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/poi-interface/audit.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/poi-interface/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/poi-interface/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/poi-interface/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/poi-interface/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float32/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float32/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float32/comparison.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float32/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float32/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float32/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float32/independent-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float32/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float32/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float32/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float64/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float64/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float64/comparison.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float64/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float64/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float64/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float64/independent-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float64/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float64/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/trio-float64/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/comparison.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/external-arrivals.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/independent-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/comparison.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/external-arrivals.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/independent-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/comparison.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/independent-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/comparison.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/independent-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/comparison.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/external-arrivals.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/independent-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/comparison.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/external-arrivals.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/independent-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/comparison.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/external-arrivals.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/independent-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/comparison.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/external-arrivals.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/independent-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/comparison.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/external-arrivals.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/independent-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/comparison.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/external-arrivals.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/independent-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/comparison.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/external-arrivals.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/independent-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/comparison.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/external-arrivals.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/independent-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/comparison.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/external-arrivals.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/independent-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/comparison.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/external-arrivals.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/independent-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/comparison.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/external-arrivals.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/independent-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/actual-weights.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/brian-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/comparison.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/completeness.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/environment.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/external-arrivals.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/generated-code.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/independent-output/events.csv create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/run-spec.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/schedule.json create mode 100644 registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/seed.json create mode 100644 registry/phase4ad-author-semantics/evidence/performance/summary.json create mode 100644 registry/phase4ad-author-semantics/evidence/protocol/preregistered.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/author-motifs.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/feedforward-float32-repeat.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/feedforward-float64-repeat.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/feedforward-precision-cross-comparison.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/five-float32-repeat.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/five-float64-repeat.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/five-precision-cross-comparison.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/frozen-auditory-100hz.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/frozen-auditory-10hz.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/frozen-components.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/frozen-five.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/frozen-gustatory-50hz.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/frozen-mechanosensory-50hz.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/frozen-olfactory-50hz.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/no_input-float32-repeat.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/no_input-float64-repeat.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/no_input-precision-cross-comparison.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/old-integrity-after.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/old-integrity-before.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/pair-float32-repeat.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/pair-float64-repeat.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/pair-precision-cross-comparison.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/preregistration-after.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/trio-float32-repeat.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/trio-float64-repeat.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/trio-precision-cross-comparison.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/unit-above_threshold-float32.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/unit-above_threshold-float64.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/unit-delay_18-float32.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/unit-delay_18-float64.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/unit-equal_threshold-float32.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/unit-equal_threshold-float64.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/unit-fixtures.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/unit-inhibition-float32.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/unit-inhibition-float64.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/unit-nonzero_g_reset-float32.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/unit-nonzero_g_reset-float64.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/unit-refractory_boundary-float32.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/unit-refractory_boundary-float64.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/unit-weak_excitation-float32.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/unit-weak_excitation-float64.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/unit-zero-float32.json create mode 100644 registry/phase4ad-author-semantics/evidence/regression/unit-zero-float64.json create mode 100644 registry/phase4ad-author-semantics/seal-verification.json create mode 100644 tools/publish_phase4ad.py diff --git a/CURRENT.md b/CURRENT.md index 3948cc1..379b6ca 100644 --- a/CURRENT.md +++ b/CURRENT.md @@ -1,55 +1,30 @@ -# 当前研究状态 — Phase 4AC +# 当前研究状态 — Phase 4AD -最新结果:**COMPLETE-SEMANTICS-AUDIT / LEARNING-NOT-ACHIEVED**。 -学习可用的总目标尚未达到,不把审计 PASS 当成学习 PASS。 -初始化 README/registry 保留原字节,最新结论从本页进入。 +已按用户授权建立独立分支 `codex/lif-author-semantics-lab`。 +正式状态:**COMPLETE-ORACLE-VALIDATED-LAB-ONLY**。 +学习仍未达到可用标准;不替换任何旧候选,不把实现检查PASS当作学习PASS。 -- [中文机制结论及限制](docs/progress/phase4ac-interpretation.md) -- [完整小回路/单细胞结果](docs/progress/phase4ac-lif-semantics.md) -- [预先声明的诊断方案](models/male-cns-lif/lif-semantics-audit-v1/PROTOCOL.md) -- [新阶段校验清单](registry/phase4ac-lif-semantics/seal-verification.json) -- [上一轮末梢作用范围诊断](docs/progress/phase4ab-terminal-scope.md) -- [小回路与全脑背景的只读复核](docs/progress/feedback-context-review-20260930.md) +- [关键结果、限制与下一步](docs/progress/phase4ad-interpretation.md) +- [完整实验报告](docs/progress/phase4ad-author-semantics.md) +- [实验预声明](models/male-cns-lif/author-semantics-lab-v1/PROTOCOL.md) +- [新产物封存核验](registry/phase4ad-author-semantics/seal-verification.json) +- [此前全脑输入背景复核](docs/progress/feedback-context-review-20260930.md) -## 后续只读复核的重要限制 +## 关键发现 -所选五节点只贡献三个 ALLN 晚期正到达权重的 7.57%–8.99%;达到各自80%正输入需要49–52个来源。 -因此孤立小回路可以自持,不意味着它是全脑唯一原因。回路外输入也可能受该回路反馈影响,不是已证明独立的外源驱动。 -对旧数据的派生分解没有新模拟或训练;正输入比例不能当因果责任比例。 -独立新模型分支尚待用户确认,不把持续目标自动当作改变冻结动力学的许可。 +固定作者代码在Brian2 2.5.1实际运行。16项单元检查、10组真实回路/精度对照及其重复通过;58/58审计项通过。 +恢复作者完整动力学后,五节点真实回路1秒放电从1,483降到610,但后500ms仍有306次。 +因此不能认为“修g reset/不应期就解决学习问题”;持续循环仍存在,低活跃度不是晋级条件。 -## 新增机制证据 +下一步先做独立GPU实现的高入度/累加顺序与短时全图对照,再检验固定DoOR嗅觉输入是否保留区别;尚未开始conditioning。 +输入请求、不应期拒绝和实际放电必须分开统计。后续学习必须执行真实无调制/冻结/随机奖励对照和等待期,而非复用标签。 -只施加一次初始 spike,使用原有冻结动力学: +## 冻结与服务 -| 真实小回路 | 1 s 内总 spike | 500–1,000 ms spike | -|---|---:|---:| -| 2 个 ALLN | 473 | 238 | -| 3 个 ALLN | 1,064 | 535 | -| 3 ALLN + VA6 PN + KC | 1,483 | 747 | -| 真实前向边对照 | 3 | 0 | -| 无初始刺激 | 0 | 0 | +原230,239项以及4AA/4AB/4AC与背景复核封存文件前后校验不变。 +旧deterministic-v2五组全脑参考重新运行,事件、计数、最终电压和g精确一致。 +base CSR、raw counts、W_syn、transmitter signs、APL参数、eligibility-v2、14,232-edge mask未修改。 +只在独立实验环境安装作者版本依赖;未停用或修改ComfyUI。 +没有游戏、RL、decoder、视觉输入或权重训练,没有生成新的learned candidate。 -最小回路:body 11478 → 11620(235 contacts),11620 → 11478(283 contacts),两者为 lLN1_bc / ACh。 -单次输入足以在隔离小回路中产生持续到观察期末的活动;不代表已证明全脑必要性,也不代表真实果蝇该回路必然如此。 - -## 原作者实现与本项目适配差异 - -固定作者代码在 spike 后清零 g,对不应期内 g 更新/输入设限,并有不同积分、阈值和刺激时序。 -本项目冻结版本明确保留 g,继续衰减/接收输入。这是建模语义差异,不是本轮发现的 GPU 回归错误。 -单细胞组件测试证明这些选择会改变响应,但真实连接强度的一次输入下,reset-only 并未改变 spike 数。 -因此 **g reset 不得直接称为学习修复**,也不能仅据放电减少自动选择新模型。 - -## 验证与下一步 - -7 项单元测试、17×4 单细胞 fixture、5 个真实小回路 CPU/GPU 全状态/事件精确对照通过。 -五组 deterministic-v2 全脑冻结参考 trial 精确一致。 -原快照 230,239 项及 Phase 4AA / 4AB 模型与实验前后校验无变化。 -新产物有独立 manifest/SHA-256;未训练、未生成 learned candidate。 -ComfyUI 保持驻留,不停用、不卸载、不升级依赖。 - -后续需要明确授权的独立动力学模型分支:先验证原作者 oracle 和局部机制,再检查输入区别与学习功能。 -仍要求独立 evaluation seeds、A 对 B 的特异性、MBON/downstream readout 和完整 conditioning controls。 -不调整学习率/阈值或扩大 mask,不进入游戏、RL、decoder、视觉;不修改已冻结版本。 - -Git 仅同步代码、小报告、官方小型源代码及校验清单。大数据/完整 spike 输出仍在服务器,不等于完整异机备份。 +代码、小报告、来源和校验清单进入Git;大数据及完整实验轨迹保留服务器,不等于完整异机备份。 diff --git a/docs/progress/phase4ad-author-semantics.md b/docs/progress/phase4ad-author-semantics.md new file mode 100644 index 0000000..38f8de1 --- /dev/null +++ b/docs/progress/phase4ad-author-semantics.md @@ -0,0 +1,71 @@ +# Phase 4AD 作者动力学语义实验室 + +状态:`COMPLETE-ORACLE-VALIDATED-LAB-ONLY`。 + +本轮仅有预声明的小回路与算子实验;没有整脑替代动力学运行、conditioning、学习成功或新学习候选。 +检查以原始事件、状态轨迹和预注册误差界限重算。缺失、失败、非有限值或初始事件丢失均不能通过;放电减少或静默本身不构成成功。 + +核查通过 58/58 项;失败或不完整 0 项。 +冻结历史完整性:通过。 +源码与输入预注册一致性:通过。 + +| 回路 | 语义 | 精度 | 总spikes | late spikes | +|---|---|---|---:|---:| +| pair | frozen | float32 | 473 | 238 | +| pair | reset_g_only | float32 | 223 | 111 | +| pair | refractory_gate_only | float32 | 635 | 321 | +| pair | reset_and_refractory | float32 | 223 | 111 | +| trio | frozen | float32 | 1064 | 535 | +| trio | reset_g_only | float32 | 565 | 283 | +| trio | refractory_gate_only | float32 | 1100 | 552 | +| trio | reset_and_refractory | float32 | 469 | 235 | +| five | frozen | float32 | 1483 | 747 | +| five | reset_g_only | float32 | 868 | 433 | +| five | refractory_gate_only | float32 | 1510 | 763 | +| five | reset_and_refractory | float32 | 634 | 318 | +| feedforward | frozen | float32 | 3 | 0 | +| feedforward | reset_g_only | float32 | 3 | 0 | +| feedforward | refractory_gate_only | float32 | 3 | 0 | +| feedforward | reset_and_refractory | float32 | 3 | 0 | +| no_input | frozen | float32 | 0 | 0 | +| no_input | reset_g_only | float32 | 0 | 0 | +| no_input | refractory_gate_only | float32 | 0 | 0 | +| no_input | reset_and_refractory | float32 | 0 | 0 | +| pair | author_complete | float64 | 213 | 106 | +| pair | author_complete | float32 | 213 | 106 | +| trio | author_complete | float64 | 448 | 224 | +| trio | author_complete | float32 | 448 | 224 | +| five | author_complete | float64 | 610 | 306 | +| five | author_complete | float32 | 610 | 306 | +| feedforward | author_complete | float64 | 3 | 0 | +| feedforward | author_complete | float32 | 3 | 0 | +| no_input | author_complete | float64 | 0 | 0 | +| no_input | author_complete | float32 | 0 | 0 | + +作者Brian2与独立NumPy比较: + +| 实验 | 结果 | 事件一致 | 最大V/g误差 mV | 首次事件分歧step | +|---|---|---|---:|---:| +| author:pair:float64 | 通过 | True | 7.105427357601002e-14 | None | +| author:pair:float32 | 通过 | True | 2.41696834564209e-05 | None | +| author:trio:float64 | 通过 | True | 8.526512829121202e-14 | None | +| author:trio:float32 | 通过 | True | 4.25875186920166e-05 | None | +| author:five:float64 | 通过 | True | 3.836930773104541e-13 | None | +| author:five:float32 | 通过 | True | 0.0002123713493347168 | None | +| author:feedforward:float64 | 通过 | True | 3.765876499528531e-13 | None | +| author:feedforward:float32 | 通过 | True | 0.00020179152488708496 | None | +| author:no_input:float64 | 通过 | True | 7.105427357601002e-15 | None | +| author:no_input:float32 | 通过 | True | 1.0728836059570312e-06 | None | + +float32与float64交叉比较仅记录精度影响,允许保留分歧,不能用于掩盖各自与独立oracle的失败。 +- precision_cross_record:pair:事件一致=True,最大误差=3.733467101341148e-05 mV,首次事件分歧step=None。 +- precision_cross_record:trio:事件一致=True,最大误差=3.733467101341148e-05 mV,首次事件分歧step=None。 +- precision_cross_record:five:事件一致=True,最大误差=0.00019546693161487383 mV,首次事件分歧step=None。 +- precision_cross_record:feedforward:事件一致=True,最大误差=0.0005722045887850413 mV,首次事件分歧step=None。 +- precision_cross_record:no_input:事件一致=True,最大误差=0.0 mV,首次事件分歧step=None。 + +所有失败轨迹和错误文件原样保留;本简报没有选择获胜变体。 +小回路缺少外部整脑输入与graded APL,不能证明整脑因果必要性、生物真实性或信息保持。初始诊断seed也不是作者的感官Poisson接口。 +环境为Linux宿主,作者记录为Windows;Python补丁版本与环境差异见environment记录,不能称为二进制相同或原论文整脑复现。 +后续整脑嗅觉比较仍须核查固定输入、实际送达事件、持续活动和信息保持;可用学习仍需至少5个训练seed、独立评估、MBON/downstream的A对中性B特异性及acquisition/reversal/retention/delayed-reward对照。 +封存排除 .venv 与 __pycache__,保留环境安装报告;manifest列出payload哈希,checksums另含manifest,不存在自哈希循环。 diff --git a/docs/progress/phase4ad-interpretation.md b/docs/progress/phase4ad-interpretation.md new file mode 100644 index 0000000..684bfad --- /dev/null +++ b/docs/progress/phase4ad-interpretation.md @@ -0,0 +1,54 @@ +# 独立模型分支首轮结果:实现正确,不等于学习修复 + +用户明确授权独立新模型分支测试动力学假设。分支为 `codex/lif-author-semantics-lab`, +模型目录 `models/male-cns-lif/author-semantics-lab-v1/`,实验目录 `experiments/phase4ad-author-semantics/`。 +Phase 1–4AC 保持原样;没有替换已有候选、训练、调学习率、扩大mask或连接游戏。 + +## 已验证的结果 + +正式状态 `COMPLETE-ORACLE-VALIDATED-LAB-ONLY`,58/58审计项通过。 +实际运行固定作者代码的 `create_model`,并与独立解析积分实现对照,而非仅比较两份自写程序。 +8项算子/边界fixture各测试float64与float32;5个固定真实motif各测试两种精度,分别重复。 +各精度内的spike事件、计数和不应期逐步一致,重复运行逐数组精确一致。 +五个motif的float32与float64事件也一致,但不能外推到全脑高入度累加。 +float64最大V/g差约3.84e-13 mV;float32独立实现相对Brian2最大差约2.12e-4 mV。 + +| 真实回路 | 旧冻结模型1秒总spike | 完整作者语义总spike | 作者语义后500ms spike | +|---|---:|---:|---:| +| 两个ALLN | 473 | 213 | 106 | +| 三个ALLN | 1,064 | 448 | 224 | +| 三ALLN + VA6 PN + KC | 1,483 | 610 | 306 | +| 前向真实边对照 | 3 | 3 | 0 | +| 无刺激 | 0 | 0 | 0 | + +**持续循环没有因恢复作者语义而消失。** 放电减少不是学习成功,也没有据此挑选获胜参数。 +单独限制不应期内g更新甚至提高了这些回路的放电;不能把单一算子改动当作通用修复。 +小回路省略了大部分全脑输入和graded APL,不能证明全脑问题完全由这些连接引起。 +此前全脑背景复核显示,三个ALLN的晚期正到达权重约91%以上来自所选五节点之外;这也不是因果责任百分比。 + +## 作者参考及边界 + +- 官方代码:`philshiu/Drosophila_brain_model`,commit `91bdd1e7dcf193f3e7ca5a8933497fcef63b7960`,MIT。 +- [原作者论文](https://www.nature.com/articles/s41586-024-07763-9);[固定代码版本](https://github.com/philshiu/Drosophila_brain_model/tree/91bdd1e7dcf193f3e7ca5a8933497fcef63b7960)。 +- Brian2 2.5.1,独立Linux环境;作者记录为Windows/Python3.10.11,此处Linux/Python3.10.12,不能称为二进制相同。 +- 原始g单位为volt,是加性输入状态,不是电导;reset中的局部`w=0`不会清零真实Synapses权重。 +- 原`poi`接口另做了零时长编译审计:向v加入68.75mV、150Hz、N=1,并将目标不应期置零。它不是本轮共同初始seed,也不是已验证的新嗅觉接口。 +- 安装只发生在新实验`.venv`,保存下载URL与归档SHA-256;MarkupSafe1.1.1使用源归档,其他核心包使用wheel。未改旧科学环境或ComfyUI。 + +## 下一关 + +1. 独立GPU实现须补足高入度、正负抵消、逐边加法顺序、非零初始g、阈值临界值与延迟队列边界测试;禁止用`g+sum(w)`擅自代替作者逐边写入。 +2. 在短时全图上对照事件及状态,再开展固定DoOR嗅觉CAL。保持既有输入请求,不顺手切换为作者的rfc=0输入接口;分别统计请求、因不应期拒绝与实际放电。 +3. CAL通过后才能使用独立seed及新odor验证。不能靠低活跃度或held-out调参授予成功。 +4. 真正conditioning须重新执行D(t)=0、frozen与随机奖励路径,并真正推进retention等待时间;旧脚本中复用基线/新建状态的检查不能替代这些端到端验证。 +5. 全部学习结论仍以MBON/downstream的刺激特异性、acquisition/reversal/retention/delayed reward为准,至少5个training seeds与独立evaluation seeds。 + +## 完整性和保存 + +原快照230,239项及4AA、4AB、4AC、背景复核产物前后SHA-256无变化。 +旧deterministic-v2五个全脑冻结trial重新执行,事件、计数、最终V/g逐数组相同。 +4090回归峰值已分配显存285,994,496字节;这不是新动力学全脑性能benchmark。 +新模型11个payload、新实验565个payload已独立封存,环境目录不纳入payload。 +Git同步代码、小报告和校验清单;大数据及完整状态轨迹仍在服务器,不能称为完整异机备份。 + +详见[完整结果](phase4ad-author-semantics.md)、[封存核验](../../registry/phase4ad-author-semantics/seal-verification.json)。 diff --git a/models/male-cns-lif/author-semantics-lab-v1/PROTOCOL.md b/models/male-cns-lif/author-semantics-lab-v1/PROTOCOL.md new file mode 100644 index 0000000..e15a294 --- /dev/null +++ b/models/male-cns-lif/author-semantics-lab-v1/PROTOCOL.md @@ -0,0 +1,71 @@ +# Phase 4AD — independently authorized author-semantics laboratory + +Human authorization: "允许独立新模型分支测试动力学假设". +Goal remains usable stimulus-specific learning, not reducing spike count or passing an isolated fixture. + +All Phase 1–4AC scientific artifacts, canonical CSR/raw counts, transmitter signs, +W_syn=0.275, APL calibration, eligibility-v2 and the 14,232-edge plastic mask are +read-only. No training, threshold/gain/eta search, decoder, game or visual work in +this prerequisite laboratory. Existing candidate names are not replaced. + +## Fixed comparison before results + +Use the exact five preselected 4AC motifs and the same initial single seed event, +not newly selected cells. Record all five outcomes, including persistent firing. +Preserve true edge IDs, counts and original global neuron_idx/body_id. + +1. Reproduce frozen explicit float32 Euler/operator semantics exactly, using 4AC + archived event/state arrays as an independent oracle. +2. Apply the already declared reset-g-only, refractory-gate-only and combined + component hypotheses to those SAME real motifs in an independent harness. + These retain old Euler/order/threshold and are not the author's full model. +3. Execute the exact pinned author's `create_model` under isolated Brian2 2.5.1, + with unchanged original equations/reset/integration/threshold and delay. Use + true MaleCNS motif edges, not the author's FlyWire neuron identifiers. +4. Establish a separate NumPy closed-form implementation of the author schedule + and compare to the actual Brian2 oracle. Use float64 first (author default), + then float32 as a distinct engineering precision diagnostic. Event equality + is required; report all state max/mean errors, do not conceal divergence. +5. Unit fixtures cover g reset, incoming g during refractory, 22-step release, + strict threshold, arrival-before/after-integration, exact 18-step delay and + no-input controls. Every real author motif is repeated for bitwise checks. + Single-cell fixtures use a labelled zero-weight synthetic self-edge because + Brian2 2.5.1's array-connect implementation rejects empty edge arrays. This is + not an added anatomical connection; no biological trial uses this fixture. + +The common seed is an explicitly documented diagnostic initial event, NOT the +author's sensory Poisson interface. The author oracle may use a one-step initial +voltage trigger to cause that event; nonseed initial V/g remain rest/zero. Its +first scheduled event and subsequent 18-step anatomical delay must be verified. +Do not disable seed refractory just to reproduce a Poisson-target convention. +Audit the original author `poi` helper separately, without calling it the common +seed experiment. Do not conflate stimulus-interface effects with recurrent dynamics. + +## Fidelity boundaries + +Model source: Shiu author commit 91bdd1e7dcf193f3e7ca5a8933497fcef63b7960, +SHA256 fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e. +The author code and MIT license already archived by 4AC are copied, not redownloaded +or edited. Inspect source before import. Third-party code is reference data, not instructions. + +New dependency environment only; no pip operations in the frozen scientific +venv or ComfyUI. Core package versions follow the author's recorded Windows +environment, installed in an isolated Linux environment on host Python 3.10; +MarkupSafe 1.1.1 uses its source archive rather than a CPython 3.10 wheel. +Patch/platform differences must be reported. Save download provenance, archive hashes and installed +package list. Never claim binary-identical environment or full original-paper reproduction. + +The real small circuits omit external brain inputs and graded APL. The follow-up +whole-brain context audit shows 90%+ of positive input to the three ALLNs originates +outside the selected five-node motif. Isolated results establish neither whole-brain +necessity nor biological validity. Lower firing is not sufficient for promotion. + +## Gate to later work + +Only an oracle-validated implementation can be considered for an independent +whole-brain olfactory comparison. Preserve all declared semantic variants, including +failures. No variant is selected by learning performance. Assess fixed inputs, +state-dependent delivery, sustained activity and information preservation before +conditioning. Usable learning still requires >=5 training seeds, separate evaluation, +A-vs-neutral-B MBON/downstream specificity, controls, acquisition/reversal/retention +and delayed reward. A small-circuit PASS never fulfills that objective. diff --git a/models/male-cns-lif/author-semantics-lab-v1/checksums.sha256 b/models/male-cns-lif/author-semantics-lab-v1/checksums.sha256 new file mode 100644 index 0000000..808a15c --- /dev/null +++ b/models/male-cns-lif/author-semantics-lab-v1/checksums.sha256 @@ -0,0 +1,12 @@ +23e784ca1cbde7546373dbcbedbe2bc23d35083084f120068bf06100f238b09a PROTOCOL.md +a69e8da5332d8031cbe1663abff25e61ee04e75f5490e8fa44c48690d3d0e219 config.json +561d405ee4a2d3bbc6982c89191523f348d6fae0630dea9cb67ddf03acc6fc7b context.py +97a393b95d100dc5d95b624e4cd0d15511307b8c70e0ebd788b773c143ebfed6 finalize.py +1e2b31545f1206fe1c1f4084b4a9ac0f21c74990c52e8fd156e809725fc5fb95 interface_audit.py +9663da41d5f623e1d7750e3cad3df880148079968f115bf583b58799fc5fb31f math_lab.py +2f4b073261965cf18a94697caf725c40b2e8db790c2871862201337f40c399e5 oracle_runner.py +49caa9553938f06539ecf282868491f8e1319d8f24220f89ac9e232db2d82e51 prepare.py +a69efc6509b85a5cc00a652caa4820c9c9e1406f6b97c6cc741322728c4d51c3 requirements-oracle.txt +8746e1971c5a40a738e10f8f574a243c29cefa5a8b9f61a2846557ceffd1289a run_lab.py +fe37a48ce804e6c50f93404bfd3c23a7e54cd49061bbdfb4860315879648c73b verify_frozen.py +07a22bade4892adca3a4585656aa3ecce5219790b0dc8a851a12bfd7248d3769 manifest.json diff --git a/models/male-cns-lif/author-semantics-lab-v1/config.json b/models/male-cns-lif/author-semantics-lab-v1/config.json new file mode 100644 index 0000000..dc9699b --- /dev/null +++ b/models/male-cns-lif/author-semantics-lab-v1/config.json @@ -0,0 +1,36 @@ +{ + "name": "author-semantics-lab-v1", + "phase": "4AD", + "root": "/data/digital-drosophila", + "experiment": "experiments/phase4ad-author-semantics", + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "human_authorization": "允许独立新模型分支测试动力学假设", + "dt_ms": 0.1, + "duration_ms": 1000.0, + "seed_margin_mv": 1.0, + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "synaptic_tau_ms": 5.0, + "refractory_ms": 2.2, + "resting_potential_mv": -52.0, + "reset_potential_mv": -52.0, + "threshold_mv": -45.0, + "synaptic_delay_ms": 1.8, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "seed_node": 1381, + "motifs": ["pair", "trio", "five", "feedforward", "no_input"], + "component_policies": ["frozen", "reset_g_only", "refractory_gate_only", "reset_and_refractory"], + "author_precisions": ["float64", "float32"], + "comparison": { + "float64_state_max_abs_tolerance_mv": 0.00000001, + "float32_state_max_abs_tolerance_mv": 0.001, + "exact_spike_events_required_for_oracle_validation": true, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "no_training_or_candidate": true +} diff --git a/models/male-cns-lif/author-semantics-lab-v1/context.py b/models/male-cns-lif/author-semantics-lab-v1/context.py new file mode 100644 index 0000000..65c1654 --- /dev/null +++ b/models/male-cns-lif/author-semantics-lab-v1/context.py @@ -0,0 +1,27 @@ +import hashlib +import json +from pathlib import Path + +MODEL=Path(__file__).resolve().parent +CFG=json.loads((MODEL/'config.json').read_text(encoding='utf-8')) +ROOT=Path(CFG['root']);EXP=ROOT/CFG['experiment'];AC=ROOT/CFG['prior_experiment'] + +def digest(path): + h=hashlib.sha256() + with Path(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=Path(path);path.parent.mkdir(parents=True,exist_ok=True) + with path.open('x',encoding='utf-8') as f:json.dump(value,f,indent=2,ensure_ascii=False,allow_nan=False);f.write('\n') + +def source_hashes(): + return {p.name:digest(p) for p in sorted(MODEL.iterdir()) if p.is_file() and p.name not in ('manifest.json','checksums.sha256')} + +def check_prereg(): + pre=json.loads((EXP/'protocol/preregistered.json').read_text()) + assert pre['source_hashes']==source_hashes(),'Source changed after preregistration' + for r in pre['input_hashes']: + assert digest(ROOT/r['path'])==r['sha256'],r['path'] + return pre diff --git a/models/male-cns-lif/author-semantics-lab-v1/finalize.py b/models/male-cns-lif/author-semantics-lab-v1/finalize.py new file mode 100644 index 0000000..fa08966 --- /dev/null +++ b/models/male-cns-lif/author-semantics-lab-v1/finalize.py @@ -0,0 +1,411 @@ +"""Seal a descriptive laboratory audit, including incomplete and failed runs. + +Run this with the frozen scientific environment, not the isolated Brian2 venv. +No simulation, parameter selection, candidate promotion or old-artifact write occurs. +""" +from datetime import datetime, timezone +import json +import math +from pathlib import Path +import sys +import traceback + +import numpy as np +import pandas as pd + +from context import CFG, EXP, MODEL, ROOT, check_prereg, digest, save, source_hashes +from prepare import frozen_integrity + + +UNIT_NAMES = ("zero", "weak_excitation", "inhibition", "refractory_boundary", + "equal_threshold", "above_threshold", "nonzero_g_reset", "delay_18") +EXCLUDED_PARTS = {".venv", "__pycache__"} +SEAL_NAMES = {"manifest.json", "checksums.sha256"} + + +def read_json(path): + with Path(path).open(encoding="utf-8") as stream: + return json.load(stream, parse_constant=lambda value: (_ for _ in ()).throw( + ValueError("Nonfinite JSON number: " + value))) + + +def exception_record(error): + return {"type": type(error).__name__, "message": str(error), + "traceback": traceback.format_exc()} + + +def attempt(records, name, function): + """Never let an earlier failed arm hide subsequent available evidence.""" + try: + detail = function() + if not isinstance(detail, dict) or type(detail.get("pass")) is not bool: + raise ValueError("Check must provide an explicit Boolean pass") + item = {"name": name, **detail} + except Exception as error: + item = {"name": name, "pass": False, "error": exception_record(error)} + records.append(item) + return item + + +def require(condition, message): + if not condition: + raise ValueError(message) + + +def load_trace(directory, expected_nodes, steps, cfg, seed_node, natural_events=False): + events = pd.read_csv(directory / "events.csv", dtype={"step": "int64", "neuron_idx": "int64"}) + require(list(events.columns) == ["step", "neuron_idx"], "Unexpected event columns") + for key in ("step", "neuron_idx"): + values = events[key].to_numpy() + require(np.isfinite(values).all() and np.equal(values, np.floor(values)).all(), + "Nonfinite or nonintegral event field: " + key) + ticks = events.step.to_numpy(np.int64) + nodes = events.neuron_idx.to_numpy(np.int64) + require(bool(np.all((ticks >= 0) & (ticks < steps))), "Event outside trial") + require(bool(np.all(np.diff(ticks) >= 0)), "Events not time ordered") + require(not events.duplicated().any(), "Duplicate event at one neuron/timestep") + require(bool(np.isin(nodes, expected_nodes).all()), "Event identity outside motif") + with np.load(directory / "state.npz", allow_pickle=False) as stored: + state = {key: stored[key].copy() for key in stored.files} + require(np.array_equal(state["nodes"], expected_nodes), "State neuron order differs") + history = state["history"] + require(history.shape == (steps, 3, len(expected_nodes)), "Incomplete state history") + require(all(np.isfinite(value).all() for value in state.values()), "Nonfinite state") + actual_counts = np.array([np.count_nonzero(nodes == node) for node in expected_nodes]) + require(np.array_equal(state["counts"], actual_counts), "Counts disagree with raw events") + for index, key in enumerate(("v", "g", "ref")): + require(np.array_equal(state[key], history[-1, index]), + "Final state disagrees with history: " + key) + if seed_node is None and not natural_events: + require(len(ticks) == 0, "No-input control emitted a spike") + elif seed_node is not None: + require(np.array_equal(nodes[ticks == 0], [seed_node]), + "Declared initial seed event missing or duplicated") + late = ticks >= round(cfg["late_start_ms"] / cfg["dt_ms"]) + per_node = [{"neuron_idx": int(node), "spikes": int(actual_counts[index]), + "late_spikes": int(np.count_nonzero(late & (nodes == node))), + "last_ms": float(ticks[nodes == node][-1] * cfg["dt_ms"]) + if actual_counts[index] else None} + for index, node in enumerate(expected_nodes)] + return {"step": ticks, "neuron_idx": nodes, **state}, per_node + + +def compare_raw(actual, expected, tolerance): + require(math.isfinite(tolerance) and tolerance >= 0, "Invalid preregistered tolerance") + a = np.asarray(actual["history"], np.float64) + b = np.asarray(expected["history"], np.float64) + require(a.shape == b.shape and a.size > 0, "Incomplete comparison trajectories") + require(np.isfinite(a).all() and np.isfinite(b).all(), "Nonfinite comparison trajectory") + error = np.abs(a[:, :2] - b[:, :2]) + exact_events = bool(np.array_equal(actual["step"], expected["step"]) and + np.array_equal(actual["neuron_idx"], expected["neuron_idx"])) + first = None + if not exact_events: + for step in range(len(a)): + aa = actual["neuron_idx"][actual["step"] == step] + bb = expected["neuron_idx"][expected["step"] == step] + if not np.array_equal(aa, bb): + first = step + break + prefix = error if first is None else error[:first] + reference_exact = bool(np.array_equal(a[:, 2], b[:, 2])) + count_exact = bool(np.array_equal(actual["counts"], expected["counts"])) + maximum = float(error.max()) + return {"exact_events": exact_events, "exact_counts": count_exact, + "ref_exact": reference_exact, "max_abs_mv": maximum, + "mean_abs_mv": float(error.mean()), + "same_event_prefix_max_abs_mv": float(prefix.max()) if prefix.size else None, + "first_event_divergence_step": first, "tolerance_mv": tolerance, + "pass_oracle": exact_events and count_exact and reference_exact and maximum <= tolerance} + + +def comparison_record_matches(raw, stored): + """Only descriptive mean reduction may differ between scientific NumPy builds.""" + if set(raw) != set(stored): + return False + return all(math.isclose(raw[key], stored[key], rel_tol=0, abs_tol=1e-12) + if key == "mean_abs_mv" else raw[key] == stored[key] for key in raw) + + +def motif_nodes(cfg, motif): + with np.load(ROOT / cfg["prior_experiment"] / "motifs" / (motif + "-state.npz"), + allow_pickle=False) as prior: + return prior["nodes"].copy() + + +def check_summary_rows(table, motif, policy, precision, per_node): + part = table[(table.motif == motif) & (table.policy == policy) & + (table.precision == precision)] + require(len(part) == len(per_node) and not part.neuron_idx.duplicated().any(), + "Missing/duplicate per-neuron summary rows") + require(set(part.neuron_idx) == {row["neuron_idx"] for row in per_node}, + "Summary neuron identities differ") + indexed = part.set_index("neuron_idx") + for row in per_node: + current = indexed.loc[row["neuron_idx"]] + require(current.spikes == row["spikes"] and current.late_spikes == row["late_spikes"], + "Summary spike counts disagree with raw events") + last = current.last_ms + require(pd.isna(last) if row["last_ms"] is None else last == row["last_ms"], + "Summary last-spike time disagrees with raw events") + + +def seal(root): + require(not any((root / name).exists() for name in SEAL_NAMES), + "Refusing to overwrite an existing seal: " + str(root)) + files = [] + for path in sorted(root.rglob("*")): + relative = path.relative_to(root) + if EXCLUDED_PARTS.intersection(relative.parts): + continue + require(not path.is_symlink(), "Unsealed symlink not permitted: " + str(path)) + if not path.is_file() or (len(relative.parts) == 1 and path.name in SEAL_NAMES): + continue + files.append({"path": relative.as_posix(), "bytes": path.stat().st_size, + "sha256": digest(path)}) + require(bool(files), "Refusing empty artifact manifest") + manifest = {"schema": "sha256-artifact-manifest-v1", "root": str(root), + "created_utc": datetime.now(timezone.utc).isoformat(), + "excluded_directory_names": sorted(EXCLUDED_PARTS), + "self_hash_policy": "Manifest lists payload files; checksums also hashes manifest; neither hashes checksums.", + "files": files} + save(root / "manifest.json", manifest) + checksum_rows = files + [{"path": "manifest.json", "sha256": digest(root / "manifest.json")}] + with (root / "checksums.sha256").open("x", encoding="utf-8", newline="\n") as stream: + for row in checksum_rows: + stream.write(row["sha256"] + " " + row["path"] + "\n") + for row in checksum_rows: + require(digest(root / row["path"]) == row["sha256"], + "Artifact changed while sealing: " + row["path"]) + + +def main(): + outputs = [EXP / "audit/finalize-start.json", EXP / "audit/final-summary.json", + EXP / "regression/old-integrity-after.json", EXP / "regression/preregistration-after.json", + EXP / "REPORT.md"] + [root / name for root in (MODEL, EXP) for name in SEAL_NAMES] + require(not any(path.exists() for path in outputs), "Refusing reused finalization outputs") + save(EXP / "audit/finalize-start.json", {"timestamp_utc": datetime.now(timezone.utc).isoformat(), + "python": sys.version, "executable": sys.executable, "learning": False, + "whole_brain_alternative_run": False}) + checks = [] + prereg = attempt(checks, "preregistration", lambda: {"pass": True, "record": check_prereg()}) + if prereg["pass"]: + cfg = prereg["record"]["config"] + else: + # Read the sealed declaration for descriptive recovery, never bless source drift. + try: + cfg = read_json(EXP / "protocol/preregistered.json")["config"] + except Exception: + cfg = CFG + integrity = attempt(checks, "old_frozen_integrity_after", lambda: { + "pass": True, "results": frozen_integrity()}) + save(EXP / "regression/old-integrity-after.json", integrity) + + def completed(): + record = read_json(EXP / "audit/run-complete.json") + require(record.get("learning_achieved") is False and + record.get("whole_brain_alternative_run") is False, "Run scope inconsistent") + require(record.get("author_original_source_sha256") == digest(EXP / "external-resources/model.py"), + "Author source hash disagrees with run-complete record") + return {"pass": record.get("all_author_oracle_comparisons_pass") is True and + record.get("all_frozen_components_match_archive") is True, "record": record} + run_complete = attempt(checks, "run_complete", completed) + + def frozen_five_check(): + record = read_json(EXP / "regression/frozen-five.json") + trials = record.get("trials", []) + require(len(trials) == 5 and len({row["trial"] for row in trials}) == 5, + "Exactly five distinct frozen reference trials are required") + required = {"step", "neuron_idx", "counts", "v", "g"} + exact = all(set(row.get("exact", {})) == required and + all(value is True for value in row["exact"].values()) for row in trials) + return {"pass": record.get("pass_all") is True and exact, "record": record, + "scope": "Old frozen runtime regression only, not a new-model dynamics gate."} + frozen_five = attempt(checks, "frozen_five_gpu_references", frozen_five_check) + + def interface_check(): + record = read_json(EXP / "oracle/poi-interface/audit.json") + flags = record.get("checks", {}) + require(isinstance(flags, dict) and bool(flags), "Empty Poisson interface audit") + require(record.get("author_sha256") == digest(EXP / "external-resources/model.py"), + "Poisson audit source hash differs") + require(record.get("simulation_duration_ms") == 0 and + record.get("stochastic_time_steps") == 0 and + record.get("random_realization_tested") is False and + record.get("common_seed_experiment") is False, "Poisson audit scope differs") + for name, expected in record.get("input_hashes", {}).items(): + require(digest(EXP / "oracle/poi-interface" / name) == expected, + "Poisson fixture input changed: " + name) + return {"pass": record.get("gate") is True and all(value is True for value in flags.values()), + "record": record, "scope": "Compile-time interface audit; no Poisson realization."} + interface = attempt(checks, "author_poi_compile_only", interface_check) + outcomes = [] + components = [] + steps = round(cfg["duration_ms"] / cfg["dt_ms"]) + for motif in cfg["motifs"]: + for policy in cfg["component_policies"]: + def component_check(motif=motif, policy=policy): + nodes = motif_nodes(cfg, motif) + raw, per_node = load_trace(EXP / "components" / (motif + "-" + policy), nodes, + steps, cfg, None if motif == "no_input" else cfg["seed_node"]) + outcomes.append({"motif": motif, "policy": policy, "precision": "float32", + "neurons": per_node, "activity_is_not_a_validation_gate": True}) + table = pd.read_csv(EXP / "components/summary.csv", float_precision="round_trip") + check_summary_rows(table, motif, policy, "float32", per_node) + if policy == "frozen": + prior_dir = ROOT / cfg["prior_experiment"] / "motifs" + old_events = pd.read_parquet(prior_dir / (motif + "-events.parquet")) + require(np.array_equal(raw["step"], old_events.step) and + np.array_equal(raw["neuron_idx"], old_events.neuron_idx), + "Frozen events disagree with 4AC") + with np.load(prior_dir / (motif + "-state.npz"), allow_pickle=False) as old: + require(all(np.array_equal(old[key], raw[key]) for key in old.files), + "Frozen states disagree with 4AC") + return {"pass": True, "raw_and_summary_consistent": True, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive."} + components.append(attempt(checks, "component:" + motif + ":" + policy, component_check)) + + unit_results = [] + for precision in cfg["author_precisions"]: + for fixture in UNIT_NAMES: + def unit_check(precision=precision, fixture=fixture): + stem = fixture + record = read_json(EXP / "regression" / ("unit-" + stem + "-" + precision + ".json")) + require(record.get("fixture") == fixture and record.get("precision") == precision, + "Unit identity mismatch") + unit_cfg = dict(cfg, duration_ms=20.0) + seeded = fixture in ("refractory_boundary", "above_threshold") + directory = EXP / "oracle" / ("unit-" + stem + "-" + precision) + nodes = np.array([-2, -1]) if fixture == "delay_18" else np.array([-1]) + seed = -2 if fixture == "delay_18" else (-1 if seeded else None) + actual, _ = load_trace(directory / "brian-output", nodes, 200, unit_cfg, seed, + natural_events=fixture == "nonzero_g_reset") + independent, _ = load_trace(directory / "independent-output", nodes, 200, unit_cfg, seed, + natural_events=fixture == "nonzero_g_reset") + raw = compare_raw(actual, independent, float(cfg["comparison"][precision + "_state_max_abs_tolerance_mv"])) + stored = read_json(directory / "comparison.json") + require(comparison_record_matches(raw, stored) and + comparison_record_matches(raw, record["comparison"]), + "Unit comparison differs from raw trajectories") + flags = record.get("checks") + require(isinstance(flags, dict) and bool(flags), "Empty unit checks cannot pass") + return {"pass": raw["pass_oracle"] and all(value is True for value in flags.values()), + "checks": flags, "raw_comparison": raw} + unit_results.append(attempt(checks, "unit:" + fixture + ":" + precision, unit_check)) + + author_results = [] + precision_cross = [] + for motif in cfg["motifs"]: + by_precision = {} + for precision in cfg["author_precisions"]: + def author_check(motif=motif, precision=precision): + nodes = motif_nodes(cfg, motif) + directory = EXP / "oracle" / (motif + "-" + precision) + seed = None if motif == "no_input" else cfg["seed_node"] + actual, per_node = load_trace(directory / "brian-output", nodes, steps, cfg, seed) + independent, _ = load_trace(directory / "independent-output", nodes, steps, cfg, seed) + by_precision[precision] = actual + outcomes.append({"motif": motif, "policy": "author_complete", "precision": precision, + "neurons": per_node, "activity_is_not_a_validation_gate": True}) + raw = compare_raw(actual, independent, float(cfg["comparison"][precision + "_state_max_abs_tolerance_mv"])) + stored = read_json(directory / "comparison.json") + require(comparison_record_matches(raw, stored), "Author comparison differs from raw trajectories") + repeated, _ = load_trace(EXP / "oracle" / (motif + "-" + precision + "-repeat") / + "brian-output", nodes, steps, cfg, seed) + repeat_flags = read_json(EXP / "regression" / (motif + "-" + precision + "-repeat.json")) + require(set(repeat_flags) == set(actual) - {"nodes"}, "Incomplete repeat comparison fields") + repeat_raw = {key: bool(np.array_equal(actual[key], repeated[key])) for key in repeat_flags} + require(repeat_raw == repeat_flags, "Repeat flags disagree with raw arrays") + table = pd.read_csv(EXP / "audit/all-motif-results.csv", float_precision="round_trip") + check_summary_rows(table, motif, "author_complete", precision, per_node) + return {"pass": raw["pass_oracle"] and all(repeat_raw.values()), + "raw_comparison": raw, "repeat_exact": repeat_raw} + author_results.append(attempt(checks, "author:" + motif + ":" + precision, author_check)) + def cross_check(motif=motif): + raw = compare_raw(by_precision["float32"], by_precision["float64"], + float(cfg["comparison"]["float32_state_max_abs_tolerance_mv"])) + stored = read_json(EXP / "regression" / (motif + "-precision-cross-comparison.json")) + require(comparison_record_matches(raw, stored), "Precision cross comparison differs from raw trajectories") + return {"pass": True, "comparison": raw, + "interpretation": "Reporting consistency only; cross-precision divergence is allowed and retained."} + precision_cross.append(attempt(checks, "precision_cross_record:" + motif, cross_check)) + + retained_errors = [] + for path in sorted(EXP.rglob("error.json")): + if EXCLUDED_PARTS.intersection(path.relative_to(EXP).parts): + continue + try: + error = read_json(path) + except Exception as exception: + error = exception_record(exception) + retained_errors.append({"path": path.relative_to(EXP).as_posix(), "error": error}) + checks.append({"name": "no_recorded_oracle_errors", "pass": not retained_errors, + "errors": retained_errors}) + final_prereg = attempt(checks, "preregistration_at_seal", lambda: {"pass": True, "record": check_prereg()}) + save(EXP / "regression/preregistration-after.json", { + "initial": prereg, "at_seal": final_prereg, "observed_source_hashes": source_hashes()}) + passed = bool(checks) and all(item["pass"] for item in checks) + summary = {"phase": cfg.get("phase", "4AD"), + "status": "COMPLETE-ORACLE-VALIDATED-LAB-ONLY" if passed else "INCOMPLETE-OR-FAILED-LAB-VALIDATION", + "laboratory_validation_pass": passed, "checks": checks, + "component_checks": components, "unit_checks": unit_results, + "frozen_five_gpu_check": frozen_five, "author_poi_interface_check": interface, + "author_oracle_checks": author_results, "precision_cross_checks": precision_cross, + "motif_outcomes": outcomes, "run_complete_record": run_complete, + "whole_brain_alternative_run": False, "conditioning_run": False, + "learning_achieved": False, "candidate_generated": False, "selected_variant": None, + "goal_remains_unachieved": True, + "limits": ["No whole-brain or learning experiment in this protocol.", + "No activity-based variant selection; silence is not a success gate.", + "Isolated motifs omit external network input and graded APL.", + "Author equations on MaleCNS motifs do not reproduce the original paper's full brain or sensory interface.", + "Linux host and Python patch differences prevent a binary-identical author-environment claim."]} + save(EXP / "audit/final-summary.json", summary) + failures = [item for item in checks if not item["pass"]] + lines = ["# Phase 4AD 作者动力学语义实验室", "", "状态:`" + summary["status"] + "`。", "", + "本轮仅有预声明的小回路与算子实验;没有整脑替代动力学运行、conditioning、学习成功或新学习候选。", + "检查以原始事件、状态轨迹和预注册误差界限重算。缺失、失败、非有限值或初始事件丢失均不能通过;放电减少或静默本身不构成成功。", "", + f"核查通过 {sum(item['pass'] for item in checks)}/{len(checks)} 项;失败或不完整 {len(failures)} 项。", + "冻结历史完整性:" + ("通过。" if integrity["pass"] else "失败或未完成,详见保存的错误。"), + "源码与输入预注册一致性:" + ("通过。" if prereg["pass"] and final_prereg["pass"] else "失败或未完成;不得授予验证成功。"), "", + "| 回路 | 语义 | 精度 | 总spikes | late spikes |", "|---|---|---|---:|---:|"] + for row in outcomes: + lines.append("| {} | {} | {} | {} | {} |".format(row["motif"], row["policy"], row["precision"], + sum(item["spikes"] for item in row["neurons"]), sum(item["late_spikes"] for item in row["neurons"]))) + if not outcomes: + lines.append("| 无完整可读取结果 | 未执行或缺失 | — | — | — |") + lines.extend(["", "作者Brian2与独立NumPy比较:", "", + "| 实验 | 结果 | 事件一致 | 最大V/g误差 mV | 首次事件分歧step |", "|---|---|---|---:|---:|"]) + for item in author_results: + raw = item.get("raw_comparison", {}) + lines.append("| {} | {} | {} | {} | {} |".format(item["name"], "通过" if item["pass"] else "失败/缺失", + raw.get("exact_events", "未知"), raw.get("max_abs_mv", "未知"), + raw.get("first_event_divergence_step", "无或未取得"))) + lines.extend(["", "float32与float64交叉比较仅记录精度影响,允许保留分歧,不能用于掩盖各自与独立oracle的失败。"]) + for item in precision_cross: + raw = item.get("comparison") + if raw: + lines.append(f"- {item['name']}:事件一致={raw['exact_events']},最大误差={raw['max_abs_mv']} mV,首次事件分歧step={raw['first_event_divergence_step']}。") + if failures: + lines.extend(["", "失败与未完成项:", ""]) + for item in failures: + detail = item.get("error", {}).get("message") or "原始条件未全部满足;完整字段见 final-summary.json。" + lines.append("- `" + item["name"] + "`:" + str(detail).replace("\n", " ")) + lines.extend(["", "所有失败轨迹和错误文件原样保留;本简报没有选择获胜变体。", + "小回路缺少外部整脑输入与graded APL,不能证明整脑因果必要性、生物真实性或信息保持。初始诊断seed也不是作者的感官Poisson接口。", + "环境为Linux宿主,作者记录为Windows;Python补丁版本与环境差异见environment记录,不能称为二进制相同或原论文整脑复现。", + "后续整脑嗅觉比较仍须核查固定输入、实际送达事件、持续活动和信息保持;可用学习仍需至少5个训练seed、独立评估、MBON/downstream的A对中性B特异性及acquisition/reversal/retention/delayed-reward对照。", + "封存排除 .venv 与 __pycache__,保留环境安装报告;manifest列出payload哈希,checksums另含manifest,不存在自哈希循环。", ""]) + with (EXP / "REPORT.md").open("x", encoding="utf-8") as stream: + stream.write("\n".join(lines)) + seal(MODEL) + seal(EXP) + print(json.dumps({"status": summary["status"], "laboratory_validation_pass": passed, + "failed_checks": len(failures), "learning_achieved": False, + "whole_brain_alternative_run": False, "sealed": [str(MODEL), str(EXP)]}, + ensure_ascii=False), flush=True) + return 0 if passed else 1 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/models/male-cns-lif/author-semantics-lab-v1/interface_audit.py b/models/male-cns-lif/author-semantics-lab-v1/interface_audit.py new file mode 100644 index 0000000..3cac51a --- /dev/null +++ b/models/male-cns-lif/author-semantics-lab-v1/interface_audit.py @@ -0,0 +1,149 @@ +"""Compile-only audit of the pinned author's sensory Poisson interface. + +This is separate from the common single-seed diagnostic. Zero simulation time +is advanced, so this audit does not draw or validate any Poisson realization. +""" +from __future__ import annotations + +import hashlib +import types + +import numpy as np +import pandas as pd + +from context import CFG, EXP, digest, save +from oracle_runner import AUTHOR_COMMIT, AUTHOR_SHA256, _code_records, _environment + + +def audit_author_poi() -> dict: + """Create the original model and poi helper, compile at t=0, and save evidence.""" + author_path = EXP / "external-resources" / "model.py" + author_bytes = author_path.read_bytes() + source_hash = hashlib.sha256(author_bytes).hexdigest() + if source_hash != AUTHOR_SHA256: + raise ValueError("The Poisson audit requires the exact pinned author source") + output = EXP / "oracle" / "poi-interface" + output.mkdir(parents=True, exist_ok=False) + environment = _environment() + save(output / "environment.json", environment) + if environment["packages"]["brian2"]["actual"] != "2.5.1": + raise RuntimeError("The Poisson interface audit requires Brian2 2.5.1") + + import brian2 as b2 + + preferences = {name: b2.prefs[name] for name in ( + "codegen.target", "core.default_float_dtype", "legacy.refractory_timing")} + old_dt = b2.defaultclock.dt + try: + b2.start_scope() + b2.prefs["codegen.target"] = "numpy" + b2.prefs["core.default_float_dtype"] = np.float64 + b2.prefs["legacy.refractory_timing"] = False + b2.defaultclock.dt = float(CFG["dt_ms"]) * b2.ms + author = types.ModuleType("phase4ad_poi_author_" + source_hash[:12]) + author.__file__ = str(author_path) + # Execute exactly the reviewed bytes; create no bytecode beside the source. + exec(compile(author_bytes, str(author_path), "exec"), author.__dict__) + parameters = dict(author.default_params) + + nodes = np.array([-2, -1], dtype=np.int32) + completeness = pd.DataFrame( + {"local_index": np.array([0, 1], dtype=np.int32)}, + index=pd.Index(nodes, name="synthetic_global_neuron_idx")) + connections = pd.DataFrame({ + "Presynaptic_Index": np.array([0], dtype=np.int32), + "Postsynaptic_Index": np.array([1], dtype=np.int32), + "Excitatory x Connectivity": np.array([1], dtype=np.int64), + "raw_count": np.array([1], dtype=np.int64), + "edge_id": np.array([-1], dtype=np.int64), + "source_neuron_idx": nodes[:1], "target_neuron_idx": nodes[1:], + }) + comp_path = output / "completeness.csv" + con_path = output / "connectivity.parquet" + completeness.to_csv(comp_path) + connections.to_parquet(con_path, index=False, engine="pyarrow") + neu, syn, spikes = author.create_model(comp_path, con_path, parameters) + rfc_before = np.asarray(neu.rfc[:] / b2.ms, dtype=np.float64).copy() + # One excited target plus one untouched cell makes the helper's scope + # observable. The optional second-rate class is not exercised here. + inputs, same_neu = author.poi(neu, [0], [], parameters) + if same_neu is not neu: + raise AssertionError("The author poi helper returned a different neuron group") + rfc_after = np.asarray(neu.rfc[:] / b2.ms, dtype=np.float64).copy() + before_v = np.asarray(neu.v_[:], dtype=np.float64).copy() + before_g = np.asarray(neu.g_[:], dtype=np.float64).copy() + before_w = np.asarray(syn.w_[:], dtype=np.float64).copy() + network = b2.Network(neu, syn, spikes, *inputs) + save(output / "schedule.json", { + "schedule": list(network.schedule), + "summary": str(network.scheduling_summary()), + }) + network.run(0 * b2.ms, namespace={}) + save(output / "generated-code.json", _code_records(network)) + + input_records = [] + for item in inputs: + # PoissonInput 2.5.1 retains its on-the-fly subgroup as _group; + # N/rate/weight/target_var are its public read-only properties. + target = item._group + input_records.append({ + "name": item.name, "type": type(item).__name__, + "target_group": target.name, + "target_local_start": int(target.start), + "target_local_stop": int(target.stop), + "target_global_nodes": nodes[int(target.start):int(target.stop)].tolist(), + "target_var": item.target_var, "N": int(item.N), + "rate_hz": float(item.rate / b2.Hz), + "weight_mv": float(item.weight / b2.mV), + "weight_volt": float(item.weight / b2.volt), + "when": item.when, "order": int(item.order), + "dt_ms": float(item.clock.dt / b2.ms), + "abstract_code": str(item.abstract_code), + "generated_code": [str(code.code) for code in item.code_objects], + }) + expected_rfc = float(parameters["t_rfc"] / b2.ms) + expected_weight = float(parameters["w_syn"] * parameters["f_poi"] / b2.mV) + expected_rate = float(parameters["r_poi"] / b2.Hz) + checks = { + "exact_author_source": digest(author_path) == source_hash, + "one_poisson_input": len(input_records) == 1, + "initial_refractory_is_original": bool(np.array_equal(rfc_before, [expected_rfc, expected_rfc])), + "only_excited_target_loses_refractory": bool(np.array_equal(rfc_after, [0., expected_rfc])), + "actual_voltage_interface": all(r["target_var"] == "v" for r in input_records), + "actual_N_one": all(r["N"] == 1 for r in input_records), + "actual_rate_150_hz": bool(expected_rate == 150. and all(r["rate_hz"] == expected_rate for r in input_records)), + "actual_weight_68_75_mv": bool(np.isclose(expected_weight, 68.75, rtol=0, atol=1e-12) + and all(np.isclose(r["weight_mv"], expected_weight, rtol=0, atol=1e-12) for r in input_records)), + "actual_synapses_slot_order_zero": all(r["when"] == "synapses" and r["order"] == 0 for r in input_records), + "zero_elapsed_time": float(network.t / b2.ms) == 0., + "no_recorded_spikes": len(spikes.i[:]) == 0, + "compile_preserves_voltage": bool(np.array_equal(before_v, np.asarray(neu.v_[:]))), + "compile_preserves_g": bool(np.array_equal(before_g, np.asarray(neu.g_[:]))), + "compile_preserves_weights": bool(np.array_equal(before_w, np.asarray(syn.w_[:]))), + "compile_preserves_refractory_configuration": bool(np.array_equal(rfc_after, np.asarray(neu.rfc[:] / b2.ms))), + } + result = { + "gate": bool(all(checks.values())), "checks": checks, + "author_commit": AUTHOR_COMMIT, "author_sha256": source_hash, + "fixture": "two synthetic nodes, one raw_count=1 connection", + "nodes": nodes.tolist(), "exc_local_indices": [0], "exc2_local_indices": [], + "rfc_before_ms": rfc_before.tolist(), "rfc_after_ms": rfc_after.tolist(), + "poisson_inputs": input_records, + "synaptic_weight_mv": np.asarray(syn.w[:] / b2.mV, dtype=np.float64).tolist(), + "input_hashes": {"completeness.csv": digest(comp_path), "connectivity.parquet": digest(con_path)}, + "simulation_duration_ms": 0., "stochastic_time_steps": 0, + "random_realization_tested": False, "common_seed_experiment": False, + "interpretation": "Original poi adds 68.75 mV to voltage at 150 Hz with N=1 in the synapses slot and sets its target rfc to zero. This interface is not the common initial seed experiment.", + "scope": "Compile-time interface audit only; no stochastic trial, learning, or whole-brain simulation. The optional exc2 helper branch is not exercised.", + } + save(output / "audit.json", result) + if not result["gate"]: + raise AssertionError("Author Poisson interface gate failed: " + str(checks)) + return result + except Exception as error: + save(output / "error.json", {"type": type(error).__name__, "message": str(error)}) + raise + finally: + for name, value in preferences.items(): + b2.prefs[name] = value + b2.defaultclock.dt = old_dt diff --git a/models/male-cns-lif/author-semantics-lab-v1/manifest.json b/models/male-cns-lif/author-semantics-lab-v1/manifest.json new file mode 100644 index 0000000..befecb6 --- /dev/null +++ b/models/male-cns-lif/author-semantics-lab-v1/manifest.json @@ -0,0 +1,67 @@ +{ + "schema": "sha256-artifact-manifest-v1", + "root": "/data/digital-drosophila/models/male-cns-lif/author-semantics-lab-v1", + "created_utc": "2026-09-29T23:19:04.144370+00:00", + "excluded_directory_names": [ + ".venv", + "__pycache__" + ], + "self_hash_policy": "Manifest lists payload files; checksums also hashes manifest; neither hashes checksums.", + "files": [ + { + "path": "PROTOCOL.md", + "bytes": 4577, + "sha256": "23e784ca1cbde7546373dbcbedbe2bc23d35083084f120068bf06100f238b09a" + }, + { + "path": "config.json", + "bytes": 1332, + "sha256": "a69e8da5332d8031cbe1663abff25e61ee04e75f5490e8fa44c48690d3d0e219" + }, + { + "path": "context.py", + "bytes": 1057, + "sha256": "561d405ee4a2d3bbc6982c89191523f348d6fae0630dea9cb67ddf03acc6fc7b" + }, + { + "path": "finalize.py", + "bytes": 25910, + "sha256": "97a393b95d100dc5d95b624e4cd0d15511307b8c70e0ebd788b773c143ebfed6" + }, + { + "path": "interface_audit.py", + "bytes": 8415, + "sha256": "1e2b31545f1206fe1c1f4084b4a9ac0f21c74990c52e8fd156e809725fc5fb95" + }, + { + "path": "math_lab.py", + "bytes": 4533, + "sha256": "9663da41d5f623e1d7750e3cad3df880148079968f115bf583b58799fc5fb31f" + }, + { + "path": "oracle_runner.py", + "bytes": 18548, + "sha256": "2f4b073261965cf18a94697caf725c40b2e8db790c2871862201337f40c399e5" + }, + { + "path": "prepare.py", + "bytes": 3453, + "sha256": "49caa9553938f06539ecf282868491f8e1319d8f24220f89ac9e232db2d82e51" + }, + { + "path": "requirements-oracle.txt", + "bytes": 453, + "sha256": "a69efc6509b85a5cc00a652caa4820c9c9e1406f6b97c6cc741322728c4d51c3" + }, + { + "path": "run_lab.py", + "bytes": 10795, + "sha256": "8746e1971c5a40a738e10f8f574a243c29cefa5a8b9f61a2846557ceffd1289a" + }, + { + "path": "verify_frozen.py", + "bytes": 2613, + "sha256": "fe37a48ce804e6c50f93404bfd3c23a7e54cd49061bbdfb4860315879648c73b" + } + ] +} diff --git a/models/male-cns-lif/author-semantics-lab-v1/math_lab.py b/models/male-cns-lif/author-semantics-lab-v1/math_lab.py new file mode 100644 index 0000000..8846903 --- /dev/null +++ b/models/male-cns-lif/author-semantics-lab-v1/math_lab.py @@ -0,0 +1,70 @@ +"""Independent event-scheduled author equation and preserved frozen component arms.""" +import sys +from pathlib import Path +import numpy as np + +sys.path.insert(0,'/data/digital-drosophila/models/male-cns-lif/lif-semantics-audit-v1') +from math_reference import params, state + + +def component(nodes,edges,weights,config,policy,seed_node): + p=params(config['model']);n=len(nodes);steps=round(config['duration_ms']/config['dt_ms']) + ix={int(x):i for i,x in enumerate(nodes)} + src=np.array([ix[int(x)] for x in edges.source_neuron_idx],np.int32) + dst=np.array([ix[int(x)] for x in edges.target_neuron_idx],np.int32) + v=np.full(n,p['rest'],np.float32);g=np.zeros(n,np.float32);ref=np.zeros(n,np.int32) + qlen=p['delay_steps']+1;q=np.zeros((qlen,n),np.float32) + history=np.empty((steps,3,n),np.float32);counts=np.zeros(n,np.int32);ts=[];ns=[] + for t in range(steps): + v,g,ref,fire=state(v,g,ref,q[t%qlen],p,policy);q[t%qlen]=0 + if t==0 and seed_node is not None: + k=ix[seed_node];assert not fire[k] and ref[k]==0 + fire[k]=True;v[k]=p['reset'];ref[k]=p['ref_steps'] + if policy in ('reset_g_only','reset_and_refractory'):g[k]=np.float32(0) + counts+=fire;active=np.flatnonzero(fire);ts.extend([t]*len(active));ns.extend(nodes[active].tolist()) + selected=np.flatnonzero(fire[src]);selected=selected[np.argsort(dst[selected],kind='stable')] + for target in np.unique(dst[selected]): + acc=np.float32(0) + for e in selected[dst[selected]==target]:acc=np.float32(acc+weights[e]) + slot=(t+p['delay_steps'])%qlen;q[slot,target]=np.float32(q[slot,target]+acc) + history[t]=v,g,ref + return dict(step=np.array(ts,np.int32),neuron_idx=np.array(ns,np.int32),counts=counts,v=v,g=g,ref=ref,history=history,queue=q) + + +def author_numpy(nodes,edges,config,precision,seed_node,external_arrivals=None): + """Analytic integration in SI volts; sequential arrival writes follow spike detection.""" + f=np.dtype(precision).type;m=config['model'];n=len(nodes);dt=config['dt_ms'] + steps=round(config['duration_ms']/dt);rs=round(m['refractory_ms']/dt);ds=round(m['synaptic_delay_ms']/dt) + ix={int(x):i for i,x in enumerate(nodes)} + src=np.array([ix[int(x)] for x in edges.source_neuron_idx],np.int32) + dst=np.array([ix[int(x)] for x in edges.target_neuron_idx],np.int32) + weights=np.asarray(edges.raw_count.to_numpy(np.float64)*(m['w_syn_mv_per_anatomical_synapse']*.001),dtype=precision) + rest=m['resting_potential_mv']*.001;reset=m['reset_potential_mv']*.001;threshold=m['threshold_mv']*.001 + v=np.full(n,rest,dtype=precision);g=np.zeros(n,dtype=precision) + last=np.full(n,-1000000,np.int64);counts=np.zeros(n,np.int32) + em=np.exp(-dt/m['membrane_tau_ms']);es=np.exp(-dt/m['synaptic_tau_ms']) + drive=m['synaptic_tau_ms']/(m['membrane_tau_ms']-m['synaptic_tau_ms'])*(em-es) + history=np.empty((steps,3,n),np.float64);queue=[[] for _ in range(ds+1)];ts=[];ns=[] + external=np.zeros((steps,n),dtype=precision) if external_arrivals is None else np.asarray(np.asarray(external_arrivals,np.float64)*.001,dtype=precision) + assert external.shape==(steps,n) + for t in range(steps): + available=(t-last)>=rs + # Use previous g for the coupled exact differential update, then cast to variable dtype. + oldg=g.copy() + v[available]=np.asarray(rest+em*(v[available]-rest)+drive*oldg[available],dtype=precision) + g[available]=np.asarray(es*oldg[available],dtype=precision) + if t==0 and seed_node is not None:v[ix[seed_node]]=f(threshold+config['seed_margin_mv']*.001) + fire=available&(v>threshold);last[fire]=t;counts+=fire + active=np.flatnonzero(fire);ts.extend([t]*len(active));ns.extend(nodes[active].tolist()) + accept=available&~fire + due=queue[t%(ds+1)];queue[t%(ds+1)]=[] + for e in due: + if accept[dst[e]]:g[dst[e]]=f(g[dst[e]]+weights[e]) + for j in np.flatnonzero(external[t]): + if accept[j]:g[j]=f(g[j]+external[t,j]) + queue[(t+ds)%(ds+1)].extend(np.flatnonzero(fire[src]).tolist()) + v[fire]=f(reset);g[fire]=f(0) + ref=np.maximum(rs-(t-last),0).astype(np.int32) + history[t]=np.asarray(v,np.float64)*1000,np.asarray(g,np.float64)*1000,ref + return dict(step=np.array(ts,np.int32),neuron_idx=np.array(ns,np.int32),counts=counts, + v=np.asarray(v,np.float64)*1000,g=np.asarray(g,np.float64)*1000,ref=ref,history=history,weights=np.asarray(weights,np.float64)*1000) diff --git a/models/male-cns-lif/author-semantics-lab-v1/oracle_runner.py b/models/male-cns-lif/author-semantics-lab-v1/oracle_runner.py new file mode 100644 index 0000000..b743741 --- /dev/null +++ b/models/male-cns-lif/author-semantics-lab-v1/oracle_runner.py @@ -0,0 +1,346 @@ +"""Run the pinned author's create_model in a dedicated, serial Brian2 process. + +This module never edits the author source or its parameters. The caller supplies +an exclusive output directory and the already validated, signed connectivity +multipliers in ``raw_count``. Global IDs are not FlyWire IDs and are mapped only +for this small-circuit diagnostic. Brian stores voltages in SI volts internally; +the returned state and weights are converted to mV in the selected dtype. +""" +from __future__ import annotations + +import hashlib +import importlib.metadata +import json +import platform +import sys +import types +from pathlib import Path + +import numpy as np +import pandas as pd + + +AUTHOR_SHA256 = "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e" +AUTHOR_COMMIT = "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960" +PACKAGE_PINS = { + "brian2": "2.5.1", "numpy": "1.22.3", "pandas": "1.4.3", + "scipy": "1.8.1", "pyarrow": "11.0.0", "joblib": "1.2.0", + "cython": "0.29.33", "jinja2": "2.11.3", "markupsafe": "1.1.1", + "sympy": "1.12", "mpmath": "1.3.0", "pyparsing": "3.0.9", + "packaging": "23.1", "setuptools": "67.8.0", + "python-dateutil": "2.8.2", "pytz": "2023.3", "six": "1.16.0", + "wheel": "0.38.4", +} + + +def _json(path: Path, value) -> None: + with path.open("x", encoding="utf-8") as output: + json.dump(value, output, indent=2, sort_keys=True, allow_nan=False) + output.write("\n") + + +def _steps(value: float, dt: float, label: str, *, positive=False) -> int: + ratio = float(value) / dt + if not np.isfinite(ratio) or ratio < 0: + raise ValueError(f"{label} must be finite and nonnegative") + result = int(round(ratio)) + if not np.isclose(ratio, result, rtol=0, atol=1e-9): + raise ValueError(f"{label} must be an integer number of dt steps") + if result > np.iinfo(np.int32).max or (positive and result == 0): + raise ValueError(f"{label} is outside the supported step range") + return result + + +def _int_vector(values, label: str, dtype=np.int64) -> np.ndarray: + source = np.asarray(values) + if source.ndim != 1 or source.dtype.kind not in "iu": + raise ValueError(f"{label} must be a one-dimensional integer array") + limits = np.iinfo(dtype) + if np.any(source < limits.min) or np.any(source > limits.max): + raise ValueError(f"{label} is outside {np.dtype(dtype).name} range") + return source.astype(dtype, copy=True) + + +def _environment() -> dict: + packages = {} + for name, expected in PACKAGE_PINS.items(): + try: + actual = importlib.metadata.version(name) + except importlib.metadata.PackageNotFoundError: + actual = None + packages[name] = {"expected": expected, "actual": actual, + "matches": actual == expected} + return { + "python": platform.python_version(), "author_python": "3.10.11", + "python_patch_matches": platform.python_version() == "3.10.11", + "python_executable": sys.executable, "platform": platform.platform(), + "author_platform": "Windows", "packages": packages, + "all_package_pins_match": all(p["matches"] for p in packages.values()), + "binary_identical_author_environment_claimed": False, + } + + +def _code_text(value): + if isinstance(value, dict): + return {str(key): _code_text(item) for key, item in value.items()} + return str(value) + + +def _code_records(network) -> list: + records = [] + for obj in network.sorted_objects: + record = {"name": obj.name, "type": type(obj).__name__, + "when": obj.when, "order": int(obj.order), + "active": bool(obj.active)} + for key in ("abstract_code", "user_code"): + if hasattr(obj, key): + record[key] = _code_text(getattr(obj, key)) + record["code_objects"] = [ + {"name": code.name, "type": type(code).__name__, + "generated_code": _code_text(code.code)} + for code in getattr(obj, "code_objects", ()) + ] + records.append(record) + return records + + +def run_brian(author_path: Path, io_dir: Path, nodes: np.ndarray, + edges: pd.DataFrame, config: dict, precision: str, + seed_node: int | None, external_arrivals=None) -> dict: + """Execute an unchanged author model and return canonical end-of-tick arrays. + + ``external_arrivals`` is either None or a (T, N) array in mV. Every nonzero + entry gets its own SpikeGeneratorGroup source and zero-delay conditional + synaptic write, ordered after the anatomical synapses. It is not direct + Python assignment to g. ``seed_margin_mv`` may be zero for a strict-threshold + fixture; positive margins must remain representably above the threshold. + + This function controls process-global Brian preferences and is not thread + safe. Use only the isolated oracle environment, serially or in subprocesses. + A failed run keeps its exclusive inputs and an error record for diagnosis. + """ + if precision not in ("float64", "float32"): + raise ValueError("precision must be float64 or float32") + dtype = np.dtype(precision) + nodes = _int_vector(nodes, "nodes", np.int32) + if not len(nodes) or np.any(np.diff(nodes.astype(np.int64)) <= 0): + raise ValueError("nodes must be nonempty, sorted, and unique") + required = ["edge_id", "source_neuron_idx", "target_neuron_idx", "raw_count"] + if not set(required).issubset(edges.columns): + raise ValueError(f"edges require columns {required}") + edge_ids = _int_vector(edges.edge_id, "edge_id") + if np.any(np.diff(edge_ids) <= 0): + raise ValueError("edge_id order must be canonical, increasing, and unique") + sources = _int_vector(edges.source_neuron_idx, "source_neuron_idx", np.int32) + targets = _int_vector(edges.target_neuron_idx, "target_neuron_idx", np.int32) + multipliers = _int_vector(edges.raw_count, "raw_count") + if not np.isin(sources, nodes).all() or not np.isin(targets, nodes).all(): + raise ValueError("all edge endpoints must occur in nodes") + lookup = {int(node): i for i, node in enumerate(nodes)} + if seed_node is not None and int(seed_node) not in lookup: + raise ValueError("seed_node must occur in nodes") + + dt_ms = float(config["dt_ms"]) + if not np.isfinite(dt_ms) or dt_ms <= 0: + raise ValueError("dt_ms must be finite and positive") + total_steps = _steps(config["duration_ms"], dt_ms, "duration_ms", positive=True) + model = config["model"] + refractory_steps = _steps(model["refractory_ms"], dt_ms, "refractory_ms") + delay_steps = _steps(model["synaptic_delay_ms"], dt_ms, "synaptic_delay_ms") + margin_mv = float(config["seed_margin_mv"]) + if not np.isfinite(margin_mv) or margin_mv < 0: + raise ValueError("seed_margin_mv must be finite and nonnegative") + if "dt_ms" in model and float(model["dt_ms"]) != dt_ms: + raise ValueError("top-level and model dt_ms disagree") + arrivals = None + if external_arrivals is not None: + arrivals = np.asarray(external_arrivals, dtype=np.float64) + if arrivals.shape != (total_steps, len(nodes)) or not np.isfinite(arrivals).all(): + raise ValueError("external_arrivals must be finite with shape (T, N)") + + author_path = Path(author_path).resolve(strict=True) + author_bytes = author_path.read_bytes() + author_hash = hashlib.sha256(author_bytes).hexdigest() + if author_hash != AUTHOR_SHA256: + raise ValueError(f"Author source hash mismatch: {author_hash}") + io_dir = Path(io_dir).resolve() + io_dir.mkdir(parents=True, exist_ok=False) + environment = _environment() + _json(io_dir / "environment.json", environment) + if environment["packages"]["brian2"]["actual"] != "2.5.1": + raise RuntimeError("The author oracle requires exactly Brian2 2.5.1") + + import brian2 as b2 + + saved_preferences = { + "codegen.target": b2.prefs["codegen.target"], + "core.default_float_dtype": b2.prefs["core.default_float_dtype"], + "legacy.refractory_timing": b2.prefs["legacy.refractory_timing"], + } + saved_dt = b2.defaultclock.dt + try: + b2.start_scope() + b2.prefs["codegen.target"] = "numpy" + b2.prefs["core.default_float_dtype"] = dtype.type + b2.prefs["legacy.refractory_timing"] = False + b2.defaultclock.dt = dt_ms * b2.ms + # Compile the checked bytes themselves: no source rewrite or __pycache__ + # is possible, and a subsequent file change cannot alter imported code. + author = types.ModuleType("phase4ad_pinned_author_" + author_hash[:12]) + author.__file__ = str(author_path) + exec(compile(author_bytes, str(author_path), "exec"), author.__dict__) + parameters = dict(author.default_params) + checks = {} + for config_key, author_key, unit in ( + ("membrane_tau_ms", "t_mbr", b2.ms), + ("synaptic_tau_ms", "tau", b2.ms), + ("refractory_ms", "t_rfc", b2.ms), + ("synaptic_delay_ms", "t_dly", b2.ms), + ("resting_potential_mv", "v_0", b2.mV), + ("reset_potential_mv", "v_rst", b2.mV), + ("threshold_mv", "v_th", b2.mV), + ("w_syn_mv_per_anatomical_synapse", "w_syn", b2.mV), + ): + expected = float(model[config_key]) + actual = float(parameters[author_key] / unit) + if not np.isfinite(expected) or not np.isclose(actual, expected, rtol=0, atol=1e-12): + raise ValueError(f"config {config_key}={expected} differs from author {actual}") + checks[config_key] = {"config": expected, "author": actual} + + completeness = pd.DataFrame({"local_index": np.arange(len(nodes), dtype=np.int32)}, + index=pd.Index(nodes, name="global_neuron_idx")) + connections = pd.DataFrame({ + "Presynaptic_Index": [lookup[int(x)] for x in sources], + "Postsynaptic_Index": [lookup[int(x)] for x in targets], + "Excitatory x Connectivity": multipliers, + "edge_id": edge_ids, + "source_neuron_idx": sources, "target_neuron_idx": targets, + }).astype({"Presynaptic_Index": "int32", "Postsynaptic_Index": "int32"}) + comp_path = io_dir / "completeness.csv" + con_path = io_dir / "connectivity.parquet" + completeness.to_csv(comp_path) + connections.to_parquet(con_path, index=False, engine="pyarrow") + neu, syn, spikes = author.create_model(comp_path, con_path, parameters) + if np.dtype(neu.variables["v"].dtype) != dtype or np.dtype(syn.variables["w"].dtype) != dtype: + raise AssertionError("Brian did not allocate the requested floating-point dtype") + np.testing.assert_array_equal(np.asarray(syn.i[:]), connections.Presynaptic_Index) + np.testing.assert_array_equal(np.asarray(syn.j[:]), connections.Postsynaptic_Index) + + objects = [neu, syn, spikes] + seed_state = {"requested_global_node": None if seed_node is None else int(seed_node), + "margin_mv": margin_mv, "injections": 0} + if seed_node is not None: + seed_local = lookup[int(seed_node)] + + def inject_seed(): + if seed_state["injections"] == 0: + if float(b2.defaultclock.t / b2.ms) != 0: + raise AssertionError("Seed injection must occur at tick zero") + neu.v[seed_local] = parameters["v_th"] + margin_mv * b2.mV + applied = float(neu.v[seed_local] / b2.mV) + if margin_mv > 0 and not applied > float(parameters["v_th"] / b2.mV): + raise ValueError("The positive seed margin rounded away in the selected dtype") + seed_state["applied_mv"] = applied + seed_state["injections"] = 1 + + objects.append(b2.NetworkOperation(inject_seed, clock=neu.clock, + when="before_thresholds", order=0, + name="oracle_seed_injection")) + + external_metadata = {"events": 0, "ordering": "after default_synapses.pre"} + if arrivals is not None: + event_ticks, event_targets = np.nonzero(arrivals) + event_values = arrivals[event_ticks, event_targets] + external_metadata["events"] = int(len(event_ticks)) + if len(event_ticks): + event_ids = np.arange(len(event_ticks), dtype=np.int32) + external_source = b2.SpikeGeneratorGroup( + len(event_ticks), indices=event_ids, + times=event_ticks.astype(np.float64) * dt_ms * b2.ms, + sorted=True, clock=neu.clock, name="zz_external_sources") + external_syn = b2.Synapses( + external_source, neu, model="w : volt", on_pre="g_post += w", + delay=0 * b2.ms, name="zz_external_arrivals") + external_syn.connect(i=event_ids, j=event_targets) + external_syn.w = event_values * b2.mV + external_syn.pre.order = int(syn.pre.order) + 1 + if external_syn.pre.when != syn.pre.when: + raise AssertionError("External and anatomical pathways must share a schedule slot") + objects.extend([external_source, external_syn]) + external_metadata["pathway_order"] = int(external_syn.pre.order) + external_metadata["actual_weights_mv"] = np.asarray(external_syn.w[:] / b2.mV, dtype=dtype).tolist() + pd.DataFrame({"tick": event_ticks, "neuron_idx": nodes[event_targets], + "requested_mv": event_values}).to_csv(io_dir / "external-arrivals.csv", index=False) + + trace = b2.StateMonitor(neu, ["v", "g", "lastspike", "not_refractory"], + record=True, when="end", name="oracle_end_state") + objects.append(trace) + network = b2.Network(*objects) + _json(io_dir / "run-spec.json", { + "author_sha256": author_hash, "author_commit": AUTHOR_COMMIT, + "precision": precision, "config": config, "parameter_checks": checks, + "dt_ms": dt_ms, "steps": total_steps, "refractory_steps": refractory_steps, + "delay_steps": delay_steps, "nodes": nodes.tolist(), "edge_ids": edge_ids.tolist(), + "seed": seed_state.copy(), "external_arrivals": external_metadata, + "preferences": {"codegen.target": "numpy", "legacy.refractory_timing": False, + "core.default_float_dtype": precision}, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference", + "internal_voltage_unit": "volt", "returned_voltage_unit": "mV", + }) + _json(io_dir / "schedule.json", {"schedule": list(network.schedule), + "summary": str(network.scheduling_summary())}) + network.run(float(config["duration_ms"]) * b2.ms, namespace={}) + _json(io_dir / "generated-code.json", _code_records(network)) + + ticks_float = np.asarray(spikes.t[:] / b2.ms, dtype=np.float64) / dt_ms + ticks = np.rint(ticks_float).astype(np.int32) + if not np.allclose(ticks_float, ticks, rtol=0, atol=1e-6): + raise AssertionError("Spike timestamps do not lie on the configured integer clock") + event_nodes = nodes[np.asarray(spikes.i[:], dtype=np.int32)] + order = np.lexsort((event_nodes, ticks)) + ticks, event_nodes = ticks[order], event_nodes[order] + counts = np.asarray(spikes.count[:], dtype=np.int32).copy() + if int(counts.sum()) != len(ticks): + raise AssertionError("SpikeMonitor counts disagree with event records") + trace_ticks = np.asarray(trace.t[:] / b2.ms, dtype=np.float64) / dt_ms + if trace_ticks.shape != (total_steps,) or not np.allclose( + trace_ticks, np.arange(total_steps), rtol=0, atol=1e-6): + raise AssertionError("End-state trace has the wrong tick range") + voltage = np.asarray(trace.v / b2.mV, dtype=dtype).T.copy() + conductance = np.asarray(trace.g / b2.mV, dtype=dtype).T.copy() + last_spike_ms = np.asarray(trace.lastspike / b2.ms, dtype=np.float64).T + seen = np.isfinite(last_spike_ms) & (last_spike_ms >= 0) + # Brian's never-spiked sentinel can be far outside int32. Convert only + # real nonnegative timestamps, then compute an end-of-tick countdown. + last_ticks = np.zeros(last_spike_ms.shape, dtype=np.int64) + last_ticks[seen] = np.rint(last_spike_ms[seen] / dt_ms).astype(np.int64) + elapsed = np.arange(total_steps, dtype=np.int64)[:, None] - last_ticks + ref = np.where(seen, np.maximum(refractory_steps - elapsed, 0), 0).astype(np.int32) + available = np.asarray(trace.not_refractory, dtype=bool).T + if not np.array_equal(available, ref == 0): + raise AssertionError("Recorded refractory flag disagrees with the integer countdown") + history = np.stack([voltage, conductance, ref.astype(dtype)], axis=1) + if not np.isfinite(history).all(): + raise AssertionError("Nonfinite author state") + if seed_node is not None: + seed_state["spiked_at_zero"] = bool(np.any((ticks == 0) & (event_nodes == seed_node))) + if seed_state["injections"] != 1 or (margin_mv > 0 and not seed_state["spiked_at_zero"]): + raise AssertionError("The common initial seed event was not produced exactly once") + _json(io_dir / "seed.json", seed_state) + weights = np.asarray(syn.w[:] / b2.mV, dtype=dtype).copy() + _json(io_dir / "actual-weights.json", { + "edge_id": edge_ids.tolist(), "weights_mv": weights.tolist(), + "weights_volt": np.asarray(syn.w_[:], dtype=np.float64).tolist(), + }) + if hashlib.sha256(author_path.read_bytes()).hexdigest() != author_hash: + raise AssertionError("Author source changed during execution") + return {"step": ticks, "neuron_idx": event_nodes, "counts": counts, + "v": voltage[-1].copy(), "g": conductance[-1].copy(), + "ref": ref[-1].copy(), "history": history, "weights": weights} + except Exception as error: + _json(io_dir / "error.json", {"type": type(error).__name__, "message": str(error)}) + raise + finally: + for name, value in saved_preferences.items(): + b2.prefs[name] = value + b2.defaultclock.dt = saved_dt diff --git a/models/male-cns-lif/author-semantics-lab-v1/prepare.py b/models/male-cns-lif/author-semantics-lab-v1/prepare.py new file mode 100644 index 0000000..bbab487 --- /dev/null +++ b/models/male-cns-lif/author-semantics-lab-v1/prepare.py @@ -0,0 +1,56 @@ +"""Predeclare and verify old inputs before executing any alternative dynamics.""" +import ast +from datetime import datetime, timezone +import importlib.metadata +import json +import platform +from pathlib import Path +import shutil +import subprocess +import sys +from context import CFG,ROOT,EXP,MODEL,AC,digest,save,source_hashes + + +def frozen_integrity(): + sys.path.insert(0,str(ROOT/CFG['prior_model'])) + import audit_semantics as old + result=old.integrity() + for p in (ROOT/CFG['prior_model'],AC,ROOT/'registry/feedback-context-review-20260930'): + result[str(p.relative_to(ROOT))]=old.manifest_check(p,digest) + assert all(x['pass'] for x in result.values()) + return result + + +def main(): + assert (MODEL/'oracle_runner.py').is_file() + assert not (EXP/'protocol').exists(),'Refusing reused experiment protocol' + for d in ('protocol','external-resources','inputs','components','oracle','regression','audit','performance'):(EXP/d).mkdir() + source=AC/'external-resources/model.py' + assert digest(source)=='fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e' + tree=ast.parse(source.read_text()) + assert all(isinstance(x,(ast.Import,ast.ImportFrom,ast.Assign,ast.FunctionDef,ast.Expr)) for x in tree.body) + inputs=[source,AC/'external-resources/LICENSE',AC/'external-resources/environment_full.yml', + AC/'audit/selected-real-edges.csv',AC/'audit/selected-metadata.parquet',ROOT/CFG['prior_model']/'math_reference.py'] + for name in CFG['motifs']: + inputs.extend([AC/'motifs'/f'{name}-edges.csv',AC/'motifs'/f'{name}-events.parquet',AC/'motifs'/f'{name}-state.npz']) + save(EXP/'protocol/preregistered.json',dict(config=CFG,timestamp_utc=datetime.now(timezone.utc).isoformat(), + source_hashes=source_hashes(),input_hashes=[dict(path=str(p.relative_to(ROOT)),sha256=digest(p),bytes=p.stat().st_size) for p in inputs], + parent_commit=subprocess.check_output(['git','-C',str(ROOT),'rev-parse','HEAD'],text=True).strip(), + pre_model_execution=True)) + save(EXP/'regression/old-integrity-before.json',frozen_integrity()) + for name in ('model.py','LICENSE','environment_full.yml'): + dst=EXP/'external-resources'/name + with (AC/'external-resources'/name).open('rb') as src,dst.open('xb') as out:shutil.copyfileobj(src,out) + assert digest(dst)==digest(AC/'external-resources'/name) + versions={n:importlib.metadata.version(n) for n in ('numpy','pandas','pyarrow','torch','scipy')} + save(EXP/'environment/frozen-scientific-environment.json',dict(python=sys.version,executable=sys.executable, + platform=platform.platform(),package_versions=versions)) + save(EXP/'environment/bootstrap-notes.json',dict(isolated_venv_only=True,existing_environments_modified=False, + initial_install_failure='New venv pip22.0.2 lacks --report; upgraded ONLY new venv pip to author-pinned23.0.1 before installing', + MarkupSafe='Author-pinned1.1.1 used PyPI source distribution and legacy setup.py because no CPython3.10 wheel; other requested core packages used wheels', + author_environment='Windows conda CPython3.10.11',actual_environment='Linux CPython3.10.12; not binary-identical', + package_download_provenance='install-report.json contains HTTPS PyPI archive URLs and SHA256 for packages')) + print('PREPARED: old integrity PASS; independent model hypotheses preregistered',flush=True) + + +if __name__=='__main__':main() diff --git a/models/male-cns-lif/author-semantics-lab-v1/requirements-oracle.txt b/models/male-cns-lif/author-semantics-lab-v1/requirements-oracle.txt new file mode 100644 index 0000000..e71c573 --- /dev/null +++ b/models/male-cns-lif/author-semantics-lab-v1/requirements-oracle.txt @@ -0,0 +1,20 @@ +# Package versions in the pinned author's environment_full.yml, Linux wheels. +# The host Python patch is recorded separately; this is not the author's Windows binary environment. +brian2==2.5.1 +numpy==1.22.3 +pandas==1.4.3 +scipy==1.8.1 +pyarrow==11.0.0 +joblib==1.2.0 +cython==0.29.33 +jinja2==2.11.3 +markupsafe==1.1.1 +sympy==1.12 +mpmath==1.3.0 +pyparsing==3.0.9 +packaging==23.1 +setuptools==67.8.0 +python-dateutil==2.8.2 +pytz==2023.3 +six==1.16.0 +wheel==0.38.4 diff --git a/models/male-cns-lif/author-semantics-lab-v1/run_lab.py b/models/male-cns-lif/author-semantics-lab-v1/run_lab.py new file mode 100644 index 0000000..f13d326 --- /dev/null +++ b/models/male-cns-lif/author-semantics-lab-v1/run_lab.py @@ -0,0 +1,158 @@ +"""Run fixed component arms and independent author oracle, preserving divergences.""" +import importlib.metadata +import json +from pathlib import Path +import platform +import sys +import subprocess +import time +import numpy as np +import pandas as pd +from context import CFG,ROOT,EXP,MODEL,AC,digest,save,check_prereg +from math_lab import component,author_numpy +from oracle_runner import run_brian,PACKAGE_PINS + + +def save_result(where,result,nodes): + where.mkdir(parents=True,exist_ok=False) + pd.DataFrame(dict(step=result['step'],neuron_idx=result['neuron_idx'])).to_csv(where/'events.csv',index=False) + np.savez_compressed(where/'state.npz',nodes=nodes,**{k:v for k,v in result.items() if k not in ('step','neuron_idx')}) + + +def compare(actual,expected,precision): + event=bool(np.array_equal(actual['step'],expected['step']) and np.array_equal(actual['neuron_idx'],expected['neuron_idx'])) + a=np.asarray(actual['history'],np.float64);b=np.asarray(expected['history'],np.float64) + assert a.shape==b.shape + errs=np.abs(a[:,:2]-b[:,:2]) + # Describe numerical prefix separately from post-event-divergence trajectories. + first=None + for t in range(len(a)): + aa=actual['neuron_idx'][actual['step']==t];bb=expected['neuron_idx'][expected['step']==t] + if not np.array_equal(aa,bb):first=t;break + prefix=errs[:first] if first is not None else errs + tol=CFG['comparison'][precision+'_state_max_abs_tolerance_mv'] + return dict(exact_events=event,exact_counts=bool(np.array_equal(actual['counts'],expected['counts'])), + ref_exact=bool(np.array_equal(a[:,2],b[:,2])),max_abs_mv=float(errs.max()),mean_abs_mv=float(errs.mean()), + same_event_prefix_max_abs_mv=float(prefix.max()) if prefix.size else None, + first_event_divergence_step=first,tolerance_mv=tol, + pass_oracle=bool(event and errs.max()<=tol and np.array_equal(a[:,2],b[:,2]))) + + +def oracle_trial(name,nodes,edges,cfg,precision,seed,external=None): + io=EXP/'oracle'/(name+'-'+precision) + result=run_brian(EXP/'external-resources/model.py',io,nodes,edges,cfg,precision,seed,external) + independent=author_numpy(nodes,edges,cfg,precision,seed,external) + comparison=compare(result,independent,precision) + save(io/'comparison.json',comparison) + save_result(io/'brian-output',result,nodes);save_result(io/'independent-output',independent,nodes) + assert np.isfinite(result['history']).all() and np.isfinite(independent['history']).all() + return result,comparison + + +def unit_fixtures(): + rows=[];nodes=np.array([-1],np.int32) + # Brian2 2.5.1 calls max/min on connect arrays and rejects zero-length arrays. + # An explicitly synthetic zero-weight self-edge is inert, not an anatomical edge. + inert=pd.DataFrame(dict(edge_id=[-1],source_neuron_idx=[-1],target_neuron_idx=[-1],raw_count=[0]),dtype='int64') + for precision in CFG['author_precisions']: + # Synthetic fixture indices are negative and are not MaleCNS body IDs. + c=dict(CFG,duration_ms=20.0) + cases={} + a=np.zeros((200,1));cases['zero']=(a,None,1.0) + a=np.zeros((200,1));a[0,0]=1.;cases['weak_excitation']=(a,None,1.0) + a=np.zeros((200,1));a[0,0]=-1.;cases['inhibition']=(a,None,1.0) + a=np.zeros((200,1));a[[0,21,22,23],0]=.1;cases['refractory_boundary']=(a,-1,1.0) + a=np.zeros((200,1));cases['equal_threshold']=(a,-1,0.0) + a=np.zeros((200,1));cases['above_threshold']=(a,-1,1.0) + a=np.zeros((200,1));a[0,0]=2000.;cases['nonzero_g_reset']=(a,None,1.0) + for name,(arr,seed,margin) in cases.items(): + cfg=dict(c,seed_margin_mv=margin) + r,cmp=oracle_trial('unit-'+name,nodes,inert,cfg,precision,seed,arr) + h=r['history'];events=r['step'];checks={} + if name=='zero':checks={'no_events':len(events)==0,'g_zero':bool(np.all(h[:,1]==0)), + 'rest_stationary':bool(np.max(np.abs(h[:,0]-CFG['model']['resting_potential_mv']))<1e-3)} + elif name in ('weak_excitation','inhibition'): + checks={'no_events':len(events)==0,'arrival_at_zero':bool(h[0,1,0]>0 if name=='weak_excitation' else h[0,1,0]<0), + 'integration_next_step':bool(h[1,0,0]>h[0,0,0] if name=='weak_excitation' else h[1,0,0]0),'release_at_22':bool(h[21,2,0]==1 and h[22,2,0]==0),'reset_g_at_zero':h[0,1,0]==0} + elif name=='equal_threshold':checks={'strict_threshold_no_event':len(events)==0} + elif name=='nonzero_g_reset':checks={'natural_spike_at_1':np.array_equal(events,[1]), + 'nonzero_g_before_spike':bool(h[0,1,0]>1999),'zero_g_after_spike':bool(np.all(h[1:,1,0]==0))} + else:checks={'single_seed':np.array_equal(events,[0]),'reset_g':bool(h[0,1,0]==0)} + row=dict(fixture=name,precision=precision,checks={k:bool(v) for k,v in checks.items()},comparison=cmp) + rows.append(row);save(EXP/'regression'/('unit-'+name+'-'+precision+'.json'),row) + print(json.dumps(dict(unit=name,precision=precision,checks=all(checks.values()),oracle=cmp)),flush=True) + delay_nodes=np.array([-2,-1],np.int32) + weak_edge=pd.DataFrame(dict(edge_id=[-1],source_neuron_idx=[-2],target_neuron_idx=[-1],raw_count=[1]),dtype='int64') + r,cmp=oracle_trial('unit-delay_18',delay_nodes,weak_edge,c,precision,-2) + h=r['history'];checks=dict(one_seed=np.array_equal(r['step'],[0]), + zero_before_arrival=bool(np.all(h[:18,1,1]==0)),arrival_at_18=bool(h[18,1,1]>0), + first_voltage_effect_at_19=bool(h[19,0,1]>h[18,0,1])) + row=dict(fixture='delay_18',precision=precision,checks=checks,comparison=cmp) + rows.append(row);save(EXP/'regression'/('unit-delay_18-'+precision+'.json'),row) + save(EXP/'regression/unit-fixtures.json',rows) + # Unit oracle failures prevent real author-motif execution; preserve all failed traces. + assert all(all(r['checks'].values()) and r['comparison']['pass_oracle'] for r in rows),'Author operator unit gate failed' + + +def main(): + check_prereg();assert not (EXP/'audit/run-start.json').exists(),'Refusing overwritten run' + assert all(importlib.metadata.version(n)==v for n,v in PACKAGE_PINS.items()),'Dependency-pin mismatch' + save(EXP/'environment/installed-packages.json',json.loads(subprocess.check_output([sys.executable,'-m','pip','list','--format=json'],text=True))) + save(EXP/'audit/run-start.json',dict(python=sys.version,platform=platform.platform(), + packages={n:importlib.metadata.version(n) for n in ('brian2','numpy','pandas','scipy','pyarrow','sympy','cython')}, + codegen='numpy',learning=False,user_authorized_new_model_hypotheses=True)) + t0=time.perf_counter();rows=[];validations=[] + for name in CFG['motifs']: + edges=pd.read_csv(AC/'motifs'/f'{name}-edges.csv').sort_values('edge_id') + old=np.load(AC/'motifs'/f'{name}-state.npz');nodes=old['nodes'];seed=None if name=='no_input' else CFG['seed_node'] + weights=edges.raw_count.to_numpy(np.float32)*np.float32(CFG['model']['w_syn_mv_per_anatomical_synapse']) + for policy in CFG['component_policies']: + r=component(nodes,edges,weights,CFG,policy,seed) + assert np.isfinite(r['history']).all() + if policy=='frozen': + ev=pd.read_parquet(AC/'motifs'/f'{name}-events.parquet') + eq={k:bool(np.array_equal(old[k],r[k])) for k in old.files if k!='nodes'} + eq['events']=bool(np.array_equal(ev.step,r['step']) and np.array_equal(ev.neuron_idx,r['neuron_idx'])) + assert all(eq.values()),eq + validations.append(dict(motif=name,frozen_vs_4AC_exact=eq)) + save_result(EXP/'components'/(name+'-'+policy),r,nodes) + late=r['step']>=round(CFG['late_start_ms']/CFG['dt_ms']) + for node in nodes: + select=r['neuron_idx']==node + rows.append(dict(motif=name,policy=policy,precision='float32',neuron_idx=int(node),spikes=int(select.sum()), + late_spikes=int((select&late).sum()),last_ms=float(r['step'][select][-1]*CFG['dt_ms']) if select.any() else None)) + pd.DataFrame(rows).to_csv(EXP/'components/summary.csv',index=False) + save(EXP/'regression/frozen-components.json',validations) + unit_fixtures() + from interface_audit import audit_author_poi + audit_author_poi() + ors=[] + for name in CFG['motifs']: + edges=pd.read_csv(AC/'motifs'/f'{name}-edges.csv').sort_values('edge_id') + nodes=np.load(AC/'motifs'/f'{name}-state.npz')['nodes'];seed=None if name=='no_input' else CFG['seed_node'];by_precision={} + for precision in CFG['author_precisions']: + r,cmp=oracle_trial(name,nodes,edges,CFG,precision,seed);by_precision[precision]=r + repeat=run_brian(EXP/'external-resources/model.py',EXP/'oracle'/(name+'-'+precision+'-repeat'),nodes,edges,CFG,precision,seed) + exact_repeat={k:bool(np.array_equal(r[k],repeat[k])) for k in r} + save_result(EXP/'oracle'/(name+'-'+precision+'-repeat')/'brian-output',repeat,nodes) + save(EXP/'regression'/(name+'-'+precision+'-repeat.json'),exact_repeat) + assert all(exact_repeat.values()),exact_repeat + late=r['step']>=round(CFG['late_start_ms']/CFG['dt_ms']) + for node in nodes: + chosen=r['neuron_idx']==node + rows.append(dict(motif=name,policy='author_complete',precision=precision,neuron_idx=int(node), + spikes=int(chosen.sum()),late_spikes=int((chosen&late).sum()),last_ms=float(r['step'][chosen][-1]*CFG['dt_ms']) if chosen.any() else None)) + ors.append(dict(motif=name,precision=precision,comparison=cmp)) + print(json.dumps(dict(motif=name,precision=precision,events=len(r['step']),late=int(late.sum()),oracle=cmp)),flush=True) + save(EXP/'regression'/(name+'-precision-cross-comparison.json'),compare(by_precision['float32'],by_precision['float64'],'float32')) + pd.DataFrame(rows).to_csv(EXP/'audit/all-motif-results.csv',index=False) + save(EXP/'regression/author-motifs.json',ors) + save(EXP/'performance/summary.json',dict(wall_seconds=time.perf_counter()-t0,backend='CPU NumPy + Brian2',not_runtime_benchmark=True)) + save(EXP/'audit/run-complete.json',dict(all_author_oracle_comparisons_pass=all(x['comparison']['pass_oracle'] for x in ors), + all_frozen_components_match_archive=True,learning_achieved=False,whole_brain_alternative_run=False, + author_original_source_sha256=digest(EXP/'external-resources/model.py'))) + + +if __name__=='__main__':main() diff --git a/models/male-cns-lif/author-semantics-lab-v1/verify_frozen.py b/models/male-cns-lif/author-semantics-lab-v1/verify_frozen.py new file mode 100644 index 0000000..ef8fa32 --- /dev/null +++ b/models/male-cns-lif/author-semantics-lab-v1/verify_frozen.py @@ -0,0 +1,47 @@ +"""Unchanged deterministic-v2 five-trial regression; old outputs are read only.""" +import os +import sys +import time +import numpy as np +import pandas as pd +import yaml +from context import ROOT,EXP,CFG,save,check_prereg + + +def main(): + check_prereg() + assert not (EXP/'regression/frozen-five.json').exists() + runtime=ROOT/'models/male-cns-lif/runtime-v2-deterministic-candidate' + # Discover the exact prior-audit runtime path from its immutable config. + prior=yaml.safe_load((ROOT/CFG['prior_model']/'config.yaml').read_text()) + runtime=ROOT/prior['runtime'];pc=yaml.safe_load((runtime/'phase4p.yaml').read_text()) + sys.path.insert(0,str(ROOT/'models/male-cns-lif/terminal-scope-diagnostic-v1')) + from diagnostic import queues + queues() + os.environ['CUDA_VISIBLE_DEVICES']=pc['device']['visible_gpu_uuid'] + os.environ['CUDA_HOME']='/usr/local/cuda';os.environ['MAX_JOBS']='2';os.environ['TORCH_CUDA_ARCH_LIST']='8.9' + os.environ['PATH']=str(ROOT/'models/male-cns-lif/.venv/bin')+':/usr/local/cuda/bin:'+os.environ['PATH'] + sys.path.insert(0,str(ROOT/'models/male-cns-lif'));sys.path.insert(0,str(runtime)) + import torch,phase4p + free,total=torch.cuda.mem_get_info();assert free>2*1024**3 + torch.cuda.reset_peak_memory_stats();t0=time.perf_counter() + rt=phase4p.CanonicalRuntime(pc,runtime,EXP) + rows=[] + for spec in pc['reference_trials']: + queues();base=ROOT/'experiments/phase4p-deterministic-runtime/phase4c-v2/reference'/spec['name'] + ev=pd.read_parquet(base/'spike-events.parquet') + expected=dict(step=ev.step.to_numpy(),neuron_idx=ev.neuron_idx.to_numpy(), + counts=np.load(base/'per-neuron-spike-counts.int32.npy'), + v=np.load(base/'final-voltage.float32.npy'),g=np.load(base/'final-g.float32.npy')) + r=rt.run(np.flatnonzero(rt.pops[spec['population']]),spec['rate_hz'],spec['seed'],spec['duration_ms']) + eq={k:bool(np.array_equal(r[k],v)) for k,v in expected.items()} + row=dict(trial=spec['name'],exact=eq,wall_seconds=r['metrics']['wall_seconds']) + rows.append(row);save(EXP/'regression'/('frozen-'+spec['name']+'.json'),row) + print(row,flush=True) + save(EXP/'regression/frozen-five.json',dict(pass_all=all(all(x['exact'].values()) for x in rows),trials=rows, + oracle='frozen deterministic-v2, NOT author Brian2',wall_seconds=time.perf_counter()-t0, + peak_allocated_vram=int(torch.cuda.max_memory_allocated()),gpu=torch.cuda.get_device_name(),comfyui_modified=False)) + assert all(all(x['exact'].values()) for x in rows) + + +if __name__=='__main__':main() diff --git a/registry/phase4ad-author-semantics/evidence-index.json b/registry/phase4ad-author-semantics/evidence-index.json new file mode 100644 index 0000000..678b8fb --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence-index.json @@ -0,0 +1,2648 @@ +[ + { + "source": "experiments/phase4ad-author-semantics/REPORT.md", + "copy": "evidence/REPORT.md", + "sha256": "98eeae824607e83d0b35483a7d5ac586aebe68044e2457188040086e62e78b42", + "bytes": 4543 + }, + { + "source": "experiments/phase4ad-author-semantics/audit/all-motif-results.csv", + "copy": "evidence/audit/all-motif-results.csv", + "sha256": "0b653f7362ec7b506766e78b78efaa82914df201844cdc71f6d70556d46204b5", + "bytes": 5967 + }, + { + "source": "experiments/phase4ad-author-semantics/audit/final-summary.json", + "copy": "evidence/audit/final-summary.json", + "sha256": "2037a37dcf74e28831676ca1583d07272dd2546540a95096db6623f2eafe1a87", + "bytes": 98948 + }, + { + "source": "experiments/phase4ad-author-semantics/audit/finalize-start.json", + "copy": "evidence/audit/finalize-start.json", + "sha256": "b4fbf4a99a33b67af1329609591f7b553e41e99d760a0cf0e6f04fd1b3b33454", + "bytes": 266 + }, + { + "source": "experiments/phase4ad-author-semantics/audit/run-complete.json", + "copy": "evidence/audit/run-complete.json", + "sha256": "3d5333dede7b368a94de91e206cd35cdf7e89614ac528fb00126178386a2d8b7", + "bytes": 269 + }, + { + "source": "experiments/phase4ad-author-semantics/audit/run-start.json", + "copy": "evidence/audit/run-start.json", + "sha256": "9480e2e1c299aeb6b6136eb7c1fdb0a733da5eadce3e32d674c3f89c1abd50c1", + "bytes": 406 + }, + { + "source": "experiments/phase4ad-author-semantics/components/feedforward-frozen/events.csv", + "copy": "evidence/components/feedforward-frozen/events.csv", + "sha256": "7535cfeec9d160eb597a2a09930cd8d1a55a7c0f561f1b5907f68eb53e1453dd", + "bytes": 40 + }, + { + "source": "experiments/phase4ad-author-semantics/components/feedforward-refractory_gate_only/events.csv", + "copy": "evidence/components/feedforward-refractory_gate_only/events.csv", + "sha256": "7535cfeec9d160eb597a2a09930cd8d1a55a7c0f561f1b5907f68eb53e1453dd", + "bytes": 40 + }, + { + "source": "experiments/phase4ad-author-semantics/components/feedforward-reset_and_refractory/events.csv", + "copy": "evidence/components/feedforward-reset_and_refractory/events.csv", + "sha256": "7535cfeec9d160eb597a2a09930cd8d1a55a7c0f561f1b5907f68eb53e1453dd", + "bytes": 40 + }, + { + "source": "experiments/phase4ad-author-semantics/components/feedforward-reset_g_only/events.csv", + "copy": "evidence/components/feedforward-reset_g_only/events.csv", + "sha256": "7535cfeec9d160eb597a2a09930cd8d1a55a7c0f561f1b5907f68eb53e1453dd", + "bytes": 40 + }, + { + "source": "experiments/phase4ad-author-semantics/components/five-frozen/events.csv", + "copy": "evidence/components/five-frozen/events.csv", + "sha256": "5cf5375573658738a15ef51adc56f283c212e00b20668c3015b8f7542a483240", + "bytes": 15375 + }, + { + "source": "experiments/phase4ad-author-semantics/components/five-refractory_gate_only/events.csv", + "copy": "evidence/components/five-refractory_gate_only/events.csv", + "sha256": "e31b6aa017bdd4bef6725aedb6c1ac40bd9f52e4e59d5fe1a1e11b31ef6825dd", + "bytes": 15670 + }, + { + "source": "experiments/phase4ad-author-semantics/components/five-reset_and_refractory/events.csv", + "copy": "evidence/components/five-reset_and_refractory/events.csv", + "sha256": "5e9104d52c7573c6a22fbe823d500f53e86d41f04e929f177e92f0eebc1c1e46", + "bytes": 6548 + }, + { + "source": "experiments/phase4ad-author-semantics/components/five-reset_g_only/events.csv", + "copy": "evidence/components/five-reset_g_only/events.csv", + "sha256": "dfc35561b3c565297e5cf0c88db7438cf5787dac0f0c0cda21d17c2423d99233", + "bytes": 8966 + }, + { + "source": "experiments/phase4ad-author-semantics/components/no_input-frozen/events.csv", + "copy": "evidence/components/no_input-frozen/events.csv", + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801", + "bytes": 16 + }, + { + "source": "experiments/phase4ad-author-semantics/components/no_input-refractory_gate_only/events.csv", + "copy": "evidence/components/no_input-refractory_gate_only/events.csv", + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801", + "bytes": 16 + }, + { + "source": "experiments/phase4ad-author-semantics/components/no_input-reset_and_refractory/events.csv", + "copy": "evidence/components/no_input-reset_and_refractory/events.csv", + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801", + "bytes": 16 + }, + { + "source": "experiments/phase4ad-author-semantics/components/no_input-reset_g_only/events.csv", + "copy": "evidence/components/no_input-reset_g_only/events.csv", + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801", + "bytes": 16 + }, + { + "source": "experiments/phase4ad-author-semantics/components/pair-frozen/events.csv", + "copy": "evidence/components/pair-frozen/events.csv", + "sha256": "85269a9465c20d11da108514d8541d8be7c2e105915bbb312205af4cb79b6b4c", + "bytes": 4698 + }, + { + "source": "experiments/phase4ad-author-semantics/components/pair-refractory_gate_only/events.csv", + "copy": "evidence/components/pair-refractory_gate_only/events.csv", + "sha256": "227d89de52ad6a1cf890a194bd5f560865eb551332ad85947532841fa37e13d3", + "bytes": 6303 + }, + { + "source": "experiments/phase4ad-author-semantics/components/pair-reset_and_refractory/events.csv", + "copy": "evidence/components/pair-reset_and_refractory/events.csv", + "sha256": "9d9a0ccc139e8edef78fb6e34d1f2de2514a6b3f8902454356afbc8cd6f5fdc8", + "bytes": 2219 + }, + { + "source": "experiments/phase4ad-author-semantics/components/pair-reset_g_only/events.csv", + "copy": "evidence/components/pair-reset_g_only/events.csv", + "sha256": "9d9a0ccc139e8edef78fb6e34d1f2de2514a6b3f8902454356afbc8cd6f5fdc8", + "bytes": 2219 + }, + { + "source": "experiments/phase4ad-author-semantics/components/summary.csv", + "copy": "evidence/components/summary.csv", + "sha256": "b20d807010ac88a7bef7165196c58715bfb94aa852db9f62bd4bf07e2760d52f", + "bytes": 3953 + }, + { + "source": "experiments/phase4ad-author-semantics/components/trio-frozen/events.csv", + "copy": "evidence/components/trio-frozen/events.csv", + "sha256": "4ea00ec307cf37524126d5e91c5916cb393b3eebd3b76fdb1aad8619de131c02", + "bytes": 10549 + }, + { + "source": "experiments/phase4ad-author-semantics/components/trio-refractory_gate_only/events.csv", + "copy": "evidence/components/trio-refractory_gate_only/events.csv", + "sha256": "3784ade444b9d85739c3e795b20b40ac5c16b294caa4d1a59be13388e31b8332", + "bytes": 10910 + }, + { + "source": "experiments/phase4ad-author-semantics/components/trio-reset_and_refractory/events.csv", + "copy": "evidence/components/trio-reset_and_refractory/events.csv", + "sha256": "50a9639d41cfdb8a2e53c132276223656118b80ececaaa18d1a0951cb4147e58", + "bytes": 4653 + }, + { + "source": "experiments/phase4ad-author-semantics/components/trio-reset_g_only/events.csv", + "copy": "evidence/components/trio-reset_g_only/events.csv", + "sha256": "f55c81f358a41a9bad9836d2a2de4964072b914d6d9cef32f225eadf941a94b7", + "bytes": 5604 + }, + { + "source": "experiments/phase4ad-author-semantics/environment/bootstrap-notes.json", + "copy": "evidence/environment/bootstrap-notes.json", + "sha256": "aa7d319154306833890ca93542252f78996e96b080e55a9337d7f2da222a7445", + "bytes": 610 + }, + { + "source": "experiments/phase4ad-author-semantics/environment/frozen-scientific-environment.json", + "copy": "evidence/environment/frozen-scientific-environment.json", + "sha256": "5acd7aa5a1825e5c053e9f4166f58cd9ec04129ed88f00afcdab2aa6ca204ca5", + "bytes": 358 + }, + { + "source": "experiments/phase4ad-author-semantics/environment/install-report.json", + "copy": "evidence/environment/install-report.json", + "sha256": "e2e9301ade63e6ca44635f5b28271a4368b8e2393b1bd935e57e173f685c6f9c", + "bytes": 127330 + }, + { + "source": "experiments/phase4ad-author-semantics/environment/installed-packages.json", + "copy": "evidence/environment/installed-packages.json", + "sha256": "0175910c6265813bfd8cf7e2dcaed5a7decabb85072894a04b2c642a222ac298", + "bytes": 1049 + }, + { + "source": "experiments/phase4ad-author-semantics/external-resources/LICENSE", + "copy": "evidence/external-resources/LICENSE", + "sha256": "3621f6d6476189190e2960fa43f11b275ba4eca848fdac50a1ba2925de6223e8", + "bytes": 1085 + }, + { + "source": "experiments/phase4ad-author-semantics/external-resources/environment_full.yml", + "copy": "evidence/external-resources/environment_full.yml", + "sha256": "402fcef4968c99397b0e908b3323ab9e6ef86af5583e46e6427f96f3d1091adf", + "bytes": 3445 + }, + { + "source": "experiments/phase4ad-author-semantics/external-resources/model.py", + "copy": "evidence/external-resources/model.py", + "sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "bytes": 11900 + }, + { + "source": "experiments/phase4ad-author-semantics/gpu-reference/extension.json", + "copy": "evidence/gpu-reference/extension.json", + "sha256": "ca5c82cc34d586d84bb93f4ebdbfba0d1d91578a61d79c271225a44cd5b76376", + "bytes": 444 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float32/actual-weights.json", + "copy": "evidence/oracle/feedforward-float32/actual-weights.json", + "sha256": "fce02b56f14b171ff3e5e38de15c700a6281d405a9802b859065f04292c61d2c", + "bytes": 307 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float32/brian-output/events.csv", + "copy": "evidence/oracle/feedforward-float32/brian-output/events.csv", + "sha256": "953b4c2f26e2846de67b40b22a19c2f59b29ff6fb56339925a01f110c6c1705e", + "bytes": 40 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float32/comparison.json", + "copy": "evidence/oracle/feedforward-float32/comparison.json", + "sha256": "f29dddd95d78ae0906b6902d6acd82454ca0cc3d652374728f5b8125849b23a5", + "bytes": 298 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float32/completeness.csv", + "copy": "evidence/oracle/feedforward-float32/completeness.csv", + "sha256": "301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5", + "bytes": 68 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float32/environment.json", + "copy": "evidence/oracle/feedforward-float32/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float32/generated-code.json", + "copy": "evidence/oracle/feedforward-float32/generated-code.json", + "sha256": "c65430d57ed21024c267316d854123ccc14cde79f7acb9ba9c34b1ce4e20665f", + "bytes": 11537 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float32/independent-output/events.csv", + "copy": "evidence/oracle/feedforward-float32/independent-output/events.csv", + "sha256": "953b4c2f26e2846de67b40b22a19c2f59b29ff6fb56339925a01f110c6c1705e", + "bytes": 40 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float32/run-spec.json", + "copy": "evidence/oracle/feedforward-float32/run-spec.json", + "sha256": "7528f0de24d434d08024d011adae364ac60e0211e2d0b176d655bd015c22e0c8", + "bytes": 3072 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float32/schedule.json", + "copy": "evidence/oracle/feedforward-float32/schedule.json", + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d", + "bytes": 1411 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float32/seed.json", + "copy": "evidence/oracle/feedforward-float32/seed.json", + "sha256": "335b295513fed2a617775adf590894234644c8bdf7268851434737d94e146208", + "bytes": 137 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float32-repeat/actual-weights.json", + "copy": "evidence/oracle/feedforward-float32-repeat/actual-weights.json", + "sha256": "fce02b56f14b171ff3e5e38de15c700a6281d405a9802b859065f04292c61d2c", + "bytes": 307 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float32-repeat/brian-output/events.csv", + "copy": "evidence/oracle/feedforward-float32-repeat/brian-output/events.csv", + "sha256": "953b4c2f26e2846de67b40b22a19c2f59b29ff6fb56339925a01f110c6c1705e", + "bytes": 40 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float32-repeat/completeness.csv", + "copy": "evidence/oracle/feedforward-float32-repeat/completeness.csv", + "sha256": "301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5", + "bytes": 68 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float32-repeat/environment.json", + "copy": "evidence/oracle/feedforward-float32-repeat/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float32-repeat/generated-code.json", + "copy": "evidence/oracle/feedforward-float32-repeat/generated-code.json", + "sha256": "77e30078f96559ccfddb3b75bd3aaf3c76a137c0c045aa986c0348518ed1ac9f", + "bytes": 11537 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float32-repeat/run-spec.json", + "copy": "evidence/oracle/feedforward-float32-repeat/run-spec.json", + "sha256": "7528f0de24d434d08024d011adae364ac60e0211e2d0b176d655bd015c22e0c8", + "bytes": 3072 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float32-repeat/schedule.json", + "copy": "evidence/oracle/feedforward-float32-repeat/schedule.json", + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d", + "bytes": 1411 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float32-repeat/seed.json", + "copy": "evidence/oracle/feedforward-float32-repeat/seed.json", + "sha256": "335b295513fed2a617775adf590894234644c8bdf7268851434737d94e146208", + "bytes": 137 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float64/actual-weights.json", + "copy": "evidence/oracle/feedforward-float64/actual-weights.json", + "sha256": "5ae7652487b5fb80bb88586fe94344d8bc83ec046189e9385338d0bfd2323457", + "bytes": 257 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float64/brian-output/events.csv", + "copy": "evidence/oracle/feedforward-float64/brian-output/events.csv", + "sha256": "953b4c2f26e2846de67b40b22a19c2f59b29ff6fb56339925a01f110c6c1705e", + "bytes": 40 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float64/comparison.json", + "copy": "evidence/oracle/feedforward-float64/comparison.json", + "sha256": "317ab6c723ce928c1f019b85a833134400254991e49a9845a8f051b854963020", + "bytes": 295 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float64/completeness.csv", + "copy": "evidence/oracle/feedforward-float64/completeness.csv", + "sha256": "301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5", + "bytes": 68 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float64/environment.json", + "copy": "evidence/oracle/feedforward-float64/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float64/generated-code.json", + "copy": "evidence/oracle/feedforward-float64/generated-code.json", + "sha256": "b8fcc2d1cb77b83b28fdbf6af1097556fdae8cc73508a5f1c6a58efa3ed4573c", + "bytes": 11537 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float64/independent-output/events.csv", + "copy": "evidence/oracle/feedforward-float64/independent-output/events.csv", + "sha256": "953b4c2f26e2846de67b40b22a19c2f59b29ff6fb56339925a01f110c6c1705e", + "bytes": 40 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float64/run-spec.json", + "copy": "evidence/oracle/feedforward-float64/run-spec.json", + "sha256": "f374b342910fab0110369cb5b9b2daf53e40e4c50b881a027fcafb5a5d00d532", + "bytes": 3072 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float64/schedule.json", + "copy": "evidence/oracle/feedforward-float64/schedule.json", + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d", + "bytes": 1411 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float64/seed.json", + "copy": "evidence/oracle/feedforward-float64/seed.json", + "sha256": "ea838909a3dcfabd586cf4181eb6788ed791472fc5f64556fc5e88004906d242", + "bytes": 124 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float64-repeat/actual-weights.json", + "copy": "evidence/oracle/feedforward-float64-repeat/actual-weights.json", + "sha256": "5ae7652487b5fb80bb88586fe94344d8bc83ec046189e9385338d0bfd2323457", + "bytes": 257 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float64-repeat/brian-output/events.csv", + "copy": "evidence/oracle/feedforward-float64-repeat/brian-output/events.csv", + "sha256": "953b4c2f26e2846de67b40b22a19c2f59b29ff6fb56339925a01f110c6c1705e", + "bytes": 40 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float64-repeat/completeness.csv", + "copy": "evidence/oracle/feedforward-float64-repeat/completeness.csv", + "sha256": "301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5", + "bytes": 68 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float64-repeat/environment.json", + "copy": "evidence/oracle/feedforward-float64-repeat/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float64-repeat/generated-code.json", + "copy": "evidence/oracle/feedforward-float64-repeat/generated-code.json", + "sha256": "f7e9a9b47c364eb2ffe7691be257c6b06aa3f80f1f3eb4658e75b54636278efd", + "bytes": 11537 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float64-repeat/run-spec.json", + "copy": "evidence/oracle/feedforward-float64-repeat/run-spec.json", + "sha256": "f374b342910fab0110369cb5b9b2daf53e40e4c50b881a027fcafb5a5d00d532", + "bytes": 3072 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float64-repeat/schedule.json", + "copy": "evidence/oracle/feedforward-float64-repeat/schedule.json", + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d", + "bytes": 1411 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/feedforward-float64-repeat/seed.json", + "copy": "evidence/oracle/feedforward-float64-repeat/seed.json", + "sha256": "ea838909a3dcfabd586cf4181eb6788ed791472fc5f64556fc5e88004906d242", + "bytes": 124 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float32/actual-weights.json", + "copy": "evidence/oracle/five-float32/actual-weights.json", + "sha256": "87c7305d5b8ffcd9f117485921900ace6ad76e9629e44bd5fde5d0fcad9ff4da", + "bytes": 843 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float32/brian-output/events.csv", + "copy": "evidence/oracle/five-float32/brian-output/events.csv", + "sha256": "80b2ac9efc7aa1db0ed7e8922f8e9d464c4a2417248be1435454316c47f00ee2", + "bytes": 6300 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float32/comparison.json", + "copy": "evidence/oracle/five-float32/comparison.json", + "sha256": "a66d6a4fbcc48be5208800e6b6ad0fa69c1604b242821bb74e562c77a5e67d3f", + "bytes": 296 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float32/completeness.csv", + "copy": "evidence/oracle/five-float32/completeness.csv", + "sha256": "301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5", + "bytes": 68 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float32/environment.json", + "copy": "evidence/oracle/five-float32/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float32/generated-code.json", + "copy": "evidence/oracle/five-float32/generated-code.json", + "sha256": "b80159b10b6e2822bdb83230d2a6f56213836992d15e3facd3c9f10789a9aaf6", + "bytes": 11537 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float32/independent-output/events.csv", + "copy": "evidence/oracle/five-float32/independent-output/events.csv", + "sha256": "80b2ac9efc7aa1db0ed7e8922f8e9d464c4a2417248be1435454316c47f00ee2", + "bytes": 6300 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float32/run-spec.json", + "copy": "evidence/oracle/five-float32/run-spec.json", + "sha256": "303346fc360a675c71c0598e3a99bf5a6a6f5bc2aafbe4889668333c4183357c", + "bytes": 3192 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float32/schedule.json", + "copy": "evidence/oracle/five-float32/schedule.json", + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d", + "bytes": 1411 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float32/seed.json", + "copy": "evidence/oracle/five-float32/seed.json", + "sha256": "335b295513fed2a617775adf590894234644c8bdf7268851434737d94e146208", + "bytes": 137 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float32-repeat/actual-weights.json", + "copy": "evidence/oracle/five-float32-repeat/actual-weights.json", + "sha256": "87c7305d5b8ffcd9f117485921900ace6ad76e9629e44bd5fde5d0fcad9ff4da", + "bytes": 843 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float32-repeat/brian-output/events.csv", + "copy": "evidence/oracle/five-float32-repeat/brian-output/events.csv", + "sha256": "80b2ac9efc7aa1db0ed7e8922f8e9d464c4a2417248be1435454316c47f00ee2", + "bytes": 6300 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float32-repeat/completeness.csv", + "copy": "evidence/oracle/five-float32-repeat/completeness.csv", + "sha256": "301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5", + "bytes": 68 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float32-repeat/environment.json", + "copy": "evidence/oracle/five-float32-repeat/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float32-repeat/generated-code.json", + "copy": "evidence/oracle/five-float32-repeat/generated-code.json", + "sha256": "b3e1a32ea67bcbb51205dbdb80c88d127e42328b965102c695820877b9857e43", + "bytes": 11537 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float32-repeat/run-spec.json", + "copy": "evidence/oracle/five-float32-repeat/run-spec.json", + "sha256": "303346fc360a675c71c0598e3a99bf5a6a6f5bc2aafbe4889668333c4183357c", + "bytes": 3192 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float32-repeat/schedule.json", + "copy": "evidence/oracle/five-float32-repeat/schedule.json", + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d", + "bytes": 1411 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float32-repeat/seed.json", + "copy": "evidence/oracle/five-float32-repeat/seed.json", + "sha256": "335b295513fed2a617775adf590894234644c8bdf7268851434737d94e146208", + "bytes": 137 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float64/actual-weights.json", + "copy": "evidence/oracle/five-float64/actual-weights.json", + "sha256": "7cf304b269ed2c25edb9040b91c2ed10d1f335b6be59b819f5f23ede2ae6757c", + "bytes": 683 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float64/brian-output/events.csv", + "copy": "evidence/oracle/five-float64/brian-output/events.csv", + "sha256": "80b2ac9efc7aa1db0ed7e8922f8e9d464c4a2417248be1435454316c47f00ee2", + "bytes": 6300 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float64/comparison.json", + "copy": "evidence/oracle/five-float64/comparison.json", + "sha256": "b6b9e1736743bb4f282ecd354e83e027f506ee4583e7cb7c070b9ba60d99253a", + "bytes": 294 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float64/completeness.csv", + "copy": "evidence/oracle/five-float64/completeness.csv", + "sha256": "301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5", + "bytes": 68 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float64/environment.json", + "copy": "evidence/oracle/five-float64/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float64/generated-code.json", + "copy": "evidence/oracle/five-float64/generated-code.json", + "sha256": "fc6c228a1f24c65b5172799dfaa2568cdb615db639226022e10cced292099fe2", + "bytes": 11537 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float64/independent-output/events.csv", + "copy": "evidence/oracle/five-float64/independent-output/events.csv", + "sha256": "80b2ac9efc7aa1db0ed7e8922f8e9d464c4a2417248be1435454316c47f00ee2", + "bytes": 6300 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float64/run-spec.json", + "copy": "evidence/oracle/five-float64/run-spec.json", + "sha256": "101e0cf3fb3fb2ce75e8f0cb6526285f66026317a5e550716363c1d1ff928265", + "bytes": 3192 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float64/schedule.json", + "copy": "evidence/oracle/five-float64/schedule.json", + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d", + "bytes": 1411 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float64/seed.json", + "copy": "evidence/oracle/five-float64/seed.json", + "sha256": "ea838909a3dcfabd586cf4181eb6788ed791472fc5f64556fc5e88004906d242", + "bytes": 124 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float64-repeat/actual-weights.json", + "copy": "evidence/oracle/five-float64-repeat/actual-weights.json", + "sha256": "7cf304b269ed2c25edb9040b91c2ed10d1f335b6be59b819f5f23ede2ae6757c", + "bytes": 683 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float64-repeat/brian-output/events.csv", + "copy": "evidence/oracle/five-float64-repeat/brian-output/events.csv", + "sha256": "80b2ac9efc7aa1db0ed7e8922f8e9d464c4a2417248be1435454316c47f00ee2", + "bytes": 6300 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float64-repeat/completeness.csv", + "copy": "evidence/oracle/five-float64-repeat/completeness.csv", + "sha256": "301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5", + "bytes": 68 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float64-repeat/environment.json", + "copy": "evidence/oracle/five-float64-repeat/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float64-repeat/generated-code.json", + "copy": "evidence/oracle/five-float64-repeat/generated-code.json", + "sha256": "a0f43549be169ed0ab0b8193779e79f45b140a43ca19e73062d3617ab98e6abb", + "bytes": 11537 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float64-repeat/run-spec.json", + "copy": "evidence/oracle/five-float64-repeat/run-spec.json", + "sha256": "101e0cf3fb3fb2ce75e8f0cb6526285f66026317a5e550716363c1d1ff928265", + "bytes": 3192 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float64-repeat/schedule.json", + "copy": "evidence/oracle/five-float64-repeat/schedule.json", + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d", + "bytes": 1411 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/five-float64-repeat/seed.json", + "copy": "evidence/oracle/five-float64-repeat/seed.json", + "sha256": "ea838909a3dcfabd586cf4181eb6788ed791472fc5f64556fc5e88004906d242", + "bytes": 124 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float32/actual-weights.json", + "copy": "evidence/oracle/no_input-float32/actual-weights.json", + "sha256": "87c7305d5b8ffcd9f117485921900ace6ad76e9629e44bd5fde5d0fcad9ff4da", + "bytes": 843 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float32/brian-output/events.csv", + "copy": "evidence/oracle/no_input-float32/brian-output/events.csv", + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801", + "bytes": 16 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float32/comparison.json", + "copy": "evidence/oracle/no_input-float32/comparison.json", + "sha256": "e7ac75d3c7853ec3526b7dc1bdd7f94ccba58b4392c2a704ac4bc25b34130ce5", + "bytes": 297 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float32/completeness.csv", + "copy": "evidence/oracle/no_input-float32/completeness.csv", + "sha256": "301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5", + "bytes": 68 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float32/environment.json", + "copy": "evidence/oracle/no_input-float32/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float32/generated-code.json", + "copy": "evidence/oracle/no_input-float32/generated-code.json", + "sha256": "51391a395fd7e4608f1b17621601e3ffbe251a18f719623e5d5267ffd070deab", + "bytes": 11367 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float32/independent-output/events.csv", + "copy": "evidence/oracle/no_input-float32/independent-output/events.csv", + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801", + "bytes": 16 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float32/run-spec.json", + "copy": "evidence/oracle/no_input-float32/run-spec.json", + "sha256": "c23e196bc4701ec1c085fe9d6eb81167bfa3300181de8390bc6d6be22374e5d9", + "bytes": 3192 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float32/schedule.json", + "copy": "evidence/oracle/no_input-float32/schedule.json", + "sha256": "a0ae45ec1bd5e9ad66296742ebb857263b1bde14ca260bbba260b570d359dcd5", + "bytes": 1212 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float32/seed.json", + "copy": "evidence/oracle/no_input-float32/seed.json", + "sha256": "77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830", + "bytes": 75 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float32-repeat/actual-weights.json", + "copy": "evidence/oracle/no_input-float32-repeat/actual-weights.json", + "sha256": "87c7305d5b8ffcd9f117485921900ace6ad76e9629e44bd5fde5d0fcad9ff4da", + "bytes": 843 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float32-repeat/brian-output/events.csv", + "copy": "evidence/oracle/no_input-float32-repeat/brian-output/events.csv", + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801", + "bytes": 16 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float32-repeat/completeness.csv", + "copy": "evidence/oracle/no_input-float32-repeat/completeness.csv", + "sha256": "301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5", + "bytes": 68 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float32-repeat/environment.json", + "copy": "evidence/oracle/no_input-float32-repeat/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float32-repeat/generated-code.json", + "copy": "evidence/oracle/no_input-float32-repeat/generated-code.json", + "sha256": "bee4c08cf69cb20302b0a4dea5ea76fe44bc6ae32ac869cd4c415a8719efb6b3", + "bytes": 11367 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float32-repeat/run-spec.json", + "copy": "evidence/oracle/no_input-float32-repeat/run-spec.json", + "sha256": "c23e196bc4701ec1c085fe9d6eb81167bfa3300181de8390bc6d6be22374e5d9", + "bytes": 3192 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float32-repeat/schedule.json", + "copy": "evidence/oracle/no_input-float32-repeat/schedule.json", + "sha256": "a0ae45ec1bd5e9ad66296742ebb857263b1bde14ca260bbba260b570d359dcd5", + "bytes": 1212 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float32-repeat/seed.json", + "copy": "evidence/oracle/no_input-float32-repeat/seed.json", + "sha256": "77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830", + "bytes": 75 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float64/actual-weights.json", + "copy": "evidence/oracle/no_input-float64/actual-weights.json", + "sha256": "7cf304b269ed2c25edb9040b91c2ed10d1f335b6be59b819f5f23ede2ae6757c", + "bytes": 683 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float64/brian-output/events.csv", + "copy": "evidence/oracle/no_input-float64/brian-output/events.csv", + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801", + "bytes": 16 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float64/comparison.json", + "copy": "evidence/oracle/no_input-float64/comparison.json", + "sha256": "34382539f3576746462c29b584d5c3efbcc827f434e5c55d399c58e0fe5212f7", + "bytes": 295 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float64/completeness.csv", + "copy": "evidence/oracle/no_input-float64/completeness.csv", + "sha256": "301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5", + "bytes": 68 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float64/environment.json", + "copy": "evidence/oracle/no_input-float64/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float64/generated-code.json", + "copy": "evidence/oracle/no_input-float64/generated-code.json", + "sha256": "70ea4ff3fd649f4303c189e58980b7c0aa628694c3cedfcb37aa2ccae1d6c079", + "bytes": 11367 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float64/independent-output/events.csv", + "copy": "evidence/oracle/no_input-float64/independent-output/events.csv", + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801", + "bytes": 16 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float64/run-spec.json", + "copy": "evidence/oracle/no_input-float64/run-spec.json", + "sha256": "9de22a53132abac0de19554f76a0737cb81b62bea257813962b75dbd633b8978", + "bytes": 3192 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float64/schedule.json", + "copy": "evidence/oracle/no_input-float64/schedule.json", + "sha256": "a0ae45ec1bd5e9ad66296742ebb857263b1bde14ca260bbba260b570d359dcd5", + "bytes": 1212 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float64/seed.json", + "copy": "evidence/oracle/no_input-float64/seed.json", + "sha256": "77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830", + "bytes": 75 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float64-repeat/actual-weights.json", + "copy": "evidence/oracle/no_input-float64-repeat/actual-weights.json", + "sha256": "7cf304b269ed2c25edb9040b91c2ed10d1f335b6be59b819f5f23ede2ae6757c", + "bytes": 683 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float64-repeat/brian-output/events.csv", + "copy": "evidence/oracle/no_input-float64-repeat/brian-output/events.csv", + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801", + "bytes": 16 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float64-repeat/completeness.csv", + "copy": "evidence/oracle/no_input-float64-repeat/completeness.csv", + "sha256": "301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5", + "bytes": 68 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float64-repeat/environment.json", + "copy": "evidence/oracle/no_input-float64-repeat/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float64-repeat/generated-code.json", + "copy": "evidence/oracle/no_input-float64-repeat/generated-code.json", + "sha256": "3db565a7f030aafed20764a918587a86fab4ba509c223e58027bc2e12b5bb8a5", + "bytes": 11367 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float64-repeat/run-spec.json", + "copy": "evidence/oracle/no_input-float64-repeat/run-spec.json", + "sha256": "9de22a53132abac0de19554f76a0737cb81b62bea257813962b75dbd633b8978", + "bytes": 3192 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float64-repeat/schedule.json", + "copy": "evidence/oracle/no_input-float64-repeat/schedule.json", + "sha256": "a0ae45ec1bd5e9ad66296742ebb857263b1bde14ca260bbba260b570d359dcd5", + "bytes": 1212 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/no_input-float64-repeat/seed.json", + "copy": "evidence/oracle/no_input-float64-repeat/seed.json", + "sha256": "77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830", + "bytes": 75 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float32/actual-weights.json", + "copy": "evidence/oracle/pair-float32/actual-weights.json", + "sha256": "3056ff61f015cfa9572b32d18aeebf0e79a877c6c37a1b429c90e385bba08d07", + "bytes": 179 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float32/brian-output/events.csv", + "copy": "evidence/oracle/pair-float32/brian-output/events.csv", + "sha256": "0c40dff2cecdd85cb64a03156c3ca7b538ba2046756844ab84b26db830d0e7bd", + "bytes": 2120 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float32/comparison.json", + "copy": "evidence/oracle/pair-float32/comparison.json", + "sha256": "3e53a79835ecc9e5306577e20a7952a36844407750be7455d2ccd53a49823ee5", + "bytes": 293 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float32/completeness.csv", + "copy": "evidence/oracle/pair-float32/completeness.csv", + "sha256": "5af02939034e66e7a8e7c361555203906d69bbba0042b1ab549041db1626f02b", + "bytes": 44 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float32/environment.json", + "copy": "evidence/oracle/pair-float32/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float32/generated-code.json", + "copy": "evidence/oracle/pair-float32/generated-code.json", + "sha256": "8c1278d8e1e4b028900e0353f7f9800300dad618be28e028714c7c1889a64099", + "bytes": 11537 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float32/independent-output/events.csv", + "copy": "evidence/oracle/pair-float32/independent-output/events.csv", + "sha256": "0c40dff2cecdd85cb64a03156c3ca7b538ba2046756844ab84b26db830d0e7bd", + "bytes": 2120 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float32/run-spec.json", + "copy": "evidence/oracle/pair-float32/run-spec.json", + "sha256": "be400c1c9248322775cb9bb2c23a8ab4b4bb536f220c955806f194718191b6de", + "bytes": 3012 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float32/schedule.json", + "copy": "evidence/oracle/pair-float32/schedule.json", + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d", + "bytes": 1411 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float32/seed.json", + "copy": "evidence/oracle/pair-float32/seed.json", + "sha256": "335b295513fed2a617775adf590894234644c8bdf7268851434737d94e146208", + "bytes": 137 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float32-repeat/actual-weights.json", + "copy": "evidence/oracle/pair-float32-repeat/actual-weights.json", + "sha256": "3056ff61f015cfa9572b32d18aeebf0e79a877c6c37a1b429c90e385bba08d07", + "bytes": 179 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float32-repeat/brian-output/events.csv", + "copy": "evidence/oracle/pair-float32-repeat/brian-output/events.csv", + "sha256": "0c40dff2cecdd85cb64a03156c3ca7b538ba2046756844ab84b26db830d0e7bd", + "bytes": 2120 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float32-repeat/completeness.csv", + "copy": "evidence/oracle/pair-float32-repeat/completeness.csv", + "sha256": "5af02939034e66e7a8e7c361555203906d69bbba0042b1ab549041db1626f02b", + "bytes": 44 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float32-repeat/environment.json", + "copy": "evidence/oracle/pair-float32-repeat/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float32-repeat/generated-code.json", + "copy": "evidence/oracle/pair-float32-repeat/generated-code.json", + "sha256": "110a0b1d596da82dfad41024ac1b00ab636b0e5e927a7108782af257b21ae3c2", + "bytes": 11537 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float32-repeat/run-spec.json", + "copy": "evidence/oracle/pair-float32-repeat/run-spec.json", + "sha256": "be400c1c9248322775cb9bb2c23a8ab4b4bb536f220c955806f194718191b6de", + "bytes": 3012 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float32-repeat/schedule.json", + "copy": "evidence/oracle/pair-float32-repeat/schedule.json", + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d", + "bytes": 1411 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float32-repeat/seed.json", + "copy": "evidence/oracle/pair-float32-repeat/seed.json", + "sha256": "335b295513fed2a617775adf590894234644c8bdf7268851434737d94e146208", + "bytes": 137 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float64/actual-weights.json", + "copy": "evidence/oracle/pair-float64/actual-weights.json", + "sha256": "8a3f9d74c53e9cf8eb01c82be313c29b5f82efe15e2a23aba463f6de3a36a791", + "bytes": 146 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float64/brian-output/events.csv", + "copy": "evidence/oracle/pair-float64/brian-output/events.csv", + "sha256": "0c40dff2cecdd85cb64a03156c3ca7b538ba2046756844ab84b26db830d0e7bd", + "bytes": 2120 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float64/comparison.json", + "copy": "evidence/oracle/pair-float64/comparison.json", + "sha256": "15a03555e6cd6f5df21587c3ce23a75c7ec6a112bc20153e53a8286a1801060e", + "bytes": 295 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float64/completeness.csv", + "copy": "evidence/oracle/pair-float64/completeness.csv", + "sha256": "5af02939034e66e7a8e7c361555203906d69bbba0042b1ab549041db1626f02b", + "bytes": 44 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float64/environment.json", + "copy": "evidence/oracle/pair-float64/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float64/generated-code.json", + "copy": "evidence/oracle/pair-float64/generated-code.json", + "sha256": "8c1278d8e1e4b028900e0353f7f9800300dad618be28e028714c7c1889a64099", + "bytes": 11537 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float64/independent-output/events.csv", + "copy": "evidence/oracle/pair-float64/independent-output/events.csv", + "sha256": "0c40dff2cecdd85cb64a03156c3ca7b538ba2046756844ab84b26db830d0e7bd", + "bytes": 2120 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float64/run-spec.json", + "copy": "evidence/oracle/pair-float64/run-spec.json", + "sha256": "a54ed0bc7bafe0d45f951255cdda987a5e4e2433a98cac45c1c3b4f9141d7c65", + "bytes": 3012 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float64/schedule.json", + "copy": "evidence/oracle/pair-float64/schedule.json", + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d", + "bytes": 1411 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float64/seed.json", + "copy": "evidence/oracle/pair-float64/seed.json", + "sha256": "ea838909a3dcfabd586cf4181eb6788ed791472fc5f64556fc5e88004906d242", + "bytes": 124 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float64-repeat/actual-weights.json", + "copy": "evidence/oracle/pair-float64-repeat/actual-weights.json", + "sha256": "8a3f9d74c53e9cf8eb01c82be313c29b5f82efe15e2a23aba463f6de3a36a791", + "bytes": 146 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float64-repeat/brian-output/events.csv", + "copy": "evidence/oracle/pair-float64-repeat/brian-output/events.csv", + "sha256": "0c40dff2cecdd85cb64a03156c3ca7b538ba2046756844ab84b26db830d0e7bd", + "bytes": 2120 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float64-repeat/completeness.csv", + "copy": "evidence/oracle/pair-float64-repeat/completeness.csv", + "sha256": "5af02939034e66e7a8e7c361555203906d69bbba0042b1ab549041db1626f02b", + "bytes": 44 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float64-repeat/environment.json", + "copy": "evidence/oracle/pair-float64-repeat/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float64-repeat/generated-code.json", + "copy": "evidence/oracle/pair-float64-repeat/generated-code.json", + "sha256": "86fd33e9730c1d4675224eaff6ecc4feaf9808e58f51c93e7df252c821998736", + "bytes": 11537 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float64-repeat/run-spec.json", + "copy": "evidence/oracle/pair-float64-repeat/run-spec.json", + "sha256": "a54ed0bc7bafe0d45f951255cdda987a5e4e2433a98cac45c1c3b4f9141d7c65", + "bytes": 3012 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float64-repeat/schedule.json", + "copy": "evidence/oracle/pair-float64-repeat/schedule.json", + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d", + "bytes": 1411 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/pair-float64-repeat/seed.json", + "copy": "evidence/oracle/pair-float64-repeat/seed.json", + "sha256": "ea838909a3dcfabd586cf4181eb6788ed791472fc5f64556fc5e88004906d242", + "bytes": 124 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/poi-interface/audit.json", + "copy": "evidence/oracle/poi-interface/audit.json", + "sha256": "4a8bf9f0e2c4954cea97b7c6eebebf422196641047c31935017d81268ab576f5", + "bytes": 3170 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/poi-interface/completeness.csv", + "copy": "evidence/oracle/poi-interface/completeness.csv", + "sha256": "06e601b217fdbc48eee57eac01cc9a9fa649ec2a1810a2e212efcd3e4b632303", + "bytes": 50 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/poi-interface/environment.json", + "copy": "evidence/oracle/poi-interface/environment.json", + "sha256": "1e7bcd97221db01bba542320601325572330ffe2a867607d3105d0417c2850ae", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/poi-interface/generated-code.json", + "copy": "evidence/oracle/poi-interface/generated-code.json", + "sha256": "eb11dd4b866c1fb80ec414b55335e1263fc041cddc46d098d523c6fd52c297ef", + "bytes": 10641 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/poi-interface/schedule.json", + "copy": "evidence/oracle/poi-interface/schedule.json", + "sha256": "eac8d994e23c5fbb5fff6b537f24d759b0000793d9fd7938669e45b1242b0410", + "bytes": 1244 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float32/actual-weights.json", + "copy": "evidence/oracle/trio-float32/actual-weights.json", + "sha256": "d1fe988c385189af8d4ea1879eb7f863115a35f881a06f3d4c61b6cb2357eb6d", + "bytes": 412 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float32/brian-output/events.csv", + "copy": "evidence/oracle/trio-float32/brian-output/events.csv", + "sha256": "7ae48f3fb283fda9f19b47215e23b6f8fe7b2f0265e400b5620acf98fed9c053", + "bytes": 4445 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float32/comparison.json", + "copy": "evidence/oracle/trio-float32/comparison.json", + "sha256": "29510d4a5da61d412f4a5b852c793744983bc9b5a761fd3d175e8b7d5178777d", + "bytes": 294 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float32/completeness.csv", + "copy": "evidence/oracle/trio-float32/completeness.csv", + "sha256": "e8795d5efb2eebefaae419c6df6d18d3cea3c390d9df7987f55823f5a860169e", + "bytes": 51 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float32/environment.json", + "copy": "evidence/oracle/trio-float32/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float32/generated-code.json", + "copy": "evidence/oracle/trio-float32/generated-code.json", + "sha256": "795226925d44b77912780f62a0881256e964a80baf362dfcf3173643ca417bbe", + "bytes": 11535 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float32/independent-output/events.csv", + "copy": "evidence/oracle/trio-float32/independent-output/events.csv", + "sha256": "7ae48f3fb283fda9f19b47215e23b6f8fe7b2f0265e400b5620acf98fed9c053", + "bytes": 4445 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float32/run-spec.json", + "copy": "evidence/oracle/trio-float32/run-spec.json", + "sha256": "391b9abfa2f300cc624185f4fe87bea1ed9417921c40ce4f71e7a9ed19777662", + "bytes": 3074 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float32/schedule.json", + "copy": "evidence/oracle/trio-float32/schedule.json", + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d", + "bytes": 1411 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float32/seed.json", + "copy": "evidence/oracle/trio-float32/seed.json", + "sha256": "335b295513fed2a617775adf590894234644c8bdf7268851434737d94e146208", + "bytes": 137 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float32-repeat/actual-weights.json", + "copy": "evidence/oracle/trio-float32-repeat/actual-weights.json", + "sha256": "d1fe988c385189af8d4ea1879eb7f863115a35f881a06f3d4c61b6cb2357eb6d", + "bytes": 412 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float32-repeat/brian-output/events.csv", + "copy": "evidence/oracle/trio-float32-repeat/brian-output/events.csv", + "sha256": "7ae48f3fb283fda9f19b47215e23b6f8fe7b2f0265e400b5620acf98fed9c053", + "bytes": 4445 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float32-repeat/completeness.csv", + "copy": "evidence/oracle/trio-float32-repeat/completeness.csv", + "sha256": "e8795d5efb2eebefaae419c6df6d18d3cea3c390d9df7987f55823f5a860169e", + "bytes": 51 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float32-repeat/environment.json", + "copy": "evidence/oracle/trio-float32-repeat/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float32-repeat/generated-code.json", + "copy": "evidence/oracle/trio-float32-repeat/generated-code.json", + "sha256": "fc6c228a1f24c65b5172799dfaa2568cdb615db639226022e10cced292099fe2", + "bytes": 11537 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float32-repeat/run-spec.json", + "copy": "evidence/oracle/trio-float32-repeat/run-spec.json", + "sha256": "391b9abfa2f300cc624185f4fe87bea1ed9417921c40ce4f71e7a9ed19777662", + "bytes": 3074 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float32-repeat/schedule.json", + "copy": "evidence/oracle/trio-float32-repeat/schedule.json", + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d", + "bytes": 1411 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float32-repeat/seed.json", + "copy": "evidence/oracle/trio-float32-repeat/seed.json", + "sha256": "335b295513fed2a617775adf590894234644c8bdf7268851434737d94e146208", + "bytes": 137 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float64/actual-weights.json", + "copy": "evidence/oracle/trio-float64/actual-weights.json", + "sha256": "21ab46d0419138b16b0407d31b4acde4a25f7016beb9e65a0c3a358707ee8565", + "bytes": 356 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float64/brian-output/events.csv", + "copy": "evidence/oracle/trio-float64/brian-output/events.csv", + "sha256": "7ae48f3fb283fda9f19b47215e23b6f8fe7b2f0265e400b5620acf98fed9c053", + "bytes": 4445 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float64/comparison.json", + "copy": "evidence/oracle/trio-float64/comparison.json", + "sha256": "a7c9b2a63b57539e5ac0eefcc2943558b617f67afa3841873e95ca2e44d7db0b", + "bytes": 295 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float64/completeness.csv", + "copy": "evidence/oracle/trio-float64/completeness.csv", + "sha256": "e8795d5efb2eebefaae419c6df6d18d3cea3c390d9df7987f55823f5a860169e", + "bytes": 51 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float64/environment.json", + "copy": "evidence/oracle/trio-float64/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float64/generated-code.json", + "copy": "evidence/oracle/trio-float64/generated-code.json", + "sha256": "9b0f5455ef57b378efa1099b79d8285fe8f6d41a480ada58e57c2748b8cba02f", + "bytes": 11531 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float64/independent-output/events.csv", + "copy": "evidence/oracle/trio-float64/independent-output/events.csv", + "sha256": "7ae48f3fb283fda9f19b47215e23b6f8fe7b2f0265e400b5620acf98fed9c053", + "bytes": 4445 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float64/run-spec.json", + "copy": "evidence/oracle/trio-float64/run-spec.json", + "sha256": "2d3c683e78db15aa7ee8aea0ac79ed51f44dacc8618b3419bb591811060d2cf1", + "bytes": 3074 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float64/schedule.json", + "copy": "evidence/oracle/trio-float64/schedule.json", + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d", + "bytes": 1411 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float64/seed.json", + "copy": "evidence/oracle/trio-float64/seed.json", + "sha256": "ea838909a3dcfabd586cf4181eb6788ed791472fc5f64556fc5e88004906d242", + "bytes": 124 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float64-repeat/actual-weights.json", + "copy": "evidence/oracle/trio-float64-repeat/actual-weights.json", + "sha256": "21ab46d0419138b16b0407d31b4acde4a25f7016beb9e65a0c3a358707ee8565", + "bytes": 356 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float64-repeat/brian-output/events.csv", + "copy": "evidence/oracle/trio-float64-repeat/brian-output/events.csv", + "sha256": "7ae48f3fb283fda9f19b47215e23b6f8fe7b2f0265e400b5620acf98fed9c053", + "bytes": 4445 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float64-repeat/completeness.csv", + "copy": "evidence/oracle/trio-float64-repeat/completeness.csv", + "sha256": "e8795d5efb2eebefaae419c6df6d18d3cea3c390d9df7987f55823f5a860169e", + "bytes": 51 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float64-repeat/environment.json", + "copy": "evidence/oracle/trio-float64-repeat/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float64-repeat/generated-code.json", + "copy": "evidence/oracle/trio-float64-repeat/generated-code.json", + "sha256": "795226925d44b77912780f62a0881256e964a80baf362dfcf3173643ca417bbe", + "bytes": 11535 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float64-repeat/run-spec.json", + "copy": "evidence/oracle/trio-float64-repeat/run-spec.json", + "sha256": "2d3c683e78db15aa7ee8aea0ac79ed51f44dacc8618b3419bb591811060d2cf1", + "bytes": 3074 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float64-repeat/schedule.json", + "copy": "evidence/oracle/trio-float64-repeat/schedule.json", + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d", + "bytes": 1411 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/trio-float64-repeat/seed.json", + "copy": "evidence/oracle/trio-float64-repeat/seed.json", + "sha256": "ea838909a3dcfabd586cf4181eb6788ed791472fc5f64556fc5e88004906d242", + "bytes": 124 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-above_threshold-float32/actual-weights.json", + "copy": "evidence/oracle/unit-above_threshold-float32/actual-weights.json", + "sha256": "db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b", + "bytes": 94 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-above_threshold-float32/brian-output/events.csv", + "copy": "evidence/oracle/unit-above_threshold-float32/brian-output/events.csv", + "sha256": "cfad3e3ae7578e64365753675ead4358495da79ee379d78e192172b50a688023", + "bytes": 21 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-above_threshold-float32/comparison.json", + "copy": "evidence/oracle/unit-above_threshold-float32/comparison.json", + "sha256": "e7ac75d3c7853ec3526b7dc1bdd7f94ccba58b4392c2a704ac4bc25b34130ce5", + "bytes": 297 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-above_threshold-float32/completeness.csv", + "copy": "evidence/oracle/unit-above_threshold-float32/completeness.csv", + "sha256": "6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466", + "bytes": 35 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-above_threshold-float32/environment.json", + "copy": "evidence/oracle/unit-above_threshold-float32/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-above_threshold-float32/external-arrivals.csv", + "copy": "evidence/oracle/unit-above_threshold-float32/external-arrivals.csv", + "sha256": "c5982c3d7ddbb031347cb389692bd9e78b4d851732d4192ca8d9db1f5ce31128", + "bytes": 29 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-above_threshold-float32/generated-code.json", + "copy": "evidence/oracle/unit-above_threshold-float32/generated-code.json", + "sha256": "8c1278d8e1e4b028900e0353f7f9800300dad618be28e028714c7c1889a64099", + "bytes": 11537 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-above_threshold-float32/independent-output/events.csv", + "copy": "evidence/oracle/unit-above_threshold-float32/independent-output/events.csv", + "sha256": "cfad3e3ae7578e64365753675ead4358495da79ee379d78e192172b50a688023", + "bytes": 21 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-above_threshold-float32/run-spec.json", + "copy": "evidence/oracle/unit-above_threshold-float32/run-spec.json", + "sha256": "05cc155e6979dea2f1aad7cf64fad64e2cb2f8e6b3578d6bc1948b27c8bda779", + "bytes": 2976 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-above_threshold-float32/schedule.json", + "copy": "evidence/oracle/unit-above_threshold-float32/schedule.json", + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d", + "bytes": 1411 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-above_threshold-float32/seed.json", + "copy": "evidence/oracle/unit-above_threshold-float32/seed.json", + "sha256": "a6f4b88a4b799a7ac2b91764d632dbf3e05b16535a9c5ab64ad59092902db88e", + "bytes": 135 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-above_threshold-float64/actual-weights.json", + "copy": "evidence/oracle/unit-above_threshold-float64/actual-weights.json", + "sha256": "db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b", + "bytes": 94 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-above_threshold-float64/brian-output/events.csv", + "copy": "evidence/oracle/unit-above_threshold-float64/brian-output/events.csv", + "sha256": "cfad3e3ae7578e64365753675ead4358495da79ee379d78e192172b50a688023", + "bytes": 21 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-above_threshold-float64/comparison.json", + "copy": "evidence/oracle/unit-above_threshold-float64/comparison.json", + "sha256": "34382539f3576746462c29b584d5c3efbcc827f434e5c55d399c58e0fe5212f7", + "bytes": 295 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-above_threshold-float64/completeness.csv", + "copy": "evidence/oracle/unit-above_threshold-float64/completeness.csv", + "sha256": "6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466", + "bytes": 35 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-above_threshold-float64/environment.json", + "copy": "evidence/oracle/unit-above_threshold-float64/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-above_threshold-float64/external-arrivals.csv", + "copy": "evidence/oracle/unit-above_threshold-float64/external-arrivals.csv", + "sha256": "c5982c3d7ddbb031347cb389692bd9e78b4d851732d4192ca8d9db1f5ce31128", + "bytes": 29 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-above_threshold-float64/generated-code.json", + "copy": "evidence/oracle/unit-above_threshold-float64/generated-code.json", + "sha256": "260ff4764dbbad4c87966c46d61f804b146c9c3b98ab50db2bd135aa33086050", + "bytes": 11537 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-above_threshold-float64/independent-output/events.csv", + "copy": "evidence/oracle/unit-above_threshold-float64/independent-output/events.csv", + "sha256": "cfad3e3ae7578e64365753675ead4358495da79ee379d78e192172b50a688023", + "bytes": 21 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-above_threshold-float64/run-spec.json", + "copy": "evidence/oracle/unit-above_threshold-float64/run-spec.json", + "sha256": "caabe9c7956d99f38f6cdc7f08bc81501186998221f4f9fb6c2d77fa68e9398b", + "bytes": 2976 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-above_threshold-float64/schedule.json", + "copy": "evidence/oracle/unit-above_threshold-float64/schedule.json", + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d", + "bytes": 1411 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-above_threshold-float64/seed.json", + "copy": "evidence/oracle/unit-above_threshold-float64/seed.json", + "sha256": "05b71129e058b3685e2913a4ea737a387b407b09f521670ec4b00d19c9e3eac5", + "bytes": 122 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-delay_18-float32/actual-weights.json", + "copy": "evidence/oracle/unit-delay_18-float32/actual-weights.json", + "sha256": "c9b7702f929fe1e2a3d5bdaa673994de0db223fff4e09b52e7c5759c2b972e32", + "bytes": 127 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-delay_18-float32/brian-output/events.csv", + "copy": "evidence/oracle/unit-delay_18-float32/brian-output/events.csv", + "sha256": "10b1b3eda316d86e0df6180a7e00c914528fcb0949728895ba25605d11e409b3", + "bytes": 21 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-delay_18-float32/comparison.json", + "copy": "evidence/oracle/unit-delay_18-float32/comparison.json", + "sha256": "37f394b3a181d7f99431910bba73c4b11d83379bb33525e5f93aad4903121c3f", + "bytes": 296 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-delay_18-float32/completeness.csv", + "copy": "evidence/oracle/unit-delay_18-float32/completeness.csv", + "sha256": "843dba272f8f33a966eb902023ed2851be0f0316ea02245d48b613f72b38785b", + "bytes": 40 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-delay_18-float32/environment.json", + "copy": "evidence/oracle/unit-delay_18-float32/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-delay_18-float32/generated-code.json", + "copy": "evidence/oracle/unit-delay_18-float32/generated-code.json", + "sha256": "1628ba80041d8f31231e9c809ab0fcb48062bb957ec98d3f8b5d4b0e6bb78137", + "bytes": 11537 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-delay_18-float32/independent-output/events.csv", + "copy": "evidence/oracle/unit-delay_18-float32/independent-output/events.csv", + "sha256": "10b1b3eda316d86e0df6180a7e00c914528fcb0949728895ba25605d11e409b3", + "bytes": 21 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-delay_18-float32/run-spec.json", + "copy": "evidence/oracle/unit-delay_18-float32/run-spec.json", + "sha256": "250f049da54ebe5be709647d7f5eff2bb16faf9931980bfbfdc45de75612953b", + "bytes": 2984 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-delay_18-float32/schedule.json", + "copy": "evidence/oracle/unit-delay_18-float32/schedule.json", + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d", + "bytes": 1411 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-delay_18-float32/seed.json", + "copy": "evidence/oracle/unit-delay_18-float32/seed.json", + "sha256": "242b26859a24e2fcc60597f50c28f4a52f08edfd42c38100c5964576cbc37ccc", + "bytes": 135 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-delay_18-float64/actual-weights.json", + "copy": "evidence/oracle/unit-delay_18-float64/actual-weights.json", + "sha256": "213ee768839567d5f119ae77d914541359f91a5a206ab6c7bf1a8293a29cc816", + "bytes": 101 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-delay_18-float64/brian-output/events.csv", + "copy": "evidence/oracle/unit-delay_18-float64/brian-output/events.csv", + "sha256": "10b1b3eda316d86e0df6180a7e00c914528fcb0949728895ba25605d11e409b3", + "bytes": 21 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-delay_18-float64/comparison.json", + "copy": "evidence/oracle/unit-delay_18-float64/comparison.json", + "sha256": "1a4ff3495394f915ef545e4e76101b0bd51a31bc93a3b566c6ba0f8273ba51ba", + "bytes": 297 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-delay_18-float64/completeness.csv", + "copy": "evidence/oracle/unit-delay_18-float64/completeness.csv", + "sha256": "843dba272f8f33a966eb902023ed2851be0f0316ea02245d48b613f72b38785b", + "bytes": 40 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-delay_18-float64/environment.json", + "copy": "evidence/oracle/unit-delay_18-float64/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-delay_18-float64/generated-code.json", + "copy": "evidence/oracle/unit-delay_18-float64/generated-code.json", + "sha256": "b754c9b23e259086e1b17bf3a2179a7f22acecec2eaf39b82bc48df31178dc08", + "bytes": 11537 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-delay_18-float64/independent-output/events.csv", + "copy": "evidence/oracle/unit-delay_18-float64/independent-output/events.csv", + "sha256": "10b1b3eda316d86e0df6180a7e00c914528fcb0949728895ba25605d11e409b3", + "bytes": 21 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-delay_18-float64/run-spec.json", + "copy": "evidence/oracle/unit-delay_18-float64/run-spec.json", + "sha256": "bab3876796fe01fd3c21a252d18de06bd1e2c3d9db8ceab600b28c7f5f6580ae", + "bytes": 2984 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-delay_18-float64/schedule.json", + "copy": "evidence/oracle/unit-delay_18-float64/schedule.json", + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d", + "bytes": 1411 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-delay_18-float64/seed.json", + "copy": "evidence/oracle/unit-delay_18-float64/seed.json", + "sha256": "5084ab20be7af7ed30622b8e72f679fb89d3de638ce8f4af4c7c0c24a1d45a29", + "bytes": 122 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-equal_threshold-float32/actual-weights.json", + "copy": "evidence/oracle/unit-equal_threshold-float32/actual-weights.json", + "sha256": "db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b", + "bytes": 94 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-equal_threshold-float32/brian-output/events.csv", + "copy": "evidence/oracle/unit-equal_threshold-float32/brian-output/events.csv", + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801", + "bytes": 16 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-equal_threshold-float32/comparison.json", + "copy": "evidence/oracle/unit-equal_threshold-float32/comparison.json", + "sha256": "950e79516e1d611cc30336d2ec02ef99c9511fce58dfe1eb4edc92aedddff8f7", + "bytes": 298 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-equal_threshold-float32/completeness.csv", + "copy": "evidence/oracle/unit-equal_threshold-float32/completeness.csv", + "sha256": "6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466", + "bytes": 35 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-equal_threshold-float32/environment.json", + "copy": "evidence/oracle/unit-equal_threshold-float32/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-equal_threshold-float32/external-arrivals.csv", + "copy": "evidence/oracle/unit-equal_threshold-float32/external-arrivals.csv", + "sha256": "c5982c3d7ddbb031347cb389692bd9e78b4d851732d4192ca8d9db1f5ce31128", + "bytes": 29 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-equal_threshold-float32/generated-code.json", + "copy": "evidence/oracle/unit-equal_threshold-float32/generated-code.json", + "sha256": "86fd33e9730c1d4675224eaff6ecc4feaf9808e58f51c93e7df252c821998736", + "bytes": 11537 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-equal_threshold-float32/independent-output/events.csv", + "copy": "evidence/oracle/unit-equal_threshold-float32/independent-output/events.csv", + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801", + "bytes": 16 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-equal_threshold-float32/run-spec.json", + "copy": "evidence/oracle/unit-equal_threshold-float32/run-spec.json", + "sha256": "fac5e0aa0191b2c1588aab61ae63bd33506f9e1388025be1147eece5c1a7201e", + "bytes": 2976 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-equal_threshold-float32/schedule.json", + "copy": "evidence/oracle/unit-equal_threshold-float32/schedule.json", + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d", + "bytes": 1411 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-equal_threshold-float32/seed.json", + "copy": "evidence/oracle/unit-equal_threshold-float32/seed.json", + "sha256": "478668928b9024183568ba20f423f1f81eb9da3a2ad3427ce9bd55ed27779602", + "bytes": 136 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-equal_threshold-float64/actual-weights.json", + "copy": "evidence/oracle/unit-equal_threshold-float64/actual-weights.json", + "sha256": "db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b", + "bytes": 94 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-equal_threshold-float64/brian-output/events.csv", + "copy": "evidence/oracle/unit-equal_threshold-float64/brian-output/events.csv", + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801", + "bytes": 16 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-equal_threshold-float64/comparison.json", + "copy": "evidence/oracle/unit-equal_threshold-float64/comparison.json", + "sha256": "92164ae71a1399241866df040a559c7c1a9b8fca9327bcb009665a6bf8eeef4a", + "bytes": 297 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-equal_threshold-float64/completeness.csv", + "copy": "evidence/oracle/unit-equal_threshold-float64/completeness.csv", + "sha256": "6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466", + "bytes": 35 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-equal_threshold-float64/environment.json", + "copy": "evidence/oracle/unit-equal_threshold-float64/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-equal_threshold-float64/external-arrivals.csv", + "copy": "evidence/oracle/unit-equal_threshold-float64/external-arrivals.csv", + "sha256": "c5982c3d7ddbb031347cb389692bd9e78b4d851732d4192ca8d9db1f5ce31128", + "bytes": 29 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-equal_threshold-float64/generated-code.json", + "copy": "evidence/oracle/unit-equal_threshold-float64/generated-code.json", + "sha256": "b754c9b23e259086e1b17bf3a2179a7f22acecec2eaf39b82bc48df31178dc08", + "bytes": 11537 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-equal_threshold-float64/independent-output/events.csv", + "copy": "evidence/oracle/unit-equal_threshold-float64/independent-output/events.csv", + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801", + "bytes": 16 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-equal_threshold-float64/run-spec.json", + "copy": "evidence/oracle/unit-equal_threshold-float64/run-spec.json", + "sha256": "048c7994f12ce279353916c6e0770aa942c4d265953a73f2fbdcfc823899c68d", + "bytes": 2976 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-equal_threshold-float64/schedule.json", + "copy": "evidence/oracle/unit-equal_threshold-float64/schedule.json", + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d", + "bytes": 1411 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-equal_threshold-float64/seed.json", + "copy": "evidence/oracle/unit-equal_threshold-float64/seed.json", + "sha256": "2fce02c931341034076747847551dd7c463a5afbca82f53aac1ea5262da25546", + "bytes": 123 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-inhibition-float32/actual-weights.json", + "copy": "evidence/oracle/unit-inhibition-float32/actual-weights.json", + "sha256": "db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b", + "bytes": 94 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-inhibition-float32/brian-output/events.csv", + "copy": "evidence/oracle/unit-inhibition-float32/brian-output/events.csv", + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801", + "bytes": 16 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-inhibition-float32/comparison.json", + "copy": "evidence/oracle/unit-inhibition-float32/comparison.json", + "sha256": "00dc58085703002b0c7828f8626b7a4c0a67ccb780e9934b1a6027278e160147", + "bytes": 297 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-inhibition-float32/completeness.csv", + "copy": "evidence/oracle/unit-inhibition-float32/completeness.csv", + "sha256": "6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466", + "bytes": 35 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-inhibition-float32/environment.json", + "copy": "evidence/oracle/unit-inhibition-float32/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-inhibition-float32/external-arrivals.csv", + "copy": "evidence/oracle/unit-inhibition-float32/external-arrivals.csv", + "sha256": "cdb3b47045c3e08a5e7f91d835e9b974267e8c39aa5c0b6f01848d02fddc9121", + "bytes": 39 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-inhibition-float32/generated-code.json", + "copy": "evidence/oracle/unit-inhibition-float32/generated-code.json", + "sha256": "24049d57fb087bbf6a32304d9a5a21ad9015d7c07dd5a42f94d5856e24648910", + "bytes": 15279 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-inhibition-float32/independent-output/events.csv", + "copy": "evidence/oracle/unit-inhibition-float32/independent-output/events.csv", + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801", + "bytes": 16 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-inhibition-float32/run-spec.json", + "copy": "evidence/oracle/unit-inhibition-float32/run-spec.json", + "sha256": "2be318173be5d8ab53909c92b7a10158dd792342f23706755bacd93b99d6304c", + "bytes": 3047 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-inhibition-float32/schedule.json", + "copy": "evidence/oracle/unit-inhibition-float32/schedule.json", + "sha256": "fed340d7ab41bbb7a1a18d125c8a2fb0129c1eeea1967ade86725f1e7753d116", + "bytes": 1584 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-inhibition-float32/seed.json", + "copy": "evidence/oracle/unit-inhibition-float32/seed.json", + "sha256": "77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830", + "bytes": 75 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-inhibition-float64/actual-weights.json", + "copy": "evidence/oracle/unit-inhibition-float64/actual-weights.json", + "sha256": "db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b", + "bytes": 94 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-inhibition-float64/brian-output/events.csv", + "copy": "evidence/oracle/unit-inhibition-float64/brian-output/events.csv", + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801", + "bytes": 16 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-inhibition-float64/comparison.json", + "copy": "evidence/oracle/unit-inhibition-float64/comparison.json", + "sha256": "9b5906fd6915f910df0c46bd171cb693bc3be927321585f298ce5bf41c675dd1", + "bytes": 297 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-inhibition-float64/completeness.csv", + "copy": "evidence/oracle/unit-inhibition-float64/completeness.csv", + "sha256": "6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466", + "bytes": 35 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-inhibition-float64/environment.json", + "copy": "evidence/oracle/unit-inhibition-float64/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-inhibition-float64/external-arrivals.csv", + "copy": "evidence/oracle/unit-inhibition-float64/external-arrivals.csv", + "sha256": "cdb3b47045c3e08a5e7f91d835e9b974267e8c39aa5c0b6f01848d02fddc9121", + "bytes": 39 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-inhibition-float64/generated-code.json", + "copy": "evidence/oracle/unit-inhibition-float64/generated-code.json", + "sha256": "f7353d7fd8f7c017924959f0db57b3a7101b72b65f0bcb4fe8ba5bf02f7c8cb3", + "bytes": 15279 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-inhibition-float64/independent-output/events.csv", + "copy": "evidence/oracle/unit-inhibition-float64/independent-output/events.csv", + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801", + "bytes": 16 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-inhibition-float64/run-spec.json", + "copy": "evidence/oracle/unit-inhibition-float64/run-spec.json", + "sha256": "1618df58c1883b6a34f4f247fa2a4dac41d29391f405efb8813d49d49ae9aab9", + "bytes": 3047 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-inhibition-float64/schedule.json", + "copy": "evidence/oracle/unit-inhibition-float64/schedule.json", + "sha256": "fed340d7ab41bbb7a1a18d125c8a2fb0129c1eeea1967ade86725f1e7753d116", + "bytes": 1584 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-inhibition-float64/seed.json", + "copy": "evidence/oracle/unit-inhibition-float64/seed.json", + "sha256": "77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830", + "bytes": 75 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-nonzero_g_reset-float32/actual-weights.json", + "copy": "evidence/oracle/unit-nonzero_g_reset-float32/actual-weights.json", + "sha256": "db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b", + "bytes": 94 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-nonzero_g_reset-float32/brian-output/events.csv", + "copy": "evidence/oracle/unit-nonzero_g_reset-float32/brian-output/events.csv", + "sha256": "d8885a4d083fff2f22fad52be2eaf08adc23e25015dafded0fedc16cf36a4cb1", + "bytes": 21 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-nonzero_g_reset-float32/comparison.json", + "copy": "evidence/oracle/unit-nonzero_g_reset-float32/comparison.json", + "sha256": "a67c8fb6afb8cca2f58f0710a9c78720ddbbe78994fb230a4a55f42270c8fd49", + "bytes": 283 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-nonzero_g_reset-float32/completeness.csv", + "copy": "evidence/oracle/unit-nonzero_g_reset-float32/completeness.csv", + "sha256": "6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466", + "bytes": 35 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-nonzero_g_reset-float32/environment.json", + "copy": "evidence/oracle/unit-nonzero_g_reset-float32/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-nonzero_g_reset-float32/external-arrivals.csv", + "copy": "evidence/oracle/unit-nonzero_g_reset-float32/external-arrivals.csv", + "sha256": "997f7e35a6eb1a267ccef4c8794c72e7d0d119a7d5328bffb271e05602555651", + "bytes": 41 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-nonzero_g_reset-float32/generated-code.json", + "copy": "evidence/oracle/unit-nonzero_g_reset-float32/generated-code.json", + "sha256": "3fb96b24ee1b80fecd16b80dbee70762cf917583a27ca3574393dd9571268708", + "bytes": 15279 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-nonzero_g_reset-float32/independent-output/events.csv", + "copy": "evidence/oracle/unit-nonzero_g_reset-float32/independent-output/events.csv", + "sha256": "d8885a4d083fff2f22fad52be2eaf08adc23e25015dafded0fedc16cf36a4cb1", + "bytes": 21 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-nonzero_g_reset-float32/run-spec.json", + "copy": "evidence/oracle/unit-nonzero_g_reset-float32/run-spec.json", + "sha256": "4782f44e07a5e6e99502c733fb77cf1bf8f3b767e9b87914347d07165a035b7b", + "bytes": 3061 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-nonzero_g_reset-float32/schedule.json", + "copy": "evidence/oracle/unit-nonzero_g_reset-float32/schedule.json", + "sha256": "fed340d7ab41bbb7a1a18d125c8a2fb0129c1eeea1967ade86725f1e7753d116", + "bytes": 1584 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-nonzero_g_reset-float32/seed.json", + "copy": "evidence/oracle/unit-nonzero_g_reset-float32/seed.json", + "sha256": "77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830", + "bytes": 75 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-nonzero_g_reset-float64/actual-weights.json", + "copy": "evidence/oracle/unit-nonzero_g_reset-float64/actual-weights.json", + "sha256": "db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b", + "bytes": 94 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-nonzero_g_reset-float64/brian-output/events.csv", + "copy": "evidence/oracle/unit-nonzero_g_reset-float64/brian-output/events.csv", + "sha256": "d8885a4d083fff2f22fad52be2eaf08adc23e25015dafded0fedc16cf36a4cb1", + "bytes": 21 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-nonzero_g_reset-float64/comparison.json", + "copy": "evidence/oracle/unit-nonzero_g_reset-float64/comparison.json", + "sha256": "34382539f3576746462c29b584d5c3efbcc827f434e5c55d399c58e0fe5212f7", + "bytes": 295 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-nonzero_g_reset-float64/completeness.csv", + "copy": "evidence/oracle/unit-nonzero_g_reset-float64/completeness.csv", + "sha256": "6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466", + "bytes": 35 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-nonzero_g_reset-float64/environment.json", + "copy": "evidence/oracle/unit-nonzero_g_reset-float64/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-nonzero_g_reset-float64/external-arrivals.csv", + "copy": "evidence/oracle/unit-nonzero_g_reset-float64/external-arrivals.csv", + "sha256": "997f7e35a6eb1a267ccef4c8794c72e7d0d119a7d5328bffb271e05602555651", + "bytes": 41 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-nonzero_g_reset-float64/generated-code.json", + "copy": "evidence/oracle/unit-nonzero_g_reset-float64/generated-code.json", + "sha256": "b5921dbc5e709b3405a4b1ed1521f834bb0a4999d154f5e6f772a290aaaa8de7", + "bytes": 15279 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-nonzero_g_reset-float64/independent-output/events.csv", + "copy": "evidence/oracle/unit-nonzero_g_reset-float64/independent-output/events.csv", + "sha256": "d8885a4d083fff2f22fad52be2eaf08adc23e25015dafded0fedc16cf36a4cb1", + "bytes": 21 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-nonzero_g_reset-float64/run-spec.json", + "copy": "evidence/oracle/unit-nonzero_g_reset-float64/run-spec.json", + "sha256": "916cdd2cd038a2ae1e79681ebfeeb83af185407cf2b1b87583cc50f4164c4808", + "bytes": 3049 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-nonzero_g_reset-float64/schedule.json", + "copy": "evidence/oracle/unit-nonzero_g_reset-float64/schedule.json", + "sha256": "fed340d7ab41bbb7a1a18d125c8a2fb0129c1eeea1967ade86725f1e7753d116", + "bytes": 1584 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-nonzero_g_reset-float64/seed.json", + "copy": "evidence/oracle/unit-nonzero_g_reset-float64/seed.json", + "sha256": "77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830", + "bytes": 75 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-refractory_boundary-float32/actual-weights.json", + "copy": "evidence/oracle/unit-refractory_boundary-float32/actual-weights.json", + "sha256": "db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b", + "bytes": 94 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-refractory_boundary-float32/brian-output/events.csv", + "copy": "evidence/oracle/unit-refractory_boundary-float32/brian-output/events.csv", + "sha256": "cfad3e3ae7578e64365753675ead4358495da79ee379d78e192172b50a688023", + "bytes": 21 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-refractory_boundary-float32/comparison.json", + "copy": "evidence/oracle/unit-refractory_boundary-float32/comparison.json", + "sha256": "704e19a55381a72ef05e90655d079152bf96893b54cb2aaf8413ffa6a97cb32c", + "bytes": 298 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-refractory_boundary-float32/completeness.csv", + "copy": "evidence/oracle/unit-refractory_boundary-float32/completeness.csv", + "sha256": "6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466", + "bytes": 35 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-refractory_boundary-float32/environment.json", + "copy": "evidence/oracle/unit-refractory_boundary-float32/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-refractory_boundary-float32/external-arrivals.csv", + "copy": "evidence/oracle/unit-refractory_boundary-float32/external-arrivals.csv", + "sha256": "f9298feb0fed9c1e4cfb4a01313d436437fa9cdacb03bc9f67cf4299dc76df86", + "bytes": 68 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-refractory_boundary-float32/generated-code.json", + "copy": "evidence/oracle/unit-refractory_boundary-float32/generated-code.json", + "sha256": "608de56c02e7febe4cdcdaa8c17faded84b9fa187d6f08eb7c393c9fb07f9be3", + "bytes": 15449 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-refractory_boundary-float32/independent-output/events.csv", + "copy": "evidence/oracle/unit-refractory_boundary-float32/independent-output/events.csv", + "sha256": "cfad3e3ae7578e64365753675ead4358495da79ee379d78e192172b50a688023", + "bytes": 21 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-refractory_boundary-float32/run-spec.json", + "copy": "evidence/oracle/unit-refractory_boundary-float32/run-spec.json", + "sha256": "23f4baa792e2a02933f40b2c37392eab2bb6e56b0ab8395b1183f2c5a0f11fa1", + "bytes": 3141 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-refractory_boundary-float32/schedule.json", + "copy": "evidence/oracle/unit-refractory_boundary-float32/schedule.json", + "sha256": "9cef827c7fcf9c050b60ec311a0e6bcdfc311c2f2689ad2437c61fa6085d7388", + "bytes": 1807 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-refractory_boundary-float32/seed.json", + "copy": "evidence/oracle/unit-refractory_boundary-float32/seed.json", + "sha256": "a6f4b88a4b799a7ac2b91764d632dbf3e05b16535a9c5ab64ad59092902db88e", + "bytes": 135 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-refractory_boundary-float64/actual-weights.json", + "copy": "evidence/oracle/unit-refractory_boundary-float64/actual-weights.json", + "sha256": "db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b", + "bytes": 94 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-refractory_boundary-float64/brian-output/events.csv", + "copy": "evidence/oracle/unit-refractory_boundary-float64/brian-output/events.csv", + "sha256": "cfad3e3ae7578e64365753675ead4358495da79ee379d78e192172b50a688023", + "bytes": 21 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-refractory_boundary-float64/comparison.json", + "copy": "evidence/oracle/unit-refractory_boundary-float64/comparison.json", + "sha256": "718e19524ef625c1f7920b78f11f64b18dc2f49c12ed32f5eceb70108085e316", + "bytes": 297 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-refractory_boundary-float64/completeness.csv", + "copy": "evidence/oracle/unit-refractory_boundary-float64/completeness.csv", + "sha256": "6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466", + "bytes": 35 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-refractory_boundary-float64/environment.json", + "copy": "evidence/oracle/unit-refractory_boundary-float64/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-refractory_boundary-float64/external-arrivals.csv", + "copy": "evidence/oracle/unit-refractory_boundary-float64/external-arrivals.csv", + "sha256": "f9298feb0fed9c1e4cfb4a01313d436437fa9cdacb03bc9f67cf4299dc76df86", + "bytes": 68 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-refractory_boundary-float64/generated-code.json", + "copy": "evidence/oracle/unit-refractory_boundary-float64/generated-code.json", + "sha256": "3ccb5eecdcdbbc850e60d8209d263e5b4764630323d8109695308c3c4cf7b539", + "bytes": 15449 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-refractory_boundary-float64/independent-output/events.csv", + "copy": "evidence/oracle/unit-refractory_boundary-float64/independent-output/events.csv", + "sha256": "cfad3e3ae7578e64365753675ead4358495da79ee379d78e192172b50a688023", + "bytes": 21 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-refractory_boundary-float64/run-spec.json", + "copy": "evidence/oracle/unit-refractory_boundary-float64/run-spec.json", + "sha256": "89b378f4d00fd6431724acb74a1aa156a659d57fe5bb04ed140cd995b3843a64", + "bytes": 3077 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-refractory_boundary-float64/schedule.json", + "copy": "evidence/oracle/unit-refractory_boundary-float64/schedule.json", + "sha256": "9cef827c7fcf9c050b60ec311a0e6bcdfc311c2f2689ad2437c61fa6085d7388", + "bytes": 1807 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-refractory_boundary-float64/seed.json", + "copy": "evidence/oracle/unit-refractory_boundary-float64/seed.json", + "sha256": "05b71129e058b3685e2913a4ea737a387b407b09f521670ec4b00d19c9e3eac5", + "bytes": 122 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-weak_excitation-float32/actual-weights.json", + "copy": "evidence/oracle/unit-weak_excitation-float32/actual-weights.json", + "sha256": "db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b", + "bytes": 94 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-weak_excitation-float32/brian-output/events.csv", + "copy": "evidence/oracle/unit-weak_excitation-float32/brian-output/events.csv", + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801", + "bytes": 16 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-weak_excitation-float32/comparison.json", + "copy": "evidence/oracle/unit-weak_excitation-float32/comparison.json", + "sha256": "0ae4a6f8661f1413a315b181e1c23ea71159075c2d2e31f7e3af270a92682231", + "bytes": 297 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-weak_excitation-float32/completeness.csv", + "copy": "evidence/oracle/unit-weak_excitation-float32/completeness.csv", + "sha256": "6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466", + "bytes": 35 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-weak_excitation-float32/environment.json", + "copy": "evidence/oracle/unit-weak_excitation-float32/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-weak_excitation-float32/external-arrivals.csv", + "copy": "evidence/oracle/unit-weak_excitation-float32/external-arrivals.csv", + "sha256": "ea42121e82562a2dbfe3c5824556db9579c107749339c5e3b47f118b12249d8a", + "bytes": 38 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-weak_excitation-float32/generated-code.json", + "copy": "evidence/oracle/unit-weak_excitation-float32/generated-code.json", + "sha256": "b5921dbc5e709b3405a4b1ed1521f834bb0a4999d154f5e6f772a290aaaa8de7", + "bytes": 15279 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-weak_excitation-float32/independent-output/events.csv", + "copy": "evidence/oracle/unit-weak_excitation-float32/independent-output/events.csv", + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801", + "bytes": 16 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-weak_excitation-float32/run-spec.json", + "copy": "evidence/oracle/unit-weak_excitation-float32/run-spec.json", + "sha256": "fa4c5b573d984a526abe9d7abc497575e7fafe53a7fc3c9e76d4741fa0c2efbd", + "bytes": 3046 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-weak_excitation-float32/schedule.json", + "copy": "evidence/oracle/unit-weak_excitation-float32/schedule.json", + "sha256": "fed340d7ab41bbb7a1a18d125c8a2fb0129c1eeea1967ade86725f1e7753d116", + "bytes": 1584 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-weak_excitation-float32/seed.json", + "copy": "evidence/oracle/unit-weak_excitation-float32/seed.json", + "sha256": "77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830", + "bytes": 75 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-weak_excitation-float64/actual-weights.json", + "copy": "evidence/oracle/unit-weak_excitation-float64/actual-weights.json", + "sha256": "db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b", + "bytes": 94 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-weak_excitation-float64/brian-output/events.csv", + "copy": "evidence/oracle/unit-weak_excitation-float64/brian-output/events.csv", + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801", + "bytes": 16 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-weak_excitation-float64/comparison.json", + "copy": "evidence/oracle/unit-weak_excitation-float64/comparison.json", + "sha256": "f39862589647cc0cfca90de10aebad6265a9ea94c533915991c700403cec8b60", + "bytes": 297 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-weak_excitation-float64/completeness.csv", + "copy": "evidence/oracle/unit-weak_excitation-float64/completeness.csv", + "sha256": "6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466", + "bytes": 35 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-weak_excitation-float64/environment.json", + "copy": "evidence/oracle/unit-weak_excitation-float64/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-weak_excitation-float64/external-arrivals.csv", + "copy": "evidence/oracle/unit-weak_excitation-float64/external-arrivals.csv", + "sha256": "ea42121e82562a2dbfe3c5824556db9579c107749339c5e3b47f118b12249d8a", + "bytes": 38 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-weak_excitation-float64/generated-code.json", + "copy": "evidence/oracle/unit-weak_excitation-float64/generated-code.json", + "sha256": "023b8cdde1fea892e40cd5e58e75bed9d7febcd670a6c749882deb04c7d84132", + "bytes": 15275 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-weak_excitation-float64/independent-output/events.csv", + "copy": "evidence/oracle/unit-weak_excitation-float64/independent-output/events.csv", + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801", + "bytes": 16 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-weak_excitation-float64/run-spec.json", + "copy": "evidence/oracle/unit-weak_excitation-float64/run-spec.json", + "sha256": "3ae45d37b147e6dd3a5bd596b8757e4909cbb0c1386d30e94becfd1ae331d90c", + "bytes": 3046 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-weak_excitation-float64/schedule.json", + "copy": "evidence/oracle/unit-weak_excitation-float64/schedule.json", + "sha256": "fed340d7ab41bbb7a1a18d125c8a2fb0129c1eeea1967ade86725f1e7753d116", + "bytes": 1584 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-weak_excitation-float64/seed.json", + "copy": "evidence/oracle/unit-weak_excitation-float64/seed.json", + "sha256": "77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830", + "bytes": 75 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-zero-float32/actual-weights.json", + "copy": "evidence/oracle/unit-zero-float32/actual-weights.json", + "sha256": "db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b", + "bytes": 94 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-zero-float32/brian-output/events.csv", + "copy": "evidence/oracle/unit-zero-float32/brian-output/events.csv", + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801", + "bytes": 16 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-zero-float32/comparison.json", + "copy": "evidence/oracle/unit-zero-float32/comparison.json", + "sha256": "e7ac75d3c7853ec3526b7dc1bdd7f94ccba58b4392c2a704ac4bc25b34130ce5", + "bytes": 297 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-zero-float32/completeness.csv", + "copy": "evidence/oracle/unit-zero-float32/completeness.csv", + "sha256": "6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466", + "bytes": 35 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-zero-float32/environment.json", + "copy": "evidence/oracle/unit-zero-float32/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-zero-float32/external-arrivals.csv", + "copy": "evidence/oracle/unit-zero-float32/external-arrivals.csv", + "sha256": "c5982c3d7ddbb031347cb389692bd9e78b4d851732d4192ca8d9db1f5ce31128", + "bytes": 29 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-zero-float32/generated-code.json", + "copy": "evidence/oracle/unit-zero-float32/generated-code.json", + "sha256": "daea9555d1ba0effb445e581ad4c74741d57b85ad6477907ff579a0957dc7242", + "bytes": 11367 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-zero-float32/independent-output/events.csv", + "copy": "evidence/oracle/unit-zero-float32/independent-output/events.csv", + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801", + "bytes": 16 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-zero-float32/run-spec.json", + "copy": "evidence/oracle/unit-zero-float32/run-spec.json", + "sha256": "521bb565556d8daee043b995415ac154e9e63af899c2266b023e031acc27eef6", + "bytes": 2978 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-zero-float32/schedule.json", + "copy": "evidence/oracle/unit-zero-float32/schedule.json", + "sha256": "a0ae45ec1bd5e9ad66296742ebb857263b1bde14ca260bbba260b570d359dcd5", + "bytes": 1212 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-zero-float32/seed.json", + "copy": "evidence/oracle/unit-zero-float32/seed.json", + "sha256": "77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830", + "bytes": 75 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-zero-float64/actual-weights.json", + "copy": "evidence/oracle/unit-zero-float64/actual-weights.json", + "sha256": "db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b", + "bytes": 94 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-zero-float64/brian-output/events.csv", + "copy": "evidence/oracle/unit-zero-float64/brian-output/events.csv", + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801", + "bytes": 16 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-zero-float64/comparison.json", + "copy": "evidence/oracle/unit-zero-float64/comparison.json", + "sha256": "34382539f3576746462c29b584d5c3efbcc827f434e5c55d399c58e0fe5212f7", + "bytes": 295 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-zero-float64/completeness.csv", + "copy": "evidence/oracle/unit-zero-float64/completeness.csv", + "sha256": "6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466", + "bytes": 35 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-zero-float64/environment.json", + "copy": "evidence/oracle/unit-zero-float64/environment.json", + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4", + "bytes": 2188 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-zero-float64/external-arrivals.csv", + "copy": "evidence/oracle/unit-zero-float64/external-arrivals.csv", + "sha256": "c5982c3d7ddbb031347cb389692bd9e78b4d851732d4192ca8d9db1f5ce31128", + "bytes": 29 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-zero-float64/generated-code.json", + "copy": "evidence/oracle/unit-zero-float64/generated-code.json", + "sha256": "659f799403ba4fec6b169b25f70a96477681c3d79b70b54687792c29149eb96a", + "bytes": 11359 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-zero-float64/independent-output/events.csv", + "copy": "evidence/oracle/unit-zero-float64/independent-output/events.csv", + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801", + "bytes": 16 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-zero-float64/run-spec.json", + "copy": "evidence/oracle/unit-zero-float64/run-spec.json", + "sha256": "d4852ae58f33a87ac68f3efea658b432833e41921dd6914b12c3e153a870f3aa", + "bytes": 2978 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-zero-float64/schedule.json", + "copy": "evidence/oracle/unit-zero-float64/schedule.json", + "sha256": "a0ae45ec1bd5e9ad66296742ebb857263b1bde14ca260bbba260b570d359dcd5", + "bytes": 1212 + }, + { + "source": "experiments/phase4ad-author-semantics/oracle/unit-zero-float64/seed.json", + "copy": "evidence/oracle/unit-zero-float64/seed.json", + "sha256": "77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830", + "bytes": 75 + }, + { + "source": "experiments/phase4ad-author-semantics/performance/summary.json", + "copy": "evidence/performance/summary.json", + "sha256": "78bc80361a72f4620b39dc0363a1c2d13cff756f2cf920f879dcdf9b7ba8e3d1", + "bytes": 108 + }, + { + "source": "experiments/phase4ad-author-semantics/protocol/preregistered.json", + "copy": "evidence/protocol/preregistered.json", + "sha256": "dd3c72b63544c8ec63e6b0f5eb4291a34f225537d63d56912998377de9cfd20e", + "bytes": 6799 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/author-motifs.json", + "copy": "evidence/regression/author-motifs.json", + "sha256": "ef1016ca89aad6a53209927015a423c6a7bff49bb2dc271e98ba90cd4b22a274", + "bytes": 4137 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/feedforward-float32-repeat.json", + "copy": "evidence/regression/feedforward-float32-repeat.json", + "sha256": "5762a442ecb94319bed0f35b8e64adbf9d122f938c99b1249107adfd1e717cb7", + "bytes": 138 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/feedforward-float64-repeat.json", + "copy": "evidence/regression/feedforward-float64-repeat.json", + "sha256": "5762a442ecb94319bed0f35b8e64adbf9d122f938c99b1249107adfd1e717cb7", + "bytes": 138 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/feedforward-precision-cross-comparison.json", + "copy": "evidence/regression/feedforward-precision-cross-comparison.json", + "sha256": "f428f9d3f572e8f66bce255f348861e1e1994973bdb7f5d3206924195d829383", + "bytes": 295 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/five-float32-repeat.json", + "copy": "evidence/regression/five-float32-repeat.json", + "sha256": "5762a442ecb94319bed0f35b8e64adbf9d122f938c99b1249107adfd1e717cb7", + "bytes": 138 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/five-float64-repeat.json", + "copy": "evidence/regression/five-float64-repeat.json", + "sha256": "5762a442ecb94319bed0f35b8e64adbf9d122f938c99b1249107adfd1e717cb7", + "bytes": 138 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/five-precision-cross-comparison.json", + "copy": "evidence/regression/five-precision-cross-comparison.json", + "sha256": "8aa2658f0be118fcfa9bafb8b07fedcb3713842aab31da5d360c1092bf73a600", + "bytes": 298 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/frozen-auditory-100hz.json", + "copy": "evidence/regression/frozen-auditory-100hz.json", + "sha256": "520d9d9fcc26f6041113f9d94b0690a487cb89d38aa5eb9888857abdfed19ea4", + "bytes": 178 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/frozen-auditory-10hz.json", + "copy": "evidence/regression/frozen-auditory-10hz.json", + "sha256": "bf6d4a709ad9020de4007f44addec2cd38b7598c4dcd58bf7cbf31b41d2807bd", + "bytes": 177 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/frozen-components.json", + "copy": "evidence/regression/frozen-components.json", + "sha256": "7e2e4f200f40ef1f5df3736176344c3a300533cb12f3cfb8022845ce312701ca", + "bytes": 1039 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/frozen-five.json", + "copy": "evidence/regression/frozen-five.json", + "sha256": "331153e43e8b49d53c370b4990f11c3d956a5a869cb3c5331e5e216f93a694cb", + "bytes": 1355 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/frozen-gustatory-50hz.json", + "copy": "evidence/regression/frozen-gustatory-50hz.json", + "sha256": "800a8f2e6e5ab44608919b73a4fcfe2b35b9007418fa7cf0f4ae8e93d1fbc1fa", + "bytes": 177 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/frozen-mechanosensory-50hz.json", + "copy": "evidence/regression/frozen-mechanosensory-50hz.json", + "sha256": "98fb62ea14694a0df78c673c3c76728d62a4036835c82f03eb2e7f2c17bf4625", + "bytes": 183 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/frozen-olfactory-50hz.json", + "copy": "evidence/regression/frozen-olfactory-50hz.json", + "sha256": "9284aa8d73c36e6a0441320a9511cec65099bcf7ffd772f982e62e78ab8a3666", + "bytes": 178 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/no_input-float32-repeat.json", + "copy": "evidence/regression/no_input-float32-repeat.json", + "sha256": "5762a442ecb94319bed0f35b8e64adbf9d122f938c99b1249107adfd1e717cb7", + "bytes": 138 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/no_input-float64-repeat.json", + "copy": "evidence/regression/no_input-float64-repeat.json", + "sha256": "5762a442ecb94319bed0f35b8e64adbf9d122f938c99b1249107adfd1e717cb7", + "bytes": 138 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/no_input-precision-cross-comparison.json", + "copy": "evidence/regression/no_input-precision-cross-comparison.json", + "sha256": "76f106dbc71d81822f8711e5970da7876fe76416a14a185d7915e8480381c544", + "bytes": 241 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/old-integrity-after.json", + "copy": "evidence/regression/old-integrity-after.json", + "sha256": "242b02c49b613d2cff475f570083b0521460c840dca51c17902f7df40e052581", + "bytes": 2750 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/old-integrity-before.json", + "copy": "evidence/regression/old-integrity-before.json", + "sha256": "0347f6273992fa842ea4f9526492362ac9774ad1194c8367b0632e7367987116", + "bytes": 2541 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/pair-float32-repeat.json", + "copy": "evidence/regression/pair-float32-repeat.json", + "sha256": "5762a442ecb94319bed0f35b8e64adbf9d122f938c99b1249107adfd1e717cb7", + "bytes": 138 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/pair-float64-repeat.json", + "copy": "evidence/regression/pair-float64-repeat.json", + "sha256": "5762a442ecb94319bed0f35b8e64adbf9d122f938c99b1249107adfd1e717cb7", + "bytes": 138 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/pair-precision-cross-comparison.json", + "copy": "evidence/regression/pair-precision-cross-comparison.json", + "sha256": "69c2960eb018b5d4957aea01ff60ceae6df8785315a239b07ab432b7a205a541", + "bytes": 295 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/preregistration-after.json", + "copy": "evidence/regression/preregistration-after.json", + "sha256": "f4a10cd026bb3e3e2d84f3fa26125462fdd09d2fedf2198f89faa7ba4bb065a3", + "bytes": 16184 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/trio-float32-repeat.json", + "copy": "evidence/regression/trio-float32-repeat.json", + "sha256": "5762a442ecb94319bed0f35b8e64adbf9d122f938c99b1249107adfd1e717cb7", + "bytes": 138 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/trio-float64-repeat.json", + "copy": "evidence/regression/trio-float64-repeat.json", + "sha256": "5762a442ecb94319bed0f35b8e64adbf9d122f938c99b1249107adfd1e717cb7", + "bytes": 138 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/trio-precision-cross-comparison.json", + "copy": "evidence/regression/trio-precision-cross-comparison.json", + "sha256": "ffa52f9ff04c4887c714cf1dc69159263a3cce02be605e0830f945ece22de508", + "bytes": 296 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/unit-above_threshold-float32.json", + "copy": "evidence/regression/unit-above_threshold-float32.json", + "sha256": "e3326d69d3fb00d5d6d5b2d7764426ad0a1c02b7bf7fa067dd2866e78574aedd", + "bytes": 459 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/unit-above_threshold-float64.json", + "copy": "evidence/regression/unit-above_threshold-float64.json", + "sha256": "c4720e6d20648b3292b7693a27782a755b65bc9ac40df1240c5f9c804d4c60ec", + "bytes": 457 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/unit-delay_18-float32.json", + "copy": "evidence/regression/unit-delay_18-float32.json", + "sha256": "5fe18868d3780d899ec9fe97630e019d70420023f367109cf015b984d18478f7", + "bytes": 527 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/unit-delay_18-float64.json", + "copy": "evidence/regression/unit-delay_18-float64.json", + "sha256": "7cde7f95e04a3870fe6b42a99493f2cba5cf8e6b20ca01d7a39d6eca02a829d9", + "bytes": 528 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/unit-equal_threshold-float32.json", + "copy": "evidence/regression/unit-equal_threshold-float32.json", + "sha256": "3ff0b4c36f7f672a0110378f85d12dd144451b4210f7cc647d77df12187ff9fe", + "bytes": 453 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/unit-equal_threshold-float64.json", + "copy": "evidence/regression/unit-equal_threshold-float64.json", + "sha256": "3b2ed15b07ea2422e184764006054c23d5a80810c3bbfa6ce6fee5ff2f42a7a0", + "bytes": 452 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/unit-fixtures.json", + "copy": "evidence/regression/unit-fixtures.json", + "sha256": "d8c24f386628b3c4186017a93b1f8a30c754a8da1ad2f787318cc564e297e958", + "bytes": 8586 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/unit-inhibition-float32.json", + "copy": "evidence/regression/unit-inhibition-float32.json", + "sha256": "f18d377531f46ff53d572c649a0c5308203d207af25071190e5fe8414594c0dd", + "bytes": 495 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/unit-inhibition-float64.json", + "copy": "evidence/regression/unit-inhibition-float64.json", + "sha256": "fe463e5e1de6dd528b31b09d3fd20b4e454ff4f6346dbd974ab9638fab3dc6b6", + "bytes": 495 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/unit-nonzero_g_reset-float32.json", + "copy": "evidence/regression/unit-nonzero_g_reset-float32.json", + "sha256": "45e62f5ca365ac7f40a74cf23094de1a8dc4f576d2ba7d56cc8866037921ea22", + "bytes": 499 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/unit-nonzero_g_reset-float64.json", + "copy": "evidence/regression/unit-nonzero_g_reset-float64.json", + "sha256": "1b04dd164e00670c3f36bc17bb5d8e974703c94296d0b12f93de06de792d417f", + "bytes": 511 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/unit-refractory_boundary-float32.json", + "copy": "evidence/regression/unit-refractory_boundary-float32.json", + "sha256": "cf3b2e0230e50b25e96c39b425aefafab780b01817377c0ce1e7e2aa20c43a30", + "bytes": 553 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/unit-refractory_boundary-float64.json", + "copy": "evidence/regression/unit-refractory_boundary-float64.json", + "sha256": "57837e95ae73d376794a8fbb615ced5f412b4c43f7f31c56f08d65d66f74ca7b", + "bytes": 552 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/unit-weak_excitation-float32.json", + "copy": "evidence/regression/unit-weak_excitation-float32.json", + "sha256": "97d17aa7336ed7c51e557fbc94c673773e94aa1dd5fc9069708964051086b995", + "bytes": 500 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/unit-weak_excitation-float64.json", + "copy": "evidence/regression/unit-weak_excitation-float64.json", + "sha256": "912f3ca442d089ed6e920bc0c00a8e30a1d62f34ee7a22b2f2b5e6f0544a3706", + "bytes": 500 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/unit-zero-float32.json", + "copy": "evidence/regression/unit-zero-float32.json", + "sha256": "cb42c0c2025e86b4006bb9e2aa6e893f0185be55c3baa77bddece09ed691e938", + "bytes": 474 + }, + { + "source": "experiments/phase4ad-author-semantics/regression/unit-zero-float64.json", + "copy": "evidence/regression/unit-zero-float64.json", + "sha256": "4cc37c186bd7f6e6579840e516c840ae607581041b2d6da66971da611304e1d9", + "bytes": 472 + }, + { + "source": "experiments/phase4ad-author-semantics/manifest.json", + "copy": "evidence/manifest.json", + "sha256": "c939d3977a1883e86108c1e3edd25619118cec61e5c7712ae4dfa2893a73c0ca", + "bytes": 102358 + }, + { + "source": "experiments/phase4ad-author-semantics/checksums.sha256", + "copy": "evidence/checksums.sha256", + "sha256": "89ca0f11877dadb901bd2bd5d469d7bd145de980fc6b203b79daeec640a1b72c", + "bytes": 63926 + } +] diff --git a/registry/phase4ad-author-semantics/evidence/REPORT.md b/registry/phase4ad-author-semantics/evidence/REPORT.md new file mode 100644 index 0000000..38f8de1 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/REPORT.md @@ -0,0 +1,71 @@ +# Phase 4AD 作者动力学语义实验室 + +状态:`COMPLETE-ORACLE-VALIDATED-LAB-ONLY`。 + +本轮仅有预声明的小回路与算子实验;没有整脑替代动力学运行、conditioning、学习成功或新学习候选。 +检查以原始事件、状态轨迹和预注册误差界限重算。缺失、失败、非有限值或初始事件丢失均不能通过;放电减少或静默本身不构成成功。 + +核查通过 58/58 项;失败或不完整 0 项。 +冻结历史完整性:通过。 +源码与输入预注册一致性:通过。 + +| 回路 | 语义 | 精度 | 总spikes | late spikes | +|---|---|---|---:|---:| +| pair | frozen | float32 | 473 | 238 | +| pair | reset_g_only | float32 | 223 | 111 | +| pair | refractory_gate_only | float32 | 635 | 321 | +| pair | reset_and_refractory | float32 | 223 | 111 | +| trio | frozen | float32 | 1064 | 535 | +| trio | reset_g_only | float32 | 565 | 283 | +| trio | refractory_gate_only | float32 | 1100 | 552 | +| trio | reset_and_refractory | float32 | 469 | 235 | +| five | frozen | float32 | 1483 | 747 | +| five | reset_g_only | float32 | 868 | 433 | +| five | refractory_gate_only | float32 | 1510 | 763 | +| five | reset_and_refractory | float32 | 634 | 318 | +| feedforward | frozen | float32 | 3 | 0 | +| feedforward | reset_g_only | float32 | 3 | 0 | +| feedforward | refractory_gate_only | float32 | 3 | 0 | +| feedforward | reset_and_refractory | float32 | 3 | 0 | +| no_input | frozen | float32 | 0 | 0 | +| no_input | reset_g_only | float32 | 0 | 0 | +| no_input | refractory_gate_only | float32 | 0 | 0 | +| no_input | reset_and_refractory | float32 | 0 | 0 | +| pair | author_complete | float64 | 213 | 106 | +| pair | author_complete | float32 | 213 | 106 | +| trio | author_complete | float64 | 448 | 224 | +| trio | author_complete | float32 | 448 | 224 | +| five | author_complete | float64 | 610 | 306 | +| five | author_complete | float32 | 610 | 306 | +| feedforward | author_complete | float64 | 3 | 0 | +| feedforward | author_complete | float32 | 3 | 0 | +| no_input | author_complete | float64 | 0 | 0 | +| no_input | author_complete | float32 | 0 | 0 | + +作者Brian2与独立NumPy比较: + +| 实验 | 结果 | 事件一致 | 最大V/g误差 mV | 首次事件分歧step | +|---|---|---|---:|---:| +| author:pair:float64 | 通过 | True | 7.105427357601002e-14 | None | +| author:pair:float32 | 通过 | True | 2.41696834564209e-05 | None | +| author:trio:float64 | 通过 | True | 8.526512829121202e-14 | None | +| author:trio:float32 | 通过 | True | 4.25875186920166e-05 | None | +| author:five:float64 | 通过 | True | 3.836930773104541e-13 | None | +| author:five:float32 | 通过 | True | 0.0002123713493347168 | None | +| author:feedforward:float64 | 通过 | True | 3.765876499528531e-13 | None | +| author:feedforward:float32 | 通过 | True | 0.00020179152488708496 | None | +| author:no_input:float64 | 通过 | True | 7.105427357601002e-15 | None | +| author:no_input:float32 | 通过 | True | 1.0728836059570312e-06 | None | + +float32与float64交叉比较仅记录精度影响,允许保留分歧,不能用于掩盖各自与独立oracle的失败。 +- precision_cross_record:pair:事件一致=True,最大误差=3.733467101341148e-05 mV,首次事件分歧step=None。 +- precision_cross_record:trio:事件一致=True,最大误差=3.733467101341148e-05 mV,首次事件分歧step=None。 +- precision_cross_record:five:事件一致=True,最大误差=0.00019546693161487383 mV,首次事件分歧step=None。 +- precision_cross_record:feedforward:事件一致=True,最大误差=0.0005722045887850413 mV,首次事件分歧step=None。 +- precision_cross_record:no_input:事件一致=True,最大误差=0.0 mV,首次事件分歧step=None。 + +所有失败轨迹和错误文件原样保留;本简报没有选择获胜变体。 +小回路缺少外部整脑输入与graded APL,不能证明整脑因果必要性、生物真实性或信息保持。初始诊断seed也不是作者的感官Poisson接口。 +环境为Linux宿主,作者记录为Windows;Python补丁版本与环境差异见environment记录,不能称为二进制相同或原论文整脑复现。 +后续整脑嗅觉比较仍须核查固定输入、实际送达事件、持续活动和信息保持;可用学习仍需至少5个训练seed、独立评估、MBON/downstream的A对中性B特异性及acquisition/reversal/retention/delayed-reward对照。 +封存排除 .venv 与 __pycache__,保留环境安装报告;manifest列出payload哈希,checksums另含manifest,不存在自哈希循环。 diff --git a/registry/phase4ad-author-semantics/evidence/audit/all-motif-results.csv b/registry/phase4ad-author-semantics/evidence/audit/all-motif-results.csv new file mode 100644 index 0000000..f5af838 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/audit/all-motif-results.csv @@ -0,0 +1,121 @@ +motif,policy,precision,neuron_idx,spikes,late_spikes,last_ms +pair,frozen,float32,1381,237,119,999.3000000000001 +pair,frozen,float32,1511,236,119,997.5 +pair,reset_g_only,float32,1381,112,56,999.0 +pair,reset_g_only,float32,1511,111,55,994.9000000000001 +pair,refractory_gate_only,float32,1381,318,161,999.1 +pair,refractory_gate_only,float32,1511,317,160,997.5 +pair,reset_and_refractory,float32,1381,112,56,999.0 +pair,reset_and_refractory,float32,1511,111,55,994.9000000000001 +trio,frozen,float32,1197,355,179,999.3000000000001 +trio,frozen,float32,1381,355,178,997.8000000000001 +trio,frozen,float32,1511,354,178,997.4000000000001 +trio,reset_g_only,float32,1197,188,94,995.4000000000001 +trio,reset_g_only,float32,1381,189,95,998.7 +trio,reset_g_only,float32,1511,188,94,996.1 +trio,refractory_gate_only,float32,1197,369,185,998.3000000000001 +trio,refractory_gate_only,float32,1381,367,184,999.1 +trio,refractory_gate_only,float32,1511,364,183,997.2 +trio,reset_and_refractory,float32,1197,156,78,995.3000000000001 +trio,reset_and_refractory,float32,1381,157,79,999.6 +trio,reset_and_refractory,float32,1511,156,78,997.5 +five,frozen,float32,1197,370,185,998.8000000000001 +five,frozen,float32,1381,369,185,997.4000000000001 +five,frozen,float32,1511,367,186,999.5 +five,frozen,float32,82312,80,41,990.3000000000001 +five,frozen,float32,133666,297,150,999.5 +five,reset_g_only,float32,1197,249,125,996.2 +five,reset_g_only,float32,1381,211,104,999.2 +five,reset_g_only,float32,1511,209,104,996.5 +five,reset_g_only,float32,82312,33,17,994.9000000000001 +five,reset_g_only,float32,133666,166,83,996.7 +five,refractory_gate_only,float32,1197,372,188,998.0 +five,refractory_gate_only,float32,1381,375,191,998.6 +five,refractory_gate_only,float32,1511,371,187,997.5 +five,refractory_gate_only,float32,82312,85,43,991.9000000000001 +five,refractory_gate_only,float32,133666,307,154,997.7 +five,reset_and_refractory,float32,1197,165,82,995.7 +five,reset_and_refractory,float32,1381,166,83,999.8000000000001 +five,reset_and_refractory,float32,1511,165,83,997.5 +five,reset_and_refractory,float32,82312,15,8,972.7 +five,reset_and_refractory,float32,133666,123,62,993.0 +feedforward,frozen,float32,1197,1,0,10.0 +feedforward,frozen,float32,1381,1,0,0.0 +feedforward,frozen,float32,1511,1,0,4.9 +feedforward,frozen,float32,82312,0,0, +feedforward,frozen,float32,133666,0,0, +feedforward,reset_g_only,float32,1197,1,0,10.0 +feedforward,reset_g_only,float32,1381,1,0,0.0 +feedforward,reset_g_only,float32,1511,1,0,4.9 +feedforward,reset_g_only,float32,82312,0,0, +feedforward,reset_g_only,float32,133666,0,0, +feedforward,refractory_gate_only,float32,1197,1,0,10.0 +feedforward,refractory_gate_only,float32,1381,1,0,0.0 +feedforward,refractory_gate_only,float32,1511,1,0,4.9 +feedforward,refractory_gate_only,float32,82312,0,0, +feedforward,refractory_gate_only,float32,133666,0,0, +feedforward,reset_and_refractory,float32,1197,1,0,10.0 +feedforward,reset_and_refractory,float32,1381,1,0,0.0 +feedforward,reset_and_refractory,float32,1511,1,0,4.9 +feedforward,reset_and_refractory,float32,82312,0,0, +feedforward,reset_and_refractory,float32,133666,0,0, +no_input,frozen,float32,1197,0,0, +no_input,frozen,float32,1381,0,0, +no_input,frozen,float32,1511,0,0, +no_input,frozen,float32,82312,0,0, +no_input,frozen,float32,133666,0,0, +no_input,reset_g_only,float32,1197,0,0, +no_input,reset_g_only,float32,1381,0,0, +no_input,reset_g_only,float32,1511,0,0, +no_input,reset_g_only,float32,82312,0,0, +no_input,reset_g_only,float32,133666,0,0, +no_input,refractory_gate_only,float32,1197,0,0, +no_input,refractory_gate_only,float32,1381,0,0, +no_input,refractory_gate_only,float32,1511,0,0, +no_input,refractory_gate_only,float32,82312,0,0, +no_input,refractory_gate_only,float32,133666,0,0, +no_input,reset_and_refractory,float32,1197,0,0, +no_input,reset_and_refractory,float32,1381,0,0, +no_input,reset_and_refractory,float32,1511,0,0, +no_input,reset_and_refractory,float32,82312,0,0, +no_input,reset_and_refractory,float32,133666,0,0, +pair,author_complete,float64,1381,107,53,996.4000000000001 +pair,author_complete,float64,1511,106,53,992.1 +pair,author_complete,float32,1381,107,53,996.4000000000001 +pair,author_complete,float32,1511,106,53,992.1 +trio,author_complete,float64,1197,149,74,994.8000000000001 +trio,author_complete,float64,1381,150,75,999.3000000000001 +trio,author_complete,float64,1511,149,75,997.0 +trio,author_complete,float32,1197,149,74,994.8000000000001 +trio,author_complete,float32,1381,150,75,999.3000000000001 +trio,author_complete,float32,1511,149,75,997.0 +five,author_complete,float64,1197,159,79,995.2 +five,author_complete,float64,1381,160,80,999.5 +five,author_complete,float64,1511,159,80,997.4000000000001 +five,author_complete,float64,82312,13,7,992.4000000000001 +five,author_complete,float64,133666,119,60,996.0 +five,author_complete,float32,1197,159,79,995.2 +five,author_complete,float32,1381,160,80,999.5 +five,author_complete,float32,1511,159,80,997.4000000000001 +five,author_complete,float32,82312,13,7,992.4000000000001 +five,author_complete,float32,133666,119,60,996.0 +feedforward,author_complete,float64,1197,1,0,10.4 +feedforward,author_complete,float64,1381,1,0,0.0 +feedforward,author_complete,float64,1511,1,0,5.1000000000000005 +feedforward,author_complete,float64,82312,0,0, +feedforward,author_complete,float64,133666,0,0, +feedforward,author_complete,float32,1197,1,0,10.4 +feedforward,author_complete,float32,1381,1,0,0.0 +feedforward,author_complete,float32,1511,1,0,5.1000000000000005 +feedforward,author_complete,float32,82312,0,0, +feedforward,author_complete,float32,133666,0,0, +no_input,author_complete,float64,1197,0,0, +no_input,author_complete,float64,1381,0,0, +no_input,author_complete,float64,1511,0,0, +no_input,author_complete,float64,82312,0,0, +no_input,author_complete,float64,133666,0,0, +no_input,author_complete,float32,1197,0,0, +no_input,author_complete,float32,1381,0,0, +no_input,author_complete,float32,1511,0,0, +no_input,author_complete,float32,82312,0,0, +no_input,author_complete,float32,133666,0,0, diff --git a/registry/phase4ad-author-semantics/evidence/audit/final-summary.json b/registry/phase4ad-author-semantics/evidence/audit/final-summary.json new file mode 100644 index 0000000..14d72eb --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/audit/final-summary.json @@ -0,0 +1,3290 @@ +{ + "phase": "4AD", + "status": "COMPLETE-ORACLE-VALIDATED-LAB-ONLY", + "laboratory_validation_pass": true, + "checks": [ + { + "name": "preregistration", + "pass": true, + "record": { + "config": { + "name": "author-semantics-lab-v1", + "phase": "4AD", + "root": "/data/digital-drosophila", + "experiment": "experiments/phase4ad-author-semantics", + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "human_authorization": "允许独立新模型分支测试动力学假设", + "dt_ms": 0.1, + "duration_ms": 1000.0, + "seed_margin_mv": 1.0, + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "synaptic_tau_ms": 5.0, + "refractory_ms": 2.2, + "resting_potential_mv": -52.0, + "reset_potential_mv": -52.0, + "threshold_mv": -45.0, + "synaptic_delay_ms": 1.8, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "seed_node": 1381, + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "float64_state_max_abs_tolerance_mv": 1e-08, + "float32_state_max_abs_tolerance_mv": 0.001, + "exact_spike_events_required_for_oracle_validation": true, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "no_training_or_candidate": true + }, + "timestamp_utc": "2026-09-29T23:14:27.848343+00:00", + "source_hashes": { + "PROTOCOL.md": "23e784ca1cbde7546373dbcbedbe2bc23d35083084f120068bf06100f238b09a", + "config.json": "a69e8da5332d8031cbe1663abff25e61ee04e75f5490e8fa44c48690d3d0e219", + "context.py": "561d405ee4a2d3bbc6982c89191523f348d6fae0630dea9cb67ddf03acc6fc7b", + "finalize.py": "97a393b95d100dc5d95b624e4cd0d15511307b8c70e0ebd788b773c143ebfed6", + "interface_audit.py": "1e2b31545f1206fe1c1f4084b4a9ac0f21c74990c52e8fd156e809725fc5fb95", + "math_lab.py": "9663da41d5f623e1d7750e3cad3df880148079968f115bf583b58799fc5fb31f", + "oracle_runner.py": "2f4b073261965cf18a94697caf725c40b2e8db790c2871862201337f40c399e5", + "prepare.py": "49caa9553938f06539ecf282868491f8e1319d8f24220f89ac9e232db2d82e51", + "requirements-oracle.txt": "a69efc6509b85a5cc00a652caa4820c9c9e1406f6b97c6cc741322728c4d51c3", + "run_lab.py": "8746e1971c5a40a738e10f8f574a243c29cefa5a8b9f61a2846557ceffd1289a", + "verify_frozen.py": "fe37a48ce804e6c50f93404bfd3c23a7e54cd49061bbdfb4860315879648c73b" + }, + "input_hashes": [ + { + "path": "experiments/phase4ac-lif-semantics/external-resources/model.py", + "sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "bytes": 11900 + }, + { + "path": "experiments/phase4ac-lif-semantics/external-resources/LICENSE", + "sha256": "3621f6d6476189190e2960fa43f11b275ba4eca848fdac50a1ba2925de6223e8", + "bytes": 1085 + }, + { + "path": "experiments/phase4ac-lif-semantics/external-resources/environment_full.yml", + "sha256": "402fcef4968c99397b0e908b3323ab9e6ef86af5583e46e6427f96f3d1091adf", + "bytes": 3445 + }, + { + "path": "experiments/phase4ac-lif-semantics/audit/selected-real-edges.csv", + "sha256": "9103e9d03fa21058a4f6cd21780c56fed8cdcfca26c34c2a43726e39aed8ec55", + "bytes": 547 + }, + { + "path": "experiments/phase4ac-lif-semantics/audit/selected-metadata.parquet", + "sha256": "c1dde5df5408aeb878d6c422bc1c86ba44c3c5770f986014e594e356412a013d", + "bytes": 34348 + }, + { + "path": "models/male-cns-lif/lif-semantics-audit-v1/math_reference.py", + "sha256": "5166366251f99359b1301f514f5d9ae5f0f041fd3a3f98902386192117f01aea", + "bytes": 3768 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/pair-edges.csv", + "sha256": "05a7c7a5547aaeea4d1522f9cea75463405f0c3cdfbc4d563f111ad51cb80e00", + "bytes": 152 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/pair-events.parquet", + "sha256": "962a440924a9b2a4a3677b8968e63042de0b80ea4e496c213ebcf40d5e530e85", + "bytes": 4157 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/pair-state.npz", + "sha256": "924774344956dd5a530c3d00c8103fe4d1b584837d5e91f05b60094540a78897", + "bytes": 14660 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/trio-edges.csv", + "sha256": "c842c5bce0b11275c0eba9532955026a4b58931c2346e178bfa8a84227289c71", + "bytes": 288 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/trio-events.parquet", + "sha256": "a39d58de867f4f1ce1291e0ece25a52b70a3e04024508f77cb4a29eb4e09fa0e", + "bytes": 7476 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/trio-state.npz", + "sha256": "46c8a495ee1358a6173a2eebebe9ce2d6481b27f10e0c56cf9602c7969cd8702", + "bytes": 18538 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/five-edges.csv", + "sha256": "9103e9d03fa21058a4f6cd21780c56fed8cdcfca26c34c2a43726e39aed8ec55", + "bytes": 547 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/five-events.parquet", + "sha256": "19fef92b32be32ced2ec6b6581c9dac05055e9d550c104dd0d5ec5e33e25e759", + "bytes": 9974 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/five-state.npz", + "sha256": "15095ada05014741f6b6576c2d12d1a8f1ae482ae6f012d5e2be346c796baf4b", + "bytes": 268297 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/feedforward-edges.csv", + "sha256": "add7a3b450e3f3043af602baf8e770e5358c1c024d44bb21a74ef18429c0680e", + "bytes": 228 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/feedforward-events.parquet", + "sha256": "f687cf303d9318404c954e2e699d65d7893ad3f33115c0f9c5ea45b9698ff275", + "bytes": 1716 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/feedforward-state.npz", + "sha256": "6a24c8d2ad476e2250af49172be12de9d43346bc84f043b19d012fa0c53d2fba", + "bytes": 85957 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/no_input-edges.csv", + "sha256": "9103e9d03fa21058a4f6cd21780c56fed8cdcfca26c34c2a43726e39aed8ec55", + "bytes": 547 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/no_input-events.parquet", + "sha256": "071326bc3033505f431e38d716cb8ec681dc192b8389792059bb8a75027a1f10", + "bytes": 1472 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/no_input-state.npz", + "sha256": "a74134da72381d0dbff10bb5143691add6081487dede488a939bb0a4dbf5c20e", + "bytes": 3114 + } + ], + "parent_commit": "5008cd85ca11750f23ce7bc001e8e821763b7501", + "pre_model_execution": true + } + }, + { + "name": "old_frozen_integrity_after", + "pass": true, + "results": { + "original": { + "pass": true, + "checked": 230239, + "mismatches": [], + "reference_sha256": "6f186112e6102f2f7969de7442fa7ee4432200a3678586cfc4e10c490b31bca4", + "exclusions": [ + ".cache", + ".git", + ".mypy_cache", + ".pytest_cache", + ".venv", + "__pycache__", + "node_modules", + "venv" + ], + "new_stage_additions_allowed": true, + "meaning": "All original listed bytes checked; only newly named stage outputs are additions." + }, + "models/male-cns-lif/apl-pn-scope-audit-v1": { + "pass": true, + "checked": 12, + "mismatches": [], + "manifest_sha256": "9120685eb02dc2bd3b38d42b2ade1f38f6bbc2a1ec269fd4d555cead2d628277", + "checksums_sha256": "55dc418f2d62be04601af33cbd8789578447e6a2289d3a581dc713cbb7466a25" + }, + "experiments/phase4aa-apl-pn-scope": { + "pass": true, + "checked": 68, + "mismatches": [], + "manifest_sha256": "6d75567af2a6c0993d4fc08e272814910c19fa9602811cfacd1ebc4ba76bc737", + "checksums_sha256": "a69b2511689207b0d9ddbe2fabce3be71908f457bb898e3b685a213a796a272a" + }, + "models/male-cns-lif/terminal-scope-diagnostic-v1": { + "pass": true, + "checked": 11, + "mismatches": [], + "manifest_sha256": "5cea0035a95345825b73385c6e3056244c2a614d10a6fa6742487a331d8f0f3e", + "checksums_sha256": "92a03195cb41863027fd0397ad3811248354a5d3f2e91ffa2c297eba62dc2821" + }, + "experiments/phase4ab-terminal-scope": { + "pass": true, + "checked": 199, + "mismatches": [], + "manifest_sha256": "cb3723f9dae29d4889489ae39f40293c927f4f9e532551e2c4d5214bf0a70140", + "checksums_sha256": "d83926a3055d9f9ca471ceba328076d7ceba883f267468750914080733e95e31" + }, + "models/male-cns-lif/lif-semantics-audit-v1": { + "pass": true, + "checked": 7, + "mismatches": [], + "manifest_sha256": "53e53d51bba86ec11a02e920f2c2653db4c138dd9562e8416dd001780635070c", + "checksums_sha256": "15b7b7828492387beed2c885ad9d22af682cff1dc38198c0770ab7175759c69d" + }, + "experiments/phase4ac-lif-semantics": { + "pass": true, + "checked": 57, + "mismatches": [], + "manifest_sha256": "4e7d1606e107fe72f5dad935952705260577edaba6f811d65b4105ce07abd72c", + "checksums_sha256": "81bb3a86454147f1562bc3592438b6a6d0091dbe1d2a777e802882ecf1d0db35" + }, + "registry/feedback-context-review-20260930": { + "pass": true, + "checked": 8, + "mismatches": [], + "manifest_sha256": "8fda8506cae9b5b258fe371c8938a15e613114f4234c969fdf742d1f5133c64b", + "checksums_sha256": "9390c04cf4d0bcd2ed89bb4efd1db01cb2faf7dc4f23e8cb411b2ed782ba083d" + } + } + }, + { + "name": "run_complete", + "pass": true, + "record": { + "all_author_oracle_comparisons_pass": true, + "all_frozen_components_match_archive": true, + "learning_achieved": false, + "whole_brain_alternative_run": false, + "author_original_source_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e" + } + }, + { + "name": "frozen_five_gpu_references", + "pass": true, + "record": { + "pass_all": true, + "trials": [ + { + "trial": "auditory-10hz", + "exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true + }, + "wall_seconds": 2.747663623000335 + }, + { + "trial": "auditory-100hz", + "exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true + }, + "wall_seconds": 4.922076707999622 + }, + { + "trial": "olfactory-50hz", + "exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true + }, + "wall_seconds": 4.944787881999673 + }, + { + "trial": "mechanosensory-50hz", + "exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true + }, + "wall_seconds": 4.964256072000353 + }, + { + "trial": "gustatory-50hz", + "exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true + }, + "wall_seconds": 4.95321602399963 + } + ], + "oracle": "frozen deterministic-v2, NOT author Brian2", + "wall_seconds": 82.62074518699978, + "peak_allocated_vram": 285994496, + "gpu": "NVIDIA GeForce RTX 4090", + "comfyui_modified": false + }, + "scope": "Old frozen runtime regression only, not a new-model dynamics gate." + }, + { + "name": "author_poi_compile_only", + "pass": true, + "record": { + "gate": true, + "checks": { + "exact_author_source": true, + "one_poisson_input": true, + "initial_refractory_is_original": true, + "only_excited_target_loses_refractory": true, + "actual_voltage_interface": true, + "actual_N_one": true, + "actual_rate_150_hz": true, + "actual_weight_68_75_mv": true, + "actual_synapses_slot_order_zero": true, + "zero_elapsed_time": true, + "no_recorded_spikes": true, + "compile_preserves_voltage": true, + "compile_preserves_g": true, + "compile_preserves_weights": true, + "compile_preserves_refractory_configuration": true + }, + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "fixture": "two synthetic nodes, one raw_count=1 connection", + "nodes": [ + -2, + -1 + ], + "exc_local_indices": [ + 0 + ], + "exc2_local_indices": [], + "rfc_before_ms": [ + 2.2, + 2.2 + ], + "rfc_after_ms": [ + 0.0, + 2.2 + ], + "poisson_inputs": [ + { + "name": "poissoninput", + "type": "PoissonInput", + "target_group": "default_neurons_subgroup", + "target_local_start": 0, + "target_local_stop": 1, + "target_global_nodes": [ + -2 + ], + "target_var": "v", + "N": 1, + "rate_hz": 150.0, + "weight_mv": 68.75, + "weight_volt": 0.06875, + "when": "synapses", + "order": 0, + "dt_ms": 0.1, + "abstract_code": "v += poissoninput_binomial()*68.75 * mvolt", + "generated_code": [ + "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n _lio_1 = 68.75 * mvolt\n # vector code\n _vectorisation_idx = LazyArange(N)\n _sub_idx = _array_default_neurons_subgroup__sub_idx\n v = _array_default_neurons_v[_sub_idx]\n not_refractory = _array_default_neurons_not_refractory[_sub_idx]\n v[not_refractory] += _lio_1 * poissoninput_binomial(_vectorisation_idx[not_refractory])\n _array_default_neurons_v[_sub_idx] = v\n" + ] + } + ], + "synaptic_weight_mv": [ + 0.275 + ], + "input_hashes": { + "completeness.csv": "06e601b217fdbc48eee57eac01cc9a9fa649ec2a1810a2e212efcd3e4b632303", + "connectivity.parquet": "34f12d50889ccf2e637d913a0f3c4104d49032a6a67f9c3fbcd52e68ce95d701" + }, + "simulation_duration_ms": 0.0, + "stochastic_time_steps": 0, + "random_realization_tested": false, + "common_seed_experiment": false, + "interpretation": "Original poi adds 68.75 mV to voltage at 150 Hz with N=1 in the synapses slot and sets its target rfc to zero. This interface is not the common initial seed experiment.", + "scope": "Compile-time interface audit only; no stochastic trial, learning, or whole-brain simulation. The optional exc2 helper branch is not exercised." + }, + "scope": "Compile-time interface audit; no Poisson realization." + }, + { + "name": "component:pair:frozen", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:pair:reset_g_only", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:pair:refractory_gate_only", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:pair:reset_and_refractory", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:trio:frozen", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:trio:reset_g_only", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:trio:refractory_gate_only", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:trio:reset_and_refractory", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:five:frozen", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:five:reset_g_only", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:five:refractory_gate_only", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:five:reset_and_refractory", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:feedforward:frozen", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:feedforward:reset_g_only", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:feedforward:refractory_gate_only", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:feedforward:reset_and_refractory", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:no_input:frozen", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:no_input:reset_g_only", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:no_input:refractory_gate_only", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:no_input:reset_and_refractory", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "unit:zero:float64", + "pass": true, + "checks": { + "no_events": true, + "g_zero": true, + "rest_stationary": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 7.105427357601002e-15, + "mean_abs_mv": 3.552713678800501e-15, + "same_event_prefix_max_abs_mv": 7.105427357601002e-15, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } + }, + { + "name": "unit:weak_excitation:float64", + "pass": true, + "checks": { + "no_events": true, + "arrival_at_zero": true, + "integration_next_step": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 2.3447910280083306e-13, + "mean_abs_mv": 7.853490427423005e-14, + "same_event_prefix_max_abs_mv": 2.3447910280083306e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } + }, + { + "name": "unit:inhibition:float64", + "pass": true, + "checks": { + "no_events": true, + "arrival_at_zero": true, + "integration_next_step": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 2.4158453015843406e-13, + "mean_abs_mv": 7.103867841196099e-14, + "same_event_prefix_max_abs_mv": 2.4158453015843406e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } + }, + { + "name": "unit:refractory_boundary:float64", + "pass": true, + "checks": { + "one_seed": true, + "reject_through_21": true, + "accept_at_22": true, + "release_at_22": true, + "reset_g_at_zero": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 1.9184653865522705e-13, + "mean_abs_mv": 4.753580341854136e-14, + "same_event_prefix_max_abs_mv": 1.9184653865522705e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } + }, + { + "name": "unit:equal_threshold:float64", + "pass": true, + "checks": { + "strict_threshold_no_event": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 2.2026824808563106e-13, + "mean_abs_mv": 5.400124791776761e-14, + "same_event_prefix_max_abs_mv": 2.2026824808563106e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } + }, + { + "name": "unit:above_threshold:float64", + "pass": true, + "checks": { + "single_seed": true, + "reset_g": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 7.105427357601002e-15, + "mean_abs_mv": 3.552713678800501e-15, + "same_event_prefix_max_abs_mv": 7.105427357601002e-15, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } + }, + { + "name": "unit:nonzero_g_reset:float64", + "pass": true, + "checks": { + "natural_spike_at_1": true, + "nonzero_g_before_spike": true, + "zero_g_after_spike": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 7.105427357601002e-15, + "mean_abs_mv": 3.552713678800501e-15, + "same_event_prefix_max_abs_mv": 7.105427357601002e-15, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } + }, + { + "name": "unit:delay_18:float64", + "pass": true, + "checks": { + "one_seed": true, + "zero_before_arrival": true, + "arrival_at_18": true, + "first_voltage_effect_at_19": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 2.3447910280083306e-13, + "mean_abs_mv": 3.262299068038099e-14, + "same_event_prefix_max_abs_mv": 2.3447910280083306e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } + }, + { + "name": "unit:zero:float32", + "pass": true, + "checks": { + "no_events": true, + "g_zero": true, + "rest_stationary": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 1.0728836059570312e-06, + "mean_abs_mv": 5.364418029785156e-07, + "same_event_prefix_max_abs_mv": 1.0728836059570312e-06, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } + }, + { + "name": "unit:weak_excitation:float32", + "pass": true, + "checks": { + "no_events": true, + "arrival_at_zero": true, + "integration_next_step": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.00012701749801635742, + "mean_abs_mv": 3.341285439091735e-05, + "same_event_prefix_max_abs_mv": 0.00012701749801635742, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } + }, + { + "name": "unit:inhibition:float32", + "pass": true, + "checks": { + "no_events": true, + "arrival_at_zero": true, + "integration_next_step": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.00011596083641052246, + "mean_abs_mv": 3.622157426434569e-05, + "same_event_prefix_max_abs_mv": 0.00011596083641052246, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } + }, + { + "name": "unit:refractory_boundary:float32", + "pass": true, + "checks": { + "one_seed": true, + "reject_through_21": true, + "accept_at_22": true, + "release_at_22": true, + "reset_g_at_zero": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.00010353326797485352, + "mean_abs_mv": 2.6278293235009186e-05, + "same_event_prefix_max_abs_mv": 0.00010353326797485352, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } + }, + { + "name": "unit:equal_threshold:float32", + "pass": true, + "checks": { + "strict_threshold_no_event": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.00012242794036865234, + "mean_abs_mv": 3.6822035908699036e-05, + "same_event_prefix_max_abs_mv": 0.00012242794036865234, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } + }, + { + "name": "unit:above_threshold:float32", + "pass": true, + "checks": { + "single_seed": true, + "reset_g": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 1.0728836059570312e-06, + "mean_abs_mv": 5.364418029785156e-07, + "same_event_prefix_max_abs_mv": 1.0728836059570312e-06, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } + }, + { + "name": "unit:nonzero_g_reset:float32", + "pass": true, + "checks": { + "natural_spike_at_1": true, + "nonzero_g_before_spike": true, + "zero_g_after_spike": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.0001220703125, + "mean_abs_mv": 8.416175842285156e-07, + "same_event_prefix_max_abs_mv": 0.0001220703125, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } + }, + { + "name": "unit:delay_18:float32", + "pass": true, + "checks": { + "one_seed": true, + "zero_before_arrival": true, + "arrival_at_18": true, + "first_voltage_effect_at_19": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.0001220405101776123, + "mean_abs_mv": 1.6799908344182768e-05, + "same_event_prefix_max_abs_mv": 0.0001220405101776123, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } + }, + { + "name": "author:pair:float64", + "pass": true, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 7.105427357601002e-14, + "mean_abs_mv": 8.832579112549865e-15, + "same_event_prefix_max_abs_mv": 7.105427357601002e-14, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + }, + "repeat_exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "weights": true + } + }, + { + "name": "author:pair:float32", + "pass": true, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 2.41696834564209e-05, + "mean_abs_mv": 2.619914710521698e-06, + "same_event_prefix_max_abs_mv": 2.41696834564209e-05, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + }, + "repeat_exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "weights": true + } + }, + { + "name": "precision_cross_record:pair", + "pass": true, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 3.733467101341148e-05, + "mean_abs_mv": 3.280381464815818e-06, + "same_event_prefix_max_abs_mv": 3.733467101341148e-05, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + }, + "interpretation": "Reporting consistency only; cross-precision divergence is allowed and retained." + }, + { + "name": "author:trio:float64", + "pass": true, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 8.526512829121202e-14, + "mean_abs_mv": 8.113095380698118e-15, + "same_event_prefix_max_abs_mv": 8.526512829121202e-14, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + }, + "repeat_exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "weights": true + } + }, + { + "name": "author:trio:float32", + "pass": true, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 4.25875186920166e-05, + "mean_abs_mv": 3.7165323893229165e-06, + "same_event_prefix_max_abs_mv": 4.25875186920166e-05, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + }, + "repeat_exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "weights": true + } + }, + { + "name": "precision_cross_record:trio", + "pass": true, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 3.733467101341148e-05, + "mean_abs_mv": 3.6417296913128893e-06, + "same_event_prefix_max_abs_mv": 3.733467101341148e-05, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + }, + "interpretation": "Reporting consistency only; cross-precision divergence is allowed and retained." + }, + { + "name": "author:five:float64", + "pass": true, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 3.836930773104541e-13, + "mean_abs_mv": 3.28896643253529e-14, + "same_event_prefix_max_abs_mv": 3.836930773104541e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + }, + "repeat_exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "weights": true + } + }, + { + "name": "author:five:float32", + "pass": true, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.0002123713493347168, + "mean_abs_mv": 1.7726411819458007e-05, + "same_event_prefix_max_abs_mv": 0.0002123713493347168, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + }, + "repeat_exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "weights": true + } + }, + { + "name": "precision_cross_record:five", + "pass": true, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.00019546693161487383, + "mean_abs_mv": 1.7966433624798595e-05, + "same_event_prefix_max_abs_mv": 0.00019546693161487383, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + }, + "interpretation": "Reporting consistency only; cross-precision divergence is allowed and retained." + }, + { + "name": "author:feedforward:float64", + "pass": true, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 3.765876499528531e-13, + "mean_abs_mv": 3.893371799264915e-14, + "same_event_prefix_max_abs_mv": 3.765876499528531e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + }, + "repeat_exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "weights": true + } + }, + { + "name": "author:feedforward:float32", + "pass": true, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.00020179152488708496, + "mean_abs_mv": 1.9821550031807453e-05, + "same_event_prefix_max_abs_mv": 0.00020179152488708496, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + }, + "repeat_exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "weights": true + } + }, + { + "name": "precision_cross_record:feedforward", + "pass": true, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.0005722045887850413, + "mean_abs_mv": 4.780100484587312e-05, + "same_event_prefix_max_abs_mv": 0.0005722045887850413, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + }, + "interpretation": "Reporting consistency only; cross-precision divergence is allowed and retained." + }, + { + "name": "author:no_input:float64", + "pass": true, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 7.105427357601002e-15, + "mean_abs_mv": 3.552713678800501e-15, + "same_event_prefix_max_abs_mv": 7.105427357601002e-15, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + }, + "repeat_exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "weights": true + } + }, + { + "name": "author:no_input:float32", + "pass": true, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 1.0728836059570312e-06, + "mean_abs_mv": 5.364418029785156e-07, + "same_event_prefix_max_abs_mv": 1.0728836059570312e-06, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + }, + "repeat_exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "weights": true + } + }, + { + "name": "precision_cross_record:no_input", + "pass": true, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.0, + "mean_abs_mv": 0.0, + "same_event_prefix_max_abs_mv": 0.0, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + }, + "interpretation": "Reporting consistency only; cross-precision divergence is allowed and retained." + }, + { + "name": "no_recorded_oracle_errors", + "pass": true, + "errors": [] + }, + { + "name": "preregistration_at_seal", + "pass": true, + "record": { + "config": { + "name": "author-semantics-lab-v1", + "phase": "4AD", + "root": "/data/digital-drosophila", + "experiment": "experiments/phase4ad-author-semantics", + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "human_authorization": "允许独立新模型分支测试动力学假设", + "dt_ms": 0.1, + "duration_ms": 1000.0, + "seed_margin_mv": 1.0, + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "synaptic_tau_ms": 5.0, + "refractory_ms": 2.2, + "resting_potential_mv": -52.0, + "reset_potential_mv": -52.0, + "threshold_mv": -45.0, + "synaptic_delay_ms": 1.8, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "seed_node": 1381, + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "float64_state_max_abs_tolerance_mv": 1e-08, + "float32_state_max_abs_tolerance_mv": 0.001, + "exact_spike_events_required_for_oracle_validation": true, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "no_training_or_candidate": true + }, + "timestamp_utc": "2026-09-29T23:14:27.848343+00:00", + "source_hashes": { + "PROTOCOL.md": "23e784ca1cbde7546373dbcbedbe2bc23d35083084f120068bf06100f238b09a", + "config.json": "a69e8da5332d8031cbe1663abff25e61ee04e75f5490e8fa44c48690d3d0e219", + "context.py": "561d405ee4a2d3bbc6982c89191523f348d6fae0630dea9cb67ddf03acc6fc7b", + "finalize.py": "97a393b95d100dc5d95b624e4cd0d15511307b8c70e0ebd788b773c143ebfed6", + "interface_audit.py": "1e2b31545f1206fe1c1f4084b4a9ac0f21c74990c52e8fd156e809725fc5fb95", + "math_lab.py": "9663da41d5f623e1d7750e3cad3df880148079968f115bf583b58799fc5fb31f", + "oracle_runner.py": "2f4b073261965cf18a94697caf725c40b2e8db790c2871862201337f40c399e5", + "prepare.py": "49caa9553938f06539ecf282868491f8e1319d8f24220f89ac9e232db2d82e51", + "requirements-oracle.txt": "a69efc6509b85a5cc00a652caa4820c9c9e1406f6b97c6cc741322728c4d51c3", + "run_lab.py": "8746e1971c5a40a738e10f8f574a243c29cefa5a8b9f61a2846557ceffd1289a", + "verify_frozen.py": "fe37a48ce804e6c50f93404bfd3c23a7e54cd49061bbdfb4860315879648c73b" + }, + "input_hashes": [ + { + "path": "experiments/phase4ac-lif-semantics/external-resources/model.py", + "sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "bytes": 11900 + }, + { + "path": "experiments/phase4ac-lif-semantics/external-resources/LICENSE", + "sha256": "3621f6d6476189190e2960fa43f11b275ba4eca848fdac50a1ba2925de6223e8", + "bytes": 1085 + }, + { + "path": "experiments/phase4ac-lif-semantics/external-resources/environment_full.yml", + "sha256": "402fcef4968c99397b0e908b3323ab9e6ef86af5583e46e6427f96f3d1091adf", + "bytes": 3445 + }, + { + "path": "experiments/phase4ac-lif-semantics/audit/selected-real-edges.csv", + "sha256": "9103e9d03fa21058a4f6cd21780c56fed8cdcfca26c34c2a43726e39aed8ec55", + "bytes": 547 + }, + { + "path": "experiments/phase4ac-lif-semantics/audit/selected-metadata.parquet", + "sha256": "c1dde5df5408aeb878d6c422bc1c86ba44c3c5770f986014e594e356412a013d", + "bytes": 34348 + }, + { + "path": "models/male-cns-lif/lif-semantics-audit-v1/math_reference.py", + "sha256": "5166366251f99359b1301f514f5d9ae5f0f041fd3a3f98902386192117f01aea", + "bytes": 3768 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/pair-edges.csv", + "sha256": "05a7c7a5547aaeea4d1522f9cea75463405f0c3cdfbc4d563f111ad51cb80e00", + "bytes": 152 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/pair-events.parquet", + "sha256": "962a440924a9b2a4a3677b8968e63042de0b80ea4e496c213ebcf40d5e530e85", + "bytes": 4157 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/pair-state.npz", + "sha256": "924774344956dd5a530c3d00c8103fe4d1b584837d5e91f05b60094540a78897", + "bytes": 14660 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/trio-edges.csv", + "sha256": "c842c5bce0b11275c0eba9532955026a4b58931c2346e178bfa8a84227289c71", + "bytes": 288 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/trio-events.parquet", + "sha256": "a39d58de867f4f1ce1291e0ece25a52b70a3e04024508f77cb4a29eb4e09fa0e", + "bytes": 7476 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/trio-state.npz", + "sha256": "46c8a495ee1358a6173a2eebebe9ce2d6481b27f10e0c56cf9602c7969cd8702", + "bytes": 18538 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/five-edges.csv", + "sha256": "9103e9d03fa21058a4f6cd21780c56fed8cdcfca26c34c2a43726e39aed8ec55", + "bytes": 547 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/five-events.parquet", + "sha256": "19fef92b32be32ced2ec6b6581c9dac05055e9d550c104dd0d5ec5e33e25e759", + "bytes": 9974 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/five-state.npz", + "sha256": "15095ada05014741f6b6576c2d12d1a8f1ae482ae6f012d5e2be346c796baf4b", + "bytes": 268297 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/feedforward-edges.csv", + "sha256": "add7a3b450e3f3043af602baf8e770e5358c1c024d44bb21a74ef18429c0680e", + "bytes": 228 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/feedforward-events.parquet", + "sha256": "f687cf303d9318404c954e2e699d65d7893ad3f33115c0f9c5ea45b9698ff275", + "bytes": 1716 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/feedforward-state.npz", + "sha256": "6a24c8d2ad476e2250af49172be12de9d43346bc84f043b19d012fa0c53d2fba", + "bytes": 85957 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/no_input-edges.csv", + "sha256": "9103e9d03fa21058a4f6cd21780c56fed8cdcfca26c34c2a43726e39aed8ec55", + "bytes": 547 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/no_input-events.parquet", + "sha256": "071326bc3033505f431e38d716cb8ec681dc192b8389792059bb8a75027a1f10", + "bytes": 1472 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/no_input-state.npz", + "sha256": "a74134da72381d0dbff10bb5143691add6081487dede488a939bb0a4dbf5c20e", + "bytes": 3114 + } + ], + "parent_commit": "5008cd85ca11750f23ce7bc001e8e821763b7501", + "pre_model_execution": true + } + } + ], + "component_checks": [ + { + "name": "component:pair:frozen", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:pair:reset_g_only", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:pair:refractory_gate_only", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:pair:reset_and_refractory", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:trio:frozen", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:trio:reset_g_only", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:trio:refractory_gate_only", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:trio:reset_and_refractory", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:five:frozen", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:five:reset_g_only", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:five:refractory_gate_only", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:five:reset_and_refractory", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:feedforward:frozen", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:feedforward:reset_g_only", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:feedforward:refractory_gate_only", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:feedforward:reset_and_refractory", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:no_input:frozen", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:no_input:reset_g_only", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:no_input:refractory_gate_only", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + }, + { + "name": "component:no_input:reset_and_refractory", + "pass": true, + "raw_and_summary_consistent": true, + "interpretation": "Artifact/finite/seed checks only; activity is descriptive." + } + ], + "unit_checks": [ + { + "name": "unit:zero:float64", + "pass": true, + "checks": { + "no_events": true, + "g_zero": true, + "rest_stationary": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 7.105427357601002e-15, + "mean_abs_mv": 3.552713678800501e-15, + "same_event_prefix_max_abs_mv": 7.105427357601002e-15, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } + }, + { + "name": "unit:weak_excitation:float64", + "pass": true, + "checks": { + "no_events": true, + "arrival_at_zero": true, + "integration_next_step": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 2.3447910280083306e-13, + "mean_abs_mv": 7.853490427423005e-14, + "same_event_prefix_max_abs_mv": 2.3447910280083306e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } + }, + { + "name": "unit:inhibition:float64", + "pass": true, + "checks": { + "no_events": true, + "arrival_at_zero": true, + "integration_next_step": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 2.4158453015843406e-13, + "mean_abs_mv": 7.103867841196099e-14, + "same_event_prefix_max_abs_mv": 2.4158453015843406e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } + }, + { + "name": "unit:refractory_boundary:float64", + "pass": true, + "checks": { + "one_seed": true, + "reject_through_21": true, + "accept_at_22": true, + "release_at_22": true, + "reset_g_at_zero": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 1.9184653865522705e-13, + "mean_abs_mv": 4.753580341854136e-14, + "same_event_prefix_max_abs_mv": 1.9184653865522705e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } + }, + { + "name": "unit:equal_threshold:float64", + "pass": true, + "checks": { + "strict_threshold_no_event": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 2.2026824808563106e-13, + "mean_abs_mv": 5.400124791776761e-14, + "same_event_prefix_max_abs_mv": 2.2026824808563106e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } + }, + { + "name": "unit:above_threshold:float64", + "pass": true, + "checks": { + "single_seed": true, + "reset_g": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 7.105427357601002e-15, + "mean_abs_mv": 3.552713678800501e-15, + "same_event_prefix_max_abs_mv": 7.105427357601002e-15, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } + }, + { + "name": "unit:nonzero_g_reset:float64", + "pass": true, + "checks": { + "natural_spike_at_1": true, + "nonzero_g_before_spike": true, + "zero_g_after_spike": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 7.105427357601002e-15, + "mean_abs_mv": 3.552713678800501e-15, + "same_event_prefix_max_abs_mv": 7.105427357601002e-15, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } + }, + { + "name": "unit:delay_18:float64", + "pass": true, + "checks": { + "one_seed": true, + "zero_before_arrival": true, + "arrival_at_18": true, + "first_voltage_effect_at_19": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 2.3447910280083306e-13, + "mean_abs_mv": 3.262299068038099e-14, + "same_event_prefix_max_abs_mv": 2.3447910280083306e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } + }, + { + "name": "unit:zero:float32", + "pass": true, + "checks": { + "no_events": true, + "g_zero": true, + "rest_stationary": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 1.0728836059570312e-06, + "mean_abs_mv": 5.364418029785156e-07, + "same_event_prefix_max_abs_mv": 1.0728836059570312e-06, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } + }, + { + "name": "unit:weak_excitation:float32", + "pass": true, + "checks": { + "no_events": true, + "arrival_at_zero": true, + "integration_next_step": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.00012701749801635742, + "mean_abs_mv": 3.341285439091735e-05, + "same_event_prefix_max_abs_mv": 0.00012701749801635742, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } + }, + { + "name": "unit:inhibition:float32", + "pass": true, + "checks": { + "no_events": true, + "arrival_at_zero": true, + "integration_next_step": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.00011596083641052246, + "mean_abs_mv": 3.622157426434569e-05, + "same_event_prefix_max_abs_mv": 0.00011596083641052246, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } + }, + { + "name": "unit:refractory_boundary:float32", + "pass": true, + "checks": { + "one_seed": true, + "reject_through_21": true, + "accept_at_22": true, + "release_at_22": true, + "reset_g_at_zero": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.00010353326797485352, + "mean_abs_mv": 2.6278293235009186e-05, + "same_event_prefix_max_abs_mv": 0.00010353326797485352, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } + }, + { + "name": "unit:equal_threshold:float32", + "pass": true, + "checks": { + "strict_threshold_no_event": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.00012242794036865234, + "mean_abs_mv": 3.6822035908699036e-05, + "same_event_prefix_max_abs_mv": 0.00012242794036865234, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } + }, + { + "name": "unit:above_threshold:float32", + "pass": true, + "checks": { + "single_seed": true, + "reset_g": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 1.0728836059570312e-06, + "mean_abs_mv": 5.364418029785156e-07, + "same_event_prefix_max_abs_mv": 1.0728836059570312e-06, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } + }, + { + "name": "unit:nonzero_g_reset:float32", + "pass": true, + "checks": { + "natural_spike_at_1": true, + "nonzero_g_before_spike": true, + "zero_g_after_spike": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.0001220703125, + "mean_abs_mv": 8.416175842285156e-07, + "same_event_prefix_max_abs_mv": 0.0001220703125, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } + }, + { + "name": "unit:delay_18:float32", + "pass": true, + "checks": { + "one_seed": true, + "zero_before_arrival": true, + "arrival_at_18": true, + "first_voltage_effect_at_19": true + }, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.0001220405101776123, + "mean_abs_mv": 1.6799908344182768e-05, + "same_event_prefix_max_abs_mv": 0.0001220405101776123, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } + } + ], + "frozen_five_gpu_check": { + "name": "frozen_five_gpu_references", + "pass": true, + "record": { + "pass_all": true, + "trials": [ + { + "trial": "auditory-10hz", + "exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true + }, + "wall_seconds": 2.747663623000335 + }, + { + "trial": "auditory-100hz", + "exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true + }, + "wall_seconds": 4.922076707999622 + }, + { + "trial": "olfactory-50hz", + "exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true + }, + "wall_seconds": 4.944787881999673 + }, + { + "trial": "mechanosensory-50hz", + "exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true + }, + "wall_seconds": 4.964256072000353 + }, + { + "trial": "gustatory-50hz", + "exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true + }, + "wall_seconds": 4.95321602399963 + } + ], + "oracle": "frozen deterministic-v2, NOT author Brian2", + "wall_seconds": 82.62074518699978, + "peak_allocated_vram": 285994496, + "gpu": "NVIDIA GeForce RTX 4090", + "comfyui_modified": false + }, + "scope": "Old frozen runtime regression only, not a new-model dynamics gate." + }, + "author_poi_interface_check": { + "name": "author_poi_compile_only", + "pass": true, + "record": { + "gate": true, + "checks": { + "exact_author_source": true, + "one_poisson_input": true, + "initial_refractory_is_original": true, + "only_excited_target_loses_refractory": true, + "actual_voltage_interface": true, + "actual_N_one": true, + "actual_rate_150_hz": true, + "actual_weight_68_75_mv": true, + "actual_synapses_slot_order_zero": true, + "zero_elapsed_time": true, + "no_recorded_spikes": true, + "compile_preserves_voltage": true, + "compile_preserves_g": true, + "compile_preserves_weights": true, + "compile_preserves_refractory_configuration": true + }, + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "fixture": "two synthetic nodes, one raw_count=1 connection", + "nodes": [ + -2, + -1 + ], + "exc_local_indices": [ + 0 + ], + "exc2_local_indices": [], + "rfc_before_ms": [ + 2.2, + 2.2 + ], + "rfc_after_ms": [ + 0.0, + 2.2 + ], + "poisson_inputs": [ + { + "name": "poissoninput", + "type": "PoissonInput", + "target_group": "default_neurons_subgroup", + "target_local_start": 0, + "target_local_stop": 1, + "target_global_nodes": [ + -2 + ], + "target_var": "v", + "N": 1, + "rate_hz": 150.0, + "weight_mv": 68.75, + "weight_volt": 0.06875, + "when": "synapses", + "order": 0, + "dt_ms": 0.1, + "abstract_code": "v += poissoninput_binomial()*68.75 * mvolt", + "generated_code": [ + "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n _lio_1 = 68.75 * mvolt\n # vector code\n _vectorisation_idx = LazyArange(N)\n _sub_idx = _array_default_neurons_subgroup__sub_idx\n v = _array_default_neurons_v[_sub_idx]\n not_refractory = _array_default_neurons_not_refractory[_sub_idx]\n v[not_refractory] += _lio_1 * poissoninput_binomial(_vectorisation_idx[not_refractory])\n _array_default_neurons_v[_sub_idx] = v\n" + ] + } + ], + "synaptic_weight_mv": [ + 0.275 + ], + "input_hashes": { + "completeness.csv": "06e601b217fdbc48eee57eac01cc9a9fa649ec2a1810a2e212efcd3e4b632303", + "connectivity.parquet": "34f12d50889ccf2e637d913a0f3c4104d49032a6a67f9c3fbcd52e68ce95d701" + }, + "simulation_duration_ms": 0.0, + "stochastic_time_steps": 0, + "random_realization_tested": false, + "common_seed_experiment": false, + "interpretation": "Original poi adds 68.75 mV to voltage at 150 Hz with N=1 in the synapses slot and sets its target rfc to zero. This interface is not the common initial seed experiment.", + "scope": "Compile-time interface audit only; no stochastic trial, learning, or whole-brain simulation. The optional exc2 helper branch is not exercised." + }, + "scope": "Compile-time interface audit; no Poisson realization." + }, + "author_oracle_checks": [ + { + "name": "author:pair:float64", + "pass": true, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 7.105427357601002e-14, + "mean_abs_mv": 8.832579112549865e-15, + "same_event_prefix_max_abs_mv": 7.105427357601002e-14, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + }, + "repeat_exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "weights": true + } + }, + { + "name": "author:pair:float32", + "pass": true, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 2.41696834564209e-05, + "mean_abs_mv": 2.619914710521698e-06, + "same_event_prefix_max_abs_mv": 2.41696834564209e-05, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + }, + "repeat_exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "weights": true + } + }, + { + "name": "author:trio:float64", + "pass": true, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 8.526512829121202e-14, + "mean_abs_mv": 8.113095380698118e-15, + "same_event_prefix_max_abs_mv": 8.526512829121202e-14, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + }, + "repeat_exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "weights": true + } + }, + { + "name": "author:trio:float32", + "pass": true, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 4.25875186920166e-05, + "mean_abs_mv": 3.7165323893229165e-06, + "same_event_prefix_max_abs_mv": 4.25875186920166e-05, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + }, + "repeat_exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "weights": true + } + }, + { + "name": "author:five:float64", + "pass": true, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 3.836930773104541e-13, + "mean_abs_mv": 3.28896643253529e-14, + "same_event_prefix_max_abs_mv": 3.836930773104541e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + }, + "repeat_exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "weights": true + } + }, + { + "name": "author:five:float32", + "pass": true, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.0002123713493347168, + "mean_abs_mv": 1.7726411819458007e-05, + "same_event_prefix_max_abs_mv": 0.0002123713493347168, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + }, + "repeat_exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "weights": true + } + }, + { + "name": "author:feedforward:float64", + "pass": true, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 3.765876499528531e-13, + "mean_abs_mv": 3.893371799264915e-14, + "same_event_prefix_max_abs_mv": 3.765876499528531e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + }, + "repeat_exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "weights": true + } + }, + { + "name": "author:feedforward:float32", + "pass": true, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.00020179152488708496, + "mean_abs_mv": 1.9821550031807453e-05, + "same_event_prefix_max_abs_mv": 0.00020179152488708496, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + }, + "repeat_exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "weights": true + } + }, + { + "name": "author:no_input:float64", + "pass": true, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 7.105427357601002e-15, + "mean_abs_mv": 3.552713678800501e-15, + "same_event_prefix_max_abs_mv": 7.105427357601002e-15, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + }, + "repeat_exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "weights": true + } + }, + { + "name": "author:no_input:float32", + "pass": true, + "raw_comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 1.0728836059570312e-06, + "mean_abs_mv": 5.364418029785156e-07, + "same_event_prefix_max_abs_mv": 1.0728836059570312e-06, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + }, + "repeat_exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "weights": true + } + } + ], + "precision_cross_checks": [ + { + "name": "precision_cross_record:pair", + "pass": true, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 3.733467101341148e-05, + "mean_abs_mv": 3.280381464815818e-06, + "same_event_prefix_max_abs_mv": 3.733467101341148e-05, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + }, + "interpretation": "Reporting consistency only; cross-precision divergence is allowed and retained." + }, + { + "name": "precision_cross_record:trio", + "pass": true, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 3.733467101341148e-05, + "mean_abs_mv": 3.6417296913128893e-06, + "same_event_prefix_max_abs_mv": 3.733467101341148e-05, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + }, + "interpretation": "Reporting consistency only; cross-precision divergence is allowed and retained." + }, + { + "name": "precision_cross_record:five", + "pass": true, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.00019546693161487383, + "mean_abs_mv": 1.7966433624798595e-05, + "same_event_prefix_max_abs_mv": 0.00019546693161487383, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + }, + "interpretation": "Reporting consistency only; cross-precision divergence is allowed and retained." + }, + { + "name": "precision_cross_record:feedforward", + "pass": true, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.0005722045887850413, + "mean_abs_mv": 4.780100484587312e-05, + "same_event_prefix_max_abs_mv": 0.0005722045887850413, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + }, + "interpretation": "Reporting consistency only; cross-precision divergence is allowed and retained." + }, + { + "name": "precision_cross_record:no_input", + "pass": true, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.0, + "mean_abs_mv": 0.0, + "same_event_prefix_max_abs_mv": 0.0, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + }, + "interpretation": "Reporting consistency only; cross-precision divergence is allowed and retained." + } + ], + "motif_outcomes": [ + { + "motif": "pair", + "policy": "frozen", + "precision": "float32", + "neurons": [ + { + "neuron_idx": 1381, + "spikes": 237, + "late_spikes": 119, + "last_ms": 999.3000000000001 + }, + { + "neuron_idx": 1511, + "spikes": 236, + "late_spikes": 119, + "last_ms": 997.5 + } + ], + "activity_is_not_a_validation_gate": true + }, + { + "motif": "pair", + "policy": "reset_g_only", + "precision": "float32", + "neurons": [ + { + "neuron_idx": 1381, + "spikes": 112, + "late_spikes": 56, + "last_ms": 999.0 + }, + { + "neuron_idx": 1511, + "spikes": 111, + "late_spikes": 55, + "last_ms": 994.9000000000001 + } + ], + "activity_is_not_a_validation_gate": true + }, + { + "motif": "pair", + "policy": "refractory_gate_only", + "precision": "float32", + "neurons": [ + { + "neuron_idx": 1381, + "spikes": 318, + "late_spikes": 161, + "last_ms": 999.1 + }, + { + "neuron_idx": 1511, + "spikes": 317, + "late_spikes": 160, + "last_ms": 997.5 + } + ], + "activity_is_not_a_validation_gate": true + }, + { + "motif": "pair", + "policy": "reset_and_refractory", + "precision": "float32", + "neurons": [ + { + "neuron_idx": 1381, + "spikes": 112, + "late_spikes": 56, + "last_ms": 999.0 + }, + { + "neuron_idx": 1511, + "spikes": 111, + "late_spikes": 55, + "last_ms": 994.9000000000001 + } + ], + "activity_is_not_a_validation_gate": true + }, + { + "motif": "trio", + "policy": "frozen", + "precision": "float32", + "neurons": [ + { + "neuron_idx": 1197, + "spikes": 355, + "late_spikes": 179, + "last_ms": 999.3000000000001 + }, + { + "neuron_idx": 1381, + "spikes": 355, + "late_spikes": 178, + "last_ms": 997.8000000000001 + }, + { + "neuron_idx": 1511, + "spikes": 354, + "late_spikes": 178, + "last_ms": 997.4000000000001 + } + ], + "activity_is_not_a_validation_gate": true + }, + { + "motif": "trio", + "policy": "reset_g_only", + "precision": "float32", + "neurons": [ + { + "neuron_idx": 1197, + "spikes": 188, + "late_spikes": 94, + "last_ms": 995.4000000000001 + }, + { + "neuron_idx": 1381, + "spikes": 189, + "late_spikes": 95, + "last_ms": 998.7 + }, + { + "neuron_idx": 1511, + "spikes": 188, + "late_spikes": 94, + "last_ms": 996.1 + } + ], + "activity_is_not_a_validation_gate": true + }, + { + "motif": "trio", + "policy": "refractory_gate_only", + "precision": "float32", + "neurons": [ + { + "neuron_idx": 1197, + "spikes": 369, + "late_spikes": 185, + "last_ms": 998.3000000000001 + }, + { + "neuron_idx": 1381, + "spikes": 367, + "late_spikes": 184, + "last_ms": 999.1 + }, + { + "neuron_idx": 1511, + "spikes": 364, + "late_spikes": 183, + "last_ms": 997.2 + } + ], + "activity_is_not_a_validation_gate": true + }, + { + "motif": "trio", + "policy": "reset_and_refractory", + "precision": "float32", + "neurons": [ + { + "neuron_idx": 1197, + "spikes": 156, + "late_spikes": 78, + "last_ms": 995.3000000000001 + }, + { + "neuron_idx": 1381, + "spikes": 157, + "late_spikes": 79, + "last_ms": 999.6 + }, + { + "neuron_idx": 1511, + "spikes": 156, + "late_spikes": 78, + "last_ms": 997.5 + } + ], + "activity_is_not_a_validation_gate": true + }, + { + "motif": "five", + "policy": "frozen", + "precision": "float32", + "neurons": [ + { + "neuron_idx": 1197, + "spikes": 370, + "late_spikes": 185, + "last_ms": 998.8000000000001 + }, + { + "neuron_idx": 1381, + "spikes": 369, + "late_spikes": 185, + "last_ms": 997.4000000000001 + }, + { + "neuron_idx": 1511, + "spikes": 367, + "late_spikes": 186, + "last_ms": 999.5 + }, + { + "neuron_idx": 82312, + "spikes": 80, + "late_spikes": 41, + "last_ms": 990.3000000000001 + }, + { + "neuron_idx": 133666, + "spikes": 297, + "late_spikes": 150, + "last_ms": 999.5 + } + ], + "activity_is_not_a_validation_gate": true + }, + { + "motif": "five", + "policy": "reset_g_only", + "precision": "float32", + "neurons": [ + { + "neuron_idx": 1197, + "spikes": 249, + "late_spikes": 125, + "last_ms": 996.2 + }, + { + "neuron_idx": 1381, + "spikes": 211, + "late_spikes": 104, + "last_ms": 999.2 + }, + { + "neuron_idx": 1511, + "spikes": 209, + "late_spikes": 104, + "last_ms": 996.5 + }, + { + "neuron_idx": 82312, + "spikes": 33, + "late_spikes": 17, + "last_ms": 994.9000000000001 + }, + { + "neuron_idx": 133666, + "spikes": 166, + "late_spikes": 83, + "last_ms": 996.7 + } + ], + "activity_is_not_a_validation_gate": true + }, + { + "motif": "five", + "policy": "refractory_gate_only", + "precision": "float32", + "neurons": [ + { + "neuron_idx": 1197, + "spikes": 372, + "late_spikes": 188, + "last_ms": 998.0 + }, + { + "neuron_idx": 1381, + "spikes": 375, + "late_spikes": 191, + "last_ms": 998.6 + }, + { + "neuron_idx": 1511, + "spikes": 371, + "late_spikes": 187, + "last_ms": 997.5 + }, + { + "neuron_idx": 82312, + "spikes": 85, + "late_spikes": 43, + "last_ms": 991.9000000000001 + }, + { + "neuron_idx": 133666, + "spikes": 307, + "late_spikes": 154, + "last_ms": 997.7 + } + ], + "activity_is_not_a_validation_gate": true + }, + { + "motif": "five", + "policy": "reset_and_refractory", + "precision": "float32", + "neurons": [ + { + "neuron_idx": 1197, + "spikes": 165, + "late_spikes": 82, + "last_ms": 995.7 + }, + { + "neuron_idx": 1381, + "spikes": 166, + "late_spikes": 83, + "last_ms": 999.8000000000001 + }, + { + "neuron_idx": 1511, + "spikes": 165, + "late_spikes": 83, + "last_ms": 997.5 + }, + { + "neuron_idx": 82312, + "spikes": 15, + "late_spikes": 8, + "last_ms": 972.7 + }, + { + "neuron_idx": 133666, + "spikes": 123, + "late_spikes": 62, + "last_ms": 993.0 + } + ], + "activity_is_not_a_validation_gate": true + }, + { + "motif": "feedforward", + "policy": "frozen", + "precision": "float32", + "neurons": [ + { + "neuron_idx": 1197, + "spikes": 1, + "late_spikes": 0, + "last_ms": 10.0 + }, + { + "neuron_idx": 1381, + "spikes": 1, + "late_spikes": 0, + "last_ms": 0.0 + }, + { + "neuron_idx": 1511, + "spikes": 1, + "late_spikes": 0, + "last_ms": 4.9 + }, + { + "neuron_idx": 82312, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + }, + { + "neuron_idx": 133666, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + } + ], + "activity_is_not_a_validation_gate": true + }, + { + "motif": "feedforward", + "policy": "reset_g_only", + "precision": "float32", + "neurons": [ + { + "neuron_idx": 1197, + "spikes": 1, + "late_spikes": 0, + "last_ms": 10.0 + }, + { + "neuron_idx": 1381, + "spikes": 1, + "late_spikes": 0, + "last_ms": 0.0 + }, + { + "neuron_idx": 1511, + "spikes": 1, + "late_spikes": 0, + "last_ms": 4.9 + }, + { + "neuron_idx": 82312, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + }, + { + "neuron_idx": 133666, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + } + ], + "activity_is_not_a_validation_gate": true + }, + { + "motif": "feedforward", + "policy": "refractory_gate_only", + "precision": "float32", + "neurons": [ + { + "neuron_idx": 1197, + "spikes": 1, + "late_spikes": 0, + "last_ms": 10.0 + }, + { + "neuron_idx": 1381, + "spikes": 1, + "late_spikes": 0, + "last_ms": 0.0 + }, + { + "neuron_idx": 1511, + "spikes": 1, + "late_spikes": 0, + "last_ms": 4.9 + }, + { + "neuron_idx": 82312, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + }, + { + "neuron_idx": 133666, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + } + ], + "activity_is_not_a_validation_gate": true + }, + { + "motif": "feedforward", + "policy": "reset_and_refractory", + "precision": "float32", + "neurons": [ + { + "neuron_idx": 1197, + "spikes": 1, + "late_spikes": 0, + "last_ms": 10.0 + }, + { + "neuron_idx": 1381, + "spikes": 1, + "late_spikes": 0, + "last_ms": 0.0 + }, + { + "neuron_idx": 1511, + "spikes": 1, + "late_spikes": 0, + "last_ms": 4.9 + }, + { + "neuron_idx": 82312, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + }, + { + "neuron_idx": 133666, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + } + ], + "activity_is_not_a_validation_gate": true + }, + { + "motif": "no_input", + "policy": "frozen", + "precision": "float32", + "neurons": [ + { + "neuron_idx": 1197, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + }, + { + "neuron_idx": 1381, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + }, + { + "neuron_idx": 1511, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + }, + { + "neuron_idx": 82312, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + }, + { + "neuron_idx": 133666, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + } + ], + "activity_is_not_a_validation_gate": true + }, + { + "motif": "no_input", + "policy": "reset_g_only", + "precision": "float32", + "neurons": [ + { + "neuron_idx": 1197, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + }, + { + "neuron_idx": 1381, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + }, + { + "neuron_idx": 1511, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + }, + { + "neuron_idx": 82312, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + }, + { + "neuron_idx": 133666, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + } + ], + "activity_is_not_a_validation_gate": true + }, + { + "motif": "no_input", + "policy": "refractory_gate_only", + "precision": "float32", + "neurons": [ + { + "neuron_idx": 1197, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + }, + { + "neuron_idx": 1381, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + }, + { + "neuron_idx": 1511, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + }, + { + "neuron_idx": 82312, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + }, + { + "neuron_idx": 133666, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + } + ], + "activity_is_not_a_validation_gate": true + }, + { + "motif": "no_input", + "policy": "reset_and_refractory", + "precision": "float32", + "neurons": [ + { + "neuron_idx": 1197, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + }, + { + "neuron_idx": 1381, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + }, + { + "neuron_idx": 1511, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + }, + { + "neuron_idx": 82312, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + }, + { + "neuron_idx": 133666, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + } + ], + "activity_is_not_a_validation_gate": true + }, + { + "motif": "pair", + "policy": "author_complete", + "precision": "float64", + "neurons": [ + { + "neuron_idx": 1381, + "spikes": 107, + "late_spikes": 53, + "last_ms": 996.4000000000001 + }, + { + "neuron_idx": 1511, + "spikes": 106, + "late_spikes": 53, + "last_ms": 992.1 + } + ], + "activity_is_not_a_validation_gate": true + }, + { + "motif": "pair", + "policy": "author_complete", + "precision": "float32", + "neurons": [ + { + "neuron_idx": 1381, + "spikes": 107, + "late_spikes": 53, + "last_ms": 996.4000000000001 + }, + { + "neuron_idx": 1511, + "spikes": 106, + "late_spikes": 53, + "last_ms": 992.1 + } + ], + "activity_is_not_a_validation_gate": true + }, + { + "motif": "trio", + "policy": "author_complete", + "precision": "float64", + "neurons": [ + { + "neuron_idx": 1197, + "spikes": 149, + "late_spikes": 74, + "last_ms": 994.8000000000001 + }, + { + "neuron_idx": 1381, + "spikes": 150, + "late_spikes": 75, + "last_ms": 999.3000000000001 + }, + { + "neuron_idx": 1511, + "spikes": 149, + "late_spikes": 75, + "last_ms": 997.0 + } + ], + "activity_is_not_a_validation_gate": true + }, + { + "motif": "trio", + "policy": "author_complete", + "precision": "float32", + "neurons": [ + { + "neuron_idx": 1197, + "spikes": 149, + "late_spikes": 74, + "last_ms": 994.8000000000001 + }, + { + "neuron_idx": 1381, + "spikes": 150, + "late_spikes": 75, + "last_ms": 999.3000000000001 + }, + { + "neuron_idx": 1511, + "spikes": 149, + "late_spikes": 75, + "last_ms": 997.0 + } + ], + "activity_is_not_a_validation_gate": true + }, + { + "motif": "five", + "policy": "author_complete", + "precision": "float64", + "neurons": [ + { + "neuron_idx": 1197, + "spikes": 159, + "late_spikes": 79, + "last_ms": 995.2 + }, + { + "neuron_idx": 1381, + "spikes": 160, + "late_spikes": 80, + "last_ms": 999.5 + }, + { + "neuron_idx": 1511, + "spikes": 159, + "late_spikes": 80, + "last_ms": 997.4000000000001 + }, + { + "neuron_idx": 82312, + "spikes": 13, + "late_spikes": 7, + "last_ms": 992.4000000000001 + }, + { + "neuron_idx": 133666, + "spikes": 119, + "late_spikes": 60, + "last_ms": 996.0 + } + ], + "activity_is_not_a_validation_gate": true + }, + { + "motif": "five", + "policy": "author_complete", + "precision": "float32", + "neurons": [ + { + "neuron_idx": 1197, + "spikes": 159, + "late_spikes": 79, + "last_ms": 995.2 + }, + { + "neuron_idx": 1381, + "spikes": 160, + "late_spikes": 80, + "last_ms": 999.5 + }, + { + "neuron_idx": 1511, + "spikes": 159, + "late_spikes": 80, + "last_ms": 997.4000000000001 + }, + { + "neuron_idx": 82312, + "spikes": 13, + "late_spikes": 7, + "last_ms": 992.4000000000001 + }, + { + "neuron_idx": 133666, + "spikes": 119, + "late_spikes": 60, + "last_ms": 996.0 + } + ], + "activity_is_not_a_validation_gate": true + }, + { + "motif": "feedforward", + "policy": "author_complete", + "precision": "float64", + "neurons": [ + { + "neuron_idx": 1197, + "spikes": 1, + "late_spikes": 0, + "last_ms": 10.4 + }, + { + "neuron_idx": 1381, + "spikes": 1, + "late_spikes": 0, + "last_ms": 0.0 + }, + { + "neuron_idx": 1511, + "spikes": 1, + "late_spikes": 0, + "last_ms": 5.1000000000000005 + }, + { + "neuron_idx": 82312, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + }, + { + "neuron_idx": 133666, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + } + ], + "activity_is_not_a_validation_gate": true + }, + { + "motif": "feedforward", + "policy": "author_complete", + "precision": "float32", + "neurons": [ + { + "neuron_idx": 1197, + "spikes": 1, + "late_spikes": 0, + "last_ms": 10.4 + }, + { + "neuron_idx": 1381, + "spikes": 1, + "late_spikes": 0, + "last_ms": 0.0 + }, + { + "neuron_idx": 1511, + "spikes": 1, + "late_spikes": 0, + "last_ms": 5.1000000000000005 + }, + { + "neuron_idx": 82312, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + }, + { + "neuron_idx": 133666, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + } + ], + "activity_is_not_a_validation_gate": true + }, + { + "motif": "no_input", + "policy": "author_complete", + "precision": "float64", + "neurons": [ + { + "neuron_idx": 1197, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + }, + { + "neuron_idx": 1381, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + }, + { + "neuron_idx": 1511, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + }, + { + "neuron_idx": 82312, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + }, + { + "neuron_idx": 133666, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + } + ], + "activity_is_not_a_validation_gate": true + }, + { + "motif": "no_input", + "policy": "author_complete", + "precision": "float32", + "neurons": [ + { + "neuron_idx": 1197, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + }, + { + "neuron_idx": 1381, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + }, + { + "neuron_idx": 1511, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + }, + { + "neuron_idx": 82312, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + }, + { + "neuron_idx": 133666, + "spikes": 0, + "late_spikes": 0, + "last_ms": null + } + ], + "activity_is_not_a_validation_gate": true + } + ], + "run_complete_record": { + "name": "run_complete", + "pass": true, + "record": { + "all_author_oracle_comparisons_pass": true, + "all_frozen_components_match_archive": true, + "learning_achieved": false, + "whole_brain_alternative_run": false, + "author_original_source_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e" + } + }, + "whole_brain_alternative_run": false, + "conditioning_run": false, + "learning_achieved": false, + "candidate_generated": false, + "selected_variant": null, + "goal_remains_unachieved": true, + "limits": [ + "No whole-brain or learning experiment in this protocol.", + "No activity-based variant selection; silence is not a success gate.", + "Isolated motifs omit external network input and graded APL.", + "Author equations on MaleCNS motifs do not reproduce the original paper's full brain or sensory interface.", + "Linux host and Python patch differences prevent a binary-identical author-environment claim." + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/audit/finalize-start.json b/registry/phase4ad-author-semantics/evidence/audit/finalize-start.json new file mode 100644 index 0000000..ab6633b --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/audit/finalize-start.json @@ -0,0 +1,7 @@ +{ + "timestamp_utc": "2026-09-29T23:18:24.492697+00:00", + "python": "3.10.12 (main, Aug 31 2026, 10:18:17) [GCC 11.4.0]", + "executable": "/data/digital-drosophila/models/male-cns-lif/.venv/bin/python", + "learning": false, + "whole_brain_alternative_run": false +} diff --git a/registry/phase4ad-author-semantics/evidence/audit/run-complete.json b/registry/phase4ad-author-semantics/evidence/audit/run-complete.json new file mode 100644 index 0000000..02715ab --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/audit/run-complete.json @@ -0,0 +1,7 @@ +{ + "all_author_oracle_comparisons_pass": true, + "all_frozen_components_match_archive": true, + "learning_achieved": false, + "whole_brain_alternative_run": false, + "author_original_source_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e" +} diff --git a/registry/phase4ad-author-semantics/evidence/audit/run-start.json b/registry/phase4ad-author-semantics/evidence/audit/run-start.json new file mode 100644 index 0000000..8309cde --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/audit/run-start.json @@ -0,0 +1,16 @@ +{ + "python": "3.10.12 (main, Aug 31 2026, 10:18:17) [GCC 11.4.0]", + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "packages": { + "brian2": "2.5.1", + "numpy": "1.22.3", + "pandas": "1.4.3", + "scipy": "1.8.1", + "pyarrow": "11.0.0", + "sympy": "1.12", + "cython": "0.29.33" + }, + "codegen": "numpy", + "learning": false, + "user_authorized_new_model_hypotheses": true +} diff --git a/registry/phase4ad-author-semantics/evidence/checksums.sha256 b/registry/phase4ad-author-semantics/evidence/checksums.sha256 new file mode 100644 index 0000000..582d1cc --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/checksums.sha256 @@ -0,0 +1,566 @@ +98eeae824607e83d0b35483a7d5ac586aebe68044e2457188040086e62e78b42 REPORT.md +0b653f7362ec7b506766e78b78efaa82914df201844cdc71f6d70556d46204b5 audit/all-motif-results.csv +2037a37dcf74e28831676ca1583d07272dd2546540a95096db6623f2eafe1a87 audit/final-summary.json +b4fbf4a99a33b67af1329609591f7b553e41e99d760a0cf0e6f04fd1b3b33454 audit/finalize-start.json +3d5333dede7b368a94de91e206cd35cdf7e89614ac528fb00126178386a2d8b7 audit/run-complete.json +9480e2e1c299aeb6b6136eb7c1fdb0a733da5eadce3e32d674c3f89c1abd50c1 audit/run-start.json +7535cfeec9d160eb597a2a09930cd8d1a55a7c0f561f1b5907f68eb53e1453dd components/feedforward-frozen/events.csv +6a24c8d2ad476e2250af49172be12de9d43346bc84f043b19d012fa0c53d2fba components/feedforward-frozen/state.npz +7535cfeec9d160eb597a2a09930cd8d1a55a7c0f561f1b5907f68eb53e1453dd components/feedforward-refractory_gate_only/events.csv +7b9f9d9c4da0a6019c89da75365c995d641bd6f1ffd4741befcb28fa1ae5c8b2 components/feedforward-refractory_gate_only/state.npz +7535cfeec9d160eb597a2a09930cd8d1a55a7c0f561f1b5907f68eb53e1453dd components/feedforward-reset_and_refractory/events.csv +62b256fe806d17a345168593466f31410cc318099a812102cd38bd78735b9427 components/feedforward-reset_and_refractory/state.npz +7535cfeec9d160eb597a2a09930cd8d1a55a7c0f561f1b5907f68eb53e1453dd components/feedforward-reset_g_only/events.csv +62b256fe806d17a345168593466f31410cc318099a812102cd38bd78735b9427 components/feedforward-reset_g_only/state.npz +5cf5375573658738a15ef51adc56f283c212e00b20668c3015b8f7542a483240 components/five-frozen/events.csv +15095ada05014741f6b6576c2d12d1a8f1ae482ae6f012d5e2be346c796baf4b components/five-frozen/state.npz +e31b6aa017bdd4bef6725aedb6c1ac40bd9f52e4e59d5fe1a1e11b31ef6825dd components/five-refractory_gate_only/events.csv +949ba5fdae4b3bb3a3d86a9cadc2967ff313272668b00af6cf5734c6fb0eff67 components/five-refractory_gate_only/state.npz +5e9104d52c7573c6a22fbe823d500f53e86d41f04e929f177e92f0eebc1c1e46 components/five-reset_and_refractory/events.csv +8c123230afb9a7a648dc2e5f726c03f4efd1adbe4dfa10409a668496ba2e4c92 components/five-reset_and_refractory/state.npz +dfc35561b3c565297e5cf0c88db7438cf5787dac0f0c0cda21d17c2423d99233 components/five-reset_g_only/events.csv +41da696d2f01e833d6c9f8450f34f45e54c85cf47ef778414c1a3dd4db2d5ddd components/five-reset_g_only/state.npz +7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801 components/no_input-frozen/events.csv +a74134da72381d0dbff10bb5143691add6081487dede488a939bb0a4dbf5c20e components/no_input-frozen/state.npz +7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801 components/no_input-refractory_gate_only/events.csv +a74134da72381d0dbff10bb5143691add6081487dede488a939bb0a4dbf5c20e components/no_input-refractory_gate_only/state.npz +7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801 components/no_input-reset_and_refractory/events.csv +a74134da72381d0dbff10bb5143691add6081487dede488a939bb0a4dbf5c20e components/no_input-reset_and_refractory/state.npz +7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801 components/no_input-reset_g_only/events.csv +a74134da72381d0dbff10bb5143691add6081487dede488a939bb0a4dbf5c20e components/no_input-reset_g_only/state.npz +85269a9465c20d11da108514d8541d8be7c2e105915bbb312205af4cb79b6b4c components/pair-frozen/events.csv +924774344956dd5a530c3d00c8103fe4d1b584837d5e91f05b60094540a78897 components/pair-frozen/state.npz +227d89de52ad6a1cf890a194bd5f560865eb551332ad85947532841fa37e13d3 components/pair-refractory_gate_only/events.csv +16a00fbdb18bf782c511df1cc3cce617ea1fada9f713b647c604f4a5861c8876 components/pair-refractory_gate_only/state.npz +9d9a0ccc139e8edef78fb6e34d1f2de2514a6b3f8902454356afbc8cd6f5fdc8 components/pair-reset_and_refractory/events.csv +f195ee84569db48e70924a805caa11f72bdab2065401d5b50c5adff5896564dc components/pair-reset_and_refractory/state.npz +9d9a0ccc139e8edef78fb6e34d1f2de2514a6b3f8902454356afbc8cd6f5fdc8 components/pair-reset_g_only/events.csv +f195ee84569db48e70924a805caa11f72bdab2065401d5b50c5adff5896564dc components/pair-reset_g_only/state.npz +b20d807010ac88a7bef7165196c58715bfb94aa852db9f62bd4bf07e2760d52f components/summary.csv +4ea00ec307cf37524126d5e91c5916cb393b3eebd3b76fdb1aad8619de131c02 components/trio-frozen/events.csv +46c8a495ee1358a6173a2eebebe9ce2d6481b27f10e0c56cf9602c7969cd8702 components/trio-frozen/state.npz +3784ade444b9d85739c3e795b20b40ac5c16b294caa4d1a59be13388e31b8332 components/trio-refractory_gate_only/events.csv +2278ec172f905f6e6beef62beda868b2171bae07f60b5a1c270693aa5357028c components/trio-refractory_gate_only/state.npz +50a9639d41cfdb8a2e53c132276223656118b80ececaaa18d1a0951cb4147e58 components/trio-reset_and_refractory/events.csv +754164fa014a08999f56d6ea73830bf6fe92600b9e99b8c9d497ec935b9fd2ed components/trio-reset_and_refractory/state.npz +f55c81f358a41a9bad9836d2a2de4964072b914d6d9cef32f225eadf941a94b7 components/trio-reset_g_only/events.csv +a646d329fc8526d59f836fd0c51e970b65866c85b3e167c68bcce87e16e128e4 components/trio-reset_g_only/state.npz +aa7d319154306833890ca93542252f78996e96b080e55a9337d7f2da222a7445 environment/bootstrap-notes.json +5acd7aa5a1825e5c053e9f4166f58cd9ec04129ed88f00afcdab2aa6ca204ca5 environment/frozen-scientific-environment.json +e2e9301ade63e6ca44635f5b28271a4368b8e2393b1bd935e57e173f685c6f9c environment/install-report.json +0175910c6265813bfd8cf7e2dcaed5a7decabb85072894a04b2c642a222ac298 environment/installed-packages.json +3621f6d6476189190e2960fa43f11b275ba4eca848fdac50a1ba2925de6223e8 external-resources/LICENSE +402fcef4968c99397b0e908b3323ab9e6ef86af5583e46e6427f96f3d1091adf external-resources/environment_full.yml +fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e external-resources/model.py +6d915bc355cb804bce5146e1e9b8b68d7e94703024a718baaba54239f131b266 gpu-reference/extension-build/.ninja_deps +cf068429fad6783a4f8fd56e8280f76f870abebc0bc4d3796df2895e75e50c3c gpu-reference/extension-build/.ninja_log +c570f72b9a2f486e104ed3bf5b1b9f2ccc729ecab02046cd62389d629fb4f48f gpu-reference/extension-build/build.ninja +e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 gpu-reference/extension-build/lock +57f59f634cc8e3b03f4674a3ddb11ec933ab124feb0b9fa89d08fe26e60fcb7e gpu-reference/extension-build/male_cns_lif_deterministic_v2_ext.so +38680c6d618e1d4f26cf361a018de024ba148cf2c90bbfdde65fb8167643f5ba gpu-reference/extension-build/phase4p_ext.cuda.o +27d284f6a369221a931251b5a03ce133cc8231a97942567d4efafbfb45483811 gpu-reference/extension-build/phase4p_ext.o +ca5c82cc34d586d84bb93f4ebdbfba0d1d91578a61d79c271225a44cd5b76376 gpu-reference/extension.json +fce02b56f14b171ff3e5e38de15c700a6281d405a9802b859065f04292c61d2c oracle/feedforward-float32/actual-weights.json +953b4c2f26e2846de67b40b22a19c2f59b29ff6fb56339925a01f110c6c1705e oracle/feedforward-float32/brian-output/events.csv +e1f07d0a74694edf97b75da62c8fc35371cd65c85828f90c418385498eccab7a oracle/feedforward-float32/brian-output/state.npz +f29dddd95d78ae0906b6902d6acd82454ca0cc3d652374728f5b8125849b23a5 oracle/feedforward-float32/comparison.json +301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5 oracle/feedforward-float32/completeness.csv +627406997fa994afffa6c4df18cc584c43f4161b389a6669c2ceb64e5ae9dcd1 oracle/feedforward-float32/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/feedforward-float32/environment.json +c65430d57ed21024c267316d854123ccc14cde79f7acb9ba9c34b1ce4e20665f oracle/feedforward-float32/generated-code.json +953b4c2f26e2846de67b40b22a19c2f59b29ff6fb56339925a01f110c6c1705e oracle/feedforward-float32/independent-output/events.csv +1a6f4be5a8418a74ea559bf96e587795c41fe987e147d49c28ac5759633e6c70 oracle/feedforward-float32/independent-output/state.npz +7528f0de24d434d08024d011adae364ac60e0211e2d0b176d655bd015c22e0c8 oracle/feedforward-float32/run-spec.json +d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d oracle/feedforward-float32/schedule.json +335b295513fed2a617775adf590894234644c8bdf7268851434737d94e146208 oracle/feedforward-float32/seed.json +fce02b56f14b171ff3e5e38de15c700a6281d405a9802b859065f04292c61d2c oracle/feedforward-float32-repeat/actual-weights.json +953b4c2f26e2846de67b40b22a19c2f59b29ff6fb56339925a01f110c6c1705e oracle/feedforward-float32-repeat/brian-output/events.csv +e1f07d0a74694edf97b75da62c8fc35371cd65c85828f90c418385498eccab7a oracle/feedforward-float32-repeat/brian-output/state.npz +301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5 oracle/feedforward-float32-repeat/completeness.csv +627406997fa994afffa6c4df18cc584c43f4161b389a6669c2ceb64e5ae9dcd1 oracle/feedforward-float32-repeat/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/feedforward-float32-repeat/environment.json +77e30078f96559ccfddb3b75bd3aaf3c76a137c0c045aa986c0348518ed1ac9f oracle/feedforward-float32-repeat/generated-code.json +7528f0de24d434d08024d011adae364ac60e0211e2d0b176d655bd015c22e0c8 oracle/feedforward-float32-repeat/run-spec.json +d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d oracle/feedforward-float32-repeat/schedule.json +335b295513fed2a617775adf590894234644c8bdf7268851434737d94e146208 oracle/feedforward-float32-repeat/seed.json +5ae7652487b5fb80bb88586fe94344d8bc83ec046189e9385338d0bfd2323457 oracle/feedforward-float64/actual-weights.json +953b4c2f26e2846de67b40b22a19c2f59b29ff6fb56339925a01f110c6c1705e oracle/feedforward-float64/brian-output/events.csv +968e7990aa8a734a63ee61fef198ad6ae8372f6c676722c67e52c3708a428f71 oracle/feedforward-float64/brian-output/state.npz +317ab6c723ce928c1f019b85a833134400254991e49a9845a8f051b854963020 oracle/feedforward-float64/comparison.json +301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5 oracle/feedforward-float64/completeness.csv +627406997fa994afffa6c4df18cc584c43f4161b389a6669c2ceb64e5ae9dcd1 oracle/feedforward-float64/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/feedforward-float64/environment.json +b8fcc2d1cb77b83b28fdbf6af1097556fdae8cc73508a5f1c6a58efa3ed4573c oracle/feedforward-float64/generated-code.json +953b4c2f26e2846de67b40b22a19c2f59b29ff6fb56339925a01f110c6c1705e oracle/feedforward-float64/independent-output/events.csv +2e3c2dd8d569277706a471f8a7b0bee8af4d58f7c728b85df38addae526bcaa5 oracle/feedforward-float64/independent-output/state.npz +f374b342910fab0110369cb5b9b2daf53e40e4c50b881a027fcafb5a5d00d532 oracle/feedforward-float64/run-spec.json +d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d oracle/feedforward-float64/schedule.json +ea838909a3dcfabd586cf4181eb6788ed791472fc5f64556fc5e88004906d242 oracle/feedforward-float64/seed.json +5ae7652487b5fb80bb88586fe94344d8bc83ec046189e9385338d0bfd2323457 oracle/feedforward-float64-repeat/actual-weights.json +953b4c2f26e2846de67b40b22a19c2f59b29ff6fb56339925a01f110c6c1705e oracle/feedforward-float64-repeat/brian-output/events.csv +968e7990aa8a734a63ee61fef198ad6ae8372f6c676722c67e52c3708a428f71 oracle/feedforward-float64-repeat/brian-output/state.npz +301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5 oracle/feedforward-float64-repeat/completeness.csv +627406997fa994afffa6c4df18cc584c43f4161b389a6669c2ceb64e5ae9dcd1 oracle/feedforward-float64-repeat/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/feedforward-float64-repeat/environment.json +f7e9a9b47c364eb2ffe7691be257c6b06aa3f80f1f3eb4658e75b54636278efd oracle/feedforward-float64-repeat/generated-code.json +f374b342910fab0110369cb5b9b2daf53e40e4c50b881a027fcafb5a5d00d532 oracle/feedforward-float64-repeat/run-spec.json +d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d oracle/feedforward-float64-repeat/schedule.json +ea838909a3dcfabd586cf4181eb6788ed791472fc5f64556fc5e88004906d242 oracle/feedforward-float64-repeat/seed.json +87c7305d5b8ffcd9f117485921900ace6ad76e9629e44bd5fde5d0fcad9ff4da oracle/five-float32/actual-weights.json +80b2ac9efc7aa1db0ed7e8922f8e9d464c4a2417248be1435454316c47f00ee2 oracle/five-float32/brian-output/events.csv +55580de4130341e93379ebd2ea8065dfa9b86a1d64df6010f3908457c5f98818 oracle/five-float32/brian-output/state.npz +a66d6a4fbcc48be5208800e6b6ad0fa69c1604b242821bb74e562c77a5e67d3f oracle/five-float32/comparison.json +301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5 oracle/five-float32/completeness.csv +43ea5a3c6c53315e9265863a6f05b3e6d8e9b9f299aef665e8bbe9c46f9eb2ce oracle/five-float32/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/five-float32/environment.json +b80159b10b6e2822bdb83230d2a6f56213836992d15e3facd3c9f10789a9aaf6 oracle/five-float32/generated-code.json +80b2ac9efc7aa1db0ed7e8922f8e9d464c4a2417248be1435454316c47f00ee2 oracle/five-float32/independent-output/events.csv +027def19ce4441508a7736ee1185469c6714c8eb3cb1e2b37e189da7c6bec597 oracle/five-float32/independent-output/state.npz +303346fc360a675c71c0598e3a99bf5a6a6f5bc2aafbe4889668333c4183357c oracle/five-float32/run-spec.json +d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d oracle/five-float32/schedule.json +335b295513fed2a617775adf590894234644c8bdf7268851434737d94e146208 oracle/five-float32/seed.json +87c7305d5b8ffcd9f117485921900ace6ad76e9629e44bd5fde5d0fcad9ff4da oracle/five-float32-repeat/actual-weights.json +80b2ac9efc7aa1db0ed7e8922f8e9d464c4a2417248be1435454316c47f00ee2 oracle/five-float32-repeat/brian-output/events.csv +55580de4130341e93379ebd2ea8065dfa9b86a1d64df6010f3908457c5f98818 oracle/five-float32-repeat/brian-output/state.npz +301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5 oracle/five-float32-repeat/completeness.csv +43ea5a3c6c53315e9265863a6f05b3e6d8e9b9f299aef665e8bbe9c46f9eb2ce oracle/five-float32-repeat/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/five-float32-repeat/environment.json +b3e1a32ea67bcbb51205dbdb80c88d127e42328b965102c695820877b9857e43 oracle/five-float32-repeat/generated-code.json +303346fc360a675c71c0598e3a99bf5a6a6f5bc2aafbe4889668333c4183357c oracle/five-float32-repeat/run-spec.json +d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d oracle/five-float32-repeat/schedule.json +335b295513fed2a617775adf590894234644c8bdf7268851434737d94e146208 oracle/five-float32-repeat/seed.json +7cf304b269ed2c25edb9040b91c2ed10d1f335b6be59b819f5f23ede2ae6757c oracle/five-float64/actual-weights.json +80b2ac9efc7aa1db0ed7e8922f8e9d464c4a2417248be1435454316c47f00ee2 oracle/five-float64/brian-output/events.csv +a59c994e53f70fb895b1009b9b074e32aa0aa51b9419848e96e54aa71cdd046d oracle/five-float64/brian-output/state.npz +b6b9e1736743bb4f282ecd354e83e027f506ee4583e7cb7c070b9ba60d99253a oracle/five-float64/comparison.json +301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5 oracle/five-float64/completeness.csv +43ea5a3c6c53315e9265863a6f05b3e6d8e9b9f299aef665e8bbe9c46f9eb2ce oracle/five-float64/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/five-float64/environment.json +fc6c228a1f24c65b5172799dfaa2568cdb615db639226022e10cced292099fe2 oracle/five-float64/generated-code.json +80b2ac9efc7aa1db0ed7e8922f8e9d464c4a2417248be1435454316c47f00ee2 oracle/five-float64/independent-output/events.csv +938e04a8a4594297405f5f2bd28b4bd3f7c7bdb45172c4000c239bf867e95d6e oracle/five-float64/independent-output/state.npz +101e0cf3fb3fb2ce75e8f0cb6526285f66026317a5e550716363c1d1ff928265 oracle/five-float64/run-spec.json +d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d oracle/five-float64/schedule.json +ea838909a3dcfabd586cf4181eb6788ed791472fc5f64556fc5e88004906d242 oracle/five-float64/seed.json +7cf304b269ed2c25edb9040b91c2ed10d1f335b6be59b819f5f23ede2ae6757c oracle/five-float64-repeat/actual-weights.json +80b2ac9efc7aa1db0ed7e8922f8e9d464c4a2417248be1435454316c47f00ee2 oracle/five-float64-repeat/brian-output/events.csv +a59c994e53f70fb895b1009b9b074e32aa0aa51b9419848e96e54aa71cdd046d oracle/five-float64-repeat/brian-output/state.npz +301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5 oracle/five-float64-repeat/completeness.csv +43ea5a3c6c53315e9265863a6f05b3e6d8e9b9f299aef665e8bbe9c46f9eb2ce oracle/five-float64-repeat/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/five-float64-repeat/environment.json +a0f43549be169ed0ab0b8193779e79f45b140a43ca19e73062d3617ab98e6abb oracle/five-float64-repeat/generated-code.json +101e0cf3fb3fb2ce75e8f0cb6526285f66026317a5e550716363c1d1ff928265 oracle/five-float64-repeat/run-spec.json +d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d oracle/five-float64-repeat/schedule.json +ea838909a3dcfabd586cf4181eb6788ed791472fc5f64556fc5e88004906d242 oracle/five-float64-repeat/seed.json +87c7305d5b8ffcd9f117485921900ace6ad76e9629e44bd5fde5d0fcad9ff4da oracle/no_input-float32/actual-weights.json +7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801 oracle/no_input-float32/brian-output/events.csv +14c95cbc13ff15e775adb758dc57b7cf0658def99dc554facff8f4f4030c3630 oracle/no_input-float32/brian-output/state.npz +e7ac75d3c7853ec3526b7dc1bdd7f94ccba58b4392c2a704ac4bc25b34130ce5 oracle/no_input-float32/comparison.json +301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5 oracle/no_input-float32/completeness.csv +43ea5a3c6c53315e9265863a6f05b3e6d8e9b9f299aef665e8bbe9c46f9eb2ce oracle/no_input-float32/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/no_input-float32/environment.json +51391a395fd7e4608f1b17621601e3ffbe251a18f719623e5d5267ffd070deab oracle/no_input-float32/generated-code.json +7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801 oracle/no_input-float32/independent-output/events.csv +59f38c3dea1c88fcc492614dffc36cdc8771b6cb1904d82e2834262026808a15 oracle/no_input-float32/independent-output/state.npz +c23e196bc4701ec1c085fe9d6eb81167bfa3300181de8390bc6d6be22374e5d9 oracle/no_input-float32/run-spec.json +a0ae45ec1bd5e9ad66296742ebb857263b1bde14ca260bbba260b570d359dcd5 oracle/no_input-float32/schedule.json +77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830 oracle/no_input-float32/seed.json +87c7305d5b8ffcd9f117485921900ace6ad76e9629e44bd5fde5d0fcad9ff4da oracle/no_input-float32-repeat/actual-weights.json +7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801 oracle/no_input-float32-repeat/brian-output/events.csv +14c95cbc13ff15e775adb758dc57b7cf0658def99dc554facff8f4f4030c3630 oracle/no_input-float32-repeat/brian-output/state.npz +301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5 oracle/no_input-float32-repeat/completeness.csv +43ea5a3c6c53315e9265863a6f05b3e6d8e9b9f299aef665e8bbe9c46f9eb2ce oracle/no_input-float32-repeat/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/no_input-float32-repeat/environment.json +bee4c08cf69cb20302b0a4dea5ea76fe44bc6ae32ac869cd4c415a8719efb6b3 oracle/no_input-float32-repeat/generated-code.json +c23e196bc4701ec1c085fe9d6eb81167bfa3300181de8390bc6d6be22374e5d9 oracle/no_input-float32-repeat/run-spec.json +a0ae45ec1bd5e9ad66296742ebb857263b1bde14ca260bbba260b570d359dcd5 oracle/no_input-float32-repeat/schedule.json +77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830 oracle/no_input-float32-repeat/seed.json +7cf304b269ed2c25edb9040b91c2ed10d1f335b6be59b819f5f23ede2ae6757c oracle/no_input-float64/actual-weights.json +7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801 oracle/no_input-float64/brian-output/events.csv +e9ca16e82b3fa11b6ce38f258d15a3c5d2666c4b8ac2c05e481ae2c6462666c1 oracle/no_input-float64/brian-output/state.npz +34382539f3576746462c29b584d5c3efbcc827f434e5c55d399c58e0fe5212f7 oracle/no_input-float64/comparison.json +301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5 oracle/no_input-float64/completeness.csv +43ea5a3c6c53315e9265863a6f05b3e6d8e9b9f299aef665e8bbe9c46f9eb2ce oracle/no_input-float64/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/no_input-float64/environment.json +70ea4ff3fd649f4303c189e58980b7c0aa628694c3cedfcb37aa2ccae1d6c079 oracle/no_input-float64/generated-code.json +7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801 oracle/no_input-float64/independent-output/events.csv +27070591642beb87f800b700c4b6fe7ea474a2e5a9b1b3ed82cd6de0e854d501 oracle/no_input-float64/independent-output/state.npz +9de22a53132abac0de19554f76a0737cb81b62bea257813962b75dbd633b8978 oracle/no_input-float64/run-spec.json +a0ae45ec1bd5e9ad66296742ebb857263b1bde14ca260bbba260b570d359dcd5 oracle/no_input-float64/schedule.json +77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830 oracle/no_input-float64/seed.json +7cf304b269ed2c25edb9040b91c2ed10d1f335b6be59b819f5f23ede2ae6757c oracle/no_input-float64-repeat/actual-weights.json +7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801 oracle/no_input-float64-repeat/brian-output/events.csv +e9ca16e82b3fa11b6ce38f258d15a3c5d2666c4b8ac2c05e481ae2c6462666c1 oracle/no_input-float64-repeat/brian-output/state.npz +301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5 oracle/no_input-float64-repeat/completeness.csv +43ea5a3c6c53315e9265863a6f05b3e6d8e9b9f299aef665e8bbe9c46f9eb2ce oracle/no_input-float64-repeat/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/no_input-float64-repeat/environment.json +3db565a7f030aafed20764a918587a86fab4ba509c223e58027bc2e12b5bb8a5 oracle/no_input-float64-repeat/generated-code.json +9de22a53132abac0de19554f76a0737cb81b62bea257813962b75dbd633b8978 oracle/no_input-float64-repeat/run-spec.json +a0ae45ec1bd5e9ad66296742ebb857263b1bde14ca260bbba260b570d359dcd5 oracle/no_input-float64-repeat/schedule.json +77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830 oracle/no_input-float64-repeat/seed.json +3056ff61f015cfa9572b32d18aeebf0e79a877c6c37a1b429c90e385bba08d07 oracle/pair-float32/actual-weights.json +0c40dff2cecdd85cb64a03156c3ca7b538ba2046756844ab84b26db830d0e7bd oracle/pair-float32/brian-output/events.csv +e559d89af8d1ca4774fa5f53446381a4b9b55d88e52ea3b3baaaf68d2de3fce7 oracle/pair-float32/brian-output/state.npz +3e53a79835ecc9e5306577e20a7952a36844407750be7455d2ccd53a49823ee5 oracle/pair-float32/comparison.json +5af02939034e66e7a8e7c361555203906d69bbba0042b1ab549041db1626f02b oracle/pair-float32/completeness.csv +1072f50d478d1890de7602c48f6a7f1b89e11a665a173e7a705a5fab3b3f8771 oracle/pair-float32/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/pair-float32/environment.json +8c1278d8e1e4b028900e0353f7f9800300dad618be28e028714c7c1889a64099 oracle/pair-float32/generated-code.json +0c40dff2cecdd85cb64a03156c3ca7b538ba2046756844ab84b26db830d0e7bd oracle/pair-float32/independent-output/events.csv +fcaee342515e8a92a46ee1df7b63a83f38fa950a77bc12d173930f91136dbcba oracle/pair-float32/independent-output/state.npz +be400c1c9248322775cb9bb2c23a8ab4b4bb536f220c955806f194718191b6de oracle/pair-float32/run-spec.json +d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d oracle/pair-float32/schedule.json +335b295513fed2a617775adf590894234644c8bdf7268851434737d94e146208 oracle/pair-float32/seed.json +3056ff61f015cfa9572b32d18aeebf0e79a877c6c37a1b429c90e385bba08d07 oracle/pair-float32-repeat/actual-weights.json +0c40dff2cecdd85cb64a03156c3ca7b538ba2046756844ab84b26db830d0e7bd oracle/pair-float32-repeat/brian-output/events.csv +e559d89af8d1ca4774fa5f53446381a4b9b55d88e52ea3b3baaaf68d2de3fce7 oracle/pair-float32-repeat/brian-output/state.npz +5af02939034e66e7a8e7c361555203906d69bbba0042b1ab549041db1626f02b oracle/pair-float32-repeat/completeness.csv +1072f50d478d1890de7602c48f6a7f1b89e11a665a173e7a705a5fab3b3f8771 oracle/pair-float32-repeat/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/pair-float32-repeat/environment.json +110a0b1d596da82dfad41024ac1b00ab636b0e5e927a7108782af257b21ae3c2 oracle/pair-float32-repeat/generated-code.json +be400c1c9248322775cb9bb2c23a8ab4b4bb536f220c955806f194718191b6de oracle/pair-float32-repeat/run-spec.json +d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d oracle/pair-float32-repeat/schedule.json +335b295513fed2a617775adf590894234644c8bdf7268851434737d94e146208 oracle/pair-float32-repeat/seed.json +8a3f9d74c53e9cf8eb01c82be313c29b5f82efe15e2a23aba463f6de3a36a791 oracle/pair-float64/actual-weights.json +0c40dff2cecdd85cb64a03156c3ca7b538ba2046756844ab84b26db830d0e7bd oracle/pair-float64/brian-output/events.csv +df0486fc1a7865b85d88dfcb41170233dac2063af28246b6c5043903a4a817ca oracle/pair-float64/brian-output/state.npz +15a03555e6cd6f5df21587c3ce23a75c7ec6a112bc20153e53a8286a1801060e oracle/pair-float64/comparison.json +5af02939034e66e7a8e7c361555203906d69bbba0042b1ab549041db1626f02b oracle/pair-float64/completeness.csv +1072f50d478d1890de7602c48f6a7f1b89e11a665a173e7a705a5fab3b3f8771 oracle/pair-float64/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/pair-float64/environment.json +8c1278d8e1e4b028900e0353f7f9800300dad618be28e028714c7c1889a64099 oracle/pair-float64/generated-code.json +0c40dff2cecdd85cb64a03156c3ca7b538ba2046756844ab84b26db830d0e7bd oracle/pair-float64/independent-output/events.csv +b3e98ff351b1a3290371de6e95628ed4026c34bf59720ba4b63d04fdcb879e48 oracle/pair-float64/independent-output/state.npz +a54ed0bc7bafe0d45f951255cdda987a5e4e2433a98cac45c1c3b4f9141d7c65 oracle/pair-float64/run-spec.json +d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d oracle/pair-float64/schedule.json +ea838909a3dcfabd586cf4181eb6788ed791472fc5f64556fc5e88004906d242 oracle/pair-float64/seed.json +8a3f9d74c53e9cf8eb01c82be313c29b5f82efe15e2a23aba463f6de3a36a791 oracle/pair-float64-repeat/actual-weights.json +0c40dff2cecdd85cb64a03156c3ca7b538ba2046756844ab84b26db830d0e7bd oracle/pair-float64-repeat/brian-output/events.csv +df0486fc1a7865b85d88dfcb41170233dac2063af28246b6c5043903a4a817ca oracle/pair-float64-repeat/brian-output/state.npz +5af02939034e66e7a8e7c361555203906d69bbba0042b1ab549041db1626f02b oracle/pair-float64-repeat/completeness.csv +1072f50d478d1890de7602c48f6a7f1b89e11a665a173e7a705a5fab3b3f8771 oracle/pair-float64-repeat/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/pair-float64-repeat/environment.json +86fd33e9730c1d4675224eaff6ecc4feaf9808e58f51c93e7df252c821998736 oracle/pair-float64-repeat/generated-code.json +a54ed0bc7bafe0d45f951255cdda987a5e4e2433a98cac45c1c3b4f9141d7c65 oracle/pair-float64-repeat/run-spec.json +d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d oracle/pair-float64-repeat/schedule.json +ea838909a3dcfabd586cf4181eb6788ed791472fc5f64556fc5e88004906d242 oracle/pair-float64-repeat/seed.json +4a8bf9f0e2c4954cea97b7c6eebebf422196641047c31935017d81268ab576f5 oracle/poi-interface/audit.json +06e601b217fdbc48eee57eac01cc9a9fa649ec2a1810a2e212efcd3e4b632303 oracle/poi-interface/completeness.csv +34f12d50889ccf2e637d913a0f3c4104d49032a6a67f9c3fbcd52e68ce95d701 oracle/poi-interface/connectivity.parquet +1e7bcd97221db01bba542320601325572330ffe2a867607d3105d0417c2850ae oracle/poi-interface/environment.json +eb11dd4b866c1fb80ec414b55335e1263fc041cddc46d098d523c6fd52c297ef oracle/poi-interface/generated-code.json +eac8d994e23c5fbb5fff6b537f24d759b0000793d9fd7938669e45b1242b0410 oracle/poi-interface/schedule.json +d1fe988c385189af8d4ea1879eb7f863115a35f881a06f3d4c61b6cb2357eb6d oracle/trio-float32/actual-weights.json +7ae48f3fb283fda9f19b47215e23b6f8fe7b2f0265e400b5620acf98fed9c053 oracle/trio-float32/brian-output/events.csv +5cfe47ae0e456407c1c26a04c6a29b2daaa5fa2a264a4275b12d674dcd5ca027 oracle/trio-float32/brian-output/state.npz +29510d4a5da61d412f4a5b852c793744983bc9b5a761fd3d175e8b7d5178777d oracle/trio-float32/comparison.json +e8795d5efb2eebefaae419c6df6d18d3cea3c390d9df7987f55823f5a860169e oracle/trio-float32/completeness.csv +22570cdceb09128d4bde46fd75897af776f7d91d89b8581d13133f55779f1e91 oracle/trio-float32/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/trio-float32/environment.json +795226925d44b77912780f62a0881256e964a80baf362dfcf3173643ca417bbe oracle/trio-float32/generated-code.json +7ae48f3fb283fda9f19b47215e23b6f8fe7b2f0265e400b5620acf98fed9c053 oracle/trio-float32/independent-output/events.csv +60645b816f9ba7f5ff6a5ab91bff6c070546d07ef2f0565b1f7cff77b5d47145 oracle/trio-float32/independent-output/state.npz +391b9abfa2f300cc624185f4fe87bea1ed9417921c40ce4f71e7a9ed19777662 oracle/trio-float32/run-spec.json +d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d oracle/trio-float32/schedule.json +335b295513fed2a617775adf590894234644c8bdf7268851434737d94e146208 oracle/trio-float32/seed.json +d1fe988c385189af8d4ea1879eb7f863115a35f881a06f3d4c61b6cb2357eb6d oracle/trio-float32-repeat/actual-weights.json +7ae48f3fb283fda9f19b47215e23b6f8fe7b2f0265e400b5620acf98fed9c053 oracle/trio-float32-repeat/brian-output/events.csv +5cfe47ae0e456407c1c26a04c6a29b2daaa5fa2a264a4275b12d674dcd5ca027 oracle/trio-float32-repeat/brian-output/state.npz +e8795d5efb2eebefaae419c6df6d18d3cea3c390d9df7987f55823f5a860169e oracle/trio-float32-repeat/completeness.csv +22570cdceb09128d4bde46fd75897af776f7d91d89b8581d13133f55779f1e91 oracle/trio-float32-repeat/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/trio-float32-repeat/environment.json +fc6c228a1f24c65b5172799dfaa2568cdb615db639226022e10cced292099fe2 oracle/trio-float32-repeat/generated-code.json +391b9abfa2f300cc624185f4fe87bea1ed9417921c40ce4f71e7a9ed19777662 oracle/trio-float32-repeat/run-spec.json +d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d oracle/trio-float32-repeat/schedule.json +335b295513fed2a617775adf590894234644c8bdf7268851434737d94e146208 oracle/trio-float32-repeat/seed.json +21ab46d0419138b16b0407d31b4acde4a25f7016beb9e65a0c3a358707ee8565 oracle/trio-float64/actual-weights.json +7ae48f3fb283fda9f19b47215e23b6f8fe7b2f0265e400b5620acf98fed9c053 oracle/trio-float64/brian-output/events.csv +fc2be53c305f1b7d08934aa4a8550bc125bbf5a42a31cab7cb21f74e253d45b0 oracle/trio-float64/brian-output/state.npz +a7c9b2a63b57539e5ac0eefcc2943558b617f67afa3841873e95ca2e44d7db0b oracle/trio-float64/comparison.json +e8795d5efb2eebefaae419c6df6d18d3cea3c390d9df7987f55823f5a860169e oracle/trio-float64/completeness.csv +22570cdceb09128d4bde46fd75897af776f7d91d89b8581d13133f55779f1e91 oracle/trio-float64/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/trio-float64/environment.json +9b0f5455ef57b378efa1099b79d8285fe8f6d41a480ada58e57c2748b8cba02f oracle/trio-float64/generated-code.json +7ae48f3fb283fda9f19b47215e23b6f8fe7b2f0265e400b5620acf98fed9c053 oracle/trio-float64/independent-output/events.csv +83cf9d1a3e9e73b5f2a95a52cbc005a56ccb893e4990c4bc06f7c9393577788c oracle/trio-float64/independent-output/state.npz +2d3c683e78db15aa7ee8aea0ac79ed51f44dacc8618b3419bb591811060d2cf1 oracle/trio-float64/run-spec.json +d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d oracle/trio-float64/schedule.json +ea838909a3dcfabd586cf4181eb6788ed791472fc5f64556fc5e88004906d242 oracle/trio-float64/seed.json +21ab46d0419138b16b0407d31b4acde4a25f7016beb9e65a0c3a358707ee8565 oracle/trio-float64-repeat/actual-weights.json +7ae48f3fb283fda9f19b47215e23b6f8fe7b2f0265e400b5620acf98fed9c053 oracle/trio-float64-repeat/brian-output/events.csv +fc2be53c305f1b7d08934aa4a8550bc125bbf5a42a31cab7cb21f74e253d45b0 oracle/trio-float64-repeat/brian-output/state.npz +e8795d5efb2eebefaae419c6df6d18d3cea3c390d9df7987f55823f5a860169e oracle/trio-float64-repeat/completeness.csv +22570cdceb09128d4bde46fd75897af776f7d91d89b8581d13133f55779f1e91 oracle/trio-float64-repeat/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/trio-float64-repeat/environment.json +795226925d44b77912780f62a0881256e964a80baf362dfcf3173643ca417bbe oracle/trio-float64-repeat/generated-code.json +2d3c683e78db15aa7ee8aea0ac79ed51f44dacc8618b3419bb591811060d2cf1 oracle/trio-float64-repeat/run-spec.json +d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d oracle/trio-float64-repeat/schedule.json +ea838909a3dcfabd586cf4181eb6788ed791472fc5f64556fc5e88004906d242 oracle/trio-float64-repeat/seed.json +db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b oracle/unit-above_threshold-float32/actual-weights.json +cfad3e3ae7578e64365753675ead4358495da79ee379d78e192172b50a688023 oracle/unit-above_threshold-float32/brian-output/events.csv +367bda1dee3a6bd6c9e04afab7ef93f835cabd9329f7eb7d5b51adab2e5e07d9 oracle/unit-above_threshold-float32/brian-output/state.npz +e7ac75d3c7853ec3526b7dc1bdd7f94ccba58b4392c2a704ac4bc25b34130ce5 oracle/unit-above_threshold-float32/comparison.json +6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466 oracle/unit-above_threshold-float32/completeness.csv +27046e66bff85457b7945c5646ae0ac6f94d59065846dee47cfe90aacaee9ec1 oracle/unit-above_threshold-float32/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/unit-above_threshold-float32/environment.json +c5982c3d7ddbb031347cb389692bd9e78b4d851732d4192ca8d9db1f5ce31128 oracle/unit-above_threshold-float32/external-arrivals.csv +8c1278d8e1e4b028900e0353f7f9800300dad618be28e028714c7c1889a64099 oracle/unit-above_threshold-float32/generated-code.json +cfad3e3ae7578e64365753675ead4358495da79ee379d78e192172b50a688023 oracle/unit-above_threshold-float32/independent-output/events.csv +255a185d372d457eaf15e2512db78751f0d994fd6a3969bd3b5e3095ef6628bb oracle/unit-above_threshold-float32/independent-output/state.npz +05cc155e6979dea2f1aad7cf64fad64e2cb2f8e6b3578d6bc1948b27c8bda779 oracle/unit-above_threshold-float32/run-spec.json +d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d oracle/unit-above_threshold-float32/schedule.json +a6f4b88a4b799a7ac2b91764d632dbf3e05b16535a9c5ab64ad59092902db88e oracle/unit-above_threshold-float32/seed.json +db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b oracle/unit-above_threshold-float64/actual-weights.json +cfad3e3ae7578e64365753675ead4358495da79ee379d78e192172b50a688023 oracle/unit-above_threshold-float64/brian-output/events.csv +d2796957a5a007cf0fb8a491565fca7017109ca792207bf88e7885a2d139da8e oracle/unit-above_threshold-float64/brian-output/state.npz +34382539f3576746462c29b584d5c3efbcc827f434e5c55d399c58e0fe5212f7 oracle/unit-above_threshold-float64/comparison.json +6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466 oracle/unit-above_threshold-float64/completeness.csv +27046e66bff85457b7945c5646ae0ac6f94d59065846dee47cfe90aacaee9ec1 oracle/unit-above_threshold-float64/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/unit-above_threshold-float64/environment.json +c5982c3d7ddbb031347cb389692bd9e78b4d851732d4192ca8d9db1f5ce31128 oracle/unit-above_threshold-float64/external-arrivals.csv +260ff4764dbbad4c87966c46d61f804b146c9c3b98ab50db2bd135aa33086050 oracle/unit-above_threshold-float64/generated-code.json +cfad3e3ae7578e64365753675ead4358495da79ee379d78e192172b50a688023 oracle/unit-above_threshold-float64/independent-output/events.csv +aadd0c427beb534c78f62d64459ad2403981654d4c6df18d3d0538c0a867a010 oracle/unit-above_threshold-float64/independent-output/state.npz +caabe9c7956d99f38f6cdc7f08bc81501186998221f4f9fb6c2d77fa68e9398b oracle/unit-above_threshold-float64/run-spec.json +d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d oracle/unit-above_threshold-float64/schedule.json +05b71129e058b3685e2913a4ea737a387b407b09f521670ec4b00d19c9e3eac5 oracle/unit-above_threshold-float64/seed.json +c9b7702f929fe1e2a3d5bdaa673994de0db223fff4e09b52e7c5759c2b972e32 oracle/unit-delay_18-float32/actual-weights.json +10b1b3eda316d86e0df6180a7e00c914528fcb0949728895ba25605d11e409b3 oracle/unit-delay_18-float32/brian-output/events.csv +bf6177ae609e33c81f46afb499da962aa82ea493b172377d690e5842e42a9017 oracle/unit-delay_18-float32/brian-output/state.npz +37f394b3a181d7f99431910bba73c4b11d83379bb33525e5f93aad4903121c3f oracle/unit-delay_18-float32/comparison.json +843dba272f8f33a966eb902023ed2851be0f0316ea02245d48b613f72b38785b oracle/unit-delay_18-float32/completeness.csv +e69f1527a0dcdb8de465ae38a9264124ac14e96277daab69c178f6ef5e987555 oracle/unit-delay_18-float32/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/unit-delay_18-float32/environment.json +1628ba80041d8f31231e9c809ab0fcb48062bb957ec98d3f8b5d4b0e6bb78137 oracle/unit-delay_18-float32/generated-code.json +10b1b3eda316d86e0df6180a7e00c914528fcb0949728895ba25605d11e409b3 oracle/unit-delay_18-float32/independent-output/events.csv +46abab9351e62c525c17fef31edbefc400e8322362188ea1c9d9c20fcf1d0f30 oracle/unit-delay_18-float32/independent-output/state.npz +250f049da54ebe5be709647d7f5eff2bb16faf9931980bfbfdc45de75612953b oracle/unit-delay_18-float32/run-spec.json +d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d oracle/unit-delay_18-float32/schedule.json +242b26859a24e2fcc60597f50c28f4a52f08edfd42c38100c5964576cbc37ccc oracle/unit-delay_18-float32/seed.json +213ee768839567d5f119ae77d914541359f91a5a206ab6c7bf1a8293a29cc816 oracle/unit-delay_18-float64/actual-weights.json +10b1b3eda316d86e0df6180a7e00c914528fcb0949728895ba25605d11e409b3 oracle/unit-delay_18-float64/brian-output/events.csv +5f112e5aae8ee0e74347d508397ad2d4f7ec2ad149f4c00ea65ecf41c632d1cb oracle/unit-delay_18-float64/brian-output/state.npz +1a4ff3495394f915ef545e4e76101b0bd51a31bc93a3b566c6ba0f8273ba51ba oracle/unit-delay_18-float64/comparison.json +843dba272f8f33a966eb902023ed2851be0f0316ea02245d48b613f72b38785b oracle/unit-delay_18-float64/completeness.csv +e69f1527a0dcdb8de465ae38a9264124ac14e96277daab69c178f6ef5e987555 oracle/unit-delay_18-float64/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/unit-delay_18-float64/environment.json +b754c9b23e259086e1b17bf3a2179a7f22acecec2eaf39b82bc48df31178dc08 oracle/unit-delay_18-float64/generated-code.json +10b1b3eda316d86e0df6180a7e00c914528fcb0949728895ba25605d11e409b3 oracle/unit-delay_18-float64/independent-output/events.csv +0e2389bb9a8c4f1a5be9f5cda11bcdb977839d608cacd7eff0249a0af3e8e180 oracle/unit-delay_18-float64/independent-output/state.npz +bab3876796fe01fd3c21a252d18de06bd1e2c3d9db8ceab600b28c7f5f6580ae oracle/unit-delay_18-float64/run-spec.json +d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d oracle/unit-delay_18-float64/schedule.json +5084ab20be7af7ed30622b8e72f679fb89d3de638ce8f4af4c7c0c24a1d45a29 oracle/unit-delay_18-float64/seed.json +db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b oracle/unit-equal_threshold-float32/actual-weights.json +7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801 oracle/unit-equal_threshold-float32/brian-output/events.csv +e0b133b9473e529e9a6d29c5cd236f9b9f4a88dc17b11317386d829d7d3b83ac oracle/unit-equal_threshold-float32/brian-output/state.npz +950e79516e1d611cc30336d2ec02ef99c9511fce58dfe1eb4edc92aedddff8f7 oracle/unit-equal_threshold-float32/comparison.json +6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466 oracle/unit-equal_threshold-float32/completeness.csv +27046e66bff85457b7945c5646ae0ac6f94d59065846dee47cfe90aacaee9ec1 oracle/unit-equal_threshold-float32/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/unit-equal_threshold-float32/environment.json +c5982c3d7ddbb031347cb389692bd9e78b4d851732d4192ca8d9db1f5ce31128 oracle/unit-equal_threshold-float32/external-arrivals.csv +86fd33e9730c1d4675224eaff6ecc4feaf9808e58f51c93e7df252c821998736 oracle/unit-equal_threshold-float32/generated-code.json +7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801 oracle/unit-equal_threshold-float32/independent-output/events.csv +e0511cd2618ec1229697e25a46cc0f69c31522317f02188c6fde3ccdfb21b8b4 oracle/unit-equal_threshold-float32/independent-output/state.npz +fac5e0aa0191b2c1588aab61ae63bd33506f9e1388025be1147eece5c1a7201e oracle/unit-equal_threshold-float32/run-spec.json +d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d oracle/unit-equal_threshold-float32/schedule.json +478668928b9024183568ba20f423f1f81eb9da3a2ad3427ce9bd55ed27779602 oracle/unit-equal_threshold-float32/seed.json +db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b oracle/unit-equal_threshold-float64/actual-weights.json +7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801 oracle/unit-equal_threshold-float64/brian-output/events.csv +20d649e7f7cc7bc9b231ff0d5cd86474d71bb45ad1965d1fcc6cd44fe9b10fcc oracle/unit-equal_threshold-float64/brian-output/state.npz +92164ae71a1399241866df040a559c7c1a9b8fca9327bcb009665a6bf8eeef4a oracle/unit-equal_threshold-float64/comparison.json +6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466 oracle/unit-equal_threshold-float64/completeness.csv +27046e66bff85457b7945c5646ae0ac6f94d59065846dee47cfe90aacaee9ec1 oracle/unit-equal_threshold-float64/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/unit-equal_threshold-float64/environment.json +c5982c3d7ddbb031347cb389692bd9e78b4d851732d4192ca8d9db1f5ce31128 oracle/unit-equal_threshold-float64/external-arrivals.csv +b754c9b23e259086e1b17bf3a2179a7f22acecec2eaf39b82bc48df31178dc08 oracle/unit-equal_threshold-float64/generated-code.json +7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801 oracle/unit-equal_threshold-float64/independent-output/events.csv +39bb07a9f2a71652ead9cb5cd1d82626b367d9f77f28a2890f29813d6abd531c oracle/unit-equal_threshold-float64/independent-output/state.npz +048c7994f12ce279353916c6e0770aa942c4d265953a73f2fbdcfc823899c68d oracle/unit-equal_threshold-float64/run-spec.json +d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d oracle/unit-equal_threshold-float64/schedule.json +2fce02c931341034076747847551dd7c463a5afbca82f53aac1ea5262da25546 oracle/unit-equal_threshold-float64/seed.json +db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b oracle/unit-inhibition-float32/actual-weights.json +7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801 oracle/unit-inhibition-float32/brian-output/events.csv +e17bb1325b04dd6a39587a15f5be9de3a898369643de9d8ac0d8cb8f50fa0655 oracle/unit-inhibition-float32/brian-output/state.npz +00dc58085703002b0c7828f8626b7a4c0a67ccb780e9934b1a6027278e160147 oracle/unit-inhibition-float32/comparison.json +6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466 oracle/unit-inhibition-float32/completeness.csv +27046e66bff85457b7945c5646ae0ac6f94d59065846dee47cfe90aacaee9ec1 oracle/unit-inhibition-float32/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/unit-inhibition-float32/environment.json +cdb3b47045c3e08a5e7f91d835e9b974267e8c39aa5c0b6f01848d02fddc9121 oracle/unit-inhibition-float32/external-arrivals.csv +24049d57fb087bbf6a32304d9a5a21ad9015d7c07dd5a42f94d5856e24648910 oracle/unit-inhibition-float32/generated-code.json +7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801 oracle/unit-inhibition-float32/independent-output/events.csv +7606a26a9237ce3a3a1b93549e9a9e9489c4bd0f209fdcfaadad20bdfd71b025 oracle/unit-inhibition-float32/independent-output/state.npz +2be318173be5d8ab53909c92b7a10158dd792342f23706755bacd93b99d6304c oracle/unit-inhibition-float32/run-spec.json +fed340d7ab41bbb7a1a18d125c8a2fb0129c1eeea1967ade86725f1e7753d116 oracle/unit-inhibition-float32/schedule.json +77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830 oracle/unit-inhibition-float32/seed.json +db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b oracle/unit-inhibition-float64/actual-weights.json +7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801 oracle/unit-inhibition-float64/brian-output/events.csv +bb92d8189c4899d878f3ba14981a0d3e5d9e533ed193a4ac46d7ae96b5b8ed2b oracle/unit-inhibition-float64/brian-output/state.npz +9b5906fd6915f910df0c46bd171cb693bc3be927321585f298ce5bf41c675dd1 oracle/unit-inhibition-float64/comparison.json +6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466 oracle/unit-inhibition-float64/completeness.csv +27046e66bff85457b7945c5646ae0ac6f94d59065846dee47cfe90aacaee9ec1 oracle/unit-inhibition-float64/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/unit-inhibition-float64/environment.json +cdb3b47045c3e08a5e7f91d835e9b974267e8c39aa5c0b6f01848d02fddc9121 oracle/unit-inhibition-float64/external-arrivals.csv +f7353d7fd8f7c017924959f0db57b3a7101b72b65f0bcb4fe8ba5bf02f7c8cb3 oracle/unit-inhibition-float64/generated-code.json +7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801 oracle/unit-inhibition-float64/independent-output/events.csv +0ba4c1b5727aa46dc66855cc9d61bfce3f19c2af046ff41b4e1fd3594565a455 oracle/unit-inhibition-float64/independent-output/state.npz +1618df58c1883b6a34f4f247fa2a4dac41d29391f405efb8813d49d49ae9aab9 oracle/unit-inhibition-float64/run-spec.json +fed340d7ab41bbb7a1a18d125c8a2fb0129c1eeea1967ade86725f1e7753d116 oracle/unit-inhibition-float64/schedule.json +77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830 oracle/unit-inhibition-float64/seed.json +db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b oracle/unit-nonzero_g_reset-float32/actual-weights.json +d8885a4d083fff2f22fad52be2eaf08adc23e25015dafded0fedc16cf36a4cb1 oracle/unit-nonzero_g_reset-float32/brian-output/events.csv +b1397ec47218beb84a911a3df7461c2b5a34ae827b0321e9420f7840bc2dd946 oracle/unit-nonzero_g_reset-float32/brian-output/state.npz +a67c8fb6afb8cca2f58f0710a9c78720ddbbe78994fb230a4a55f42270c8fd49 oracle/unit-nonzero_g_reset-float32/comparison.json +6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466 oracle/unit-nonzero_g_reset-float32/completeness.csv +27046e66bff85457b7945c5646ae0ac6f94d59065846dee47cfe90aacaee9ec1 oracle/unit-nonzero_g_reset-float32/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/unit-nonzero_g_reset-float32/environment.json +997f7e35a6eb1a267ccef4c8794c72e7d0d119a7d5328bffb271e05602555651 oracle/unit-nonzero_g_reset-float32/external-arrivals.csv +3fb96b24ee1b80fecd16b80dbee70762cf917583a27ca3574393dd9571268708 oracle/unit-nonzero_g_reset-float32/generated-code.json +d8885a4d083fff2f22fad52be2eaf08adc23e25015dafded0fedc16cf36a4cb1 oracle/unit-nonzero_g_reset-float32/independent-output/events.csv +c22b4ca49e3b3f3b1226d75dbfd7f5c8e59a7cc8f27ce5b31e5683b77b88d05d oracle/unit-nonzero_g_reset-float32/independent-output/state.npz +4782f44e07a5e6e99502c733fb77cf1bf8f3b767e9b87914347d07165a035b7b oracle/unit-nonzero_g_reset-float32/run-spec.json +fed340d7ab41bbb7a1a18d125c8a2fb0129c1eeea1967ade86725f1e7753d116 oracle/unit-nonzero_g_reset-float32/schedule.json +77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830 oracle/unit-nonzero_g_reset-float32/seed.json +db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b oracle/unit-nonzero_g_reset-float64/actual-weights.json +d8885a4d083fff2f22fad52be2eaf08adc23e25015dafded0fedc16cf36a4cb1 oracle/unit-nonzero_g_reset-float64/brian-output/events.csv +c7e06817d1c24d8f5b190e7ad900f560b62b695f3e2f3f60b81f87de32f95efd oracle/unit-nonzero_g_reset-float64/brian-output/state.npz +34382539f3576746462c29b584d5c3efbcc827f434e5c55d399c58e0fe5212f7 oracle/unit-nonzero_g_reset-float64/comparison.json +6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466 oracle/unit-nonzero_g_reset-float64/completeness.csv +27046e66bff85457b7945c5646ae0ac6f94d59065846dee47cfe90aacaee9ec1 oracle/unit-nonzero_g_reset-float64/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/unit-nonzero_g_reset-float64/environment.json +997f7e35a6eb1a267ccef4c8794c72e7d0d119a7d5328bffb271e05602555651 oracle/unit-nonzero_g_reset-float64/external-arrivals.csv +b5921dbc5e709b3405a4b1ed1521f834bb0a4999d154f5e6f772a290aaaa8de7 oracle/unit-nonzero_g_reset-float64/generated-code.json +d8885a4d083fff2f22fad52be2eaf08adc23e25015dafded0fedc16cf36a4cb1 oracle/unit-nonzero_g_reset-float64/independent-output/events.csv +4d372bb8e51307731fa7339822838c3580c64ee1dd4d4f3ad8ad0420258bd1b8 oracle/unit-nonzero_g_reset-float64/independent-output/state.npz +916cdd2cd038a2ae1e79681ebfeeb83af185407cf2b1b87583cc50f4164c4808 oracle/unit-nonzero_g_reset-float64/run-spec.json +fed340d7ab41bbb7a1a18d125c8a2fb0129c1eeea1967ade86725f1e7753d116 oracle/unit-nonzero_g_reset-float64/schedule.json +77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830 oracle/unit-nonzero_g_reset-float64/seed.json +db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b oracle/unit-refractory_boundary-float32/actual-weights.json +cfad3e3ae7578e64365753675ead4358495da79ee379d78e192172b50a688023 oracle/unit-refractory_boundary-float32/brian-output/events.csv +1a096b2af8c95436307c5368107a197bd30614a55a5f48b22cc15cdcab231c05 oracle/unit-refractory_boundary-float32/brian-output/state.npz +704e19a55381a72ef05e90655d079152bf96893b54cb2aaf8413ffa6a97cb32c oracle/unit-refractory_boundary-float32/comparison.json +6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466 oracle/unit-refractory_boundary-float32/completeness.csv +27046e66bff85457b7945c5646ae0ac6f94d59065846dee47cfe90aacaee9ec1 oracle/unit-refractory_boundary-float32/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/unit-refractory_boundary-float32/environment.json +f9298feb0fed9c1e4cfb4a01313d436437fa9cdacb03bc9f67cf4299dc76df86 oracle/unit-refractory_boundary-float32/external-arrivals.csv +608de56c02e7febe4cdcdaa8c17faded84b9fa187d6f08eb7c393c9fb07f9be3 oracle/unit-refractory_boundary-float32/generated-code.json +cfad3e3ae7578e64365753675ead4358495da79ee379d78e192172b50a688023 oracle/unit-refractory_boundary-float32/independent-output/events.csv +aef84b2be80bd1c41edad68cfc6610e31fc306e67bb8f8eec4677a65b9dab37e oracle/unit-refractory_boundary-float32/independent-output/state.npz +23f4baa792e2a02933f40b2c37392eab2bb6e56b0ab8395b1183f2c5a0f11fa1 oracle/unit-refractory_boundary-float32/run-spec.json +9cef827c7fcf9c050b60ec311a0e6bcdfc311c2f2689ad2437c61fa6085d7388 oracle/unit-refractory_boundary-float32/schedule.json +a6f4b88a4b799a7ac2b91764d632dbf3e05b16535a9c5ab64ad59092902db88e oracle/unit-refractory_boundary-float32/seed.json +db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b oracle/unit-refractory_boundary-float64/actual-weights.json +cfad3e3ae7578e64365753675ead4358495da79ee379d78e192172b50a688023 oracle/unit-refractory_boundary-float64/brian-output/events.csv +cfb31ac1d31ae1dfda4b1c8de4e194ca2a6678d3188e650112617c19b183a017 oracle/unit-refractory_boundary-float64/brian-output/state.npz +718e19524ef625c1f7920b78f11f64b18dc2f49c12ed32f5eceb70108085e316 oracle/unit-refractory_boundary-float64/comparison.json +6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466 oracle/unit-refractory_boundary-float64/completeness.csv +27046e66bff85457b7945c5646ae0ac6f94d59065846dee47cfe90aacaee9ec1 oracle/unit-refractory_boundary-float64/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/unit-refractory_boundary-float64/environment.json +f9298feb0fed9c1e4cfb4a01313d436437fa9cdacb03bc9f67cf4299dc76df86 oracle/unit-refractory_boundary-float64/external-arrivals.csv +3ccb5eecdcdbbc850e60d8209d263e5b4764630323d8109695308c3c4cf7b539 oracle/unit-refractory_boundary-float64/generated-code.json +cfad3e3ae7578e64365753675ead4358495da79ee379d78e192172b50a688023 oracle/unit-refractory_boundary-float64/independent-output/events.csv +1eabc0d77607ccefd7bcc893f863a6f3dc6b4e77fb01e1ece25c05c749278dc7 oracle/unit-refractory_boundary-float64/independent-output/state.npz +89b378f4d00fd6431724acb74a1aa156a659d57fe5bb04ed140cd995b3843a64 oracle/unit-refractory_boundary-float64/run-spec.json +9cef827c7fcf9c050b60ec311a0e6bcdfc311c2f2689ad2437c61fa6085d7388 oracle/unit-refractory_boundary-float64/schedule.json +05b71129e058b3685e2913a4ea737a387b407b09f521670ec4b00d19c9e3eac5 oracle/unit-refractory_boundary-float64/seed.json +db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b oracle/unit-weak_excitation-float32/actual-weights.json +7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801 oracle/unit-weak_excitation-float32/brian-output/events.csv +dbc70d2acac1e00394f5997eea123503406ad816b65eb735824cc0b8dd8b35d7 oracle/unit-weak_excitation-float32/brian-output/state.npz +0ae4a6f8661f1413a315b181e1c23ea71159075c2d2e31f7e3af270a92682231 oracle/unit-weak_excitation-float32/comparison.json +6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466 oracle/unit-weak_excitation-float32/completeness.csv +27046e66bff85457b7945c5646ae0ac6f94d59065846dee47cfe90aacaee9ec1 oracle/unit-weak_excitation-float32/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/unit-weak_excitation-float32/environment.json +ea42121e82562a2dbfe3c5824556db9579c107749339c5e3b47f118b12249d8a oracle/unit-weak_excitation-float32/external-arrivals.csv +b5921dbc5e709b3405a4b1ed1521f834bb0a4999d154f5e6f772a290aaaa8de7 oracle/unit-weak_excitation-float32/generated-code.json +7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801 oracle/unit-weak_excitation-float32/independent-output/events.csv +93ce0a2838dab0c652f6ec2fb8c96992c42fd2d1e041eb589eb8987fab2498eb oracle/unit-weak_excitation-float32/independent-output/state.npz +fa4c5b573d984a526abe9d7abc497575e7fafe53a7fc3c9e76d4741fa0c2efbd oracle/unit-weak_excitation-float32/run-spec.json +fed340d7ab41bbb7a1a18d125c8a2fb0129c1eeea1967ade86725f1e7753d116 oracle/unit-weak_excitation-float32/schedule.json +77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830 oracle/unit-weak_excitation-float32/seed.json +db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b oracle/unit-weak_excitation-float64/actual-weights.json +7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801 oracle/unit-weak_excitation-float64/brian-output/events.csv +4591217f7526896243c0e3e8310a8f885e72ffad6bda56559a7edc8fbce1c0c3 oracle/unit-weak_excitation-float64/brian-output/state.npz +f39862589647cc0cfca90de10aebad6265a9ea94c533915991c700403cec8b60 oracle/unit-weak_excitation-float64/comparison.json +6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466 oracle/unit-weak_excitation-float64/completeness.csv +27046e66bff85457b7945c5646ae0ac6f94d59065846dee47cfe90aacaee9ec1 oracle/unit-weak_excitation-float64/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/unit-weak_excitation-float64/environment.json +ea42121e82562a2dbfe3c5824556db9579c107749339c5e3b47f118b12249d8a oracle/unit-weak_excitation-float64/external-arrivals.csv +023b8cdde1fea892e40cd5e58e75bed9d7febcd670a6c749882deb04c7d84132 oracle/unit-weak_excitation-float64/generated-code.json +7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801 oracle/unit-weak_excitation-float64/independent-output/events.csv +4c0b86fcae0498e9e510a3333bf919a33e0b8bd19fb0d0a37aed4e102a5e61e6 oracle/unit-weak_excitation-float64/independent-output/state.npz +3ae45d37b147e6dd3a5bd596b8757e4909cbb0c1386d30e94becfd1ae331d90c oracle/unit-weak_excitation-float64/run-spec.json +fed340d7ab41bbb7a1a18d125c8a2fb0129c1eeea1967ade86725f1e7753d116 oracle/unit-weak_excitation-float64/schedule.json +77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830 oracle/unit-weak_excitation-float64/seed.json +db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b oracle/unit-zero-float32/actual-weights.json +7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801 oracle/unit-zero-float32/brian-output/events.csv +4e1d81697ef3df005548a1cb5891dce91fdfbee6c8cfc9586fff98c8a406e72e oracle/unit-zero-float32/brian-output/state.npz +e7ac75d3c7853ec3526b7dc1bdd7f94ccba58b4392c2a704ac4bc25b34130ce5 oracle/unit-zero-float32/comparison.json +6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466 oracle/unit-zero-float32/completeness.csv +27046e66bff85457b7945c5646ae0ac6f94d59065846dee47cfe90aacaee9ec1 oracle/unit-zero-float32/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/unit-zero-float32/environment.json +c5982c3d7ddbb031347cb389692bd9e78b4d851732d4192ca8d9db1f5ce31128 oracle/unit-zero-float32/external-arrivals.csv +daea9555d1ba0effb445e581ad4c74741d57b85ad6477907ff579a0957dc7242 oracle/unit-zero-float32/generated-code.json +7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801 oracle/unit-zero-float32/independent-output/events.csv +6f45ddfec94ada6a8747f5addc1f9f4a51d737739e245c7dc10739bf7e18cfc3 oracle/unit-zero-float32/independent-output/state.npz +521bb565556d8daee043b995415ac154e9e63af899c2266b023e031acc27eef6 oracle/unit-zero-float32/run-spec.json +a0ae45ec1bd5e9ad66296742ebb857263b1bde14ca260bbba260b570d359dcd5 oracle/unit-zero-float32/schedule.json +77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830 oracle/unit-zero-float32/seed.json +db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b oracle/unit-zero-float64/actual-weights.json +7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801 oracle/unit-zero-float64/brian-output/events.csv +08b144e5f87768b33642885391e00812222ef69ed15282fbc525c986e058dda9 oracle/unit-zero-float64/brian-output/state.npz +34382539f3576746462c29b584d5c3efbcc827f434e5c55d399c58e0fe5212f7 oracle/unit-zero-float64/comparison.json +6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466 oracle/unit-zero-float64/completeness.csv +27046e66bff85457b7945c5646ae0ac6f94d59065846dee47cfe90aacaee9ec1 oracle/unit-zero-float64/connectivity.parquet +e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4 oracle/unit-zero-float64/environment.json +c5982c3d7ddbb031347cb389692bd9e78b4d851732d4192ca8d9db1f5ce31128 oracle/unit-zero-float64/external-arrivals.csv +659f799403ba4fec6b169b25f70a96477681c3d79b70b54687792c29149eb96a oracle/unit-zero-float64/generated-code.json +7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801 oracle/unit-zero-float64/independent-output/events.csv +d5c77d7a0fe8023a11635ab793f30a6c8e419211aea3707deddda9b2c38c6f8b oracle/unit-zero-float64/independent-output/state.npz +d4852ae58f33a87ac68f3efea658b432833e41921dd6914b12c3e153a870f3aa oracle/unit-zero-float64/run-spec.json +a0ae45ec1bd5e9ad66296742ebb857263b1bde14ca260bbba260b570d359dcd5 oracle/unit-zero-float64/schedule.json +77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830 oracle/unit-zero-float64/seed.json +78bc80361a72f4620b39dc0363a1c2d13cff756f2cf920f879dcdf9b7ba8e3d1 performance/summary.json +dd3c72b63544c8ec63e6b0f5eb4291a34f225537d63d56912998377de9cfd20e protocol/preregistered.json +ef1016ca89aad6a53209927015a423c6a7bff49bb2dc271e98ba90cd4b22a274 regression/author-motifs.json +5762a442ecb94319bed0f35b8e64adbf9d122f938c99b1249107adfd1e717cb7 regression/feedforward-float32-repeat.json +5762a442ecb94319bed0f35b8e64adbf9d122f938c99b1249107adfd1e717cb7 regression/feedforward-float64-repeat.json +f428f9d3f572e8f66bce255f348861e1e1994973bdb7f5d3206924195d829383 regression/feedforward-precision-cross-comparison.json +5762a442ecb94319bed0f35b8e64adbf9d122f938c99b1249107adfd1e717cb7 regression/five-float32-repeat.json +5762a442ecb94319bed0f35b8e64adbf9d122f938c99b1249107adfd1e717cb7 regression/five-float64-repeat.json +8aa2658f0be118fcfa9bafb8b07fedcb3713842aab31da5d360c1092bf73a600 regression/five-precision-cross-comparison.json +520d9d9fcc26f6041113f9d94b0690a487cb89d38aa5eb9888857abdfed19ea4 regression/frozen-auditory-100hz.json +bf6d4a709ad9020de4007f44addec2cd38b7598c4dcd58bf7cbf31b41d2807bd regression/frozen-auditory-10hz.json +7e2e4f200f40ef1f5df3736176344c3a300533cb12f3cfb8022845ce312701ca regression/frozen-components.json +331153e43e8b49d53c370b4990f11c3d956a5a869cb3c5331e5e216f93a694cb regression/frozen-five.json +800a8f2e6e5ab44608919b73a4fcfe2b35b9007418fa7cf0f4ae8e93d1fbc1fa regression/frozen-gustatory-50hz.json +98fb62ea14694a0df78c673c3c76728d62a4036835c82f03eb2e7f2c17bf4625 regression/frozen-mechanosensory-50hz.json +9284aa8d73c36e6a0441320a9511cec65099bcf7ffd772f982e62e78ab8a3666 regression/frozen-olfactory-50hz.json +5762a442ecb94319bed0f35b8e64adbf9d122f938c99b1249107adfd1e717cb7 regression/no_input-float32-repeat.json +5762a442ecb94319bed0f35b8e64adbf9d122f938c99b1249107adfd1e717cb7 regression/no_input-float64-repeat.json +76f106dbc71d81822f8711e5970da7876fe76416a14a185d7915e8480381c544 regression/no_input-precision-cross-comparison.json +242b02c49b613d2cff475f570083b0521460c840dca51c17902f7df40e052581 regression/old-integrity-after.json +0347f6273992fa842ea4f9526492362ac9774ad1194c8367b0632e7367987116 regression/old-integrity-before.json +5762a442ecb94319bed0f35b8e64adbf9d122f938c99b1249107adfd1e717cb7 regression/pair-float32-repeat.json +5762a442ecb94319bed0f35b8e64adbf9d122f938c99b1249107adfd1e717cb7 regression/pair-float64-repeat.json +69c2960eb018b5d4957aea01ff60ceae6df8785315a239b07ab432b7a205a541 regression/pair-precision-cross-comparison.json +f4a10cd026bb3e3e2d84f3fa26125462fdd09d2fedf2198f89faa7ba4bb065a3 regression/preregistration-after.json +5762a442ecb94319bed0f35b8e64adbf9d122f938c99b1249107adfd1e717cb7 regression/trio-float32-repeat.json +5762a442ecb94319bed0f35b8e64adbf9d122f938c99b1249107adfd1e717cb7 regression/trio-float64-repeat.json +ffa52f9ff04c4887c714cf1dc69159263a3cce02be605e0830f945ece22de508 regression/trio-precision-cross-comparison.json +e3326d69d3fb00d5d6d5b2d7764426ad0a1c02b7bf7fa067dd2866e78574aedd regression/unit-above_threshold-float32.json +c4720e6d20648b3292b7693a27782a755b65bc9ac40df1240c5f9c804d4c60ec regression/unit-above_threshold-float64.json +5fe18868d3780d899ec9fe97630e019d70420023f367109cf015b984d18478f7 regression/unit-delay_18-float32.json +7cde7f95e04a3870fe6b42a99493f2cba5cf8e6b20ca01d7a39d6eca02a829d9 regression/unit-delay_18-float64.json +3ff0b4c36f7f672a0110378f85d12dd144451b4210f7cc647d77df12187ff9fe regression/unit-equal_threshold-float32.json +3b2ed15b07ea2422e184764006054c23d5a80810c3bbfa6ce6fee5ff2f42a7a0 regression/unit-equal_threshold-float64.json +d8c24f386628b3c4186017a93b1f8a30c754a8da1ad2f787318cc564e297e958 regression/unit-fixtures.json +f18d377531f46ff53d572c649a0c5308203d207af25071190e5fe8414594c0dd regression/unit-inhibition-float32.json +fe463e5e1de6dd528b31b09d3fd20b4e454ff4f6346dbd974ab9638fab3dc6b6 regression/unit-inhibition-float64.json +45e62f5ca365ac7f40a74cf23094de1a8dc4f576d2ba7d56cc8866037921ea22 regression/unit-nonzero_g_reset-float32.json +1b04dd164e00670c3f36bc17bb5d8e974703c94296d0b12f93de06de792d417f regression/unit-nonzero_g_reset-float64.json +cf3b2e0230e50b25e96c39b425aefafab780b01817377c0ce1e7e2aa20c43a30 regression/unit-refractory_boundary-float32.json +57837e95ae73d376794a8fbb615ced5f412b4c43f7f31c56f08d65d66f74ca7b regression/unit-refractory_boundary-float64.json +97d17aa7336ed7c51e557fbc94c673773e94aa1dd5fc9069708964051086b995 regression/unit-weak_excitation-float32.json +912f3ca442d089ed6e920bc0c00a8e30a1d62f34ee7a22b2f2b5e6f0544a3706 regression/unit-weak_excitation-float64.json +cb42c0c2025e86b4006bb9e2aa6e893f0185be55c3baa77bddece09ed691e938 regression/unit-zero-float32.json +4cc37c186bd7f6e6579840e516c840ae607581041b2d6da66971da611304e1d9 regression/unit-zero-float64.json +c939d3977a1883e86108c1e3edd25619118cec61e5c7712ae4dfa2893a73c0ca manifest.json diff --git a/registry/phase4ad-author-semantics/evidence/components/feedforward-frozen/events.csv b/registry/phase4ad-author-semantics/evidence/components/feedforward-frozen/events.csv new file mode 100644 index 0000000..4ba61df --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/components/feedforward-frozen/events.csv @@ -0,0 +1,4 @@ +step,neuron_idx +0,1381 +49,1511 +100,1197 diff --git a/registry/phase4ad-author-semantics/evidence/components/feedforward-refractory_gate_only/events.csv b/registry/phase4ad-author-semantics/evidence/components/feedforward-refractory_gate_only/events.csv new file mode 100644 index 0000000..4ba61df --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/components/feedforward-refractory_gate_only/events.csv @@ -0,0 +1,4 @@ +step,neuron_idx +0,1381 +49,1511 +100,1197 diff --git a/registry/phase4ad-author-semantics/evidence/components/feedforward-reset_and_refractory/events.csv b/registry/phase4ad-author-semantics/evidence/components/feedforward-reset_and_refractory/events.csv new file mode 100644 index 0000000..4ba61df --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/components/feedforward-reset_and_refractory/events.csv @@ -0,0 +1,4 @@ +step,neuron_idx +0,1381 +49,1511 +100,1197 diff --git a/registry/phase4ad-author-semantics/evidence/components/feedforward-reset_g_only/events.csv b/registry/phase4ad-author-semantics/evidence/components/feedforward-reset_g_only/events.csv new file mode 100644 index 0000000..4ba61df --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/components/feedforward-reset_g_only/events.csv @@ -0,0 +1,4 @@ +step,neuron_idx +0,1381 +49,1511 +100,1197 diff --git a/registry/phase4ad-author-semantics/evidence/components/five-frozen/events.csv b/registry/phase4ad-author-semantics/evidence/components/five-frozen/events.csv new file mode 100644 index 0000000..b744be9 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/components/five-frozen/events.csv @@ -0,0 +1,1484 @@ +step,neuron_idx +0,1381 +45,1197 +49,1511 +77,1381 +86,1197 +88,133666 +97,1511 +113,1381 +119,1197 +132,1511 +133,133666 +144,1381 +150,1197 +163,1511 +172,133666 +173,1381 +179,1197 +193,1511 +201,1381 +207,1197 +207,133666 +222,1511 +228,1381 +234,1197 +242,133666 +250,1511 +255,1381 +261,1197 +264,82312 +277,133666 +278,1511 +282,1381 +288,1197 +305,1511 +309,1381 +310,133666 +315,1197 +332,1511 +335,1381 +342,1197 +343,133666 +359,1511 +362,1381 +368,1197 +377,133666 +386,1511 +388,1381 +392,82312 +395,1197 +411,133666 +413,1511 +414,1381 +422,1197 +440,1511 +441,1381 +444,133666 +449,1197 +467,1381 +467,1511 +476,1197 +477,133666 +494,1381 +494,1511 +502,1197 +511,133666 +514,82312 +521,1381 +521,1511 +529,1197 +545,133666 +548,1381 +548,1511 +556,1197 +574,1381 +575,1511 +578,133666 +583,1197 +600,1381 +602,1511 +610,1197 +611,133666 +627,1381 +629,1511 +636,1197 +636,82312 +645,133666 +654,1381 +656,1511 +663,1197 +679,133666 +681,1381 +683,1511 +690,1197 +707,1381 +710,1511 +712,133666 +717,1197 +733,1381 +737,1511 +744,1197 +745,133666 +759,1381 +759,82312 +764,1511 +770,1197 +779,133666 +786,1381 +791,1511 +797,1197 +813,1381 +813,133666 +818,1511 +824,1197 +840,1381 +845,1511 +846,133666 +851,1197 +867,1381 +872,1511 +878,1197 +879,133666 +881,82312 +894,1381 +899,1511 +904,1197 +913,133666 +921,1381 +926,1511 +931,1197 +947,133666 +948,1381 +953,1511 +958,1197 +975,1381 +980,1511 +980,133666 +985,1197 +1002,1381 +1004,82312 +1007,1511 +1011,1197 +1013,133666 +1029,1381 +1034,1511 +1037,1197 +1047,133666 +1055,1381 +1061,1511 +1064,1197 +1081,133666 +1082,1381 +1088,1511 +1090,1197 +1109,1381 +1114,133666 +1115,1511 +1116,1197 +1127,82312 +1135,1381 +1142,1197 +1142,1511 +1146,133666 +1162,1381 +1168,1197 +1169,1511 +1180,133666 +1189,1381 +1194,1197 +1196,1511 +1214,133666 +1215,1381 +1220,1197 +1223,1511 +1242,1381 +1246,1197 +1246,133666 +1248,82312 +1250,1511 +1268,1381 +1272,1197 +1277,1511 +1278,133666 +1295,1381 +1298,1197 +1304,1511 +1312,133666 +1322,1381 +1324,1197 +1332,1511 +1346,133666 +1349,1381 +1351,1197 +1360,1511 +1369,82312 +1376,1381 +1378,1197 +1379,133666 +1388,1511 +1403,1381 +1405,1197 +1412,133666 +1416,1511 +1430,1381 +1432,1197 +1444,1511 +1446,133666 +1457,1381 +1459,1197 +1472,1511 +1480,133666 +1484,1381 +1486,1197 +1491,82312 +1500,1511 +1511,1381 +1513,1197 +1513,133666 +1529,1511 +1537,1381 +1539,1197 +1547,133666 +1557,1511 +1564,1381 +1566,1197 +1581,133666 +1585,1511 +1590,1381 +1593,1197 +1612,1511 +1613,82312 +1614,133666 +1616,1381 +1619,1197 +1639,1511 +1642,1381 +1645,1197 +1646,133666 +1666,1511 +1668,1381 +1671,1197 +1679,133666 +1693,1511 +1694,1381 +1697,1197 +1713,133666 +1720,1381 +1720,1511 +1723,1197 +1734,82312 +1746,1381 +1746,133666 +1747,1511 +1749,1197 +1772,1381 +1774,1511 +1775,1197 +1778,133666 +1798,1381 +1801,1197 +1801,1511 +1811,133666 +1824,1381 +1827,1197 +1828,1511 +1845,133666 +1850,1381 +1853,1197 +1854,82312 +1855,1511 +1876,1381 +1877,133666 +1879,1197 +1882,1511 +1902,1381 +1905,1197 +1909,1511 +1909,133666 +1928,1381 +1931,1197 +1936,1511 +1942,133666 +1955,1381 +1957,1197 +1963,1511 +1972,82312 +1976,133666 +1982,1381 +1983,1197 +1991,1511 +2009,1197 +2009,1381 +2009,133666 +2019,1511 +2035,1197 +2036,1381 +2042,133666 +2047,1511 +2061,1197 +2063,1381 +2075,1511 +2075,133666 +2087,1197 +2090,1381 +2093,82312 +2103,1511 +2109,133666 +2113,1197 +2117,1381 +2131,1511 +2139,1197 +2141,133666 +2144,1381 +2159,1511 +2165,1197 +2171,1381 +2174,133666 +2187,1511 +2192,1197 +2198,1381 +2208,133666 +2213,82312 +2215,1511 +2218,1197 +2225,1381 +2241,133666 +2243,1511 +2244,1197 +2252,1381 +2270,1197 +2270,1511 +2273,133666 +2279,1381 +2296,1197 +2297,1511 +2306,1381 +2306,133666 +2323,1197 +2325,1511 +2333,1381 +2333,82312 +2340,133666 +2350,1197 +2353,1511 +2360,1381 +2374,133666 +2377,1197 +2380,1511 +2387,1381 +2403,1197 +2407,1511 +2407,133666 +2414,1381 +2429,1197 +2434,1511 +2440,133666 +2441,1381 +2456,1197 +2457,82312 +2461,1511 +2468,1381 +2474,133666 +2483,1197 +2488,1511 +2495,1381 +2508,133666 +2510,1197 +2515,1511 +2522,1381 +2536,1197 +2541,133666 +2542,1511 +2549,1381 +2563,1197 +2569,1511 +2574,133666 +2576,1381 +2579,82312 +2590,1197 +2596,1511 +2603,1381 +2608,133666 +2617,1197 +2624,1511 +2630,1381 +2642,133666 +2644,1197 +2651,1511 +2657,1381 +2671,1197 +2675,133666 +2678,1511 +2684,1381 +2698,1197 +2701,82312 +2705,1511 +2708,133666 +2711,1381 +2725,1197 +2732,1511 +2738,1381 +2742,133666 +2752,1197 +2759,1511 +2765,1381 +2776,133666 +2779,1197 +2786,1511 +2792,1381 +2806,1197 +2809,133666 +2813,1511 +2819,1381 +2825,82312 +2833,1197 +2840,1511 +2842,133666 +2846,1381 +2860,1197 +2867,1511 +2873,1381 +2875,133666 +2887,1197 +2894,1511 +2900,1381 +2909,133666 +2914,1197 +2921,1511 +2927,1381 +2941,1197 +2942,133666 +2946,82312 +2948,1511 +2954,1381 +2968,1197 +2975,1511 +2975,133666 +2981,1381 +2995,1197 +3002,1511 +3008,1381 +3008,133666 +3022,1197 +3029,1511 +3035,1381 +3042,133666 +3049,1197 +3056,1511 +3062,1381 +3067,82312 +3076,1197 +3076,133666 +3083,1511 +3089,1381 +3103,1197 +3109,133666 +3110,1511 +3116,1381 +3130,1197 +3137,1511 +3142,133666 +3143,1381 +3157,1197 +3164,1511 +3170,1381 +3176,133666 +3184,1197 +3190,82312 +3191,1511 +3197,1381 +3210,133666 +3211,1197 +3218,1511 +3224,1381 +3238,1197 +3243,133666 +3245,1511 +3251,1381 +3265,1197 +3272,1511 +3276,133666 +3278,1381 +3292,1197 +3299,1511 +3305,1381 +3310,133666 +3311,82312 +3319,1197 +3326,1511 +3332,1381 +3344,133666 +3346,1197 +3353,1511 +3359,1381 +3373,1197 +3377,133666 +3380,1511 +3386,1381 +3400,1197 +3407,1511 +3410,133666 +3413,1381 +3427,1197 +3433,82312 +3434,1511 +3440,1381 +3444,133666 +3454,1197 +3461,1511 +3467,1381 +3478,133666 +3481,1197 +3488,1511 +3494,1381 +3508,1197 +3511,133666 +3515,1511 +3521,1381 +3535,1197 +3542,1511 +3544,133666 +3548,1381 +3556,82312 +3562,1197 +3569,1511 +3575,1381 +3577,133666 +3589,1197 +3596,1511 +3602,1381 +3611,133666 +3616,1197 +3623,1511 +3629,1381 +3643,1197 +3644,133666 +3650,1511 +3656,1381 +3670,1197 +3677,1511 +3677,82312 +3677,133666 +3683,1381 +3697,1197 +3704,1511 +3710,1381 +3710,133666 +3724,1197 +3731,1511 +3737,1381 +3744,133666 +3751,1197 +3758,1511 +3764,1381 +3778,1197 +3778,133666 +3785,1511 +3791,1381 +3799,82312 +3805,1197 +3811,133666 +3812,1511 +3818,1381 +3832,1197 +3839,1511 +3844,133666 +3845,1381 +3859,1197 +3866,1511 +3872,1381 +3878,133666 +3886,1197 +3893,1511 +3899,1381 +3912,133666 +3913,1197 +3920,1511 +3921,82312 +3926,1381 +3940,1197 +3945,133666 +3947,1511 +3953,1381 +3967,1197 +3974,1511 +3978,133666 +3980,1381 +3994,1197 +4001,1511 +4007,1381 +4012,133666 +4021,1197 +4028,1511 +4034,1381 +4042,82312 +4046,133666 +4048,1197 +4055,1511 +4061,1381 +4075,1197 +4079,133666 +4082,1511 +4088,1381 +4102,1197 +4109,1511 +4112,133666 +4115,1381 +4129,1197 +4136,1511 +4142,1381 +4146,133666 +4156,1197 +4163,1511 +4165,82312 +4169,1381 +4180,133666 +4183,1197 +4190,1511 +4196,1381 +4210,1197 +4213,133666 +4217,1511 +4223,1381 +4237,1197 +4244,1511 +4246,133666 +4250,1381 +4264,1197 +4271,1511 +4277,1381 +4279,133666 +4287,82312 +4291,1197 +4298,1511 +4304,1381 +4313,133666 +4318,1197 +4325,1511 +4331,1381 +4345,1197 +4346,133666 +4352,1511 +4358,1381 +4372,1197 +4379,1511 +4379,133666 +4385,1381 +4399,1197 +4406,1511 +4408,82312 +4412,1381 +4412,133666 +4426,1197 +4433,1511 +4439,1381 +4446,133666 +4453,1197 +4460,1511 +4466,1381 +4480,1197 +4480,133666 +4487,1511 +4493,1381 +4507,1197 +4513,133666 +4514,1511 +4520,1381 +4531,82312 +4534,1197 +4541,1511 +4546,133666 +4547,1381 +4561,1197 +4568,1511 +4574,1381 +4580,133666 +4588,1197 +4595,1511 +4601,1381 +4614,133666 +4615,1197 +4622,1511 +4628,1381 +4642,1197 +4647,133666 +4649,1511 +4653,82312 +4655,1381 +4669,1197 +4676,1511 +4680,133666 +4682,1381 +4696,1197 +4703,1511 +4709,1381 +4714,133666 +4723,1197 +4730,1511 +4736,1381 +4748,133666 +4750,1197 +4757,1511 +4763,1381 +4775,82312 +4777,1197 +4781,133666 +4784,1511 +4790,1381 +4804,1197 +4811,1511 +4814,133666 +4817,1381 +4831,1197 +4838,1511 +4844,1381 +4848,133666 +4858,1197 +4865,1511 +4871,1381 +4882,133666 +4885,1197 +4892,1511 +4898,1381 +4899,82312 +4912,1197 +4915,133666 +4919,1511 +4925,1381 +4939,1197 +4946,1511 +4948,133666 +4952,1381 +4966,1197 +4973,1511 +4979,1381 +4981,133666 +4993,1197 +5000,1511 +5006,1381 +5015,133666 +5020,1197 +5020,82312 +5027,1511 +5033,1381 +5047,1197 +5048,133666 +5054,1511 +5060,1381 +5074,1197 +5081,1511 +5081,133666 +5087,1381 +5101,1197 +5108,1511 +5114,1381 +5114,133666 +5128,1197 +5135,1511 +5141,1381 +5141,82312 +5148,133666 +5155,1197 +5162,1511 +5168,1381 +5182,1197 +5182,133666 +5189,1511 +5195,1381 +5209,1197 +5215,133666 +5216,1511 +5222,1381 +5236,1197 +5243,1511 +5248,133666 +5249,1381 +5263,1197 +5265,82312 +5270,1511 +5276,1381 +5282,133666 +5290,1197 +5297,1511 +5303,1381 +5316,133666 +5317,1197 +5324,1511 +5330,1381 +5344,1197 +5349,133666 +5351,1511 +5357,1381 +5371,1197 +5378,1511 +5382,133666 +5384,1381 +5387,82312 +5398,1197 +5405,1511 +5411,1381 +5416,133666 +5425,1197 +5432,1511 +5438,1381 +5450,133666 +5452,1197 +5459,1511 +5465,1381 +5479,1197 +5483,133666 +5486,1511 +5492,1381 +5506,1197 +5509,82312 +5513,1511 +5516,133666 +5519,1381 +5533,1197 +5540,1511 +5546,1381 +5550,133666 +5560,1197 +5567,1511 +5573,1381 +5584,133666 +5587,1197 +5594,1511 +5600,1381 +5614,1197 +5617,133666 +5621,1511 +5627,1381 +5633,82312 +5641,1197 +5648,1511 +5650,133666 +5654,1381 +5668,1197 +5675,1511 +5681,1381 +5683,133666 +5695,1197 +5702,1511 +5708,1381 +5717,133666 +5722,1197 +5729,1511 +5735,1381 +5749,1197 +5750,133666 +5754,82312 +5756,1511 +5762,1381 +5776,1197 +5783,1511 +5783,133666 +5789,1381 +5803,1197 +5810,1511 +5816,1381 +5816,133666 +5830,1197 +5837,1511 +5843,1381 +5850,133666 +5857,1197 +5864,1511 +5870,1381 +5875,82312 +5884,1197 +5884,133666 +5891,1511 +5897,1381 +5911,1197 +5917,133666 +5918,1511 +5924,1381 +5938,1197 +5945,1511 +5950,133666 +5951,1381 +5965,1197 +5972,1511 +5978,1381 +5984,133666 +5992,1197 +5998,82312 +5999,1511 +6005,1381 +6018,133666 +6019,1197 +6026,1511 +6032,1381 +6046,1197 +6051,133666 +6053,1511 +6059,1381 +6073,1197 +6080,1511 +6084,133666 +6086,1381 +6100,1197 +6107,1511 +6113,1381 +6118,133666 +6119,82312 +6127,1197 +6134,1511 +6140,1381 +6152,133666 +6154,1197 +6161,1511 +6167,1381 +6181,1197 +6185,133666 +6188,1511 +6194,1381 +6208,1197 +6215,1511 +6218,133666 +6221,1381 +6235,1197 +6241,82312 +6242,1511 +6248,1381 +6252,133666 +6262,1197 +6269,1511 +6275,1381 +6286,133666 +6289,1197 +6296,1511 +6302,1381 +6316,1197 +6319,133666 +6323,1511 +6329,1381 +6343,1197 +6350,1511 +6352,133666 +6356,1381 +6364,82312 +6370,1197 +6377,1511 +6383,1381 +6385,133666 +6397,1197 +6404,1511 +6410,1381 +6419,133666 +6424,1197 +6431,1511 +6437,1381 +6451,1197 +6452,133666 +6458,1511 +6464,1381 +6478,1197 +6485,1511 +6485,82312 +6485,133666 +6491,1381 +6505,1197 +6512,1511 +6518,1381 +6518,133666 +6532,1197 +6539,1511 +6545,1381 +6552,133666 +6559,1197 +6566,1511 +6572,1381 +6586,1197 +6586,133666 +6593,1511 +6599,1381 +6607,82312 +6613,1197 +6619,133666 +6620,1511 +6626,1381 +6640,1197 +6647,1511 +6652,133666 +6653,1381 +6667,1197 +6674,1511 +6680,1381 +6686,133666 +6694,1197 +6701,1511 +6707,1381 +6720,133666 +6721,1197 +6728,1511 +6729,82312 +6734,1381 +6748,1197 +6753,133666 +6755,1511 +6761,1381 +6775,1197 +6782,1511 +6786,133666 +6788,1381 +6802,1197 +6809,1511 +6815,1381 +6820,133666 +6829,1197 +6836,1511 +6842,1381 +6850,82312 +6854,133666 +6856,1197 +6863,1511 +6869,1381 +6883,1197 +6887,133666 +6890,1511 +6896,1381 +6910,1197 +6917,1511 +6920,133666 +6923,1381 +6937,1197 +6944,1511 +6950,1381 +6954,133666 +6964,1197 +6971,1511 +6973,82312 +6977,1381 +6988,133666 +6991,1197 +6998,1511 +7004,1381 +7018,1197 +7021,133666 +7025,1511 +7031,1381 +7045,1197 +7052,1511 +7054,133666 +7058,1381 +7072,1197 +7079,1511 +7085,1381 +7087,133666 +7095,82312 +7099,1197 +7106,1511 +7112,1381 +7121,133666 +7126,1197 +7133,1511 +7139,1381 +7153,1197 +7154,133666 +7160,1511 +7166,1381 +7180,1197 +7187,1511 +7187,133666 +7193,1381 +7207,1197 +7214,1511 +7216,82312 +7220,1381 +7220,133666 +7234,1197 +7241,1511 +7247,1381 +7254,133666 +7261,1197 +7268,1511 +7274,1381 +7288,1197 +7288,133666 +7295,1511 +7301,1381 +7315,1197 +7321,133666 +7322,1511 +7328,1381 +7339,82312 +7342,1197 +7349,1511 +7354,133666 +7355,1381 +7369,1197 +7376,1511 +7382,1381 +7388,133666 +7396,1197 +7403,1511 +7409,1381 +7422,133666 +7423,1197 +7430,1511 +7436,1381 +7450,1197 +7455,133666 +7457,1511 +7461,82312 +7463,1381 +7477,1197 +7484,1511 +7488,133666 +7490,1381 +7504,1197 +7511,1511 +7517,1381 +7522,133666 +7531,1197 +7538,1511 +7544,1381 +7556,133666 +7558,1197 +7565,1511 +7571,1381 +7583,82312 +7585,1197 +7589,133666 +7592,1511 +7598,1381 +7612,1197 +7619,1511 +7622,133666 +7625,1381 +7639,1197 +7646,1511 +7652,1381 +7656,133666 +7666,1197 +7673,1511 +7679,1381 +7690,133666 +7693,1197 +7700,1511 +7706,1381 +7707,82312 +7720,1197 +7723,133666 +7727,1511 +7733,1381 +7747,1197 +7754,1511 +7756,133666 +7760,1381 +7774,1197 +7781,1511 +7787,1381 +7789,133666 +7801,1197 +7808,1511 +7814,1381 +7823,133666 +7828,1197 +7828,82312 +7835,1511 +7841,1381 +7855,1197 +7856,133666 +7862,1511 +7868,1381 +7882,1197 +7889,1511 +7889,133666 +7895,1381 +7909,1197 +7916,1511 +7922,1381 +7922,133666 +7936,1197 +7943,1511 +7949,1381 +7949,82312 +7956,133666 +7963,1197 +7970,1511 +7976,1381 +7990,1197 +7990,133666 +7997,1511 +8003,1381 +8017,1197 +8023,133666 +8024,1511 +8030,1381 +8044,1197 +8051,1511 +8056,133666 +8057,1381 +8071,1197 +8073,82312 +8078,1511 +8084,1381 +8090,133666 +8098,1197 +8105,1511 +8111,1381 +8124,133666 +8125,1197 +8132,1511 +8138,1381 +8152,1197 +8157,133666 +8159,1511 +8165,1381 +8179,1197 +8186,1511 +8190,133666 +8192,1381 +8195,82312 +8206,1197 +8213,1511 +8219,1381 +8224,133666 +8233,1197 +8240,1511 +8246,1381 +8258,133666 +8260,1197 +8267,1511 +8273,1381 +8287,1197 +8291,133666 +8294,1511 +8300,1381 +8314,1197 +8317,82312 +8321,1511 +8324,133666 +8327,1381 +8341,1197 +8348,1511 +8354,1381 +8358,133666 +8368,1197 +8375,1511 +8381,1381 +8392,133666 +8395,1197 +8402,1511 +8408,1381 +8422,1197 +8425,133666 +8429,1511 +8435,1381 +8441,82312 +8449,1197 +8456,1511 +8458,133666 +8462,1381 +8476,1197 +8483,1511 +8489,1381 +8491,133666 +8503,1197 +8510,1511 +8516,1381 +8525,133666 +8530,1197 +8537,1511 +8543,1381 +8557,1197 +8558,133666 +8562,82312 +8564,1511 +8570,1381 +8584,1197 +8591,1511 +8591,133666 +8597,1381 +8611,1197 +8618,1511 +8624,1381 +8624,133666 +8638,1197 +8645,1511 +8651,1381 +8658,133666 +8665,1197 +8672,1511 +8678,1381 +8683,82312 +8692,1197 +8692,133666 +8699,1511 +8705,1381 +8719,1197 +8725,133666 +8726,1511 +8732,1381 +8746,1197 +8753,1511 +8758,133666 +8759,1381 +8773,1197 +8780,1511 +8786,1381 +8792,133666 +8800,1197 +8806,82312 +8807,1511 +8813,1381 +8826,133666 +8827,1197 +8834,1511 +8840,1381 +8854,1197 +8859,133666 +8861,1511 +8867,1381 +8881,1197 +8888,1511 +8892,133666 +8894,1381 +8908,1197 +8915,1511 +8921,1381 +8926,133666 +8927,82312 +8935,1197 +8942,1511 +8948,1381 +8960,133666 +8962,1197 +8969,1511 +8975,1381 +8989,1197 +8993,133666 +8996,1511 +9002,1381 +9016,1197 +9023,1511 +9026,133666 +9029,1381 +9043,1197 +9049,82312 +9050,1511 +9056,1381 +9060,133666 +9070,1197 +9077,1511 +9083,1381 +9094,133666 +9097,1197 +9104,1511 +9110,1381 +9124,1197 +9127,133666 +9131,1511 +9137,1381 +9151,1197 +9158,1511 +9160,133666 +9164,1381 +9172,82312 +9178,1197 +9185,1511 +9191,1381 +9193,133666 +9205,1197 +9212,1511 +9218,1381 +9227,133666 +9232,1197 +9239,1511 +9245,1381 +9259,1197 +9260,133666 +9266,1511 +9272,1381 +9286,1197 +9293,1511 +9293,82312 +9293,133666 +9299,1381 +9313,1197 +9320,1511 +9326,1381 +9326,133666 +9340,1197 +9347,1511 +9353,1381 +9360,133666 +9367,1197 +9374,1511 +9380,1381 +9394,1197 +9394,133666 +9401,1511 +9407,1381 +9415,82312 +9421,1197 +9427,133666 +9428,1511 +9434,1381 +9448,1197 +9455,1511 +9460,133666 +9461,1381 +9475,1197 +9482,1511 +9488,1381 +9494,133666 +9502,1197 +9509,1511 +9515,1381 +9528,133666 +9529,1197 +9536,1511 +9537,82312 +9542,1381 +9556,1197 +9561,133666 +9563,1511 +9569,1381 +9583,1197 +9590,1511 +9594,133666 +9596,1381 +9610,1197 +9617,1511 +9623,1381 +9628,133666 +9637,1197 +9644,1511 +9650,1381 +9658,82312 +9662,133666 +9664,1197 +9671,1511 +9677,1381 +9691,1197 +9695,133666 +9698,1511 +9704,1381 +9718,1197 +9725,1511 +9728,133666 +9731,1381 +9745,1197 +9752,1511 +9758,1381 +9762,133666 +9772,1197 +9779,1511 +9781,82312 +9785,1381 +9796,133666 +9799,1197 +9806,1511 +9812,1381 +9826,1197 +9829,133666 +9833,1511 +9839,1381 +9853,1197 +9860,1511 +9862,133666 +9866,1381 +9880,1197 +9887,1511 +9893,1381 +9895,133666 +9903,82312 +9907,1197 +9914,1511 +9920,1381 +9929,133666 +9934,1197 +9941,1511 +9947,1381 +9961,1197 +9962,133666 +9968,1511 +9974,1381 +9988,1197 +9995,1511 +9995,133666 diff --git a/registry/phase4ad-author-semantics/evidence/components/five-refractory_gate_only/events.csv b/registry/phase4ad-author-semantics/evidence/components/five-refractory_gate_only/events.csv new file mode 100644 index 0000000..a178ad8 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/components/five-refractory_gate_only/events.csv @@ -0,0 +1,1511 @@ +step,neuron_idx +0,1381 +45,1197 +49,1511 +77,1381 +83,1197 +88,133666 +103,1511 +108,1381 +121,1197 +133,1511 +140,1381 +142,133666 +153,1197 +162,1511 +170,1381 +183,1197 +183,133666 +190,1511 +202,1381 +211,1197 +218,1511 +221,133666 +231,1381 +238,1197 +247,1511 +258,133666 +259,1381 +265,1197 +277,1511 +281,82312 +286,1381 +292,1197 +292,133666 +305,1511 +312,1381 +319,1197 +328,133666 +332,1511 +338,1381 +347,1197 +358,1511 +363,133666 +364,1381 +375,1197 +383,1511 +390,1381 +391,82312 +399,133666 +403,1197 +408,1511 +417,1381 +430,1197 +432,133666 +433,1511 +444,1381 +457,1197 +458,1511 +467,133666 +472,1381 +484,1511 +485,1197 +494,82312 +501,1381 +502,133666 +510,1511 +513,1197 +530,1381 +535,133666 +537,1511 +542,1197 +557,1381 +563,1511 +567,133666 +573,1197 +583,1381 +589,1511 +593,82312 +599,133666 +604,1197 +608,1381 +616,1511 +630,133666 +632,1197 +633,1381 +644,1511 +659,1381 +661,1197 +662,133666 +673,1511 +685,1381 +686,82312 +691,1197 +695,133666 +703,1511 +711,1381 +719,1197 +728,133666 +731,1511 +737,1381 +748,1197 +758,1511 +763,1381 +763,133666 +777,1197 +782,82312 +784,1511 +789,1381 +800,133666 +804,1197 +809,1511 +816,1381 +830,1197 +833,133666 +834,1511 +844,1381 +856,1197 +859,1511 +868,133666 +873,1381 +882,1197 +882,82312 +884,1511 +902,1381 +902,133666 +909,1197 +910,1511 +928,1381 +933,133666 +936,1197 +936,1511 +953,1381 +963,1511 +964,1197 +965,133666 +978,1381 +991,1511 +993,1197 +999,133666 +1004,1381 +1009,82312 +1019,1511 +1022,1197 +1030,1381 +1033,133666 +1048,1511 +1049,1197 +1057,1381 +1069,133666 +1075,1511 +1076,1197 +1084,1381 +1101,133666 +1102,1197 +1102,1511 +1112,1381 +1128,1197 +1128,1511 +1134,133666 +1141,1381 +1147,82312 +1154,1197 +1155,1511 +1167,133666 +1172,1381 +1180,1197 +1182,1511 +1200,1381 +1200,133666 +1207,1197 +1210,1511 +1226,1381 +1230,133666 +1234,1197 +1239,1511 +1252,1381 +1259,133666 +1261,1197 +1269,1511 +1277,1381 +1278,82312 +1288,1197 +1289,133666 +1299,1511 +1303,1381 +1315,1197 +1319,133666 +1327,1511 +1329,1381 +1342,1197 +1349,133666 +1356,1381 +1356,1511 +1369,1197 +1370,82312 +1378,133666 +1383,1381 +1386,1511 +1397,1197 +1407,133666 +1411,1381 +1417,1511 +1425,1197 +1436,133666 +1439,1381 +1446,1511 +1453,1197 +1455,82312 +1465,133666 +1466,1381 +1475,1511 +1482,1197 +1493,1381 +1495,133666 +1503,1511 +1512,1197 +1519,1381 +1525,133666 +1531,1511 +1538,82312 +1540,1197 +1545,1381 +1555,133666 +1559,1511 +1566,1197 +1572,1381 +1585,133666 +1586,1511 +1592,1197 +1599,1381 +1613,1511 +1615,133666 +1618,1197 +1627,1381 +1639,1511 +1643,1197 +1645,82312 +1646,133666 +1656,1381 +1665,1511 +1669,1197 +1677,133666 +1685,1381 +1690,1511 +1695,1197 +1709,133666 +1712,1381 +1715,1511 +1721,1197 +1739,1381 +1740,1511 +1740,133666 +1748,1197 +1765,1511 +1766,1381 +1767,82312 +1770,133666 +1776,1197 +1790,1511 +1792,1381 +1800,133666 +1805,1197 +1816,1511 +1818,1381 +1830,133666 +1835,1197 +1842,1511 +1845,1381 +1860,133666 +1863,1197 +1869,1511 +1872,1381 +1888,82312 +1889,1197 +1890,133666 +1896,1511 +1900,1381 +1915,1197 +1919,133666 +1923,1511 +1929,1381 +1940,1197 +1948,133666 +1950,1511 +1959,1381 +1966,1197 +1977,1511 +1977,133666 +1987,1381 +1992,1197 +2003,1511 +2005,82312 +2007,133666 +2014,1381 +2018,1197 +2029,1511 +2037,133666 +2040,1381 +2045,1197 +2056,1511 +2066,1381 +2066,133666 +2072,1197 +2083,1511 +2092,1381 +2095,133666 +2100,1197 +2111,1511 +2118,1381 +2122,82312 +2124,133666 +2129,1197 +2138,1511 +2144,1381 +2153,133666 +2157,1197 +2164,1511 +2170,1381 +2182,133666 +2184,1197 +2190,1511 +2196,1381 +2210,1197 +2211,133666 +2215,1511 +2223,1381 +2235,1197 +2237,82312 +2240,1511 +2240,133666 +2251,1381 +2260,1197 +2266,1511 +2270,133666 +2279,1381 +2285,1197 +2292,1511 +2301,133666 +2306,1381 +2310,1197 +2318,1511 +2331,133666 +2332,1381 +2335,1197 +2345,1511 +2355,82312 +2359,1381 +2360,1197 +2360,133666 +2372,1511 +2385,1197 +2386,1381 +2391,133666 +2400,1511 +2410,1197 +2414,1381 +2422,133666 +2429,1511 +2435,1197 +2442,1381 +2447,82312 +2453,133666 +2457,1511 +2460,1197 +2471,1381 +2482,133666 +2485,1197 +2485,1511 +2501,1381 +2510,1197 +2512,133666 +2514,1511 +2530,1381 +2535,1197 +2535,82312 +2544,133666 +2545,1511 +2557,1381 +2560,1197 +2577,1511 +2578,133666 +2585,1197 +2585,1381 +2605,1511 +2609,133666 +2611,1197 +2614,1381 +2627,82312 +2631,1511 +2637,1197 +2640,133666 +2644,1381 +2657,1511 +2663,1197 +2672,133666 +2675,1381 +2683,1511 +2689,1197 +2703,1381 +2706,133666 +2709,1511 +2716,1197 +2716,82312 +2730,1381 +2735,1511 +2740,133666 +2743,1197 +2756,1381 +2760,1511 +2771,1197 +2776,133666 +2781,1381 +2786,1511 +2799,1197 +2806,1381 +2810,133666 +2812,1511 +2826,1197 +2831,1381 +2839,1511 +2844,82312 +2846,133666 +2852,1197 +2855,1381 +2866,1511 +2878,1197 +2879,133666 +2880,1381 +2894,1511 +2904,1197 +2905,1381 +2914,133666 +2923,1511 +2930,1381 +2931,1197 +2949,1511 +2949,133666 +2956,1381 +2959,1197 +2974,1511 +2980,133666 +2982,1381 +2986,82312 +2988,1197 +2999,1511 +3008,1381 +3010,133666 +3018,1197 +3024,1511 +3034,1381 +3040,133666 +3045,1197 +3050,1511 +3060,1381 +3070,133666 +3072,1197 +3076,1511 +3087,1381 +3098,1197 +3100,133666 +3103,1511 +3112,82312 +3115,1381 +3124,1197 +3130,1511 +3131,133666 +3143,1381 +3149,1197 +3158,1511 +3164,133666 +3170,1381 +3174,1197 +3186,1511 +3196,1381 +3196,133666 +3200,1197 +3215,1511 +3222,1381 +3226,1197 +3227,133666 +3238,82312 +3242,1511 +3247,1381 +3253,1197 +3260,133666 +3268,1511 +3272,1381 +3280,1197 +3293,1511 +3293,133666 +3297,1381 +3307,1197 +3318,1511 +3323,1381 +3325,133666 +3335,1197 +3343,1511 +3349,1381 +3356,133666 +3363,1197 +3368,1511 +3368,82312 +3375,1381 +3387,133666 +3390,1197 +3393,1511 +3402,1381 +3417,1197 +3417,1511 +3417,133666 +3430,1381 +3442,1511 +3445,1197 +3449,133666 +3459,1381 +3467,1511 +3473,1197 +3481,133666 +3487,1381 +3492,1511 +3494,82312 +3502,1197 +3513,133666 +3514,1381 +3517,1511 +3531,1197 +3541,1381 +3542,1511 +3545,133666 +3560,1197 +3568,1381 +3568,1511 +3579,133666 +3586,1197 +3594,1511 +3596,1381 +3611,1197 +3612,133666 +3620,1511 +3625,1381 +3625,82312 +3637,1197 +3644,133666 +3646,1511 +3655,1381 +3663,1197 +3672,1511 +3676,133666 +3683,1381 +3689,1197 +3699,1511 +3708,133666 +3710,1381 +3716,1197 +3726,1511 +3737,1381 +3739,133666 +3743,1197 +3753,1511 +3757,82312 +3763,1381 +3769,133666 +3771,1197 +3781,1511 +3789,1381 +3798,1197 +3801,133666 +3808,1511 +3815,1381 +3826,1197 +3833,133666 +3834,1511 +3841,1381 +3853,1197 +3853,82312 +3860,1511 +3865,133666 +3868,1381 +3879,1197 +3885,1511 +3895,1381 +3898,133666 +3904,1197 +3911,1511 +3923,1381 +3929,1197 +3930,133666 +3937,1511 +3948,82312 +3950,1381 +3954,1197 +3961,133666 +3964,1511 +3976,1381 +3979,1197 +3991,1511 +3994,133666 +4002,1381 +4004,1197 +4019,1511 +4026,133666 +4029,1381 +4030,1197 +4039,82312 +4048,1511 +4056,1197 +4056,1381 +4057,133666 +4074,1511 +4083,1197 +4084,1381 +4090,133666 +4099,1511 +4110,1197 +4113,1381 +4125,1511 +4125,133666 +4138,1197 +4143,1381 +4151,1511 +4160,82312 +4161,133666 +4165,1197 +4170,1381 +4178,1511 +4191,1197 +4193,133666 +4196,1381 +4205,1511 +4217,1197 +4222,1381 +4226,133666 +4233,1511 +4242,1197 +4248,1381 +4259,133666 +4262,1511 +4267,1197 +4275,1381 +4290,1511 +4292,1197 +4293,133666 +4296,82312 +4302,1381 +4317,1197 +4318,1511 +4326,133666 +4330,1381 +4343,1197 +4347,1511 +4359,1381 +4360,133666 +4368,1197 +4377,1511 +4389,1381 +4394,1197 +4395,133666 +4405,1511 +4416,1381 +4420,1197 +4429,133666 +4434,1511 +4434,82312 +4442,1381 +4447,1197 +4462,1511 +4463,133666 +4468,1381 +4474,1197 +4489,1511 +4494,1381 +4496,133666 +4502,1197 +4515,1511 +4520,1381 +4528,133666 +4531,1197 +4540,1511 +4546,1381 +4560,1197 +4561,133666 +4565,1511 +4572,1381 +4572,82312 +4587,1197 +4590,1511 +4594,133666 +4598,1381 +4614,1197 +4615,1511 +4625,1381 +4627,133666 +4640,1511 +4642,1197 +4653,1381 +4662,133666 +4665,1511 +4671,1197 +4682,1381 +4690,1511 +4694,133666 +4698,1197 +4709,82312 +4710,1381 +4715,1511 +4726,1197 +4726,133666 +4736,1381 +4740,1511 +4755,1197 +4759,133666 +4761,1381 +4766,1511 +4781,1197 +4786,1381 +4791,133666 +4792,1511 +4807,1197 +4811,1381 +4819,1511 +4826,133666 +4832,1197 +4836,1381 +4844,82312 +4846,1511 +4857,1197 +4858,133666 +4861,1381 +4874,1511 +4881,1197 +4886,1381 +4891,133666 +4902,1511 +4905,1197 +4912,1381 +4926,133666 +4929,1197 +4930,1511 +4938,1381 +4946,82312 +4954,1197 +4957,1511 +4958,133666 +4964,1381 +4979,1197 +4983,1511 +4990,133666 +4991,1381 +5003,1197 +5009,1511 +5019,1381 +5024,133666 +5028,1197 +5034,1511 +5043,82312 +5047,1381 +5052,1197 +5056,133666 +5060,1511 +5073,1381 +5076,1197 +5086,1511 +5088,133666 +5100,1197 +5100,1381 +5113,1511 +5121,133666 +5125,1197 +5128,1381 +5138,82312 +5140,1511 +5150,1197 +5151,133666 +5157,1381 +5168,1511 +5175,1197 +5182,133666 +5186,1381 +5195,1511 +5200,1197 +5213,133666 +5214,1381 +5221,1511 +5225,1197 +5240,1381 +5244,133666 +5247,1511 +5250,1197 +5255,82312 +5266,1381 +5273,1511 +5274,133666 +5275,1197 +5291,1381 +5300,1511 +5301,1197 +5305,133666 +5316,1381 +5327,1197 +5327,1511 +5338,133666 +5341,1381 +5353,1197 +5355,1511 +5366,1381 +5372,133666 +5379,82312 +5380,1197 +5384,1511 +5392,1381 +5404,133666 +5406,1197 +5411,1511 +5418,1381 +5432,1197 +5436,133666 +5437,1511 +5445,1381 +5457,1197 +5463,1511 +5468,133666 +5472,1381 +5482,1197 +5489,1511 +5500,1381 +5500,133666 +5507,1197 +5510,82312 +5515,1511 +5527,1381 +5531,133666 +5532,1197 +5541,1511 +5553,1381 +5557,1197 +5563,133666 +5568,1511 +5578,1381 +5582,1197 +5595,133666 +5596,1511 +5603,1381 +5608,1197 +5622,1511 +5628,1381 +5628,133666 +5634,1197 +5639,82312 +5648,1511 +5653,1381 +5659,133666 +5661,1197 +5673,1511 +5678,1381 +5688,1197 +5692,133666 +5698,1511 +5703,1381 +5715,1197 +5723,1511 +5724,133666 +5728,1381 +5742,1197 +5747,1511 +5754,1381 +5756,133666 +5768,1197 +5770,82312 +5771,1511 +5780,1381 +5790,133666 +5794,1197 +5796,1511 +5807,1381 +5820,133666 +5821,1197 +5821,1511 +5834,1381 +5846,1511 +5848,1197 +5852,133666 +5862,1381 +5871,1511 +5875,1197 +5884,133666 +5890,1381 +5896,1511 +5901,82312 +5903,1197 +5916,133666 +5917,1381 +5921,1511 +5931,1197 +5942,1381 +5946,1511 +5948,133666 +5960,1197 +5967,1381 +5972,1511 +5981,133666 +5987,1197 +5992,1381 +5998,1511 +6013,1197 +6013,133666 +6017,1381 +6025,1511 +6031,82312 +6038,1197 +6041,1381 +6044,133666 +6052,1511 +6063,1197 +6066,1381 +6075,133666 +6080,1511 +6089,1197 +6091,1381 +6107,133666 +6109,1511 +6115,1197 +6116,1381 +6127,82312 +6135,1511 +6137,133666 +6142,1197 +6142,1381 +6160,1511 +6166,133666 +6168,1381 +6169,1197 +6185,1511 +6195,1381 +6196,133666 +6197,1197 +6210,1511 +6215,82312 +6222,1381 +6226,1197 +6228,133666 +6235,1511 +6249,1381 +6256,1197 +6260,133666 +6261,1511 +6276,1381 +6283,1197 +6287,1511 +6294,133666 +6302,1381 +6303,82312 +6309,1197 +6313,1511 +6328,1381 +6328,133666 +6335,1197 +6340,1511 +6354,1381 +6359,133666 +6361,1197 +6367,1511 +6379,1381 +6386,1197 +6390,133666 +6395,1511 +6404,1381 +6411,1197 +6421,133666 +6423,82312 +6424,1511 +6429,1381 +6436,1197 +6451,1511 +6454,1381 +6454,133666 +6462,1197 +6478,1511 +6479,1381 +6485,133666 +6488,1197 +6504,1381 +6506,1511 +6515,1197 +6517,133666 +6529,1381 +6533,1511 +6543,1197 +6549,82312 +6552,133666 +6554,1381 +6560,1511 +6571,1197 +6579,1381 +6585,133666 +6587,1511 +6599,1197 +6604,1381 +6615,1511 +6620,133666 +6625,1197 +6629,1381 +6643,1511 +6651,1197 +6652,133666 +6654,1381 +6670,1511 +6677,1197 +6679,1381 +6685,82312 +6686,133666 +6697,1511 +6703,1197 +6705,1381 +6722,1511 +6722,133666 +6730,1197 +6731,1381 +6747,1511 +6754,133666 +6757,1381 +6758,1197 +6773,1511 +6784,1381 +6785,133666 +6787,1197 +6799,1511 +6812,1381 +6817,1197 +6818,133666 +6821,82312 +6826,1511 +6839,1381 +6845,1197 +6851,133666 +6853,1511 +6866,1381 +6872,1197 +6881,1511 +6887,133666 +6892,1381 +6898,1197 +6910,1511 +6918,1381 +6921,133666 +6925,1197 +6937,1511 +6944,1381 +6953,1197 +6954,133666 +6958,82312 +6963,1511 +6970,1381 +6982,1197 +6988,133666 +6989,1511 +6996,1381 +7009,1197 +7014,1511 +7022,133666 +7023,1381 +7035,1197 +7039,1511 +7050,1381 +7057,133666 +7060,1197 +7065,1511 +7078,1381 +7085,1197 +7090,133666 +7091,1511 +7098,82312 +7105,1381 +7110,1197 +7118,1511 +7125,133666 +7131,1381 +7135,1197 +7145,1511 +7156,1381 +7159,133666 +7160,1197 +7172,1511 +7181,1381 +7185,1197 +7194,133666 +7200,1511 +7206,1381 +7211,1197 +7227,1511 +7228,133666 +7231,1381 +7237,1197 +7240,82312 +7253,1511 +7256,1381 +7262,133666 +7264,1197 +7279,1511 +7281,1381 +7291,1197 +7298,133666 +7306,1381 +7306,1511 +7319,1197 +7331,1381 +7332,133666 +7333,1511 +7348,1197 +7357,1381 +7361,1511 +7368,133666 +7377,1197 +7382,1381 +7386,82312 +7390,1511 +7402,133666 +7404,1197 +7407,1381 +7420,1511 +7431,1197 +7433,1381 +7435,133666 +7450,1511 +7458,1197 +7459,1381 +7471,133666 +7478,1511 +7486,1197 +7486,1381 +7492,82312 +7504,1511 +7506,133666 +7513,1381 +7515,1197 +7530,1511 +7537,133666 +7541,1381 +7546,1197 +7556,1511 +7567,133666 +7569,1381 +7577,1197 +7582,1511 +7589,82312 +7597,1381 +7597,133666 +7605,1197 +7609,1511 +7624,1381 +7627,133666 +7632,1197 +7636,1511 +7651,1381 +7656,133666 +7658,1197 +7664,1511 +7677,1381 +7677,82312 +7684,1197 +7685,133666 +7693,1511 +7703,1381 +7710,1197 +7714,133666 +7723,1511 +7728,1381 +7736,1197 +7744,133666 +7750,1511 +7753,1381 +7762,82312 +7763,1197 +7774,133666 +7778,1381 +7778,1511 +7790,1197 +7803,133666 +7804,1381 +7807,1511 +7818,1197 +7830,1381 +7832,133666 +7837,1511 +7844,82312 +7847,1197 +7856,1381 +7862,133666 +7866,1511 +7876,1197 +7882,1381 +7892,133666 +7895,1511 +7903,1197 +7908,1381 +7923,1511 +7924,133666 +7929,1197 +7935,1381 +7950,1511 +7952,82312 +7954,133666 +7955,1197 +7962,1381 +7976,1511 +7981,1197 +7985,133666 +7990,1381 +8002,1511 +8006,1197 +8016,133666 +8019,1381 +8028,1511 +8031,1197 +8048,1381 +8049,133666 +8054,1511 +8057,1197 +8075,1381 +8075,82312 +8079,133666 +8081,1511 +8083,1197 +8100,1381 +8108,1511 +8108,133666 +8110,1197 +8125,1381 +8136,1511 +8138,1197 +8139,133666 +8151,1381 +8165,1511 +8167,1197 +8167,82312 +8172,133666 +8177,1381 +8195,1511 +8196,1197 +8204,1381 +8205,133666 +8223,1197 +8223,1511 +8231,1381 +8241,133666 +8249,1197 +8250,1511 +8259,1381 +8263,82312 +8272,133666 +8275,1197 +8276,1511 +8288,1381 +8301,1197 +8303,1511 +8303,133666 +8318,1381 +8328,1197 +8331,1511 +8336,133666 +8349,1381 +8355,1197 +8357,82312 +8359,1511 +8370,133666 +8376,1381 +8381,1197 +8388,1511 +8402,1381 +8403,133666 +8407,1197 +8417,1511 +8428,1381 +8433,1197 +8434,133666 +8447,1511 +8453,1381 +8453,82312 +8460,1197 +8468,133666 +8475,1511 +8478,1381 +8487,1197 +8501,133666 +8503,1381 +8503,1511 +8515,1197 +8528,1381 +8532,1511 +8535,133666 +8544,1197 +8547,82312 +8553,1381 +8562,1511 +8568,133666 +8573,1197 +8578,1381 +8591,1511 +8600,1197 +8600,133666 +8603,1381 +8619,1511 +8627,1197 +8629,1381 +8633,133666 +8646,1511 +8654,1197 +8655,1381 +8669,133666 +8671,82312 +8673,1511 +8682,1197 +8682,1381 +8699,1511 +8703,133666 +8709,1381 +8711,1197 +8725,1511 +8734,133666 +8737,1381 +8742,1197 +8751,1511 +8765,1381 +8765,133666 +8773,1197 +8778,1511 +8793,1381 +8796,133666 +8801,1197 +8805,82312 +8806,1511 +8820,1381 +8825,133666 +8828,1197 +8835,1511 +8846,1381 +8855,1197 +8855,133666 +8864,1511 +8872,1381 +8882,1197 +8885,133666 +8892,1511 +8899,1381 +8908,1197 +8915,133666 +8919,1511 +8926,1381 +8926,82312 +8935,1197 +8945,1511 +8945,133666 +8953,1381 +8962,1197 +8971,1511 +8976,133666 +8979,1381 +8990,1197 +8996,1511 +9006,1381 +9008,133666 +9016,1197 +9022,1511 +9034,1381 +9039,133666 +9042,1197 +9048,1511 +9048,82312 +9060,1381 +9068,1197 +9071,133666 +9075,1511 +9086,1381 +9093,1197 +9103,1511 +9103,133666 +9112,1381 +9118,1197 +9131,1511 +9136,133666 +9137,1381 +9144,1197 +9157,1511 +9162,1381 +9168,133666 +9170,1197 +9176,82312 +9183,1511 +9187,1381 +9197,1197 +9201,133666 +9208,1511 +9212,1381 +9224,1197 +9233,1511 +9233,133666 +9237,1381 +9251,1197 +9258,1511 +9263,1381 +9265,133666 +9277,1197 +9283,1511 +9289,1381 +9299,133666 +9302,1197 +9307,1511 +9307,82312 +9316,1381 +9327,1197 +9331,1511 +9333,133666 +9344,1381 +9352,1197 +9355,1511 +9369,133666 +9372,1381 +9377,1197 +9380,1511 +9398,1381 +9402,1197 +9404,133666 +9405,1511 +9423,1381 +9427,1197 +9430,1511 +9441,133666 +9447,1381 +9448,82312 +9453,1197 +9456,1511 +9471,1381 +9475,133666 +9479,1197 +9482,1511 +9495,1381 +9505,133666 +9506,1197 +9509,1511 +9519,1381 +9533,1197 +9536,1511 +9536,133666 +9544,1381 +9561,1197 +9563,1511 +9568,133666 +9569,1381 +9586,82312 +9589,1197 +9589,1511 +9594,1381 +9602,133666 +9614,1511 +9615,1197 +9619,1381 +9637,133666 +9639,1511 +9640,1197 +9645,1381 +9664,1511 +9665,1197 +9669,133666 +9671,1381 +9688,82312 +9689,1511 +9690,1197 +9698,1381 +9704,133666 +9714,1511 +9715,1197 +9725,1381 +9739,1511 +9739,133666 +9740,1197 +9753,1381 +9764,1511 +9765,1197 +9775,133666 +9782,1381 +9789,1511 +9789,82312 +9791,1197 +9809,1381 +9810,133666 +9815,1511 +9817,1197 +9834,1381 +9841,1511 +9841,133666 +9844,1197 +9859,1381 +9868,1511 +9871,1197 +9873,133666 +9884,1381 +9895,1511 +9899,1197 +9907,133666 +9909,1381 +9919,82312 +9922,1511 +9927,1197 +9934,1381 +9943,133666 +9949,1511 +9954,1197 +9960,1381 +9975,1511 +9977,133666 +9980,1197 +9986,1381 diff --git a/registry/phase4ad-author-semantics/evidence/components/five-reset_and_refractory/events.csv b/registry/phase4ad-author-semantics/evidence/components/five-reset_and_refractory/events.csv new file mode 100644 index 0000000..f2de6c6 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/components/five-reset_and_refractory/events.csv @@ -0,0 +1,635 @@ +step,neuron_idx +0,1381 +45,1197 +49,1511 +77,1381 +88,133666 +96,1197 +116,1511 +135,1381 +157,1197 +165,133666 +178,1511 +198,1381 +212,1197 +237,1511 +250,133666 +258,1381 +277,1197 +295,1511 +318,1381 +328,133666 +339,1197 +358,1511 +377,1381 +399,1197 +407,133666 +420,1511 +440,1381 +454,1197 +479,1511 +492,133666 +500,1381 +519,1197 +537,1511 +560,1381 +570,133666 +581,1197 +600,1511 +619,1381 +641,1197 +649,133666 +662,1511 +682,1381 +682,82312 +696,1197 +721,1511 +734,133666 +742,1381 +761,1197 +779,1511 +802,1381 +812,133666 +823,1197 +842,1511 +861,1381 +883,1197 +891,133666 +904,1511 +924,1381 +938,1197 +963,1511 +976,133666 +984,1381 +1003,1197 +1021,1511 +1044,1381 +1054,133666 +1065,1197 +1084,1511 +1103,1381 +1125,1197 +1133,133666 +1146,1511 +1166,1381 +1180,1197 +1205,1511 +1218,133666 +1226,1381 +1245,1197 +1263,1511 +1286,1381 +1296,133666 +1307,1197 +1326,1511 +1332,82312 +1345,1381 +1367,1197 +1375,133666 +1388,1511 +1408,1381 +1422,1197 +1447,1511 +1460,133666 +1468,1381 +1487,1197 +1505,1511 +1528,1381 +1538,133666 +1549,1197 +1568,1511 +1587,1381 +1609,1197 +1617,133666 +1630,1511 +1650,1381 +1664,1197 +1689,1511 +1702,133666 +1710,1381 +1729,1197 +1747,1511 +1770,1381 +1780,133666 +1791,1197 +1810,1511 +1829,1381 +1851,1197 +1859,133666 +1872,1511 +1892,1381 +1906,1197 +1931,1511 +1944,133666 +1952,1381 +1971,1197 +1983,82312 +1989,1511 +2012,1381 +2022,133666 +2033,1197 +2052,1511 +2071,1381 +2093,1197 +2101,133666 +2114,1511 +2134,1381 +2148,1197 +2173,1511 +2186,133666 +2194,1381 +2213,1197 +2231,1511 +2254,1381 +2264,133666 +2275,1197 +2294,1511 +2313,1381 +2335,1197 +2343,133666 +2356,1511 +2376,1381 +2390,1197 +2415,1511 +2428,133666 +2436,1381 +2455,1197 +2473,1511 +2496,1381 +2506,133666 +2517,1197 +2536,1511 +2555,1381 +2577,1197 +2585,133666 +2598,1511 +2618,1381 +2618,82312 +2632,1197 +2657,1511 +2670,133666 +2678,1381 +2697,1197 +2715,1511 +2738,1381 +2748,133666 +2759,1197 +2778,1511 +2797,1381 +2819,1197 +2827,133666 +2840,1511 +2860,1381 +2874,1197 +2899,1511 +2912,133666 +2920,1381 +2939,1197 +2957,1511 +2980,1381 +2990,133666 +3001,1197 +3020,1511 +3039,1381 +3061,1197 +3069,133666 +3082,1511 +3102,1381 +3116,1197 +3141,1511 +3154,133666 +3162,1381 +3181,1197 +3199,1511 +3222,1381 +3232,133666 +3243,1197 +3262,1511 +3268,82312 +3281,1381 +3303,1197 +3311,133666 +3324,1511 +3344,1381 +3358,1197 +3383,1511 +3396,133666 +3404,1381 +3423,1197 +3441,1511 +3464,1381 +3474,133666 +3485,1197 +3504,1511 +3523,1381 +3545,1197 +3553,133666 +3566,1511 +3586,1381 +3600,1197 +3625,1511 +3638,133666 +3646,1381 +3665,1197 +3683,1511 +3706,1381 +3716,133666 +3727,1197 +3746,1511 +3765,1381 +3787,1197 +3795,133666 +3808,1511 +3828,1381 +3842,1197 +3867,1511 +3880,133666 +3888,1381 +3907,1197 +3919,82312 +3925,1511 +3948,1381 +3958,133666 +3969,1197 +3988,1511 +4007,1381 +4029,1197 +4037,133666 +4050,1511 +4070,1381 +4084,1197 +4109,1511 +4122,133666 +4130,1381 +4149,1197 +4167,1511 +4190,1381 +4200,133666 +4211,1197 +4230,1511 +4249,1381 +4271,1197 +4279,133666 +4292,1511 +4312,1381 +4326,1197 +4351,1511 +4364,133666 +4372,1381 +4391,1197 +4409,1511 +4432,1381 +4442,133666 +4453,1197 +4472,1511 +4491,1381 +4513,1197 +4521,133666 +4534,1511 +4554,1381 +4554,82312 +4568,1197 +4593,1511 +4606,133666 +4614,1381 +4633,1197 +4651,1511 +4674,1381 +4684,133666 +4695,1197 +4714,1511 +4733,1381 +4755,1197 +4763,133666 +4776,1511 +4796,1381 +4810,1197 +4835,1511 +4848,133666 +4856,1381 +4875,1197 +4893,1511 +4916,1381 +4926,133666 +4937,1197 +4956,1511 +4975,1381 +4997,1197 +5005,133666 +5018,1511 +5038,1381 +5052,1197 +5077,1511 +5090,133666 +5098,1381 +5117,1197 +5135,1511 +5158,1381 +5168,133666 +5179,1197 +5198,1511 +5204,82312 +5217,1381 +5239,1197 +5247,133666 +5260,1511 +5280,1381 +5294,1197 +5319,1511 +5332,133666 +5340,1381 +5359,1197 +5377,1511 +5400,1381 +5410,133666 +5421,1197 +5440,1511 +5459,1381 +5481,1197 +5489,133666 +5502,1511 +5522,1381 +5536,1197 +5561,1511 +5574,133666 +5582,1381 +5601,1197 +5619,1511 +5642,1381 +5652,133666 +5663,1197 +5682,1511 +5701,1381 +5723,1197 +5731,133666 +5744,1511 +5764,1381 +5778,1197 +5803,1511 +5816,133666 +5824,1381 +5843,1197 +5855,82312 +5861,1511 +5884,1381 +5894,133666 +5905,1197 +5924,1511 +5943,1381 +5965,1197 +5973,133666 +5986,1511 +6006,1381 +6020,1197 +6045,1511 +6058,133666 +6066,1381 +6085,1197 +6103,1511 +6126,1381 +6136,133666 +6147,1197 +6166,1511 +6185,1381 +6207,1197 +6215,133666 +6228,1511 +6248,1381 +6262,1197 +6287,1511 +6300,133666 +6308,1381 +6327,1197 +6345,1511 +6368,1381 +6378,133666 +6389,1197 +6408,1511 +6427,1381 +6449,1197 +6457,133666 +6470,1511 +6490,1381 +6490,82312 +6504,1197 +6529,1511 +6542,133666 +6550,1381 +6569,1197 +6587,1511 +6610,1381 +6620,133666 +6631,1197 +6650,1511 +6669,1381 +6691,1197 +6699,133666 +6712,1511 +6732,1381 +6746,1197 +6771,1511 +6784,133666 +6792,1381 +6811,1197 +6829,1511 +6852,1381 +6862,133666 +6873,1197 +6892,1511 +6911,1381 +6933,1197 +6941,133666 +6954,1511 +6974,1381 +6988,1197 +7013,1511 +7026,133666 +7034,1381 +7053,1197 +7071,1511 +7094,1381 +7104,133666 +7115,1197 +7134,1511 +7140,82312 +7153,1381 +7175,1197 +7183,133666 +7196,1511 +7216,1381 +7230,1197 +7255,1511 +7268,133666 +7276,1381 +7295,1197 +7313,1511 +7336,1381 +7346,133666 +7357,1197 +7376,1511 +7395,1381 +7417,1197 +7425,133666 +7438,1511 +7458,1381 +7472,1197 +7497,1511 +7510,133666 +7518,1381 +7537,1197 +7555,1511 +7578,1381 +7588,133666 +7599,1197 +7618,1511 +7637,1381 +7659,1197 +7667,133666 +7680,1511 +7700,1381 +7714,1197 +7739,1511 +7752,133666 +7760,1381 +7779,1197 +7791,82312 +7797,1511 +7820,1381 +7830,133666 +7841,1197 +7860,1511 +7879,1381 +7901,1197 +7909,133666 +7922,1511 +7942,1381 +7956,1197 +7981,1511 +7994,133666 +8002,1381 +8021,1197 +8039,1511 +8062,1381 +8072,133666 +8083,1197 +8102,1511 +8121,1381 +8143,1197 +8151,133666 +8164,1511 +8184,1381 +8198,1197 +8223,1511 +8236,133666 +8244,1381 +8263,1197 +8281,1511 +8304,1381 +8314,133666 +8325,1197 +8344,1511 +8363,1381 +8385,1197 +8393,133666 +8406,1511 +8426,1381 +8426,82312 +8440,1197 +8465,1511 +8478,133666 +8486,1381 +8505,1197 +8523,1511 +8546,1381 +8556,133666 +8567,1197 +8586,1511 +8605,1381 +8627,1197 +8635,133666 +8648,1511 +8668,1381 +8682,1197 +8707,1511 +8720,133666 +8728,1381 +8747,1197 +8765,1511 +8788,1381 +8798,133666 +8809,1197 +8828,1511 +8847,1381 +8869,1197 +8877,133666 +8890,1511 +8910,1381 +8924,1197 +8949,1511 +8962,133666 +8970,1381 +8989,1197 +9007,1511 +9030,1381 +9040,133666 +9051,1197 +9070,1511 +9076,82312 +9089,1381 +9111,1197 +9119,133666 +9132,1511 +9152,1381 +9166,1197 +9191,1511 +9204,133666 +9212,1381 +9231,1197 +9249,1511 +9272,1381 +9282,133666 +9293,1197 +9312,1511 +9331,1381 +9353,1197 +9361,133666 +9374,1511 +9394,1381 +9408,1197 +9433,1511 +9446,133666 +9454,1381 +9473,1197 +9491,1511 +9514,1381 +9524,133666 +9535,1197 +9554,1511 +9573,1381 +9595,1197 +9603,133666 +9616,1511 +9636,1381 +9650,1197 +9675,1511 +9688,133666 +9696,1381 +9715,1197 +9727,82312 +9733,1511 +9756,1381 +9766,133666 +9777,1197 +9796,1511 +9815,1381 +9837,1197 +9845,133666 +9858,1511 +9878,1381 +9892,1197 +9917,1511 +9930,133666 +9938,1381 +9957,1197 +9975,1511 +9998,1381 diff --git a/registry/phase4ad-author-semantics/evidence/components/five-reset_g_only/events.csv b/registry/phase4ad-author-semantics/evidence/components/five-reset_g_only/events.csv new file mode 100644 index 0000000..69dab7b --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/components/five-reset_g_only/events.csv @@ -0,0 +1,869 @@ +step,neuron_idx +0,1381 +45,1197 +49,1511 +77,1381 +88,133666 +96,1197 +103,1511 +127,1381 +142,1197 +148,133666 +151,1511 +175,1381 +178,1197 +197,1511 +205,133666 +220,1381 +221,1197 +248,1511 +265,1197 +268,1381 +268,133666 +297,1511 +298,1197 +316,1381 +325,133666 +341,1197 +343,1511 +364,82312 +369,1381 +387,1197 +389,133666 +395,1511 +419,1381 +432,1197 +443,1511 +452,133666 +468,1381 +472,1197 +491,1511 +512,1381 +515,1197 +515,133666 +543,1511 +557,1197 +560,1381 +577,133666 +591,1511 +593,1197 +598,1381 +626,1197 +627,1511 +634,133666 +635,1381 +661,1197 +664,1511 +670,1381 +677,82312 +685,133666 +697,1197 +703,1511 +706,1381 +732,1197 +741,1511 +741,133666 +742,1381 +769,1197 +776,1381 +777,1511 +794,133666 +806,1197 +811,1381 +815,1511 +840,1197 +844,1381 +850,133666 +856,1511 +877,1197 +881,1381 +895,1511 +902,133666 +918,1197 +921,1381 +933,82312 +940,1511 +959,1197 +964,133666 +965,1381 +992,1511 +1000,1197 +1013,1381 +1024,133666 +1040,1511 +1041,1197 +1061,1381 +1082,1197 +1085,1511 +1086,133666 +1112,1381 +1124,1197 +1133,1511 +1146,133666 +1159,1381 +1163,1197 +1182,1511 +1203,1197 +1203,1381 +1207,133666 +1233,1511 +1244,1197 +1250,82312 +1251,1381 +1268,133666 +1281,1197 +1281,1511 +1301,1381 +1322,1197 +1325,1511 +1327,133666 +1352,1381 +1364,1197 +1373,1511 +1387,133666 +1399,1381 +1403,1197 +1422,1511 +1443,1197 +1443,1381 +1447,133666 +1473,1511 +1484,1197 +1491,1381 +1508,133666 +1521,1197 +1521,1511 +1541,1381 +1549,82312 +1562,1197 +1565,1511 +1567,133666 +1592,1381 +1604,1197 +1613,1511 +1627,133666 +1639,1381 +1643,1197 +1662,1511 +1683,1197 +1683,1381 +1687,133666 +1713,1511 +1724,1197 +1731,1381 +1748,133666 +1761,1197 +1761,1511 +1781,1381 +1802,1197 +1805,1511 +1807,133666 +1832,1381 +1844,1197 +1848,82312 +1853,1511 +1867,133666 +1879,1381 +1883,1197 +1902,1511 +1923,1197 +1923,1381 +1927,133666 +1953,1511 +1964,1197 +1971,1381 +1988,133666 +2001,1197 +2001,1511 +2021,1381 +2042,1197 +2045,1511 +2047,133666 +2072,1381 +2084,1197 +2093,1511 +2107,133666 +2119,1381 +2123,1197 +2142,1511 +2147,82312 +2163,1197 +2163,1381 +2167,133666 +2193,1511 +2204,1197 +2211,1381 +2228,133666 +2241,1197 +2241,1511 +2261,1381 +2282,1197 +2285,1511 +2287,133666 +2312,1381 +2324,1197 +2333,1511 +2347,133666 +2359,1381 +2363,1197 +2382,1511 +2403,1197 +2403,1381 +2407,133666 +2433,1511 +2444,1197 +2447,82312 +2451,1381 +2468,133666 +2481,1197 +2481,1511 +2501,1381 +2522,1197 +2525,1511 +2527,133666 +2552,1381 +2564,1197 +2573,1511 +2587,133666 +2599,1381 +2603,1197 +2622,1511 +2643,1197 +2643,1381 +2647,133666 +2673,1511 +2684,1197 +2691,1381 +2708,133666 +2721,1197 +2721,1511 +2741,1381 +2749,82312 +2762,1197 +2765,1511 +2767,133666 +2792,1381 +2804,1197 +2813,1511 +2827,133666 +2839,1381 +2843,1197 +2862,1511 +2883,1197 +2883,1381 +2887,133666 +2913,1511 +2924,1197 +2931,1381 +2948,133666 +2961,1197 +2961,1511 +2981,1381 +3002,1197 +3005,1511 +3007,133666 +3032,1381 +3044,1197 +3048,82312 +3053,1511 +3067,133666 +3079,1381 +3083,1197 +3102,1511 +3123,1197 +3123,1381 +3127,133666 +3153,1511 +3164,1197 +3171,1381 +3188,133666 +3201,1197 +3201,1511 +3221,1381 +3242,1197 +3245,1511 +3247,133666 +3272,1381 +3284,1197 +3293,1511 +3307,133666 +3319,1381 +3323,1197 +3342,1511 +3347,82312 +3363,1197 +3363,1381 +3367,133666 +3393,1511 +3404,1197 +3411,1381 +3428,133666 +3441,1197 +3441,1511 +3461,1381 +3482,1197 +3485,1511 +3487,133666 +3512,1381 +3524,1197 +3533,1511 +3547,133666 +3559,1381 +3563,1197 +3582,1511 +3603,1197 +3603,1381 +3607,133666 +3633,1511 +3644,1197 +3647,82312 +3651,1381 +3668,133666 +3681,1197 +3681,1511 +3701,1381 +3722,1197 +3725,1511 +3727,133666 +3752,1381 +3764,1197 +3773,1511 +3787,133666 +3799,1381 +3803,1197 +3822,1511 +3843,1197 +3843,1381 +3847,133666 +3873,1511 +3884,1197 +3891,1381 +3908,133666 +3921,1197 +3921,1511 +3941,1381 +3949,82312 +3962,1197 +3965,1511 +3967,133666 +3992,1381 +4004,1197 +4013,1511 +4027,133666 +4039,1381 +4043,1197 +4062,1511 +4083,1197 +4083,1381 +4087,133666 +4113,1511 +4124,1197 +4131,1381 +4148,133666 +4161,1197 +4161,1511 +4181,1381 +4202,1197 +4205,1511 +4207,133666 +4232,1381 +4244,1197 +4248,82312 +4253,1511 +4267,133666 +4279,1381 +4283,1197 +4302,1511 +4323,1197 +4323,1381 +4327,133666 +4353,1511 +4364,1197 +4371,1381 +4388,133666 +4401,1197 +4401,1511 +4421,1381 +4442,1197 +4445,1511 +4447,133666 +4472,1381 +4484,1197 +4493,1511 +4507,133666 +4519,1381 +4523,1197 +4542,1511 +4547,82312 +4563,1197 +4563,1381 +4567,133666 +4593,1511 +4604,1197 +4611,1381 +4628,133666 +4641,1197 +4641,1511 +4661,1381 +4682,1197 +4685,1511 +4687,133666 +4712,1381 +4724,1197 +4733,1511 +4747,133666 +4759,1381 +4763,1197 +4782,1511 +4803,1197 +4803,1381 +4807,133666 +4833,1511 +4844,1197 +4847,82312 +4851,1381 +4868,133666 +4881,1197 +4881,1511 +4901,1381 +4922,1197 +4925,1511 +4927,133666 +4952,1381 +4964,1197 +4973,1511 +4987,133666 +4999,1381 +5003,1197 +5022,1511 +5043,1197 +5043,1381 +5047,133666 +5073,1511 +5084,1197 +5091,1381 +5108,133666 +5121,1197 +5121,1511 +5141,1381 +5149,82312 +5162,1197 +5165,1511 +5167,133666 +5192,1381 +5204,1197 +5213,1511 +5227,133666 +5239,1381 +5243,1197 +5262,1511 +5283,1197 +5283,1381 +5287,133666 +5313,1511 +5324,1197 +5331,1381 +5348,133666 +5361,1197 +5361,1511 +5381,1381 +5402,1197 +5405,1511 +5407,133666 +5432,1381 +5444,1197 +5448,82312 +5453,1511 +5467,133666 +5479,1381 +5483,1197 +5502,1511 +5523,1197 +5523,1381 +5527,133666 +5553,1511 +5564,1197 +5571,1381 +5588,133666 +5601,1197 +5601,1511 +5621,1381 +5642,1197 +5645,1511 +5647,133666 +5672,1381 +5684,1197 +5693,1511 +5707,133666 +5719,1381 +5723,1197 +5742,1511 +5747,82312 +5763,1197 +5763,1381 +5767,133666 +5793,1511 +5804,1197 +5811,1381 +5828,133666 +5841,1197 +5841,1511 +5861,1381 +5882,1197 +5885,1511 +5887,133666 +5912,1381 +5924,1197 +5933,1511 +5947,133666 +5959,1381 +5963,1197 +5982,1511 +6003,1197 +6003,1381 +6007,133666 +6033,1511 +6044,1197 +6047,82312 +6051,1381 +6068,133666 +6081,1197 +6081,1511 +6101,1381 +6122,1197 +6125,1511 +6127,133666 +6152,1381 +6164,1197 +6173,1511 +6187,133666 +6199,1381 +6203,1197 +6222,1511 +6243,1197 +6243,1381 +6247,133666 +6273,1511 +6284,1197 +6291,1381 +6308,133666 +6321,1197 +6321,1511 +6341,1381 +6349,82312 +6362,1197 +6365,1511 +6367,133666 +6392,1381 +6404,1197 +6413,1511 +6427,133666 +6439,1381 +6443,1197 +6462,1511 +6483,1197 +6483,1381 +6487,133666 +6513,1511 +6524,1197 +6531,1381 +6548,133666 +6561,1197 +6561,1511 +6581,1381 +6602,1197 +6605,1511 +6607,133666 +6632,1381 +6644,1197 +6648,82312 +6653,1511 +6667,133666 +6679,1381 +6683,1197 +6702,1511 +6723,1197 +6723,1381 +6727,133666 +6753,1511 +6764,1197 +6771,1381 +6788,133666 +6801,1197 +6801,1511 +6821,1381 +6842,1197 +6845,1511 +6847,133666 +6872,1381 +6884,1197 +6893,1511 +6907,133666 +6919,1381 +6923,1197 +6942,1511 +6947,82312 +6963,1197 +6963,1381 +6967,133666 +6993,1511 +7004,1197 +7011,1381 +7028,133666 +7041,1197 +7041,1511 +7061,1381 +7082,1197 +7085,1511 +7087,133666 +7112,1381 +7124,1197 +7133,1511 +7147,133666 +7159,1381 +7163,1197 +7182,1511 +7203,1197 +7203,1381 +7207,133666 +7233,1511 +7244,1197 +7247,82312 +7251,1381 +7268,133666 +7281,1197 +7281,1511 +7301,1381 +7322,1197 +7325,1511 +7327,133666 +7352,1381 +7364,1197 +7373,1511 +7387,133666 +7399,1381 +7403,1197 +7422,1511 +7443,1197 +7443,1381 +7447,133666 +7473,1511 +7484,1197 +7491,1381 +7508,133666 +7521,1197 +7521,1511 +7541,1381 +7549,82312 +7562,1197 +7565,1511 +7567,133666 +7592,1381 +7604,1197 +7613,1511 +7627,133666 +7639,1381 +7643,1197 +7662,1511 +7683,1197 +7683,1381 +7687,133666 +7713,1511 +7724,1197 +7731,1381 +7748,133666 +7761,1197 +7761,1511 +7781,1381 +7802,1197 +7805,1511 +7807,133666 +7832,1381 +7844,1197 +7848,82312 +7853,1511 +7867,133666 +7879,1381 +7883,1197 +7902,1511 +7923,1197 +7923,1381 +7927,133666 +7953,1511 +7964,1197 +7971,1381 +7988,133666 +8001,1197 +8001,1511 +8021,1381 +8042,1197 +8045,1511 +8047,133666 +8072,1381 +8084,1197 +8093,1511 +8107,133666 +8119,1381 +8123,1197 +8142,1511 +8147,82312 +8163,1197 +8163,1381 +8167,133666 +8193,1511 +8204,1197 +8211,1381 +8228,133666 +8241,1197 +8241,1511 +8261,1381 +8282,1197 +8285,1511 +8287,133666 +8312,1381 +8324,1197 +8333,1511 +8347,133666 +8359,1381 +8363,1197 +8382,1511 +8403,1197 +8403,1381 +8407,133666 +8433,1511 +8444,1197 +8447,82312 +8451,1381 +8468,133666 +8481,1197 +8481,1511 +8501,1381 +8522,1197 +8525,1511 +8527,133666 +8552,1381 +8564,1197 +8573,1511 +8587,133666 +8599,1381 +8603,1197 +8622,1511 +8643,1197 +8643,1381 +8647,133666 +8673,1511 +8684,1197 +8691,1381 +8708,133666 +8721,1197 +8721,1511 +8741,1381 +8749,82312 +8762,1197 +8765,1511 +8767,133666 +8792,1381 +8804,1197 +8813,1511 +8827,133666 +8839,1381 +8843,1197 +8862,1511 +8883,1197 +8883,1381 +8887,133666 +8913,1511 +8924,1197 +8931,1381 +8948,133666 +8961,1197 +8961,1511 +8981,1381 +9002,1197 +9005,1511 +9007,133666 +9032,1381 +9044,1197 +9048,82312 +9053,1511 +9067,133666 +9079,1381 +9083,1197 +9102,1511 +9123,1197 +9123,1381 +9127,133666 +9153,1511 +9164,1197 +9171,1381 +9188,133666 +9201,1197 +9201,1511 +9221,1381 +9242,1197 +9245,1511 +9247,133666 +9272,1381 +9284,1197 +9293,1511 +9307,133666 +9319,1381 +9323,1197 +9342,1511 +9347,82312 +9363,1197 +9363,1381 +9367,133666 +9393,1511 +9404,1197 +9411,1381 +9428,133666 +9441,1197 +9441,1511 +9461,1381 +9482,1197 +9485,1511 +9487,133666 +9512,1381 +9524,1197 +9533,1511 +9547,133666 +9559,1381 +9563,1197 +9582,1511 +9603,1197 +9603,1381 +9607,133666 +9633,1511 +9644,1197 +9647,82312 +9651,1381 +9668,133666 +9681,1197 +9681,1511 +9701,1381 +9722,1197 +9725,1511 +9727,133666 +9752,1381 +9764,1197 +9773,1511 +9787,133666 +9799,1381 +9803,1197 +9822,1511 +9843,1197 +9843,1381 +9847,133666 +9873,1511 +9884,1197 +9891,1381 +9908,133666 +9921,1197 +9921,1511 +9941,1381 +9949,82312 +9962,1197 +9965,1511 +9967,133666 +9992,1381 diff --git a/registry/phase4ad-author-semantics/evidence/components/no_input-frozen/events.csv b/registry/phase4ad-author-semantics/evidence/components/no_input-frozen/events.csv new file mode 100644 index 0000000..256e1e4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/components/no_input-frozen/events.csv @@ -0,0 +1 @@ +step,neuron_idx diff --git a/registry/phase4ad-author-semantics/evidence/components/no_input-refractory_gate_only/events.csv b/registry/phase4ad-author-semantics/evidence/components/no_input-refractory_gate_only/events.csv new file mode 100644 index 0000000..256e1e4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/components/no_input-refractory_gate_only/events.csv @@ -0,0 +1 @@ +step,neuron_idx diff --git a/registry/phase4ad-author-semantics/evidence/components/no_input-reset_and_refractory/events.csv b/registry/phase4ad-author-semantics/evidence/components/no_input-reset_and_refractory/events.csv new file mode 100644 index 0000000..256e1e4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/components/no_input-reset_and_refractory/events.csv @@ -0,0 +1 @@ +step,neuron_idx diff --git a/registry/phase4ad-author-semantics/evidence/components/no_input-reset_g_only/events.csv b/registry/phase4ad-author-semantics/evidence/components/no_input-reset_g_only/events.csv new file mode 100644 index 0000000..256e1e4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/components/no_input-reset_g_only/events.csv @@ -0,0 +1 @@ +step,neuron_idx diff --git a/registry/phase4ad-author-semantics/evidence/components/pair-frozen/events.csv b/registry/phase4ad-author-semantics/evidence/components/pair-frozen/events.csv new file mode 100644 index 0000000..d993275 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/components/pair-frozen/events.csv @@ -0,0 +1,474 @@ +step,neuron_idx +0,1381 +49,1511 +90,1381 +122,1511 +149,1381 +177,1511 +199,1381 +225,1511 +245,1381 +270,1511 +289,1381 +314,1511 +332,1381 +357,1511 +375,1381 +399,1511 +417,1381 +441,1511 +459,1381 +483,1511 +501,1381 +525,1511 +543,1381 +567,1511 +585,1381 +609,1511 +627,1381 +651,1511 +669,1381 +693,1511 +711,1381 +735,1511 +753,1381 +777,1511 +795,1381 +819,1511 +837,1381 +861,1511 +879,1381 +903,1511 +921,1381 +945,1511 +963,1381 +987,1511 +1005,1381 +1029,1511 +1047,1381 +1071,1511 +1089,1381 +1113,1511 +1131,1381 +1155,1511 +1173,1381 +1197,1511 +1215,1381 +1239,1511 +1257,1381 +1281,1511 +1299,1381 +1323,1511 +1341,1381 +1365,1511 +1383,1381 +1407,1511 +1425,1381 +1449,1511 +1467,1381 +1491,1511 +1509,1381 +1533,1511 +1551,1381 +1575,1511 +1593,1381 +1617,1511 +1635,1381 +1659,1511 +1677,1381 +1701,1511 +1719,1381 +1743,1511 +1761,1381 +1785,1511 +1803,1381 +1827,1511 +1845,1381 +1869,1511 +1887,1381 +1911,1511 +1929,1381 +1953,1511 +1971,1381 +1995,1511 +2013,1381 +2037,1511 +2055,1381 +2079,1511 +2097,1381 +2121,1511 +2139,1381 +2163,1511 +2181,1381 +2205,1511 +2223,1381 +2247,1511 +2265,1381 +2289,1511 +2307,1381 +2331,1511 +2349,1381 +2373,1511 +2391,1381 +2415,1511 +2433,1381 +2457,1511 +2475,1381 +2499,1511 +2517,1381 +2541,1511 +2559,1381 +2583,1511 +2601,1381 +2625,1511 +2643,1381 +2667,1511 +2685,1381 +2709,1511 +2727,1381 +2751,1511 +2769,1381 +2793,1511 +2811,1381 +2835,1511 +2853,1381 +2877,1511 +2895,1381 +2919,1511 +2937,1381 +2961,1511 +2979,1381 +3003,1511 +3021,1381 +3045,1511 +3063,1381 +3087,1511 +3105,1381 +3129,1511 +3147,1381 +3171,1511 +3189,1381 +3213,1511 +3231,1381 +3255,1511 +3273,1381 +3297,1511 +3315,1381 +3339,1511 +3357,1381 +3381,1511 +3399,1381 +3423,1511 +3441,1381 +3465,1511 +3483,1381 +3507,1511 +3525,1381 +3549,1511 +3567,1381 +3591,1511 +3609,1381 +3633,1511 +3651,1381 +3675,1511 +3693,1381 +3717,1511 +3735,1381 +3759,1511 +3777,1381 +3801,1511 +3819,1381 +3843,1511 +3861,1381 +3885,1511 +3903,1381 +3927,1511 +3945,1381 +3969,1511 +3987,1381 +4011,1511 +4029,1381 +4053,1511 +4071,1381 +4095,1511 +4113,1381 +4137,1511 +4155,1381 +4179,1511 +4197,1381 +4221,1511 +4239,1381 +4263,1511 +4281,1381 +4305,1511 +4323,1381 +4347,1511 +4365,1381 +4389,1511 +4407,1381 +4431,1511 +4449,1381 +4473,1511 +4491,1381 +4515,1511 +4533,1381 +4557,1511 +4575,1381 +4599,1511 +4617,1381 +4641,1511 +4659,1381 +4683,1511 +4701,1381 +4725,1511 +4743,1381 +4767,1511 +4785,1381 +4809,1511 +4827,1381 +4851,1511 +4869,1381 +4893,1511 +4911,1381 +4935,1511 +4953,1381 +4977,1511 +4995,1381 +5019,1511 +5037,1381 +5061,1511 +5079,1381 +5103,1511 +5121,1381 +5145,1511 +5163,1381 +5187,1511 +5205,1381 +5229,1511 +5247,1381 +5271,1511 +5289,1381 +5313,1511 +5331,1381 +5355,1511 +5373,1381 +5397,1511 +5415,1381 +5439,1511 +5457,1381 +5481,1511 +5499,1381 +5523,1511 +5541,1381 +5565,1511 +5583,1381 +5607,1511 +5625,1381 +5649,1511 +5667,1381 +5691,1511 +5709,1381 +5733,1511 +5751,1381 +5775,1511 +5793,1381 +5817,1511 +5835,1381 +5859,1511 +5877,1381 +5901,1511 +5919,1381 +5943,1511 +5961,1381 +5985,1511 +6003,1381 +6027,1511 +6045,1381 +6069,1511 +6087,1381 +6111,1511 +6129,1381 +6153,1511 +6171,1381 +6195,1511 +6213,1381 +6237,1511 +6255,1381 +6279,1511 +6297,1381 +6321,1511 +6339,1381 +6363,1511 +6381,1381 +6405,1511 +6423,1381 +6447,1511 +6465,1381 +6489,1511 +6507,1381 +6531,1511 +6549,1381 +6573,1511 +6591,1381 +6615,1511 +6633,1381 +6657,1511 +6675,1381 +6699,1511 +6717,1381 +6741,1511 +6759,1381 +6783,1511 +6801,1381 +6825,1511 +6843,1381 +6867,1511 +6885,1381 +6909,1511 +6927,1381 +6951,1511 +6969,1381 +6993,1511 +7011,1381 +7035,1511 +7053,1381 +7077,1511 +7095,1381 +7119,1511 +7137,1381 +7161,1511 +7179,1381 +7203,1511 +7221,1381 +7245,1511 +7263,1381 +7287,1511 +7305,1381 +7329,1511 +7347,1381 +7371,1511 +7389,1381 +7413,1511 +7431,1381 +7455,1511 +7473,1381 +7497,1511 +7515,1381 +7539,1511 +7557,1381 +7581,1511 +7599,1381 +7623,1511 +7641,1381 +7665,1511 +7683,1381 +7707,1511 +7725,1381 +7749,1511 +7767,1381 +7791,1511 +7809,1381 +7833,1511 +7851,1381 +7875,1511 +7893,1381 +7917,1511 +7935,1381 +7959,1511 +7977,1381 +8001,1511 +8019,1381 +8043,1511 +8061,1381 +8085,1511 +8103,1381 +8127,1511 +8145,1381 +8169,1511 +8187,1381 +8211,1511 +8229,1381 +8253,1511 +8271,1381 +8295,1511 +8313,1381 +8337,1511 +8355,1381 +8379,1511 +8397,1381 +8421,1511 +8439,1381 +8463,1511 +8481,1381 +8505,1511 +8523,1381 +8547,1511 +8565,1381 +8589,1511 +8607,1381 +8631,1511 +8649,1381 +8673,1511 +8691,1381 +8715,1511 +8733,1381 +8757,1511 +8775,1381 +8799,1511 +8817,1381 +8841,1511 +8859,1381 +8883,1511 +8901,1381 +8925,1511 +8943,1381 +8967,1511 +8985,1381 +9009,1511 +9027,1381 +9051,1511 +9069,1381 +9093,1511 +9111,1381 +9135,1511 +9153,1381 +9177,1511 +9195,1381 +9219,1511 +9237,1381 +9261,1511 +9279,1381 +9303,1511 +9321,1381 +9345,1511 +9363,1381 +9387,1511 +9405,1381 +9429,1511 +9447,1381 +9471,1511 +9489,1381 +9513,1511 +9531,1381 +9555,1511 +9573,1381 +9597,1511 +9615,1381 +9639,1511 +9657,1381 +9681,1511 +9699,1381 +9723,1511 +9741,1381 +9765,1511 +9783,1381 +9807,1511 +9825,1381 +9849,1511 +9867,1381 +9891,1511 +9909,1381 +9933,1511 +9951,1381 +9975,1511 +9993,1381 diff --git a/registry/phase4ad-author-semantics/evidence/components/pair-refractory_gate_only/events.csv b/registry/phase4ad-author-semantics/evidence/components/pair-refractory_gate_only/events.csv new file mode 100644 index 0000000..d5407d0 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/components/pair-refractory_gate_only/events.csv @@ -0,0 +1,636 @@ +step,neuron_idx +0,1381 +49,1511 +90,1381 +116,1511 +139,1381 +160,1511 +178,1381 +197,1511 +211,1381 +230,1511 +247,1381 +261,1511 +283,1381 +294,1511 +314,1381 +331,1511 +344,1381 +368,1511 +376,1381 +400,1511 +411,1381 +431,1511 +450,1381 +461,1511 +481,1381 +493,1511 +511,1381 +528,1511 +539,1381 +563,1511 +568,1381 +593,1511 +599,1381 +622,1511 +632,1381 +651,1511 +669,1381 +679,1511 +699,1381 +708,1511 +727,1381 +739,1511 +754,1381 +772,1511 +782,1381 +802,1511 +811,1381 +830,1511 +842,1381 +858,1511 +875,1381 +887,1511 +908,1381 +917,1511 +938,1381 +949,1511 +967,1381 +985,1511 +995,1381 +1015,1511 +1024,1381 +1044,1511 +1054,1381 +1072,1511 +1086,1381 +1099,1511 +1119,1381 +1127,1511 +1148,1381 +1156,1511 +1176,1381 +1187,1511 +1203,1381 +1220,1511 +1231,1381 +1253,1511 +1260,1381 +1283,1511 +1291,1381 +1312,1511 +1324,1381 +1341,1511 +1360,1381 +1371,1511 +1390,1381 +1403,1511 +1419,1381 +1438,1511 +1449,1381 +1469,1511 +1481,1381 +1499,1511 +1517,1381 +1527,1511 +1547,1381 +1557,1511 +1575,1381 +1588,1511 +1602,1381 +1621,1511 +1630,1381 +1651,1511 +1659,1381 +1679,1511 +1690,1381 +1707,1511 +1723,1381 +1736,1511 +1757,1381 +1767,1511 +1787,1381 +1800,1511 +1816,1381 +1835,1511 +1846,1381 +1866,1511 +1879,1381 +1896,1511 +1914,1381 +1928,1511 +1945,1381 +1963,1511 +1979,1381 +1995,1511 +2015,1381 +2030,1511 +2047,1381 +2067,1511 +2082,1381 +2100,1511 +2120,1381 +2131,1511 +2151,1381 +2165,1511 +2181,1381 +2201,1511 +2213,1381 +2233,1511 +2248,1381 +2264,1511 +2285,1381 +2297,1511 +2317,1381 +2334,1511 +2347,1381 +2371,1511 +2379,1381 +2403,1511 +2414,1381 +2434,1511 +2453,1381 +2464,1511 +2484,1381 +2496,1511 +2514,1381 +2531,1511 +2542,1381 +2566,1511 +2571,1381 +2596,1511 +2602,1381 +2625,1511 +2635,1381 +2654,1511 +2672,1381 +2682,1511 +2702,1381 +2711,1511 +2730,1381 +2742,1511 +2757,1381 +2775,1511 +2785,1381 +2805,1511 +2814,1381 +2833,1511 +2845,1381 +2861,1511 +2878,1381 +2890,1511 +2911,1381 +2920,1511 +2941,1381 +2952,1511 +2970,1381 +2988,1511 +2998,1381 +3018,1511 +3027,1381 +3047,1511 +3057,1381 +3075,1511 +3089,1381 +3102,1511 +3122,1381 +3130,1511 +3151,1381 +3159,1511 +3179,1381 +3190,1511 +3206,1381 +3223,1511 +3234,1381 +3256,1511 +3263,1381 +3286,1511 +3294,1381 +3315,1511 +3327,1381 +3344,1511 +3363,1381 +3374,1511 +3393,1381 +3406,1511 +3422,1381 +3441,1511 +3452,1381 +3472,1511 +3484,1381 +3502,1511 +3520,1381 +3530,1511 +3550,1381 +3560,1511 +3578,1381 +3591,1511 +3605,1381 +3624,1511 +3633,1381 +3654,1511 +3662,1381 +3682,1511 +3693,1381 +3710,1511 +3726,1381 +3739,1511 +3760,1381 +3770,1511 +3790,1381 +3803,1511 +3819,1381 +3838,1511 +3849,1381 +3869,1511 +3882,1381 +3899,1511 +3917,1381 +3931,1511 +3948,1381 +3966,1511 +3982,1381 +3998,1511 +4018,1381 +4033,1511 +4050,1381 +4070,1511 +4085,1381 +4103,1511 +4123,1381 +4134,1511 +4154,1381 +4168,1511 +4184,1381 +4204,1511 +4216,1381 +4236,1511 +4251,1381 +4267,1511 +4288,1381 +4300,1511 +4320,1381 +4337,1511 +4350,1381 +4374,1511 +4382,1381 +4406,1511 +4417,1381 +4437,1511 +4456,1381 +4467,1511 +4487,1381 +4499,1511 +4517,1381 +4534,1511 +4545,1381 +4569,1511 +4574,1381 +4599,1511 +4605,1381 +4628,1511 +4638,1381 +4657,1511 +4675,1381 +4685,1511 +4705,1381 +4714,1511 +4733,1381 +4745,1511 +4760,1381 +4778,1511 +4788,1381 +4808,1511 +4817,1381 +4836,1511 +4848,1381 +4864,1511 +4881,1381 +4893,1511 +4914,1381 +4923,1511 +4944,1381 +4955,1511 +4973,1381 +4991,1511 +5001,1381 +5021,1511 +5030,1381 +5050,1511 +5060,1381 +5078,1511 +5092,1381 +5105,1511 +5125,1381 +5133,1511 +5154,1381 +5162,1511 +5182,1381 +5193,1511 +5209,1381 +5226,1511 +5237,1381 +5259,1511 +5266,1381 +5289,1511 +5297,1381 +5318,1511 +5330,1381 +5347,1511 +5366,1381 +5377,1511 +5396,1381 +5409,1511 +5425,1381 +5444,1511 +5455,1381 +5475,1511 +5487,1381 +5505,1511 +5523,1381 +5533,1511 +5553,1381 +5563,1511 +5581,1381 +5594,1511 +5608,1381 +5627,1511 +5636,1381 +5657,1511 +5665,1381 +5685,1511 +5696,1381 +5713,1511 +5729,1381 +5742,1511 +5763,1381 +5773,1511 +5793,1381 +5806,1511 +5822,1381 +5841,1511 +5852,1381 +5872,1511 +5885,1381 +5902,1511 +5920,1381 +5934,1511 +5951,1381 +5969,1511 +5985,1381 +6001,1511 +6021,1381 +6036,1511 +6053,1381 +6073,1511 +6088,1381 +6106,1511 +6126,1381 +6137,1511 +6157,1381 +6171,1511 +6187,1381 +6207,1511 +6219,1381 +6239,1511 +6254,1381 +6270,1511 +6291,1381 +6303,1511 +6323,1381 +6340,1511 +6353,1381 +6377,1511 +6385,1381 +6409,1511 +6420,1381 +6440,1511 +6459,1381 +6470,1511 +6490,1381 +6502,1511 +6520,1381 +6537,1511 +6548,1381 +6572,1511 +6577,1381 +6602,1511 +6608,1381 +6631,1511 +6641,1381 +6660,1511 +6678,1381 +6688,1511 +6708,1381 +6717,1511 +6736,1381 +6748,1511 +6763,1381 +6781,1511 +6791,1381 +6811,1511 +6820,1381 +6839,1511 +6851,1381 +6867,1511 +6884,1381 +6896,1511 +6917,1381 +6926,1511 +6947,1381 +6958,1511 +6976,1381 +6994,1511 +7004,1381 +7024,1511 +7033,1381 +7053,1511 +7063,1381 +7081,1511 +7095,1381 +7108,1511 +7128,1381 +7136,1511 +7157,1381 +7165,1511 +7185,1381 +7196,1511 +7212,1381 +7229,1511 +7240,1381 +7262,1511 +7269,1381 +7292,1511 +7300,1381 +7321,1511 +7333,1381 +7350,1511 +7369,1381 +7380,1511 +7399,1381 +7412,1511 +7428,1381 +7447,1511 +7458,1381 +7478,1511 +7490,1381 +7508,1511 +7526,1381 +7536,1511 +7556,1381 +7566,1511 +7584,1381 +7597,1511 +7611,1381 +7630,1511 +7639,1381 +7660,1511 +7668,1381 +7688,1511 +7699,1381 +7716,1511 +7732,1381 +7745,1511 +7766,1381 +7776,1511 +7796,1381 +7809,1511 +7825,1381 +7844,1511 +7855,1381 +7875,1511 +7888,1381 +7905,1511 +7923,1381 +7937,1511 +7954,1381 +7972,1511 +7988,1381 +8004,1511 +8024,1381 +8039,1511 +8056,1381 +8076,1511 +8091,1381 +8109,1511 +8129,1381 +8140,1511 +8160,1381 +8174,1511 +8190,1381 +8210,1511 +8222,1381 +8242,1511 +8257,1381 +8273,1511 +8294,1381 +8306,1511 +8326,1381 +8343,1511 +8356,1381 +8380,1511 +8388,1381 +8412,1511 +8423,1381 +8443,1511 +8462,1381 +8473,1511 +8493,1381 +8505,1511 +8523,1381 +8540,1511 +8551,1381 +8575,1511 +8580,1381 +8605,1511 +8611,1381 +8634,1511 +8644,1381 +8663,1511 +8681,1381 +8691,1511 +8711,1381 +8720,1511 +8739,1381 +8751,1511 +8766,1381 +8784,1511 +8794,1381 +8814,1511 +8823,1381 +8842,1511 +8854,1381 +8870,1511 +8887,1381 +8899,1511 +8920,1381 +8929,1511 +8950,1381 +8961,1511 +8979,1381 +8997,1511 +9007,1381 +9027,1511 +9036,1381 +9056,1511 +9066,1381 +9084,1511 +9098,1381 +9111,1511 +9131,1381 +9139,1511 +9160,1381 +9168,1511 +9188,1381 +9199,1511 +9215,1381 +9232,1511 +9243,1381 +9265,1511 +9272,1381 +9295,1511 +9303,1381 +9324,1511 +9336,1381 +9353,1511 +9372,1381 +9383,1511 +9402,1381 +9415,1511 +9431,1381 +9450,1511 +9461,1381 +9481,1511 +9493,1381 +9511,1511 +9529,1381 +9539,1511 +9559,1381 +9569,1511 +9587,1381 +9600,1511 +9614,1381 +9633,1511 +9642,1381 +9663,1511 +9671,1381 +9691,1511 +9702,1381 +9719,1511 +9735,1381 +9748,1511 +9769,1381 +9779,1511 +9799,1381 +9812,1511 +9828,1381 +9847,1511 +9858,1381 +9878,1511 +9891,1381 +9908,1511 +9926,1381 +9940,1511 +9957,1381 +9975,1511 +9991,1381 diff --git a/registry/phase4ad-author-semantics/evidence/components/pair-reset_and_refractory/events.csv b/registry/phase4ad-author-semantics/evidence/components/pair-reset_and_refractory/events.csv new file mode 100644 index 0000000..e275bef --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/components/pair-reset_and_refractory/events.csv @@ -0,0 +1,224 @@ +step,neuron_idx +0,1381 +49,1511 +90,1381 +139,1511 +180,1381 +229,1511 +270,1381 +319,1511 +360,1381 +409,1511 +450,1381 +499,1511 +540,1381 +589,1511 +630,1381 +679,1511 +720,1381 +769,1511 +810,1381 +859,1511 +900,1381 +949,1511 +990,1381 +1039,1511 +1080,1381 +1129,1511 +1170,1381 +1219,1511 +1260,1381 +1309,1511 +1350,1381 +1399,1511 +1440,1381 +1489,1511 +1530,1381 +1579,1511 +1620,1381 +1669,1511 +1710,1381 +1759,1511 +1800,1381 +1849,1511 +1890,1381 +1939,1511 +1980,1381 +2029,1511 +2070,1381 +2119,1511 +2160,1381 +2209,1511 +2250,1381 +2299,1511 +2340,1381 +2389,1511 +2430,1381 +2479,1511 +2520,1381 +2569,1511 +2610,1381 +2659,1511 +2700,1381 +2749,1511 +2790,1381 +2839,1511 +2880,1381 +2929,1511 +2970,1381 +3019,1511 +3060,1381 +3109,1511 +3150,1381 +3199,1511 +3240,1381 +3289,1511 +3330,1381 +3379,1511 +3420,1381 +3469,1511 +3510,1381 +3559,1511 +3600,1381 +3649,1511 +3690,1381 +3739,1511 +3780,1381 +3829,1511 +3870,1381 +3919,1511 +3960,1381 +4009,1511 +4050,1381 +4099,1511 +4140,1381 +4189,1511 +4230,1381 +4279,1511 +4320,1381 +4369,1511 +4410,1381 +4459,1511 +4500,1381 +4549,1511 +4590,1381 +4639,1511 +4680,1381 +4729,1511 +4770,1381 +4819,1511 +4860,1381 +4909,1511 +4950,1381 +4999,1511 +5040,1381 +5089,1511 +5130,1381 +5179,1511 +5220,1381 +5269,1511 +5310,1381 +5359,1511 +5400,1381 +5449,1511 +5490,1381 +5539,1511 +5580,1381 +5629,1511 +5670,1381 +5719,1511 +5760,1381 +5809,1511 +5850,1381 +5899,1511 +5940,1381 +5989,1511 +6030,1381 +6079,1511 +6120,1381 +6169,1511 +6210,1381 +6259,1511 +6300,1381 +6349,1511 +6390,1381 +6439,1511 +6480,1381 +6529,1511 +6570,1381 +6619,1511 +6660,1381 +6709,1511 +6750,1381 +6799,1511 +6840,1381 +6889,1511 +6930,1381 +6979,1511 +7020,1381 +7069,1511 +7110,1381 +7159,1511 +7200,1381 +7249,1511 +7290,1381 +7339,1511 +7380,1381 +7429,1511 +7470,1381 +7519,1511 +7560,1381 +7609,1511 +7650,1381 +7699,1511 +7740,1381 +7789,1511 +7830,1381 +7879,1511 +7920,1381 +7969,1511 +8010,1381 +8059,1511 +8100,1381 +8149,1511 +8190,1381 +8239,1511 +8280,1381 +8329,1511 +8370,1381 +8419,1511 +8460,1381 +8509,1511 +8550,1381 +8599,1511 +8640,1381 +8689,1511 +8730,1381 +8779,1511 +8820,1381 +8869,1511 +8910,1381 +8959,1511 +9000,1381 +9049,1511 +9090,1381 +9139,1511 +9180,1381 +9229,1511 +9270,1381 +9319,1511 +9360,1381 +9409,1511 +9450,1381 +9499,1511 +9540,1381 +9589,1511 +9630,1381 +9679,1511 +9720,1381 +9769,1511 +9810,1381 +9859,1511 +9900,1381 +9949,1511 +9990,1381 diff --git a/registry/phase4ad-author-semantics/evidence/components/pair-reset_g_only/events.csv b/registry/phase4ad-author-semantics/evidence/components/pair-reset_g_only/events.csv new file mode 100644 index 0000000..e275bef --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/components/pair-reset_g_only/events.csv @@ -0,0 +1,224 @@ +step,neuron_idx +0,1381 +49,1511 +90,1381 +139,1511 +180,1381 +229,1511 +270,1381 +319,1511 +360,1381 +409,1511 +450,1381 +499,1511 +540,1381 +589,1511 +630,1381 +679,1511 +720,1381 +769,1511 +810,1381 +859,1511 +900,1381 +949,1511 +990,1381 +1039,1511 +1080,1381 +1129,1511 +1170,1381 +1219,1511 +1260,1381 +1309,1511 +1350,1381 +1399,1511 +1440,1381 +1489,1511 +1530,1381 +1579,1511 +1620,1381 +1669,1511 +1710,1381 +1759,1511 +1800,1381 +1849,1511 +1890,1381 +1939,1511 +1980,1381 +2029,1511 +2070,1381 +2119,1511 +2160,1381 +2209,1511 +2250,1381 +2299,1511 +2340,1381 +2389,1511 +2430,1381 +2479,1511 +2520,1381 +2569,1511 +2610,1381 +2659,1511 +2700,1381 +2749,1511 +2790,1381 +2839,1511 +2880,1381 +2929,1511 +2970,1381 +3019,1511 +3060,1381 +3109,1511 +3150,1381 +3199,1511 +3240,1381 +3289,1511 +3330,1381 +3379,1511 +3420,1381 +3469,1511 +3510,1381 +3559,1511 +3600,1381 +3649,1511 +3690,1381 +3739,1511 +3780,1381 +3829,1511 +3870,1381 +3919,1511 +3960,1381 +4009,1511 +4050,1381 +4099,1511 +4140,1381 +4189,1511 +4230,1381 +4279,1511 +4320,1381 +4369,1511 +4410,1381 +4459,1511 +4500,1381 +4549,1511 +4590,1381 +4639,1511 +4680,1381 +4729,1511 +4770,1381 +4819,1511 +4860,1381 +4909,1511 +4950,1381 +4999,1511 +5040,1381 +5089,1511 +5130,1381 +5179,1511 +5220,1381 +5269,1511 +5310,1381 +5359,1511 +5400,1381 +5449,1511 +5490,1381 +5539,1511 +5580,1381 +5629,1511 +5670,1381 +5719,1511 +5760,1381 +5809,1511 +5850,1381 +5899,1511 +5940,1381 +5989,1511 +6030,1381 +6079,1511 +6120,1381 +6169,1511 +6210,1381 +6259,1511 +6300,1381 +6349,1511 +6390,1381 +6439,1511 +6480,1381 +6529,1511 +6570,1381 +6619,1511 +6660,1381 +6709,1511 +6750,1381 +6799,1511 +6840,1381 +6889,1511 +6930,1381 +6979,1511 +7020,1381 +7069,1511 +7110,1381 +7159,1511 +7200,1381 +7249,1511 +7290,1381 +7339,1511 +7380,1381 +7429,1511 +7470,1381 +7519,1511 +7560,1381 +7609,1511 +7650,1381 +7699,1511 +7740,1381 +7789,1511 +7830,1381 +7879,1511 +7920,1381 +7969,1511 +8010,1381 +8059,1511 +8100,1381 +8149,1511 +8190,1381 +8239,1511 +8280,1381 +8329,1511 +8370,1381 +8419,1511 +8460,1381 +8509,1511 +8550,1381 +8599,1511 +8640,1381 +8689,1511 +8730,1381 +8779,1511 +8820,1381 +8869,1511 +8910,1381 +8959,1511 +9000,1381 +9049,1511 +9090,1381 +9139,1511 +9180,1381 +9229,1511 +9270,1381 +9319,1511 +9360,1381 +9409,1511 +9450,1381 +9499,1511 +9540,1381 +9589,1511 +9630,1381 +9679,1511 +9720,1381 +9769,1511 +9810,1381 +9859,1511 +9900,1381 +9949,1511 +9990,1381 diff --git a/registry/phase4ad-author-semantics/evidence/components/summary.csv b/registry/phase4ad-author-semantics/evidence/components/summary.csv new file mode 100644 index 0000000..be125f7 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/components/summary.csv @@ -0,0 +1,81 @@ +motif,policy,precision,neuron_idx,spikes,late_spikes,last_ms +pair,frozen,float32,1381,237,119,999.3000000000001 +pair,frozen,float32,1511,236,119,997.5 +pair,reset_g_only,float32,1381,112,56,999.0 +pair,reset_g_only,float32,1511,111,55,994.9000000000001 +pair,refractory_gate_only,float32,1381,318,161,999.1 +pair,refractory_gate_only,float32,1511,317,160,997.5 +pair,reset_and_refractory,float32,1381,112,56,999.0 +pair,reset_and_refractory,float32,1511,111,55,994.9000000000001 +trio,frozen,float32,1197,355,179,999.3000000000001 +trio,frozen,float32,1381,355,178,997.8000000000001 +trio,frozen,float32,1511,354,178,997.4000000000001 +trio,reset_g_only,float32,1197,188,94,995.4000000000001 +trio,reset_g_only,float32,1381,189,95,998.7 +trio,reset_g_only,float32,1511,188,94,996.1 +trio,refractory_gate_only,float32,1197,369,185,998.3000000000001 +trio,refractory_gate_only,float32,1381,367,184,999.1 +trio,refractory_gate_only,float32,1511,364,183,997.2 +trio,reset_and_refractory,float32,1197,156,78,995.3000000000001 +trio,reset_and_refractory,float32,1381,157,79,999.6 +trio,reset_and_refractory,float32,1511,156,78,997.5 +five,frozen,float32,1197,370,185,998.8000000000001 +five,frozen,float32,1381,369,185,997.4000000000001 +five,frozen,float32,1511,367,186,999.5 +five,frozen,float32,82312,80,41,990.3000000000001 +five,frozen,float32,133666,297,150,999.5 +five,reset_g_only,float32,1197,249,125,996.2 +five,reset_g_only,float32,1381,211,104,999.2 +five,reset_g_only,float32,1511,209,104,996.5 +five,reset_g_only,float32,82312,33,17,994.9000000000001 +five,reset_g_only,float32,133666,166,83,996.7 +five,refractory_gate_only,float32,1197,372,188,998.0 +five,refractory_gate_only,float32,1381,375,191,998.6 +five,refractory_gate_only,float32,1511,371,187,997.5 +five,refractory_gate_only,float32,82312,85,43,991.9000000000001 +five,refractory_gate_only,float32,133666,307,154,997.7 +five,reset_and_refractory,float32,1197,165,82,995.7 +five,reset_and_refractory,float32,1381,166,83,999.8000000000001 +five,reset_and_refractory,float32,1511,165,83,997.5 +five,reset_and_refractory,float32,82312,15,8,972.7 +five,reset_and_refractory,float32,133666,123,62,993.0 +feedforward,frozen,float32,1197,1,0,10.0 +feedforward,frozen,float32,1381,1,0,0.0 +feedforward,frozen,float32,1511,1,0,4.9 +feedforward,frozen,float32,82312,0,0, +feedforward,frozen,float32,133666,0,0, +feedforward,reset_g_only,float32,1197,1,0,10.0 +feedforward,reset_g_only,float32,1381,1,0,0.0 +feedforward,reset_g_only,float32,1511,1,0,4.9 +feedforward,reset_g_only,float32,82312,0,0, +feedforward,reset_g_only,float32,133666,0,0, +feedforward,refractory_gate_only,float32,1197,1,0,10.0 +feedforward,refractory_gate_only,float32,1381,1,0,0.0 +feedforward,refractory_gate_only,float32,1511,1,0,4.9 +feedforward,refractory_gate_only,float32,82312,0,0, +feedforward,refractory_gate_only,float32,133666,0,0, +feedforward,reset_and_refractory,float32,1197,1,0,10.0 +feedforward,reset_and_refractory,float32,1381,1,0,0.0 +feedforward,reset_and_refractory,float32,1511,1,0,4.9 +feedforward,reset_and_refractory,float32,82312,0,0, +feedforward,reset_and_refractory,float32,133666,0,0, +no_input,frozen,float32,1197,0,0, +no_input,frozen,float32,1381,0,0, +no_input,frozen,float32,1511,0,0, +no_input,frozen,float32,82312,0,0, +no_input,frozen,float32,133666,0,0, +no_input,reset_g_only,float32,1197,0,0, +no_input,reset_g_only,float32,1381,0,0, +no_input,reset_g_only,float32,1511,0,0, +no_input,reset_g_only,float32,82312,0,0, +no_input,reset_g_only,float32,133666,0,0, +no_input,refractory_gate_only,float32,1197,0,0, +no_input,refractory_gate_only,float32,1381,0,0, +no_input,refractory_gate_only,float32,1511,0,0, +no_input,refractory_gate_only,float32,82312,0,0, +no_input,refractory_gate_only,float32,133666,0,0, +no_input,reset_and_refractory,float32,1197,0,0, +no_input,reset_and_refractory,float32,1381,0,0, +no_input,reset_and_refractory,float32,1511,0,0, +no_input,reset_and_refractory,float32,82312,0,0, +no_input,reset_and_refractory,float32,133666,0,0, diff --git a/registry/phase4ad-author-semantics/evidence/components/trio-frozen/events.csv b/registry/phase4ad-author-semantics/evidence/components/trio-frozen/events.csv new file mode 100644 index 0000000..0b1f692 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/components/trio-frozen/events.csv @@ -0,0 +1,1065 @@ +step,neuron_idx +0,1381 +45,1197 +49,1511 +77,1381 +86,1197 +97,1511 +114,1381 +121,1197 +134,1511 +146,1381 +153,1197 +167,1511 +176,1381 +184,1197 +198,1511 +205,1381 +214,1197 +228,1511 +234,1381 +243,1197 +257,1511 +262,1381 +272,1197 +286,1511 +290,1381 +301,1197 +314,1511 +318,1381 +330,1197 +342,1511 +346,1381 +359,1197 +370,1511 +374,1381 +388,1197 +398,1511 +402,1381 +417,1197 +426,1511 +430,1381 +445,1197 +454,1511 +458,1381 +473,1197 +482,1511 +486,1381 +501,1197 +510,1511 +514,1381 +529,1197 +538,1511 +542,1381 +557,1197 +566,1511 +570,1381 +585,1197 +594,1511 +598,1381 +613,1197 +622,1511 +626,1381 +641,1197 +650,1511 +654,1381 +669,1197 +678,1511 +682,1381 +697,1197 +706,1511 +710,1381 +725,1197 +734,1511 +738,1381 +753,1197 +762,1511 +766,1381 +781,1197 +790,1511 +794,1381 +809,1197 +818,1511 +822,1381 +837,1197 +846,1511 +850,1381 +865,1197 +874,1511 +878,1381 +893,1197 +902,1511 +906,1381 +921,1197 +930,1511 +934,1381 +949,1197 +958,1511 +962,1381 +977,1197 +986,1511 +990,1381 +1005,1197 +1014,1511 +1018,1381 +1033,1197 +1042,1511 +1046,1381 +1061,1197 +1070,1511 +1074,1381 +1089,1197 +1098,1511 +1102,1381 +1117,1197 +1126,1511 +1130,1381 +1145,1197 +1154,1511 +1158,1381 +1173,1197 +1182,1511 +1186,1381 +1201,1197 +1210,1511 +1214,1381 +1229,1197 +1238,1511 +1242,1381 +1257,1197 +1266,1511 +1270,1381 +1285,1197 +1294,1511 +1298,1381 +1313,1197 +1322,1511 +1326,1381 +1341,1197 +1350,1511 +1354,1381 +1369,1197 +1378,1511 +1382,1381 +1397,1197 +1406,1511 +1410,1381 +1425,1197 +1434,1511 +1438,1381 +1453,1197 +1462,1511 +1466,1381 +1481,1197 +1490,1511 +1494,1381 +1509,1197 +1518,1511 +1522,1381 +1537,1197 +1546,1511 +1550,1381 +1565,1197 +1574,1511 +1578,1381 +1593,1197 +1602,1511 +1606,1381 +1621,1197 +1630,1511 +1634,1381 +1649,1197 +1658,1511 +1662,1381 +1677,1197 +1686,1511 +1690,1381 +1705,1197 +1714,1511 +1718,1381 +1733,1197 +1742,1511 +1746,1381 +1761,1197 +1770,1511 +1774,1381 +1789,1197 +1798,1511 +1802,1381 +1817,1197 +1826,1511 +1830,1381 +1845,1197 +1854,1511 +1858,1381 +1873,1197 +1882,1511 +1886,1381 +1901,1197 +1910,1511 +1914,1381 +1929,1197 +1938,1511 +1942,1381 +1957,1197 +1966,1511 +1970,1381 +1985,1197 +1994,1511 +1998,1381 +2013,1197 +2022,1511 +2026,1381 +2041,1197 +2050,1511 +2054,1381 +2069,1197 +2078,1511 +2082,1381 +2097,1197 +2106,1511 +2110,1381 +2125,1197 +2134,1511 +2138,1381 +2153,1197 +2162,1511 +2166,1381 +2181,1197 +2190,1511 +2194,1381 +2209,1197 +2218,1511 +2222,1381 +2237,1197 +2246,1511 +2250,1381 +2265,1197 +2274,1511 +2278,1381 +2293,1197 +2302,1511 +2306,1381 +2321,1197 +2330,1511 +2334,1381 +2349,1197 +2358,1511 +2362,1381 +2377,1197 +2386,1511 +2390,1381 +2405,1197 +2414,1511 +2418,1381 +2433,1197 +2442,1511 +2446,1381 +2461,1197 +2470,1511 +2474,1381 +2489,1197 +2498,1511 +2502,1381 +2517,1197 +2526,1511 +2530,1381 +2545,1197 +2554,1511 +2558,1381 +2573,1197 +2582,1511 +2586,1381 +2601,1197 +2610,1511 +2614,1381 +2629,1197 +2638,1511 +2642,1381 +2657,1197 +2666,1511 +2670,1381 +2685,1197 +2694,1511 +2698,1381 +2713,1197 +2722,1511 +2726,1381 +2741,1197 +2750,1511 +2754,1381 +2769,1197 +2778,1511 +2782,1381 +2797,1197 +2806,1511 +2810,1381 +2825,1197 +2834,1511 +2838,1381 +2853,1197 +2862,1511 +2866,1381 +2881,1197 +2890,1511 +2894,1381 +2909,1197 +2918,1511 +2922,1381 +2937,1197 +2946,1511 +2950,1381 +2965,1197 +2974,1511 +2978,1381 +2993,1197 +3002,1511 +3006,1381 +3021,1197 +3030,1511 +3034,1381 +3049,1197 +3058,1511 +3062,1381 +3077,1197 +3086,1511 +3090,1381 +3105,1197 +3114,1511 +3118,1381 +3133,1197 +3142,1511 +3146,1381 +3161,1197 +3170,1511 +3174,1381 +3189,1197 +3198,1511 +3202,1381 +3217,1197 +3226,1511 +3230,1381 +3245,1197 +3254,1511 +3258,1381 +3273,1197 +3282,1511 +3286,1381 +3301,1197 +3310,1511 +3314,1381 +3329,1197 +3338,1511 +3342,1381 +3357,1197 +3366,1511 +3370,1381 +3385,1197 +3394,1511 +3398,1381 +3413,1197 +3422,1511 +3426,1381 +3441,1197 +3450,1511 +3454,1381 +3469,1197 +3478,1511 +3482,1381 +3497,1197 +3506,1511 +3510,1381 +3525,1197 +3534,1511 +3538,1381 +3553,1197 +3562,1511 +3566,1381 +3581,1197 +3590,1511 +3594,1381 +3609,1197 +3618,1511 +3622,1381 +3637,1197 +3646,1511 +3650,1381 +3665,1197 +3674,1511 +3678,1381 +3693,1197 +3702,1511 +3706,1381 +3721,1197 +3730,1511 +3734,1381 +3749,1197 +3758,1511 +3762,1381 +3777,1197 +3786,1511 +3790,1381 +3805,1197 +3814,1511 +3818,1381 +3833,1197 +3842,1511 +3846,1381 +3861,1197 +3870,1511 +3874,1381 +3889,1197 +3898,1511 +3902,1381 +3917,1197 +3926,1511 +3930,1381 +3945,1197 +3954,1511 +3958,1381 +3973,1197 +3982,1511 +3986,1381 +4001,1197 +4010,1511 +4014,1381 +4029,1197 +4038,1511 +4042,1381 +4057,1197 +4066,1511 +4070,1381 +4085,1197 +4094,1511 +4098,1381 +4113,1197 +4122,1511 +4126,1381 +4141,1197 +4150,1511 +4154,1381 +4169,1197 +4178,1511 +4182,1381 +4197,1197 +4206,1511 +4210,1381 +4225,1197 +4234,1511 +4238,1381 +4253,1197 +4262,1511 +4266,1381 +4281,1197 +4290,1511 +4294,1381 +4309,1197 +4318,1511 +4322,1381 +4337,1197 +4346,1511 +4350,1381 +4365,1197 +4374,1511 +4378,1381 +4393,1197 +4402,1511 +4406,1381 +4421,1197 +4430,1511 +4434,1381 +4449,1197 +4458,1511 +4462,1381 +4477,1197 +4486,1511 +4490,1381 +4505,1197 +4514,1511 +4518,1381 +4533,1197 +4542,1511 +4546,1381 +4561,1197 +4570,1511 +4574,1381 +4589,1197 +4598,1511 +4602,1381 +4617,1197 +4626,1511 +4630,1381 +4645,1197 +4654,1511 +4658,1381 +4673,1197 +4682,1511 +4686,1381 +4701,1197 +4710,1511 +4714,1381 +4729,1197 +4738,1511 +4742,1381 +4757,1197 +4766,1511 +4770,1381 +4785,1197 +4794,1511 +4798,1381 +4813,1197 +4822,1511 +4826,1381 +4841,1197 +4850,1511 +4854,1381 +4869,1197 +4878,1511 +4882,1381 +4897,1197 +4906,1511 +4910,1381 +4925,1197 +4934,1511 +4938,1381 +4953,1197 +4962,1511 +4966,1381 +4981,1197 +4990,1511 +4994,1381 +5009,1197 +5018,1511 +5022,1381 +5037,1197 +5046,1511 +5050,1381 +5065,1197 +5074,1511 +5078,1381 +5093,1197 +5102,1511 +5106,1381 +5121,1197 +5130,1511 +5134,1381 +5149,1197 +5158,1511 +5162,1381 +5177,1197 +5186,1511 +5190,1381 +5205,1197 +5214,1511 +5218,1381 +5233,1197 +5242,1511 +5246,1381 +5261,1197 +5270,1511 +5274,1381 +5289,1197 +5298,1511 +5302,1381 +5317,1197 +5326,1511 +5330,1381 +5345,1197 +5354,1511 +5358,1381 +5373,1197 +5382,1511 +5386,1381 +5401,1197 +5410,1511 +5414,1381 +5429,1197 +5438,1511 +5442,1381 +5457,1197 +5466,1511 +5470,1381 +5485,1197 +5494,1511 +5498,1381 +5513,1197 +5522,1511 +5526,1381 +5541,1197 +5550,1511 +5554,1381 +5569,1197 +5578,1511 +5582,1381 +5597,1197 +5606,1511 +5610,1381 +5625,1197 +5634,1511 +5638,1381 +5653,1197 +5662,1511 +5666,1381 +5681,1197 +5690,1511 +5694,1381 +5709,1197 +5718,1511 +5722,1381 +5737,1197 +5746,1511 +5750,1381 +5765,1197 +5774,1511 +5778,1381 +5793,1197 +5802,1511 +5806,1381 +5821,1197 +5830,1511 +5834,1381 +5849,1197 +5858,1511 +5862,1381 +5877,1197 +5886,1511 +5890,1381 +5905,1197 +5914,1511 +5918,1381 +5933,1197 +5942,1511 +5946,1381 +5961,1197 +5970,1511 +5974,1381 +5989,1197 +5998,1511 +6002,1381 +6017,1197 +6026,1511 +6030,1381 +6045,1197 +6054,1511 +6058,1381 +6073,1197 +6082,1511 +6086,1381 +6101,1197 +6110,1511 +6114,1381 +6129,1197 +6138,1511 +6142,1381 +6157,1197 +6166,1511 +6170,1381 +6185,1197 +6194,1511 +6198,1381 +6213,1197 +6222,1511 +6226,1381 +6241,1197 +6250,1511 +6254,1381 +6269,1197 +6278,1511 +6282,1381 +6297,1197 +6306,1511 +6310,1381 +6325,1197 +6334,1511 +6338,1381 +6353,1197 +6362,1511 +6366,1381 +6381,1197 +6390,1511 +6394,1381 +6409,1197 +6418,1511 +6422,1381 +6437,1197 +6446,1511 +6450,1381 +6465,1197 +6474,1511 +6478,1381 +6493,1197 +6502,1511 +6506,1381 +6521,1197 +6530,1511 +6534,1381 +6549,1197 +6558,1511 +6562,1381 +6577,1197 +6586,1511 +6590,1381 +6605,1197 +6614,1511 +6618,1381 +6633,1197 +6642,1511 +6646,1381 +6661,1197 +6670,1511 +6674,1381 +6689,1197 +6698,1511 +6702,1381 +6717,1197 +6726,1511 +6730,1381 +6745,1197 +6754,1511 +6758,1381 +6773,1197 +6782,1511 +6786,1381 +6801,1197 +6810,1511 +6814,1381 +6829,1197 +6838,1511 +6842,1381 +6857,1197 +6866,1511 +6870,1381 +6885,1197 +6894,1511 +6898,1381 +6913,1197 +6922,1511 +6926,1381 +6941,1197 +6950,1511 +6954,1381 +6969,1197 +6978,1511 +6982,1381 +6997,1197 +7006,1511 +7010,1381 +7025,1197 +7034,1511 +7038,1381 +7053,1197 +7062,1511 +7066,1381 +7081,1197 +7090,1511 +7094,1381 +7109,1197 +7118,1511 +7122,1381 +7137,1197 +7146,1511 +7150,1381 +7165,1197 +7174,1511 +7178,1381 +7193,1197 +7202,1511 +7206,1381 +7221,1197 +7230,1511 +7234,1381 +7249,1197 +7258,1511 +7262,1381 +7277,1197 +7286,1511 +7290,1381 +7305,1197 +7314,1511 +7318,1381 +7333,1197 +7342,1511 +7346,1381 +7361,1197 +7370,1511 +7374,1381 +7389,1197 +7398,1511 +7402,1381 +7417,1197 +7426,1511 +7430,1381 +7445,1197 +7454,1511 +7458,1381 +7473,1197 +7482,1511 +7486,1381 +7501,1197 +7510,1511 +7514,1381 +7529,1197 +7538,1511 +7542,1381 +7557,1197 +7566,1511 +7570,1381 +7585,1197 +7594,1511 +7598,1381 +7613,1197 +7622,1511 +7626,1381 +7641,1197 +7650,1511 +7654,1381 +7669,1197 +7678,1511 +7682,1381 +7697,1197 +7706,1511 +7710,1381 +7725,1197 +7734,1511 +7738,1381 +7753,1197 +7762,1511 +7766,1381 +7781,1197 +7790,1511 +7794,1381 +7809,1197 +7818,1511 +7822,1381 +7837,1197 +7846,1511 +7850,1381 +7865,1197 +7874,1511 +7878,1381 +7893,1197 +7902,1511 +7906,1381 +7921,1197 +7930,1511 +7934,1381 +7949,1197 +7958,1511 +7962,1381 +7977,1197 +7986,1511 +7990,1381 +8005,1197 +8014,1511 +8018,1381 +8033,1197 +8042,1511 +8046,1381 +8061,1197 +8070,1511 +8074,1381 +8089,1197 +8098,1511 +8102,1381 +8117,1197 +8126,1511 +8130,1381 +8145,1197 +8154,1511 +8158,1381 +8173,1197 +8182,1511 +8186,1381 +8201,1197 +8210,1511 +8214,1381 +8229,1197 +8238,1511 +8242,1381 +8257,1197 +8266,1511 +8270,1381 +8285,1197 +8294,1511 +8298,1381 +8313,1197 +8322,1511 +8326,1381 +8341,1197 +8350,1511 +8354,1381 +8369,1197 +8378,1511 +8382,1381 +8397,1197 +8406,1511 +8410,1381 +8425,1197 +8434,1511 +8438,1381 +8453,1197 +8462,1511 +8466,1381 +8481,1197 +8490,1511 +8494,1381 +8509,1197 +8518,1511 +8522,1381 +8537,1197 +8546,1511 +8550,1381 +8565,1197 +8574,1511 +8578,1381 +8593,1197 +8602,1511 +8606,1381 +8621,1197 +8630,1511 +8634,1381 +8649,1197 +8658,1511 +8662,1381 +8677,1197 +8686,1511 +8690,1381 +8705,1197 +8714,1511 +8718,1381 +8733,1197 +8742,1511 +8746,1381 +8761,1197 +8770,1511 +8774,1381 +8789,1197 +8798,1511 +8802,1381 +8817,1197 +8826,1511 +8830,1381 +8845,1197 +8854,1511 +8858,1381 +8873,1197 +8882,1511 +8886,1381 +8901,1197 +8910,1511 +8914,1381 +8929,1197 +8938,1511 +8942,1381 +8957,1197 +8966,1511 +8970,1381 +8985,1197 +8994,1511 +8998,1381 +9013,1197 +9022,1511 +9026,1381 +9041,1197 +9050,1511 +9054,1381 +9069,1197 +9078,1511 +9082,1381 +9097,1197 +9106,1511 +9110,1381 +9125,1197 +9134,1511 +9138,1381 +9153,1197 +9162,1511 +9166,1381 +9181,1197 +9190,1511 +9194,1381 +9209,1197 +9218,1511 +9222,1381 +9237,1197 +9246,1511 +9250,1381 +9265,1197 +9274,1511 +9278,1381 +9293,1197 +9302,1511 +9306,1381 +9321,1197 +9330,1511 +9334,1381 +9349,1197 +9358,1511 +9362,1381 +9377,1197 +9386,1511 +9390,1381 +9405,1197 +9414,1511 +9418,1381 +9433,1197 +9442,1511 +9446,1381 +9461,1197 +9470,1511 +9474,1381 +9489,1197 +9498,1511 +9502,1381 +9517,1197 +9526,1511 +9530,1381 +9545,1197 +9554,1511 +9558,1381 +9573,1197 +9582,1511 +9586,1381 +9601,1197 +9610,1511 +9614,1381 +9629,1197 +9638,1511 +9642,1381 +9657,1197 +9666,1511 +9670,1381 +9685,1197 +9694,1511 +9698,1381 +9713,1197 +9722,1511 +9726,1381 +9741,1197 +9750,1511 +9754,1381 +9769,1197 +9778,1511 +9782,1381 +9797,1197 +9806,1511 +9810,1381 +9825,1197 +9834,1511 +9838,1381 +9853,1197 +9862,1511 +9866,1381 +9881,1197 +9890,1511 +9894,1381 +9909,1197 +9918,1511 +9922,1381 +9937,1197 +9946,1511 +9950,1381 +9965,1197 +9974,1511 +9978,1381 +9993,1197 diff --git a/registry/phase4ad-author-semantics/evidence/components/trio-refractory_gate_only/events.csv b/registry/phase4ad-author-semantics/evidence/components/trio-refractory_gate_only/events.csv new file mode 100644 index 0000000..2827d83 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/components/trio-refractory_gate_only/events.csv @@ -0,0 +1,1101 @@ +step,neuron_idx +0,1381 +45,1197 +49,1511 +77,1381 +83,1197 +103,1511 +109,1381 +125,1197 +134,1511 +143,1381 +158,1197 +164,1511 +174,1381 +188,1197 +193,1511 +207,1381 +216,1197 +221,1511 +237,1381 +243,1197 +251,1511 +265,1381 +270,1197 +282,1511 +292,1381 +297,1197 +313,1511 +319,1381 +325,1197 +342,1511 +345,1381 +354,1197 +371,1511 +372,1381 +384,1197 +398,1381 +402,1511 +416,1197 +423,1381 +432,1511 +444,1197 +449,1381 +463,1511 +471,1197 +475,1381 +492,1511 +497,1197 +502,1381 +520,1511 +523,1197 +530,1381 +547,1511 +549,1197 +559,1381 +574,1197 +575,1511 +589,1381 +600,1197 +604,1511 +620,1381 +625,1197 +634,1511 +648,1381 +651,1197 +666,1511 +677,1197 +677,1381 +695,1511 +704,1197 +707,1381 +722,1511 +731,1197 +739,1381 +749,1511 +759,1197 +771,1381 +776,1511 +786,1197 +799,1381 +803,1511 +814,1197 +826,1381 +831,1511 +843,1197 +852,1381 +860,1511 +872,1197 +878,1381 +890,1511 +899,1197 +904,1381 +919,1511 +925,1197 +930,1381 +947,1511 +951,1197 +957,1381 +974,1511 +976,1197 +984,1381 +1001,1197 +1002,1511 +1012,1381 +1027,1197 +1029,1511 +1041,1381 +1053,1197 +1057,1511 +1071,1381 +1079,1197 +1086,1511 +1099,1381 +1105,1197 +1116,1511 +1126,1381 +1131,1197 +1147,1511 +1152,1381 +1157,1197 +1175,1511 +1178,1381 +1184,1197 +1202,1511 +1204,1381 +1212,1197 +1229,1511 +1230,1381 +1241,1197 +1256,1381 +1257,1511 +1271,1197 +1282,1381 +1286,1511 +1302,1197 +1307,1381 +1316,1511 +1329,1197 +1333,1381 +1348,1511 +1355,1197 +1359,1381 +1377,1511 +1381,1197 +1386,1381 +1403,1511 +1406,1197 +1414,1381 +1430,1511 +1432,1197 +1443,1381 +1457,1197 +1458,1511 +1473,1381 +1483,1197 +1487,1511 +1503,1381 +1508,1197 +1517,1511 +1531,1381 +1534,1197 +1549,1511 +1560,1197 +1560,1381 +1578,1511 +1587,1197 +1590,1381 +1605,1511 +1614,1197 +1622,1381 +1632,1511 +1641,1197 +1654,1381 +1659,1511 +1668,1197 +1682,1381 +1685,1511 +1696,1197 +1711,1381 +1712,1511 +1725,1197 +1740,1511 +1741,1381 +1755,1197 +1769,1511 +1773,1381 +1787,1197 +1797,1511 +1803,1381 +1816,1197 +1824,1511 +1835,1381 +1844,1197 +1851,1511 +1864,1381 +1871,1197 +1879,1511 +1892,1381 +1898,1197 +1908,1511 +1919,1381 +1924,1197 +1938,1511 +1945,1381 +1951,1197 +1966,1511 +1971,1381 +1979,1197 +1993,1511 +1997,1381 +2008,1197 +2019,1511 +2023,1381 +2038,1197 +2045,1511 +2049,1381 +2066,1197 +2070,1511 +2076,1381 +2092,1197 +2095,1511 +2104,1381 +2119,1197 +2120,1511 +2133,1381 +2145,1511 +2147,1197 +2163,1381 +2171,1511 +2176,1197 +2190,1381 +2197,1511 +2206,1197 +2216,1381 +2223,1511 +2236,1197 +2242,1381 +2250,1511 +2264,1197 +2267,1381 +2277,1511 +2292,1197 +2293,1381 +2305,1511 +2319,1381 +2321,1197 +2334,1511 +2346,1381 +2352,1197 +2364,1511 +2373,1381 +2381,1197 +2392,1511 +2400,1381 +2411,1197 +2419,1511 +2426,1381 +2439,1197 +2445,1511 +2453,1381 +2466,1197 +2471,1511 +2481,1381 +2492,1197 +2497,1511 +2510,1381 +2518,1197 +2523,1511 +2537,1381 +2543,1197 +2550,1511 +2563,1381 +2568,1197 +2578,1511 +2589,1381 +2593,1197 +2607,1511 +2614,1381 +2619,1197 +2634,1511 +2639,1381 +2645,1197 +2660,1511 +2664,1381 +2671,1197 +2685,1511 +2689,1381 +2698,1197 +2710,1511 +2714,1381 +2726,1197 +2735,1511 +2739,1381 +2754,1197 +2760,1511 +2765,1381 +2781,1197 +2784,1511 +2791,1381 +2808,1197 +2809,1511 +2817,1381 +2833,1511 +2835,1197 +2844,1381 +2858,1511 +2862,1197 +2872,1381 +2882,1511 +2888,1197 +2900,1381 +2907,1511 +2915,1197 +2927,1381 +2932,1511 +2942,1197 +2953,1381 +2957,1511 +2970,1197 +2978,1381 +2982,1511 +2998,1197 +3003,1381 +3007,1511 +3024,1197 +3027,1381 +3033,1511 +3051,1197 +3051,1381 +3059,1511 +3075,1381 +3077,1197 +3086,1511 +3099,1381 +3103,1197 +3114,1511 +3123,1381 +3129,1197 +3142,1511 +3147,1381 +3156,1197 +3168,1511 +3171,1381 +3184,1197 +3195,1381 +3195,1511 +3213,1197 +3220,1381 +3222,1511 +3239,1197 +3245,1381 +3250,1511 +3264,1197 +3270,1381 +3279,1511 +3289,1197 +3295,1381 +3309,1511 +3314,1197 +3320,1381 +3337,1511 +3338,1197 +3345,1381 +3362,1197 +3365,1511 +3371,1381 +3387,1197 +3392,1511 +3397,1381 +3411,1197 +3418,1511 +3424,1381 +3436,1197 +3444,1511 +3452,1381 +3460,1197 +3470,1511 +3480,1381 +3485,1197 +3495,1511 +3507,1381 +3510,1197 +3521,1511 +3534,1381 +3535,1197 +3547,1511 +3560,1197 +3562,1381 +3574,1511 +3586,1197 +3591,1381 +3602,1511 +3612,1197 +3621,1381 +3630,1511 +3638,1197 +3649,1381 +3658,1511 +3664,1197 +3676,1381 +3685,1511 +3691,1197 +3702,1381 +3712,1511 +3719,1197 +3729,1381 +3739,1511 +3747,1197 +3756,1381 +3765,1511 +3774,1197 +3784,1381 +3791,1511 +3800,1197 +3810,1381 +3818,1511 +3827,1197 +3836,1381 +3845,1511 +3854,1197 +3862,1381 +3871,1511 +3880,1197 +3888,1381 +3898,1511 +3906,1197 +3914,1381 +3924,1511 +3932,1197 +3941,1381 +3950,1511 +3957,1197 +3968,1381 +3976,1511 +3982,1197 +3994,1381 +4001,1511 +4008,1197 +4020,1381 +4026,1511 +4034,1197 +4045,1381 +4051,1511 +4061,1197 +4070,1381 +4077,1511 +4088,1197 +4095,1381 +4103,1511 +4114,1197 +4119,1381 +4130,1511 +4139,1197 +4144,1381 +4157,1511 +4164,1197 +4169,1381 +4184,1511 +4189,1197 +4194,1381 +4210,1511 +4213,1197 +4219,1381 +4236,1511 +4237,1197 +4245,1381 +4261,1197 +4263,1511 +4271,1381 +4285,1197 +4289,1511 +4298,1381 +4309,1197 +4315,1511 +4325,1381 +4333,1197 +4341,1511 +4353,1381 +4357,1197 +4368,1511 +4379,1381 +4381,1197 +4396,1511 +4406,1197 +4406,1381 +4424,1511 +4431,1197 +4434,1381 +4450,1511 +4456,1197 +4463,1381 +4476,1511 +4481,1197 +4493,1381 +4502,1511 +4506,1197 +4523,1381 +4527,1511 +4531,1197 +4550,1381 +4552,1511 +4557,1197 +4576,1381 +4577,1511 +4583,1197 +4602,1381 +4602,1511 +4610,1197 +4627,1511 +4628,1381 +4637,1197 +4652,1511 +4653,1381 +4665,1197 +4678,1511 +4679,1381 +4694,1197 +4704,1511 +4705,1381 +4723,1197 +4731,1511 +4732,1381 +4750,1197 +4759,1381 +4759,1511 +4775,1197 +4787,1381 +4788,1511 +4801,1197 +4816,1381 +4818,1511 +4827,1197 +4846,1381 +4848,1511 +4854,1197 +4874,1381 +4877,1511 +4882,1197 +4902,1381 +4905,1511 +4911,1197 +4929,1381 +4933,1511 +4941,1197 +4955,1381 +4961,1511 +4973,1197 +4981,1381 +4989,1511 +5001,1197 +5007,1381 +5018,1511 +5028,1197 +5032,1381 +5048,1511 +5054,1197 +5057,1381 +5076,1511 +5080,1197 +5083,1381 +5102,1511 +5107,1197 +5109,1381 +5127,1511 +5134,1197 +5136,1381 +5152,1511 +5162,1197 +5164,1381 +5177,1511 +5191,1197 +5193,1381 +5202,1511 +5221,1197 +5222,1381 +5227,1511 +5249,1197 +5249,1381 +5253,1511 +5275,1381 +5276,1197 +5279,1511 +5300,1381 +5303,1197 +5306,1511 +5325,1381 +5331,1197 +5333,1511 +5350,1381 +5360,1197 +5361,1511 +5375,1381 +5390,1511 +5391,1197 +5400,1381 +5420,1511 +5422,1197 +5425,1381 +5447,1511 +5451,1381 +5452,1197 +5473,1511 +5477,1381 +5484,1197 +5498,1511 +5503,1381 +5518,1197 +5523,1511 +5529,1381 +5547,1197 +5548,1511 +5556,1381 +5573,1511 +5574,1197 +5584,1381 +5598,1511 +5601,1197 +5613,1381 +5624,1511 +5628,1197 +5642,1381 +5649,1511 +5656,1197 +5669,1381 +5675,1511 +5685,1197 +5695,1381 +5701,1511 +5715,1197 +5720,1381 +5727,1511 +5742,1197 +5745,1381 +5754,1511 +5769,1197 +5770,1381 +5781,1511 +5795,1381 +5797,1197 +5809,1511 +5821,1381 +5826,1197 +5838,1511 +5846,1381 +5857,1197 +5867,1511 +5872,1381 +5886,1197 +5894,1511 +5898,1381 +5914,1197 +5920,1511 +5925,1381 +5941,1197 +5946,1511 +5952,1381 +5967,1197 +5972,1511 +5980,1381 +5993,1197 +5998,1511 +6009,1381 +6018,1197 +6023,1511 +6039,1381 +6043,1197 +6049,1511 +6066,1381 +6068,1197 +6075,1511 +6093,1197 +6094,1381 +6102,1511 +6118,1197 +6121,1381 +6130,1511 +6143,1197 +6147,1381 +6159,1511 +6168,1197 +6174,1381 +6188,1511 +6193,1197 +6201,1381 +6216,1511 +6218,1197 +6229,1381 +6243,1197 +6245,1511 +6258,1381 +6268,1197 +6275,1511 +6288,1381 +6293,1197 +6306,1511 +6316,1381 +6318,1197 +6335,1511 +6344,1197 +6344,1381 +6363,1511 +6370,1197 +6374,1381 +6389,1511 +6395,1197 +6405,1381 +6415,1511 +6421,1197 +6436,1381 +6441,1511 +6447,1197 +6464,1381 +6466,1511 +6474,1197 +6492,1381 +6492,1511 +6502,1197 +6517,1511 +6519,1381 +6531,1197 +6543,1511 +6547,1381 +6561,1197 +6568,1511 +6576,1381 +6589,1197 +6594,1511 +6607,1381 +6616,1197 +6619,1511 +6636,1381 +6643,1197 +6645,1511 +6663,1381 +6671,1197 +6671,1511 +6689,1381 +6698,1511 +6700,1197 +6714,1381 +6725,1511 +6730,1197 +6739,1381 +6752,1511 +6760,1197 +6765,1381 +6779,1511 +6787,1197 +6791,1381 +6806,1511 +6813,1197 +6817,1381 +6833,1511 +6839,1197 +6844,1381 +6859,1511 +6864,1197 +6872,1381 +6885,1511 +6890,1197 +6901,1381 +6911,1511 +6915,1197 +6930,1381 +6936,1511 +6941,1197 +6957,1381 +6961,1511 +6967,1197 +6983,1381 +6986,1511 +6994,1197 +7009,1381 +7011,1511 +7021,1197 +7036,1381 +7037,1511 +7049,1197 +7063,1381 +7063,1511 +7078,1197 +7090,1511 +7091,1381 +7108,1197 +7117,1511 +7120,1381 +7136,1197 +7145,1511 +7151,1381 +7164,1197 +7173,1511 +7183,1381 +7191,1197 +7201,1511 +7212,1381 +7217,1197 +7228,1511 +7240,1381 +7244,1197 +7256,1511 +7267,1381 +7272,1197 +7285,1511 +7294,1381 +7301,1197 +7313,1511 +7321,1381 +7331,1197 +7340,1511 +7348,1381 +7359,1197 +7366,1511 +7375,1381 +7386,1197 +7392,1511 +7403,1381 +7412,1197 +7418,1511 +7431,1381 +7438,1197 +7445,1511 +7458,1381 +7464,1197 +7473,1511 +7485,1381 +7490,1197 +7502,1511 +7511,1381 +7516,1197 +7531,1511 +7537,1381 +7543,1197 +7558,1511 +7563,1381 +7570,1197 +7584,1511 +7588,1381 +7598,1197 +7610,1511 +7613,1381 +7627,1197 +7636,1511 +7639,1381 +7656,1197 +7663,1511 +7665,1381 +7684,1197 +7690,1511 +7692,1381 +7710,1197 +7718,1511 +7719,1381 +7735,1197 +7747,1381 +7747,1511 +7760,1197 +7776,1381 +7778,1511 +7786,1197 +7806,1381 +7807,1511 +7812,1197 +7834,1381 +7835,1511 +7839,1197 +7861,1381 +7862,1511 +7867,1197 +7888,1381 +7889,1511 +7896,1197 +7915,1381 +7916,1511 +7926,1197 +7941,1381 +7943,1511 +7958,1197 +7968,1381 +7971,1511 +7989,1197 +7996,1381 +8000,1511 +8016,1197 +8023,1381 +8030,1511 +8042,1197 +8050,1381 +8062,1511 +8068,1197 +8076,1381 +8091,1511 +8094,1197 +8103,1381 +8119,1197 +8121,1511 +8131,1381 +8145,1197 +8149,1511 +8160,1381 +8170,1197 +8177,1511 +8190,1381 +8195,1197 +8206,1511 +8217,1381 +8220,1197 +8235,1511 +8245,1381 +8246,1197 +8263,1511 +8272,1197 +8274,1381 +8290,1511 +8299,1197 +8305,1381 +8317,1511 +8325,1197 +8337,1381 +8343,1511 +8351,1197 +8365,1381 +8369,1511 +8378,1197 +8391,1381 +8395,1511 +8406,1197 +8417,1381 +8422,1511 +8435,1197 +8442,1381 +8449,1511 +8462,1197 +8467,1381 +8477,1511 +8488,1197 +8492,1381 +8506,1511 +8513,1197 +8517,1381 +8534,1511 +8538,1197 +8543,1381 +8561,1511 +8563,1197 +8569,1381 +8587,1511 +8588,1197 +8596,1381 +8613,1197 +8613,1511 +8623,1381 +8638,1197 +8639,1511 +8651,1381 +8663,1197 +8666,1511 +8680,1381 +8688,1197 +8694,1511 +8709,1381 +8713,1197 +8723,1511 +8736,1381 +8738,1197 +8753,1511 +8764,1197 +8764,1381 +8783,1511 +8790,1197 +8793,1381 +8810,1511 +8817,1197 +8824,1381 +8837,1511 +8844,1197 +8856,1381 +8864,1511 +8871,1197 +8884,1381 +8890,1511 +8898,1197 +8911,1381 +8916,1511 +8926,1197 +8937,1381 +8942,1511 +8955,1197 +8962,1381 +8969,1511 +8982,1197 +8987,1381 +8996,1511 +9008,1197 +9012,1381 +9024,1511 +9033,1197 +9037,1381 +9053,1511 +9058,1197 +9063,1381 +9080,1511 +9083,1197 +9089,1381 +9108,1197 +9108,1511 +9116,1381 +9133,1197 +9135,1511 +9143,1381 +9158,1197 +9161,1511 +9171,1381 +9183,1197 +9187,1511 +9200,1381 +9208,1197 +9213,1511 +9229,1381 +9233,1197 +9240,1511 +9256,1381 +9258,1197 +9268,1511 +9283,1197 +9284,1381 +9297,1511 +9308,1197 +9313,1381 +9327,1511 +9333,1197 +9344,1381 +9355,1511 +9358,1197 +9375,1381 +9383,1197 +9384,1511 +9403,1381 +9409,1197 +9414,1511 +9429,1381 +9434,1197 +9446,1511 +9455,1381 +9460,1197 +9478,1511 +9480,1381 +9486,1197 +9505,1381 +9506,1511 +9513,1197 +9530,1381 +9534,1511 +9540,1197 +9555,1381 +9561,1511 +9568,1197 +9580,1381 +9588,1511 +9597,1197 +9605,1381 +9615,1511 +9626,1197 +9630,1381 +9642,1511 +9653,1197 +9655,1381 +9669,1511 +9680,1197 +9681,1381 +9697,1511 +9707,1381 +9708,1197 +9726,1511 +9734,1381 +9737,1197 +9753,1511 +9761,1381 +9768,1197 +9779,1511 +9788,1381 +9800,1197 +9805,1511 +9815,1381 +9828,1197 +9831,1511 +9843,1381 +9857,1197 +9858,1511 +9872,1381 +9886,1511 +9888,1197 +9903,1381 +9915,1511 +9921,1197 +9935,1381 +9944,1511 +9951,1197 +9964,1381 +9972,1511 +9983,1197 +9991,1381 diff --git a/registry/phase4ad-author-semantics/evidence/components/trio-reset_and_refractory/events.csv b/registry/phase4ad-author-semantics/evidence/components/trio-reset_and_refractory/events.csv new file mode 100644 index 0000000..b76ccfa --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/components/trio-reset_and_refractory/events.csv @@ -0,0 +1,470 @@ +step,neuron_idx +0,1381 +45,1197 +49,1511 +77,1381 +96,1197 +119,1511 +140,1381 +161,1197 +183,1511 +204,1381 +225,1197 +247,1511 +268,1381 +289,1197 +311,1511 +332,1381 +353,1197 +375,1511 +396,1381 +417,1197 +439,1511 +460,1381 +481,1197 +503,1511 +524,1381 +545,1197 +567,1511 +588,1381 +609,1197 +631,1511 +652,1381 +673,1197 +695,1511 +716,1381 +737,1197 +759,1511 +780,1381 +801,1197 +823,1511 +844,1381 +865,1197 +887,1511 +908,1381 +929,1197 +951,1511 +972,1381 +993,1197 +1015,1511 +1036,1381 +1057,1197 +1079,1511 +1100,1381 +1121,1197 +1143,1511 +1164,1381 +1185,1197 +1207,1511 +1228,1381 +1249,1197 +1271,1511 +1292,1381 +1313,1197 +1335,1511 +1356,1381 +1377,1197 +1399,1511 +1420,1381 +1441,1197 +1463,1511 +1484,1381 +1505,1197 +1527,1511 +1548,1381 +1569,1197 +1591,1511 +1612,1381 +1633,1197 +1655,1511 +1676,1381 +1697,1197 +1719,1511 +1740,1381 +1761,1197 +1783,1511 +1804,1381 +1825,1197 +1847,1511 +1868,1381 +1889,1197 +1911,1511 +1932,1381 +1953,1197 +1975,1511 +1996,1381 +2017,1197 +2039,1511 +2060,1381 +2081,1197 +2103,1511 +2124,1381 +2145,1197 +2167,1511 +2188,1381 +2209,1197 +2231,1511 +2252,1381 +2273,1197 +2295,1511 +2316,1381 +2337,1197 +2359,1511 +2380,1381 +2401,1197 +2423,1511 +2444,1381 +2465,1197 +2487,1511 +2508,1381 +2529,1197 +2551,1511 +2572,1381 +2593,1197 +2615,1511 +2636,1381 +2657,1197 +2679,1511 +2700,1381 +2721,1197 +2743,1511 +2764,1381 +2785,1197 +2807,1511 +2828,1381 +2849,1197 +2871,1511 +2892,1381 +2913,1197 +2935,1511 +2956,1381 +2977,1197 +2999,1511 +3020,1381 +3041,1197 +3063,1511 +3084,1381 +3105,1197 +3127,1511 +3148,1381 +3169,1197 +3191,1511 +3212,1381 +3233,1197 +3255,1511 +3276,1381 +3297,1197 +3319,1511 +3340,1381 +3361,1197 +3383,1511 +3404,1381 +3425,1197 +3447,1511 +3468,1381 +3489,1197 +3511,1511 +3532,1381 +3553,1197 +3575,1511 +3596,1381 +3617,1197 +3639,1511 +3660,1381 +3681,1197 +3703,1511 +3724,1381 +3745,1197 +3767,1511 +3788,1381 +3809,1197 +3831,1511 +3852,1381 +3873,1197 +3895,1511 +3916,1381 +3937,1197 +3959,1511 +3980,1381 +4001,1197 +4023,1511 +4044,1381 +4065,1197 +4087,1511 +4108,1381 +4129,1197 +4151,1511 +4172,1381 +4193,1197 +4215,1511 +4236,1381 +4257,1197 +4279,1511 +4300,1381 +4321,1197 +4343,1511 +4364,1381 +4385,1197 +4407,1511 +4428,1381 +4449,1197 +4471,1511 +4492,1381 +4513,1197 +4535,1511 +4556,1381 +4577,1197 +4599,1511 +4620,1381 +4641,1197 +4663,1511 +4684,1381 +4705,1197 +4727,1511 +4748,1381 +4769,1197 +4791,1511 +4812,1381 +4833,1197 +4855,1511 +4876,1381 +4897,1197 +4919,1511 +4940,1381 +4961,1197 +4983,1511 +5004,1381 +5025,1197 +5047,1511 +5068,1381 +5089,1197 +5111,1511 +5132,1381 +5153,1197 +5175,1511 +5196,1381 +5217,1197 +5239,1511 +5260,1381 +5281,1197 +5303,1511 +5324,1381 +5345,1197 +5367,1511 +5388,1381 +5409,1197 +5431,1511 +5452,1381 +5473,1197 +5495,1511 +5516,1381 +5537,1197 +5559,1511 +5580,1381 +5601,1197 +5623,1511 +5644,1381 +5665,1197 +5687,1511 +5708,1381 +5729,1197 +5751,1511 +5772,1381 +5793,1197 +5815,1511 +5836,1381 +5857,1197 +5879,1511 +5900,1381 +5921,1197 +5943,1511 +5964,1381 +5985,1197 +6007,1511 +6028,1381 +6049,1197 +6071,1511 +6092,1381 +6113,1197 +6135,1511 +6156,1381 +6177,1197 +6199,1511 +6220,1381 +6241,1197 +6263,1511 +6284,1381 +6305,1197 +6327,1511 +6348,1381 +6369,1197 +6391,1511 +6412,1381 +6433,1197 +6455,1511 +6476,1381 +6497,1197 +6519,1511 +6540,1381 +6561,1197 +6583,1511 +6604,1381 +6625,1197 +6647,1511 +6668,1381 +6689,1197 +6711,1511 +6732,1381 +6753,1197 +6775,1511 +6796,1381 +6817,1197 +6839,1511 +6860,1381 +6881,1197 +6903,1511 +6924,1381 +6945,1197 +6967,1511 +6988,1381 +7009,1197 +7031,1511 +7052,1381 +7073,1197 +7095,1511 +7116,1381 +7137,1197 +7159,1511 +7180,1381 +7201,1197 +7223,1511 +7244,1381 +7265,1197 +7287,1511 +7308,1381 +7329,1197 +7351,1511 +7372,1381 +7393,1197 +7415,1511 +7436,1381 +7457,1197 +7479,1511 +7500,1381 +7521,1197 +7543,1511 +7564,1381 +7585,1197 +7607,1511 +7628,1381 +7649,1197 +7671,1511 +7692,1381 +7713,1197 +7735,1511 +7756,1381 +7777,1197 +7799,1511 +7820,1381 +7841,1197 +7863,1511 +7884,1381 +7905,1197 +7927,1511 +7948,1381 +7969,1197 +7991,1511 +8012,1381 +8033,1197 +8055,1511 +8076,1381 +8097,1197 +8119,1511 +8140,1381 +8161,1197 +8183,1511 +8204,1381 +8225,1197 +8247,1511 +8268,1381 +8289,1197 +8311,1511 +8332,1381 +8353,1197 +8375,1511 +8396,1381 +8417,1197 +8439,1511 +8460,1381 +8481,1197 +8503,1511 +8524,1381 +8545,1197 +8567,1511 +8588,1381 +8609,1197 +8631,1511 +8652,1381 +8673,1197 +8695,1511 +8716,1381 +8737,1197 +8759,1511 +8780,1381 +8801,1197 +8823,1511 +8844,1381 +8865,1197 +8887,1511 +8908,1381 +8929,1197 +8951,1511 +8972,1381 +8993,1197 +9015,1511 +9036,1381 +9057,1197 +9079,1511 +9100,1381 +9121,1197 +9143,1511 +9164,1381 +9185,1197 +9207,1511 +9228,1381 +9249,1197 +9271,1511 +9292,1381 +9313,1197 +9335,1511 +9356,1381 +9377,1197 +9399,1511 +9420,1381 +9441,1197 +9463,1511 +9484,1381 +9505,1197 +9527,1511 +9548,1381 +9569,1197 +9591,1511 +9612,1381 +9633,1197 +9655,1511 +9676,1381 +9697,1197 +9719,1511 +9740,1381 +9761,1197 +9783,1511 +9804,1381 +9825,1197 +9847,1511 +9868,1381 +9889,1197 +9911,1511 +9932,1381 +9953,1197 +9975,1511 +9996,1381 diff --git a/registry/phase4ad-author-semantics/evidence/components/trio-reset_g_only/events.csv b/registry/phase4ad-author-semantics/evidence/components/trio-reset_g_only/events.csv new file mode 100644 index 0000000..c39e0bf --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/components/trio-reset_g_only/events.csv @@ -0,0 +1,566 @@ +step,neuron_idx +0,1381 +45,1197 +49,1511 +77,1381 +96,1197 +103,1511 +129,1381 +149,1197 +156,1511 +182,1381 +202,1197 +209,1511 +235,1381 +255,1197 +262,1511 +288,1381 +308,1197 +315,1511 +341,1381 +361,1197 +368,1511 +394,1381 +414,1197 +421,1511 +447,1381 +467,1197 +474,1511 +500,1381 +520,1197 +527,1511 +553,1381 +573,1197 +580,1511 +606,1381 +626,1197 +633,1511 +659,1381 +679,1197 +686,1511 +712,1381 +732,1197 +739,1511 +765,1381 +785,1197 +792,1511 +818,1381 +838,1197 +845,1511 +871,1381 +891,1197 +898,1511 +924,1381 +944,1197 +951,1511 +977,1381 +997,1197 +1004,1511 +1030,1381 +1050,1197 +1057,1511 +1083,1381 +1103,1197 +1110,1511 +1136,1381 +1156,1197 +1163,1511 +1189,1381 +1209,1197 +1216,1511 +1242,1381 +1262,1197 +1269,1511 +1295,1381 +1315,1197 +1322,1511 +1348,1381 +1368,1197 +1375,1511 +1401,1381 +1421,1197 +1428,1511 +1454,1381 +1474,1197 +1481,1511 +1507,1381 +1527,1197 +1534,1511 +1560,1381 +1580,1197 +1587,1511 +1613,1381 +1633,1197 +1640,1511 +1666,1381 +1686,1197 +1693,1511 +1719,1381 +1739,1197 +1746,1511 +1772,1381 +1792,1197 +1799,1511 +1825,1381 +1845,1197 +1852,1511 +1878,1381 +1898,1197 +1905,1511 +1931,1381 +1951,1197 +1958,1511 +1984,1381 +2004,1197 +2011,1511 +2037,1381 +2057,1197 +2064,1511 +2090,1381 +2110,1197 +2117,1511 +2143,1381 +2163,1197 +2170,1511 +2196,1381 +2216,1197 +2223,1511 +2249,1381 +2269,1197 +2276,1511 +2302,1381 +2322,1197 +2329,1511 +2355,1381 +2375,1197 +2382,1511 +2408,1381 +2428,1197 +2435,1511 +2461,1381 +2481,1197 +2488,1511 +2514,1381 +2534,1197 +2541,1511 +2567,1381 +2587,1197 +2594,1511 +2620,1381 +2640,1197 +2647,1511 +2673,1381 +2693,1197 +2700,1511 +2726,1381 +2746,1197 +2753,1511 +2779,1381 +2799,1197 +2806,1511 +2832,1381 +2852,1197 +2859,1511 +2885,1381 +2905,1197 +2912,1511 +2938,1381 +2958,1197 +2965,1511 +2991,1381 +3011,1197 +3018,1511 +3044,1381 +3064,1197 +3071,1511 +3097,1381 +3117,1197 +3124,1511 +3150,1381 +3170,1197 +3177,1511 +3203,1381 +3223,1197 +3230,1511 +3256,1381 +3276,1197 +3283,1511 +3309,1381 +3329,1197 +3336,1511 +3362,1381 +3382,1197 +3389,1511 +3415,1381 +3435,1197 +3442,1511 +3468,1381 +3488,1197 +3495,1511 +3521,1381 +3541,1197 +3548,1511 +3574,1381 +3594,1197 +3601,1511 +3627,1381 +3647,1197 +3654,1511 +3680,1381 +3700,1197 +3707,1511 +3733,1381 +3753,1197 +3760,1511 +3786,1381 +3806,1197 +3813,1511 +3839,1381 +3859,1197 +3866,1511 +3892,1381 +3912,1197 +3919,1511 +3945,1381 +3965,1197 +3972,1511 +3998,1381 +4018,1197 +4025,1511 +4051,1381 +4071,1197 +4078,1511 +4104,1381 +4124,1197 +4131,1511 +4157,1381 +4177,1197 +4184,1511 +4210,1381 +4230,1197 +4237,1511 +4263,1381 +4283,1197 +4290,1511 +4316,1381 +4336,1197 +4343,1511 +4369,1381 +4389,1197 +4396,1511 +4422,1381 +4442,1197 +4449,1511 +4475,1381 +4495,1197 +4502,1511 +4528,1381 +4548,1197 +4555,1511 +4581,1381 +4601,1197 +4608,1511 +4634,1381 +4654,1197 +4661,1511 +4687,1381 +4707,1197 +4714,1511 +4740,1381 +4760,1197 +4767,1511 +4793,1381 +4813,1197 +4820,1511 +4846,1381 +4866,1197 +4873,1511 +4899,1381 +4919,1197 +4926,1511 +4952,1381 +4972,1197 +4979,1511 +5005,1381 +5025,1197 +5032,1511 +5058,1381 +5078,1197 +5085,1511 +5111,1381 +5131,1197 +5138,1511 +5164,1381 +5184,1197 +5191,1511 +5217,1381 +5237,1197 +5244,1511 +5270,1381 +5290,1197 +5297,1511 +5323,1381 +5343,1197 +5350,1511 +5376,1381 +5396,1197 +5403,1511 +5429,1381 +5449,1197 +5456,1511 +5482,1381 +5502,1197 +5509,1511 +5535,1381 +5555,1197 +5562,1511 +5588,1381 +5608,1197 +5615,1511 +5641,1381 +5661,1197 +5668,1511 +5694,1381 +5714,1197 +5721,1511 +5747,1381 +5767,1197 +5774,1511 +5800,1381 +5820,1197 +5827,1511 +5853,1381 +5873,1197 +5880,1511 +5906,1381 +5926,1197 +5933,1511 +5959,1381 +5979,1197 +5986,1511 +6012,1381 +6032,1197 +6039,1511 +6065,1381 +6085,1197 +6092,1511 +6118,1381 +6138,1197 +6145,1511 +6171,1381 +6191,1197 +6198,1511 +6224,1381 +6244,1197 +6251,1511 +6277,1381 +6297,1197 +6304,1511 +6330,1381 +6350,1197 +6357,1511 +6383,1381 +6403,1197 +6410,1511 +6436,1381 +6456,1197 +6463,1511 +6489,1381 +6509,1197 +6516,1511 +6542,1381 +6562,1197 +6569,1511 +6595,1381 +6615,1197 +6622,1511 +6648,1381 +6668,1197 +6675,1511 +6701,1381 +6721,1197 +6728,1511 +6754,1381 +6774,1197 +6781,1511 +6807,1381 +6827,1197 +6834,1511 +6860,1381 +6880,1197 +6887,1511 +6913,1381 +6933,1197 +6940,1511 +6966,1381 +6986,1197 +6993,1511 +7019,1381 +7039,1197 +7046,1511 +7072,1381 +7092,1197 +7099,1511 +7125,1381 +7145,1197 +7152,1511 +7178,1381 +7198,1197 +7205,1511 +7231,1381 +7251,1197 +7258,1511 +7284,1381 +7304,1197 +7311,1511 +7337,1381 +7357,1197 +7364,1511 +7390,1381 +7410,1197 +7417,1511 +7443,1381 +7463,1197 +7470,1511 +7496,1381 +7516,1197 +7523,1511 +7549,1381 +7569,1197 +7576,1511 +7602,1381 +7622,1197 +7629,1511 +7655,1381 +7675,1197 +7682,1511 +7708,1381 +7728,1197 +7735,1511 +7761,1381 +7781,1197 +7788,1511 +7814,1381 +7834,1197 +7841,1511 +7867,1381 +7887,1197 +7894,1511 +7920,1381 +7940,1197 +7947,1511 +7973,1381 +7993,1197 +8000,1511 +8026,1381 +8046,1197 +8053,1511 +8079,1381 +8099,1197 +8106,1511 +8132,1381 +8152,1197 +8159,1511 +8185,1381 +8205,1197 +8212,1511 +8238,1381 +8258,1197 +8265,1511 +8291,1381 +8311,1197 +8318,1511 +8344,1381 +8364,1197 +8371,1511 +8397,1381 +8417,1197 +8424,1511 +8450,1381 +8470,1197 +8477,1511 +8503,1381 +8523,1197 +8530,1511 +8556,1381 +8576,1197 +8583,1511 +8609,1381 +8629,1197 +8636,1511 +8662,1381 +8682,1197 +8689,1511 +8715,1381 +8735,1197 +8742,1511 +8768,1381 +8788,1197 +8795,1511 +8821,1381 +8841,1197 +8848,1511 +8874,1381 +8894,1197 +8901,1511 +8927,1381 +8947,1197 +8954,1511 +8980,1381 +9000,1197 +9007,1511 +9033,1381 +9053,1197 +9060,1511 +9086,1381 +9106,1197 +9113,1511 +9139,1381 +9159,1197 +9166,1511 +9192,1381 +9212,1197 +9219,1511 +9245,1381 +9265,1197 +9272,1511 +9298,1381 +9318,1197 +9325,1511 +9351,1381 +9371,1197 +9378,1511 +9404,1381 +9424,1197 +9431,1511 +9457,1381 +9477,1197 +9484,1511 +9510,1381 +9530,1197 +9537,1511 +9563,1381 +9583,1197 +9590,1511 +9616,1381 +9636,1197 +9643,1511 +9669,1381 +9689,1197 +9696,1511 +9722,1381 +9742,1197 +9749,1511 +9775,1381 +9795,1197 +9802,1511 +9828,1381 +9848,1197 +9855,1511 +9881,1381 +9901,1197 +9908,1511 +9934,1381 +9954,1197 +9961,1511 +9987,1381 diff --git a/registry/phase4ad-author-semantics/evidence/environment/bootstrap-notes.json b/registry/phase4ad-author-semantics/evidence/environment/bootstrap-notes.json new file mode 100644 index 0000000..e23932e --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/environment/bootstrap-notes.json @@ -0,0 +1,9 @@ +{ + "isolated_venv_only": true, + "existing_environments_modified": false, + "initial_install_failure": "New venv pip22.0.2 lacks --report; upgraded ONLY new venv pip to author-pinned23.0.1 before installing", + "MarkupSafe": "Author-pinned1.1.1 used PyPI source distribution and legacy setup.py because no CPython3.10 wheel; other requested core packages used wheels", + "author_environment": "Windows conda CPython3.10.11", + "actual_environment": "Linux CPython3.10.12; not binary-identical", + "package_download_provenance": "install-report.json contains HTTPS PyPI archive URLs and SHA256 for packages" +} diff --git a/registry/phase4ad-author-semantics/evidence/environment/frozen-scientific-environment.json b/registry/phase4ad-author-semantics/evidence/environment/frozen-scientific-environment.json new file mode 100644 index 0000000..9f7d204 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/environment/frozen-scientific-environment.json @@ -0,0 +1,12 @@ +{ + "python": "3.10.12 (main, Aug 31 2026, 10:18:17) [GCC 11.4.0]", + "executable": "/data/digital-drosophila/models/male-cns-lif/.venv/bin/python", + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "package_versions": { + "numpy": "2.2.6", + "pandas": "2.3.3", + "pyarrow": "25.0.1", + "torch": "2.14.0", + "scipy": "1.15.3" + } +} diff --git a/registry/phase4ad-author-semantics/evidence/environment/install-report.json b/registry/phase4ad-author-semantics/evidence/environment/install-report.json new file mode 100644 index 0000000..ef4fa44 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/environment/install-report.json @@ -0,0 +1,1051 @@ +{ + "version": "1", + "pip_version": "23.0.1", + "install": [ + { + "download_info": { + "url": "https://files.pythonhosted.org/packages/4d/2c/0ddea636a76a71f6713aec4209d21503cc9f59aa54ca365a4cf708324944/Brian2-2.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "archive_info": { + "hash": "sha256=a7fb30fbdfc99ab81dc7b0fc2e8c104713813c560b5ae356038dc5798329e72d", + "hashes": { + "sha256": "a7fb30fbdfc99ab81dc7b0fc2e8c104713813c560b5ae356038dc5798329e72d" + } + } + }, + "is_direct": false, + "requested": true, + "metadata": { + "metadata_version": "2.1", + "name": "Brian2", + "version": "2.5.1", + "platform": [ + "UNKNOWN" + ], + "summary": "A clock-driven simulator for spiking neural networks", + "description_content_type": "text/x-rst", + "keywords": [ + "computational", + "neuroscience", + "simulation" + ], + "home_page": "http://www.briansimulator.org/", + "author": "Marcel Stimberg, Dan Goodman, Romain Brette", + "author_email": "team@briansimulator.org", + "license": "UNKNOWN", + "classifier": [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Science/Research", + "License :: OSI Approved :: CEA CNRS Inria Logiciel Libre License, version 2.1 (CeCILL-2.1)", + "Natural Language :: English", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Topic :: Scientific/Engineering :: Bio-Informatics" + ], + "requires_dist": [ + "numpy (>=1.17)", + "cython (>=0.29)", + "sympy (>=1.2)", + "pyparsing", + "jinja2 (>=2.7)", + "setuptools (>=24.2)", + "py-cpuinfo ; platform_system == \"Windows\"", + "sphinx (>=1.8) ; extra == 'docs'", + "ipython (>=5) ; extra == 'docs'", + "sphinx-tabs ; extra == 'docs'", + "pytest ; extra == 'test'", + "pytest-xdist (>=1.22.3) ; extra == 'test'" + ], + "requires_python": ">=3.7", + "project_url": [ + "Documentation, https://brian2.readthedocs.io/", + "Source, https://github.com/brian-team/brian2", + "Tracker, https://github.com/brian-team/brian2/issues" + ], + "provides_extra": [ + "docs", + "test" + ], + "description": "Brian2\n======\n\n*A clock-driven simulator for spiking neural networks*\n\nBrian is a free, open source simulator for spiking neural networks. It is written in the Python programming language and is available on almost all platforms. We believe that a simulator should not only save the time of processors, but also the time of scientists. Brian is therefore designed to be easy to learn and use, highly flexible and easily extensible.\n\nPlease report issues at the github issue tracker (https://github.com/brian-team/brian2/issues) or in the Brian forum (https://brian.discourse.group).\n\nDocumentation for Brian2 can be found at http://brian2.readthedocs.org\n\nBrian2 is released under the terms of the `CeCILL 2.1 license `_.\n\nIf you use Brian for your published research, we kindly ask you to cite our article:\n\nStimberg, M, Brette, R, Goodman, DFM. “Brian 2, an Intuitive and Efficient Neural Simulator.” eLife 8 (2019): e47314. `doi: 10.7554/eLife.47314 `_.\n\n\n\n.. image:: https://img.shields.io/pypi/v/Brian2.svg\n :target: https://pypi.python.org/pypi/Brian2\n\n.. image:: https://img.shields.io/conda/vn/conda-forge/brian2.svg\n :target: https://anaconda.org/conda-forge/brian2\n\n\n.. image:: https://img.shields.io/debian/v/python3-brian/testing\n :alt: Debian package\n :target: https://packages.debian.org/testing/python3-brian\n\n.. image:: https://img.shields.io/fedora/v/python3-brian2\n :alt: Fedora package\n :target: https://packages.fedoraproject.org/pkgs/python-brian2/python3-brian2/\n\n.. image:: https://img.shields.io/spack/v/py-brian2\n :alt: Spack\n :target: https://spack.readthedocs.io/en/latest/package_list.html#py-brian2\n\n.. image:: https://img.shields.io/aur/version/python-brian2\n :alt: AUR version \n :target: https://aur.archlinux.org/packages/python-brian2\n\n\n.. image:: https://zenodo.org/badge/DOI/10.5281/zenodo.5910837.svg\n :target: https://doi.org/10.5281/zenodo.5910837\n\n.. image:: https://archive.softwareheritage.org/badge/swh:1:rel:5f3d6b8e531d64530ac93ce5134194cf66a495b9/\n :target: https://archive.softwareheritage.org/swh:1:rel:5f3d6b8e531d64530ac93ce5134194cf66a495b9;origin=https://github.com/brian-team/brian2;visit=swh:1:snp:06606ee7c757a47bc7dc168d0bfa8b0a5aecb620\n\n\n.. image:: https://img.shields.io/badge/Contributor%20Covenant-v1.4%20adopted-ff69b4.svg\n :target: CODE_OF_CONDUCT.md\n :alt: Contributor Covenant\n\n.. image:: https://img.shields.io/discourse/topics?server=https%3A%2F%2Fbrian.discourse.group\n :target: https://brian.discourse.group\n :alt: Discourse topics\n\n.. image:: https://badges.gitter.im/Join%20Chat.svg\n :alt: Join the chat at https://gitter.im/brian-team/brian2\n :target: https://gitter.im/brian-team/brian2?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge\n\nQuickstart\n----------\nTry out Brian on the `mybinder `_ service:\n\n.. image:: http://mybinder.org/badge.svg\n :target: http://mybinder.org/v2/gh/brian-team/brian2-binder/master?filepath=index.ipynb\n\nDependencies\n------------\nThe following packages need to be installed to use Brian 2 (cf. `setup.py `_):\n\n* Python >= 3.7\n* NumPy >=1.17\n* SymPy >= 1.2\n* Cython >= 0.29\n* PyParsing\n* Jinja2 >= 2.7\n* setuptools >= 24.2\n* py-cpuinfo (only required on Windows)\n\nFor full functionality, you might also want to install:\n\n* GSL >=1.16\n* SciPy >=0.13.3\n* Matplotlib >= 2.0\n\nTo build the documentation:\n\n* Sphinx (>=1.8)\n\nTo run the test suite:\n\n* pytest\n* pytest-xdist (optional)\n\nTesting status for master branch\n--------------------------------\n\n.. image:: https://github.com/brian-team/brian2/actions/workflows/testsuite.yml/badge.svg\n :target: https://github.com/brian-team/brian2/actions/workflows/testsuite.yml\n :alt: Test status on GitHub Actions\n\n.. image:: https://img.shields.io/coveralls/brian-team/brian2/master.svg\n :target: https://coveralls.io/r/brian-team/brian2?branch=master\n :alt: Test coverage\n\n.. image:: https://readthedocs.org/projects/brian2/badge/?version=stable\n :target: https://brian2.readthedocs.io/en/stable/?badge=stable\n :alt: Documentation Status\n\n\n" + } + }, + { + "download_info": { + "url": "https://files.pythonhosted.org/packages/15/87/4d6bc4e2053a4b517b022746f8e2dae328155a4c723bcad4c7d536febf51/numpy-1.22.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "archive_info": { + "hash": "sha256=a3bae1a2ed00e90b3ba5f7bd0a7c7999b55d609e0c54ceb2b076a25e345fa9f4", + "hashes": { + "sha256": "a3bae1a2ed00e90b3ba5f7bd0a7c7999b55d609e0c54ceb2b076a25e345fa9f4" + } + } + }, + "is_direct": false, + "requested": true, + "metadata": { + "metadata_version": "2.1", + "name": "numpy", + "version": "1.22.3", + "platform": [ + "Windows", + "Linux", + "Solaris", + "Mac OS-X", + "Unix" + ], + "summary": "NumPy is the fundamental package for array computing with Python.", + "home_page": "https://www.numpy.org", + "download_url": "https://pypi.python.org/pypi/numpy", + "author": "Travis E. Oliphant et al.", + "maintainer": "NumPy Developers", + "maintainer_email": "numpy-discussion@python.org", + "license": "BSD", + "classifier": [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Science/Research", + "Intended Audience :: Developers", + "License :: OSI Approved :: BSD License", + "Programming Language :: C", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: Implementation :: CPython", + "Topic :: Software Development", + "Topic :: Scientific/Engineering", + "Typing :: Typed", + "Operating System :: Microsoft :: Windows", + "Operating System :: POSIX", + "Operating System :: Unix", + "Operating System :: MacOS" + ], + "requires_python": ">=3.8", + "project_url": [ + "Bug Tracker, https://github.com/numpy/numpy/issues", + "Documentation, https://numpy.org/doc/1.22", + "Source Code, https://github.com/numpy/numpy" + ], + "description": "It provides:\n\n- a powerful N-dimensional array object\n- sophisticated (broadcasting) functions\n- tools for integrating C/C++ and Fortran code\n- useful linear algebra, Fourier transform, and random number capabilities\n- and much more\n\nBesides its obvious scientific uses, NumPy can also be used as an efficient\nmulti-dimensional container of generic data. Arbitrary data-types can be\ndefined. This allows NumPy to seamlessly and speedily integrate with a wide\nvariety of databases.\n\nAll NumPy wheels distributed on PyPI are BSD licensed.\n\n\n\n" + } + }, + { + "download_info": { + "url": "https://files.pythonhosted.org/packages/ea/e4/a1cbaca4069fdd92c930bb1c5eebd9ea9c55717a9bf60bd41708c8a33f5a/pandas-1.4.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "archive_info": { + "hash": "sha256=6f803320c9da732cc79210d7e8cc5c8019aad512589c910c66529eb1b1818230", + "hashes": { + "sha256": "6f803320c9da732cc79210d7e8cc5c8019aad512589c910c66529eb1b1818230" + } + } + }, + "is_direct": false, + "requested": true, + "metadata": { + "metadata_version": "2.1", + "name": "pandas", + "version": "1.4.3", + "platform": [ + "any" + ], + "summary": "Powerful data structures for data analysis, time series, and statistics", + "description_content_type": "text/markdown", + "home_page": "https://pandas.pydata.org", + "author": "The Pandas Development Team", + "author_email": "pandas-dev@python.org", + "license": "BSD-3-Clause", + "classifier": [ + "Development Status :: 5 - Production/Stable", + "Environment :: Console", + "Intended Audience :: Science/Research", + "License :: OSI Approved :: BSD License", + "Operating System :: OS Independent", + "Programming Language :: Cython", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Topic :: Scientific/Engineering" + ], + "requires_dist": [ + "python-dateutil (>=2.8.1)", + "pytz (>=2020.1)", + "numpy (>=1.18.5) ; platform_machine != \"aarch64\" and platform_machine != \"arm64\" and python_version < \"3.10\"", + "numpy (>=1.19.2) ; platform_machine == \"aarch64\" and python_version < \"3.10\"", + "numpy (>=1.20.0) ; platform_machine == \"arm64\" and python_version < \"3.10\"", + "numpy (>=1.21.0) ; python_version >= \"3.10\"", + "hypothesis (>=5.5.3) ; extra == 'test'", + "pytest (>=6.0) ; extra == 'test'", + "pytest-xdist (>=1.31) ; extra == 'test'" + ], + "requires_python": ">=3.8", + "project_url": [ + "Bug Tracker, https://github.com/pandas-dev/pandas/issues", + "Documentation, https://pandas.pydata.org/pandas-docs/stable", + "Source Code, https://github.com/pandas-dev/pandas" + ], + "provides_extra": [ + "test" + ], + "description": "
\n
\n
\n\n-----------------\n\n# pandas: powerful Python data analysis toolkit\n[![PyPI Latest Release](https://img.shields.io/pypi/v/pandas.svg)](https://pypi.org/project/pandas/)\n[![Conda Latest Release](https://anaconda.org/conda-forge/pandas/badges/version.svg)](https://anaconda.org/anaconda/pandas/)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3509134.svg)](https://doi.org/10.5281/zenodo.3509134)\n[![Package Status](https://img.shields.io/pypi/status/pandas.svg)](https://pypi.org/project/pandas/)\n[![License](https://img.shields.io/pypi/l/pandas.svg)](https://github.com/pandas-dev/pandas/blob/main/LICENSE)\n[![Coverage](https://codecov.io/github/pandas-dev/pandas/coverage.svg?branch=main)](https://codecov.io/gh/pandas-dev/pandas)\n[![Downloads](https://static.pepy.tech/personalized-badge/pandas?period=month&units=international_system&left_color=black&right_color=orange&left_text=PyPI%20downloads%20per%20month)](https://pepy.tech/project/pandas)\n[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/pydata/pandas)\n[![Powered by NumFOCUS](https://img.shields.io/badge/powered%20by-NumFOCUS-orange.svg?style=flat&colorA=E1523D&colorB=007D8A)](https://numfocus.org)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![Imports: isort](https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336)](https://pycqa.github.io/isort/)\n\n## What is it?\n\n**pandas** is a Python package that provides fast, flexible, and expressive data\nstructures designed to make working with \"relational\" or \"labeled\" data both\neasy and intuitive. It aims to be the fundamental high-level building block for\ndoing practical, **real world** data analysis in Python. Additionally, it has\nthe broader goal of becoming **the most powerful and flexible open source data\nanalysis / manipulation tool available in any language**. It is already well on\nits way towards this goal.\n\n## Main Features\nHere are just a few of the things that pandas does well:\n\n - Easy handling of [**missing data**][missing-data] (represented as\n `NaN`, `NA`, or `NaT`) in floating point as well as non-floating point data\n - Size mutability: columns can be [**inserted and\n deleted**][insertion-deletion] from DataFrame and higher dimensional\n objects\n - Automatic and explicit [**data alignment**][alignment]: objects can\n be explicitly aligned to a set of labels, or the user can simply\n ignore the labels and let `Series`, `DataFrame`, etc. automatically\n align the data for you in computations\n - Powerful, flexible [**group by**][groupby] functionality to perform\n split-apply-combine operations on data sets, for both aggregating\n and transforming data\n - Make it [**easy to convert**][conversion] ragged,\n differently-indexed data in other Python and NumPy data structures\n into DataFrame objects\n - Intelligent label-based [**slicing**][slicing], [**fancy\n indexing**][fancy-indexing], and [**subsetting**][subsetting] of\n large data sets\n - Intuitive [**merging**][merging] and [**joining**][joining] data\n sets\n - Flexible [**reshaping**][reshape] and [**pivoting**][pivot-table] of\n data sets\n - [**Hierarchical**][mi] labeling of axes (possible to have multiple\n labels per tick)\n - Robust IO tools for loading data from [**flat files**][flat-files]\n (CSV and delimited), [**Excel files**][excel], [**databases**][db],\n and saving/loading data from the ultrafast [**HDF5 format**][hdfstore]\n - [**Time series**][timeseries]-specific functionality: date range\n generation and frequency conversion, moving window statistics,\n date shifting and lagging\n\n\n [missing-data]: https://pandas.pydata.org/pandas-docs/stable/user_guide/missing_data.html\n [insertion-deletion]: https://pandas.pydata.org/pandas-docs/stable/user_guide/dsintro.html#column-selection-addition-deletion\n [alignment]: https://pandas.pydata.org/pandas-docs/stable/user_guide/dsintro.html?highlight=alignment#intro-to-data-structures\n [groupby]: https://pandas.pydata.org/pandas-docs/stable/user_guide/groupby.html#group-by-split-apply-combine\n [conversion]: https://pandas.pydata.org/pandas-docs/stable/user_guide/dsintro.html#dataframe\n [slicing]: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#slicing-ranges\n [fancy-indexing]: https://pandas.pydata.org/pandas-docs/stable/user_guide/advanced.html#advanced\n [subsetting]: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#boolean-indexing\n [merging]: https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html#database-style-dataframe-or-named-series-joining-merging\n [joining]: https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html#joining-on-index\n [reshape]: https://pandas.pydata.org/pandas-docs/stable/user_guide/reshaping.html\n [pivot-table]: https://pandas.pydata.org/pandas-docs/stable/user_guide/reshaping.html\n [mi]: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#hierarchical-indexing-multiindex\n [flat-files]: https://pandas.pydata.org/pandas-docs/stable/user_guide/io.html#csv-text-files\n [excel]: https://pandas.pydata.org/pandas-docs/stable/user_guide/io.html#excel-files\n [db]: https://pandas.pydata.org/pandas-docs/stable/user_guide/io.html#sql-queries\n [hdfstore]: https://pandas.pydata.org/pandas-docs/stable/user_guide/io.html#hdf5-pytables\n [timeseries]: https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html#time-series-date-functionality\n\n## Where to get it\nThe source code is currently hosted on GitHub at:\nhttps://github.com/pandas-dev/pandas\n\nBinary installers for the latest released version are available at the [Python\nPackage Index (PyPI)](https://pypi.org/project/pandas) and on [Conda](https://docs.conda.io/en/latest/).\n\n```sh\n# conda\nconda install pandas\n```\n\n```sh\n# or PyPI\npip install pandas\n```\n\n## Dependencies\n- [NumPy - Adds support for large, multi-dimensional arrays, matrices and high-level mathematical functions to operate on these arrays](https://www.numpy.org)\n- [python-dateutil - Provides powerful extensions to the standard datetime module](https://dateutil.readthedocs.io/en/stable/index.html)\n- [pytz - Brings the Olson tz database into Python which allows accurate and cross platform timezone calculations](https://github.com/stub42/pytz)\n\nSee the [full installation instructions](https://pandas.pydata.org/pandas-docs/stable/install.html#dependencies) for minimum supported versions of required, recommended and optional dependencies.\n\n## Installation from sources\nTo install pandas from source you need [Cython](https://cython.org/) in addition to the normal\ndependencies above. Cython can be installed from PyPI:\n\n```sh\npip install cython\n```\n\nIn the `pandas` directory (same one where you found this file after\ncloning the git repo), execute:\n\n```sh\npython setup.py install\n```\n\nor for installing in [development mode](https://pip.pypa.io/en/latest/cli/pip_install/#install-editable):\n\n\n```sh\npython -m pip install -e . --no-build-isolation --no-use-pep517\n```\n\nIf you have `make`, you can also use `make develop` to run the same command.\n\nor alternatively\n\n```sh\npython setup.py develop\n```\n\nSee the full instructions for [installing from source](https://pandas.pydata.org/pandas-docs/stable/install.html#installing-from-source).\n\n## License\n[BSD 3](LICENSE)\n\n## Documentation\nThe official documentation is hosted on PyData.org: https://pandas.pydata.org/pandas-docs/stable\n\n## Background\nWork on ``pandas`` started at [AQR](https://www.aqr.com/) (a quantitative hedge fund) in 2008 and\nhas been under active development since then.\n\n## Getting Help\n\nFor usage questions, the best place to go to is [StackOverflow](https://stackoverflow.com/questions/tagged/pandas).\nFurther, general questions and discussions can also take place on the [pydata mailing list](https://groups.google.com/forum/?fromgroups#!forum/pydata).\n\n## Discussion and Development\nMost development discussions take place on GitHub in this repo. Further, the [pandas-dev mailing list](https://mail.python.org/mailman/listinfo/pandas-dev) can also be used for specialized discussions or design issues, and a [Gitter channel](https://gitter.im/pydata/pandas) is available for quick development related questions.\n\n## Contributing to pandas [![Open Source Helpers](https://www.codetriage.com/pandas-dev/pandas/badges/users.svg)](https://www.codetriage.com/pandas-dev/pandas)\n\nAll contributions, bug reports, bug fixes, documentation improvements, enhancements, and ideas are welcome.\n\nA detailed overview on how to contribute can be found in the **[contributing guide](https://pandas.pydata.org/docs/dev/development/contributing.html)**.\n\nIf you are simply looking to start working with the pandas codebase, navigate to the [GitHub \"issues\" tab](https://github.com/pandas-dev/pandas/issues) and start looking through interesting issues. There are a number of issues listed under [Docs](https://github.com/pandas-dev/pandas/issues?labels=Docs&sort=updated&state=open) and [good first issue](https://github.com/pandas-dev/pandas/issues?labels=good+first+issue&sort=updated&state=open) where you could start out.\n\nYou can also triage issues which may include reproducing bug reports, or asking for vital information such as version numbers or reproduction instructions. If you would like to start triaging issues, one easy way to get started is to [subscribe to pandas on CodeTriage](https://www.codetriage.com/pandas-dev/pandas).\n\nOr maybe through using pandas you have an idea of your own or are looking for something in the documentation and thinking ‘this can be improved’...you can do something about it!\n\nFeel free to ask questions on the [mailing list](https://groups.google.com/forum/?fromgroups#!forum/pydata) or on [Gitter](https://gitter.im/pydata/pandas).\n\nAs contributors and maintainers to this project, you are expected to abide by pandas' code of conduct. More information can be found at: [Contributor Code of Conduct](https://github.com/pandas-dev/pandas/blob/main/.github/CODE_OF_CONDUCT.md)\n" + } + }, + { + "download_info": { + "url": "https://files.pythonhosted.org/packages/bc/fe/72b611ba221c3367b06163992af4807515d6e0e09b3b9beee8ec22162d6f/scipy-1.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "archive_info": { + "hash": "sha256=a0aa8220b89b2e3748a2836fbfa116194378910f1a6e78e4675a095bcd2c762d", + "hashes": { + "sha256": "a0aa8220b89b2e3748a2836fbfa116194378910f1a6e78e4675a095bcd2c762d" + } + } + }, + "is_direct": false, + "requested": true, + "metadata": { + "metadata_version": "2.1", + "name": "scipy", + "version": "1.8.1", + "platform": [ + "Windows", + "Linux", + "Solaris", + "Mac OS-X", + "Unix" + ], + "summary": "SciPy: Scientific Library for Python", + "home_page": "https://www.scipy.org", + "download_url": "https://github.com/scipy/scipy/releases", + "maintainer": "SciPy Developers", + "maintainer_email": "scipy-dev@python.org", + "license": "BSD", + "classifier": [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Science/Research", + "Intended Audience :: Developers", + "License :: OSI Approved :: BSD License", + "Programming Language :: C", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Topic :: Software Development :: Libraries", + "Topic :: Scientific/Engineering", + "Operating System :: Microsoft :: Windows", + "Operating System :: POSIX :: Linux", + "Operating System :: POSIX", + "Operating System :: Unix", + "Operating System :: MacOS" + ], + "requires_dist": [ + "numpy (<1.25.0,>=1.17.3)" + ], + "requires_python": ">=3.8,<3.11", + "project_url": [ + "Bug Tracker, https://github.com/scipy/scipy/issues", + "Documentation, https://docs.scipy.org/doc/scipy/reference/", + "Source Code, https://github.com/scipy/scipy" + ], + "description": "SciPy (pronounced \"Sigh Pie\") is open-source software for mathematics,\nscience, and engineering. The SciPy library\ndepends on NumPy, which provides convenient and fast N-dimensional\narray manipulation. The SciPy library is built to work with NumPy\narrays, and provides many user-friendly and efficient numerical\nroutines such as routines for numerical integration and optimization.\nTogether, they run on all popular operating systems, are quick to\ninstall, and are free of charge. NumPy and SciPy are easy to use,\nbut powerful enough to be depended upon by some of the world's\nleading scientists and engineers. If you need to manipulate\nnumbers on a computer and display or publish the results,\ngive SciPy a try!\n\n\n\n" + } + }, + { + "download_info": { + "url": "https://files.pythonhosted.org/packages/bc/5b/cee81fdfbd963e08a50eda1500fc9142fa08a7dec5f7dcd9c7c2a33536b6/pyarrow-11.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "archive_info": { + "hash": "sha256=ad7c53def8dbbc810282ad308cc46a523ec81e653e60a91c609c2233ae407689", + "hashes": { + "sha256": "ad7c53def8dbbc810282ad308cc46a523ec81e653e60a91c609c2233ae407689" + } + } + }, + "is_direct": false, + "requested": true, + "metadata": { + "metadata_version": "2.1", + "name": "pyarrow", + "version": "11.0.0", + "summary": "Python library for Apache Arrow", + "description_content_type": "text/markdown", + "home_page": "https://arrow.apache.org/", + "maintainer": "Apache Arrow Developers", + "maintainer_email": "dev@arrow.apache.org", + "license": "Apache License, Version 2.0", + "classifier": [ + "License :: OSI Approved :: Apache Software License", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11" + ], + "requires_dist": [ + "numpy (>=1.16.6)" + ], + "requires_python": ">=3.7", + "project_url": [ + "Documentation, https://arrow.apache.org/docs/python", + "Source, https://github.com/apache/arrow" + ], + "description": "\n\n## Python library for Apache Arrow\n\n[![pypi](https://img.shields.io/pypi/v/pyarrow.svg)](https://pypi.org/project/pyarrow/) [![conda-forge](https://img.shields.io/conda/vn/conda-forge/pyarrow.svg)](https://anaconda.org/conda-forge/pyarrow)\n\nThis library provides a Python API for functionality provided by the Arrow C++\nlibraries, along with tools for Arrow integration and interoperability with\npandas, NumPy, and other software in the Python ecosystem.\n\n## Installing\n\nAcross platforms, you can install a recent version of pyarrow with the conda\npackage manager:\n\n```shell\nconda install pyarrow -c conda-forge\n```\n\nOn Linux, macOS, and Windows, you can also install binary wheels from PyPI with\npip:\n\n```shell\npip install pyarrow\n```\n\nIf you encounter any issues importing the pip wheels on Windows, you may need\nto install the [Visual C++ Redistributable for Visual Studio 2015][6].\n\n## Development\n\nSee [Python Development][2] in the documentation subproject.\n\n### Building the documentation\n\nSee [documentation build instructions][1] in the documentation subproject.\n\n[1]: https://github.com/apache/arrow/blob/master/docs/source/developers/documentation.rst\n[2]: https://github.com/apache/arrow/blob/master/docs/source/developers/python.rst\n[3]: https://github.com/pandas-dev/pandas\n[5]: https://arrow.apache.org/docs/latest/python/benchmarks.html\n[6]: https://www.microsoft.com/en-us/download/details.aspx?id=48145\n" + } + }, + { + "download_info": { + "url": "https://files.pythonhosted.org/packages/91/d4/3b4c8e5a30604df4c7518c562d4bf0502f2fa29221459226e140cf846512/joblib-1.2.0-py3-none-any.whl", + "archive_info": { + "hash": "sha256=091138ed78f800342968c523bdde947e7a305b8594b910a0fea2ab83c3c6d385", + "hashes": { + "sha256": "091138ed78f800342968c523bdde947e7a305b8594b910a0fea2ab83c3c6d385" + } + } + }, + "is_direct": false, + "requested": true, + "metadata": { + "metadata_version": "2.1", + "name": "joblib", + "version": "1.2.0", + "platform": [ + "any" + ], + "summary": "Lightweight pipelining with Python functions", + "description_content_type": "text/x-rst", + "home_page": "https://joblib.readthedocs.io", + "author": "Gael Varoquaux", + "author_email": "gael.varoquaux@normalesup.org", + "license": "BSD", + "classifier": [ + "Development Status :: 5 - Production/Stable", + "Environment :: Console", + "Intended Audience :: Developers", + "Intended Audience :: Science/Research", + "Intended Audience :: Education", + "License :: OSI Approved :: BSD License", + "Operating System :: OS Independent", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Topic :: Scientific/Engineering", + "Topic :: Utilities", + "Topic :: Software Development :: Libraries" + ], + "requires_python": ">=3.7", + "project_url": [ + "Source, https://github.com/joblib/joblib" + ], + "description": "|PyPi| |Azure| |ReadTheDocs| |Codecov| \n\n.. |PyPi| image:: https://badge.fury.io/py/joblib.svg\n :target: https://badge.fury.io/py/joblib\n :alt: Joblib version\n\n.. |Azure| image:: https://dev.azure.com/joblib/joblib/_apis/build/status/joblib.joblib?branchName=master\n :target: https://dev.azure.com/joblib/joblib/_build?definitionId=3&_a=summary&branchFilter=40\n :alt: Azure CI status\n\n.. |ReadTheDocs| image:: https://readthedocs.org/projects/joblib/badge/?version=latest\n :target: https://joblib.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\n.. |Codecov| image:: https://codecov.io/gh/joblib/joblib/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/joblib/joblib\n :alt: Codecov coverage\n\n\nThe homepage of joblib with user documentation is located on:\n\nhttps://joblib.readthedocs.io\n\nGetting the latest code\n=======================\n\nTo get the latest code using git, simply type::\n\n git clone git://github.com/joblib/joblib.git\n\nIf you don't have git installed, you can download a zip or tarball\nof the latest code: http://github.com/joblib/joblib/archives/master\n\nInstalling\n==========\n\nYou can use `pip` to install joblib::\n\n pip install joblib\n\nfrom any directory or::\n\n python setup.py install\n\nfrom the source directory.\n\nDependencies\n============\n\n- Joblib has no mandatory dependencies besides Python (supported versions are\n 3.7+).\n- Joblib has an optional dependency on Numpy (at least version 1.6.1) for array\n manipulation.\n- Joblib includes its own vendored copy of\n `loky `_ for process management.\n- Joblib can efficiently dump and load numpy arrays but does not require numpy\n to be installed.\n- Joblib has an optional dependency on\n `python-lz4 `_ as a faster alternative to\n zlib and gzip for compressed serialization.\n- Joblib has an optional dependency on psutil to mitigate memory leaks in\n parallel worker processes.\n- Some examples require external dependencies such as pandas. See the\n instructions in the `Building the docs`_ section for details.\n\nWorkflow to contribute\n======================\n\nTo contribute to joblib, first create an account on `github\n`_. Once this is done, fork the `joblib repository\n`_ to have your own repository,\nclone it using 'git clone' on the computers where you want to work. Make\nyour changes in your clone, push them to your github account, test them\non several computers, and when you are happy with them, send a pull\nrequest to the main repository.\n\nRunning the test suite\n======================\n\nTo run the test suite, you need the pytest (version >= 3) and coverage modules.\nRun the test suite using::\n\n pytest joblib\n\nfrom the root of the project.\n\nBuilding the docs\n=================\n\nTo build the docs you need to have sphinx (>=1.4) and some dependencies\ninstalled::\n\n pip install -U -r .readthedocs-requirements.txt\n\nThe docs can then be built with the following command::\n\n make doc\n\nThe html docs are located in the ``doc/_build/html`` directory.\n\n\nMaking a source tarball\n=======================\n\nTo create a source tarball, eg for packaging or distributing, run the\nfollowing command::\n\n python setup.py sdist\n\nThe tarball will be created in the `dist` directory. This command will\ncompile the docs, and the resulting tarball can be installed with\nno extra dependencies than the Python standard library. You will need\nsetuptool and sphinx.\n\nMaking a release and uploading it to PyPI\n=========================================\n\nThis command is only run by project manager, to make a release, and\nupload in to PyPI::\n\n python setup.py sdist bdist_wheel\n twine upload dist/*\n\n\nNote that the documentation should automatically get updated at each git\npush. If that is not the case, try building th doc locally and resolve\nany doc build error (in particular when running the examples).\n\nUpdating the changelog\n======================\n\nChanges are listed in the CHANGES.rst file. They must be manually updated\nbut, the following git command may be used to generate the lines::\n\n git log --abbrev-commit --date=short --no-merges --sparse\n\n\n\n" + } + }, + { + "download_info": { + "url": "https://files.pythonhosted.org/packages/21/76/ef852189cc39a33cedc08d30189de2d1e44d826ddcf101e24c82c8b8ea0c/Cython-0.29.33-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", + "archive_info": { + "hash": "sha256=0168482495b75fea1c97a9641a95bac991f313e85f378003f9a4909fdeb3d454", + "hashes": { + "sha256": "0168482495b75fea1c97a9641a95bac991f313e85f378003f9a4909fdeb3d454" + } + } + }, + "is_direct": false, + "requested": true, + "metadata": { + "metadata_version": "2.1", + "name": "Cython", + "version": "0.29.33", + "summary": "The Cython compiler for writing C extensions for the Python language.", + "home_page": "http://cython.org/", + "author": "Robert Bradshaw, Stefan Behnel, Dag Seljebotn, Greg Ewing, et al.", + "author_email": "cython-devel@python.org", + "license": "Apache", + "classifier": [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: Apache Software License", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Programming Language :: Python :: 2", + "Programming Language :: Python :: 2.6", + "Programming Language :: Python :: 2.7", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.4", + "Programming Language :: Python :: 3.5", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: Implementation :: CPython", + "Programming Language :: Python :: Implementation :: PyPy", + "Programming Language :: C", + "Programming Language :: Cython", + "Topic :: Software Development :: Code Generators", + "Topic :: Software Development :: Compilers", + "Topic :: Software Development :: Libraries :: Python Modules" + ], + "requires_python": ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*", + "project_url": [ + "Documentation, https://cython.readthedocs.io/", + "Donate, https://cython.readthedocs.io/en/latest/src/donating.html", + "Source Code, https://github.com/cython/cython", + "Bug Tracker, https://github.com/cython/cython/issues", + "User Group, https://groups.google.com/g/cython-users" + ], + "description": "The Cython language makes writing C extensions for the Python language as\neasy as Python itself. Cython is a source code translator based on Pyrex_,\nbut supports more cutting edge functionality and optimizations.\n\nThe Cython language is a superset of the Python language (almost all Python\ncode is also valid Cython code), but Cython additionally supports optional\nstatic typing to natively call C functions, operate with C++ classes and\ndeclare fast C types on variables and class attributes. This allows the\ncompiler to generate very efficient C code from Cython code.\n\nThis makes Cython the ideal language for writing glue code for external\nC/C++ libraries, and for fast C modules that speed up the execution of\nPython code.\n\nNote that for one-time builds, e.g. for CI/testing, on platforms that are not\ncovered by one of the wheel packages provided on PyPI *and* the pure Python wheel\nthat we provide is not used, it is substantially faster than a full source build\nto install an uncompiled (slower) version of Cython with::\n\n pip install Cython --install-option=\"--no-cython-compile\"\n\n.. _Pyrex: http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/\n" + } + }, + { + "download_info": { + "url": "https://files.pythonhosted.org/packages/7e/c2/1eece8c95ddbc9b1aeb64f5783a9e07a286de42191b7204d67b7496ddf35/Jinja2-2.11.3-py2.py3-none-any.whl", + "archive_info": { + "hash": "sha256=03e47ad063331dd6a3f04a43eddca8a966a26ba0c5b7207a9a9e4e08f1b29419", + "hashes": { + "sha256": "03e47ad063331dd6a3f04a43eddca8a966a26ba0c5b7207a9a9e4e08f1b29419" + } + } + }, + "is_direct": false, + "requested": true, + "metadata": { + "metadata_version": "2.1", + "name": "Jinja2", + "version": "2.11.3", + "platform": [ + "UNKNOWN" + ], + "summary": "A very fast and expressive template engine.", + "description_content_type": "text/x-rst", + "home_page": "https://palletsprojects.com/p/jinja/", + "author": "Armin Ronacher", + "author_email": "armin.ronacher@active-4.com", + "maintainer": "Pallets", + "maintainer_email": "contact@palletsprojects.com", + "license": "BSD-3-Clause", + "classifier": [ + "Development Status :: 5 - Production/Stable", + "Environment :: Web Environment", + "Intended Audience :: Developers", + "License :: OSI Approved :: BSD License", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Programming Language :: Python :: 2", + "Programming Language :: Python :: 2.7", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.5", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: Implementation :: CPython", + "Programming Language :: Python :: Implementation :: PyPy", + "Topic :: Internet :: WWW/HTTP :: Dynamic Content", + "Topic :: Software Development :: Libraries :: Python Modules", + "Topic :: Text Processing :: Markup :: HTML" + ], + "requires_dist": [ + "MarkupSafe (>=0.23)", + "Babel (>=0.8) ; extra == 'i18n'" + ], + "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*", + "project_url": [ + "Documentation, https://jinja.palletsprojects.com/", + "Code, https://github.com/pallets/jinja", + "Issue tracker, https://github.com/pallets/jinja/issues" + ], + "provides_extra": [ + "i18n" + ], + "description": "Jinja\n=====\n\nJinja is a fast, expressive, extensible templating engine. Special\nplaceholders in the template allow writing code similar to Python\nsyntax. Then the template is passed data to render the final document.\n\nIt includes:\n\n- Template inheritance and inclusion.\n- Define and import macros within templates.\n- HTML templates can use autoescaping to prevent XSS from untrusted\n user input.\n- A sandboxed environment can safely render untrusted templates.\n- AsyncIO support for generating templates and calling async\n functions.\n- I18N support with Babel.\n- Templates are compiled to optimized Python code just-in-time and\n cached, or can be compiled ahead-of-time.\n- Exceptions point to the correct line in templates to make debugging\n easier.\n- Extensible filters, tests, functions, and even syntax.\n\nJinja's philosophy is that while application logic belongs in Python if\npossible, it shouldn't make the template designer's job difficult by\nrestricting functionality too much.\n\n\nInstalling\n----------\n\nInstall and update using `pip`_:\n\n.. code-block:: text\n\n $ pip install -U Jinja2\n\n.. _pip: https://pip.pypa.io/en/stable/quickstart/\n\n\nIn A Nutshell\n-------------\n\n.. code-block:: jinja\n\n {% extends \"base.html\" %}\n {% block title %}Members{% endblock %}\n {% block content %}\n \n {% endblock %}\n\n\nLinks\n-----\n\n- Website: https://palletsprojects.com/p/jinja/\n- Documentation: https://jinja.palletsprojects.com/\n- Releases: https://pypi.org/project/Jinja2/\n- Code: https://github.com/pallets/jinja\n- Issue tracker: https://github.com/pallets/jinja/issues\n- Test status: https://dev.azure.com/pallets/jinja/_build\n- Official chat: https://discord.gg/t6rrQZH\n\n\n" + } + }, + { + "download_info": { + "url": "https://files.pythonhosted.org/packages/b9/2e/64db92e53b86efccfaea71321f597fa2e1b2bd3853d8ce658568f7a13094/MarkupSafe-1.1.1.tar.gz", + "archive_info": { + "hash": "sha256=29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b", + "hashes": { + "sha256": "29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b" + } + } + }, + "is_direct": false, + "requested": true, + "metadata": { + "metadata_version": "2.1", + "name": "MarkupSafe", + "version": "1.1.1", + "platform": [ + "UNKNOWN" + ], + "summary": "Safely add untrusted strings to HTML/XML markup.", + "home_page": "https://palletsprojects.com/p/markupsafe/", + "author": "Armin Ronacher", + "author_email": "armin.ronacher@active-4.com", + "maintainer": "The Pallets Team", + "maintainer_email": "contact@palletsprojects.com", + "license": "BSD-3-Clause", + "classifier": [ + "Development Status :: 5 - Production/Stable", + "Environment :: Web Environment", + "Intended Audience :: Developers", + "License :: OSI Approved :: BSD License", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Programming Language :: Python :: 2", + "Programming Language :: Python :: 2.7", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.4", + "Programming Language :: Python :: 3.5", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Topic :: Internet :: WWW/HTTP :: Dynamic Content", + "Topic :: Software Development :: Libraries :: Python Modules", + "Topic :: Text Processing :: Markup :: HTML" + ], + "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", + "project_url": [ + "Documentation, https://markupsafe.palletsprojects.com/", + "Code, https://github.com/pallets/markupsafe", + "Issue tracker, https://github.com/pallets/markupsafe/issues" + ], + "description": "MarkupSafe\n==========\n\nMarkupSafe implements a text object that escapes characters so it is\nsafe to use in HTML and XML. Characters that have special meanings are\nreplaced so that they display as the actual characters. This mitigates\ninjection attacks, meaning untrusted user input can safely be displayed\non a page.\n\n\nInstalling\n----------\n\nInstall and update using `pip`_:\n\n.. code-block:: text\n\n pip install -U MarkupSafe\n\n.. _pip: https://pip.pypa.io/en/stable/quickstart/\n\n\nExamples\n--------\n\n.. code-block:: pycon\n\n >>> from markupsafe import Markup, escape\n >>> # escape replaces special characters and wraps in Markup\n >>> escape('')\n Markup(u'<script>alert(document.cookie);</script>')\n >>> # wrap in Markup to mark text \"safe\" and prevent escaping\n >>> Markup('Hello')\n Markup('hello')\n >>> escape(Markup('Hello'))\n Markup('hello')\n >>> # Markup is a text subclass (str on Python 3, unicode on Python 2)\n >>> # methods and operators escape their arguments\n >>> template = Markup(\"Hello %s\")\n >>> template % '\"World\"'\n Markup('Hello "World"')\n\n\nDonate\n------\n\nThe Pallets organization develops and supports MarkupSafe and other\nlibraries that use it. In order to grow the community of contributors\nand users, and allow the maintainers to devote more time to the\nprojects, `please donate today`_.\n\n.. _please donate today: https://palletsprojects.com/donate\n\n\nLinks\n-----\n\n* Website: https://palletsprojects.com/p/markupsafe/\n* Documentation: https://markupsafe.palletsprojects.com/\n* License: `BSD-3-Clause `_\n* Releases: https://pypi.org/project/MarkupSafe/\n* Code: https://github.com/pallets/markupsafe\n* Issue tracker: https://github.com/pallets/markupsafe/issues\n* Test status:\n\n * Linux, Mac: https://travis-ci.org/pallets/markupsafe\n * Windows: https://ci.appveyor.com/project/pallets/markupsafe\n\n* Test coverage: https://codecov.io/gh/pallets/markupsafe\n\n\n" + } + }, + { + "download_info": { + "url": "https://files.pythonhosted.org/packages/d2/05/e6600db80270777c4a64238a98d442f0fd07cc8915be2a1c16da7f2b9e74/sympy-1.12-py3-none-any.whl", + "archive_info": { + "hash": "sha256=c3588cd4295d0c0f603d0f2ae780587e64e2efeedb3521e46b9bb1d08d184fa5", + "hashes": { + "sha256": "c3588cd4295d0c0f603d0f2ae780587e64e2efeedb3521e46b9bb1d08d184fa5" + } + } + }, + "is_direct": false, + "requested": true, + "metadata": { + "metadata_version": "2.1", + "name": "sympy", + "version": "1.12", + "summary": "Computer algebra system (CAS) in Python", + "description_content_type": "text/markdown", + "keywords": [ + "Math", + "CAS" + ], + "home_page": "https://sympy.org", + "author": "SymPy development team", + "author_email": "sympy@googlegroups.com", + "license": "BSD", + "classifier": [ + "License :: OSI Approved :: BSD License", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Topic :: Scientific/Engineering", + "Topic :: Scientific/Engineering :: Mathematics", + "Topic :: Scientific/Engineering :: Physics", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: Implementation :: CPython", + "Programming Language :: Python :: Implementation :: PyPy" + ], + "requires_dist": [ + "mpmath (>=0.19)" + ], + "requires_python": ">=3.8", + "project_url": [ + "Source, https://github.com/sympy/sympy" + ], + "description": "# SymPy\n\n[![pypi version](https://img.shields.io/pypi/v/sympy.svg)](https://pypi.python.org/pypi/sympy)\n[![Join the chat at https://gitter.im/sympy/sympy](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/sympy/sympy?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Zenodo Badge](https://zenodo.org/badge/18918/sympy/sympy.svg)](https://zenodo.org/badge/latestdoi/18918/sympy/sympy)\n[![Downloads](https://pepy.tech/badge/sympy/month)](https://pepy.tech/project/sympy)\n[![GitHub Issues](https://img.shields.io/badge/issue_tracking-github-blue.svg)](https://github.com/sympy/sympy/issues)\n[![Git Tutorial](https://img.shields.io/badge/PR-Welcome-%23FF8300.svg?)](https://git-scm.com/book/en/v2/GitHub-Contributing-to-a-Project)\n[![Powered by NumFocus](https://img.shields.io/badge/powered%20by-NumFOCUS-orange.svg?style=flat&colorA=E1523D&colorB=007D8A)](https://numfocus.org)\n[![Commits since last release](https://img.shields.io/github/commits-since/sympy/sympy/latest.svg?longCache=true&style=flat-square&logo=git&logoColor=fff)](https://github.com/sympy/sympy/releases)\n\n[![SymPy Banner](https://github.com/sympy/sympy/raw/master/banner.svg)](https://sympy.org/)\n\n\nSee the [AUTHORS](AUTHORS) file for the list of authors.\n\nAnd many more people helped on the SymPy mailing list, reported bugs,\nhelped organize SymPy's participation in the Google Summer of Code, the\nGoogle Highly Open Participation Contest, Google Code-In, wrote and\nblogged about SymPy...\n\nLicense: New BSD License (see the [LICENSE](LICENSE) file for details) covers all\nfiles in the sympy repository unless stated otherwise.\n\nOur mailing list is at\n.\n\nWe have a community chat at [Gitter](https://gitter.im/sympy/sympy). Feel\nfree to ask us anything there. We have a very welcoming and helpful\ncommunity.\n\n## Download\n\nThe recommended installation method is through Anaconda,\n\n\nYou can also get the latest version of SymPy from\n\n\nTo get the git version do\n\n $ git clone https://github.com/sympy/sympy.git\n\nFor other options (tarballs, debs, etc.), see\n.\n\n## Documentation and Usage\n\nFor in-depth instructions on installation and building the\ndocumentation, see the [SymPy Documentation Style Guide](https://docs.sympy.org/dev/documentation-style-guide.html).\n\nEverything is at:\n\n\n\nYou can generate everything at the above site in your local copy of\nSymPy by:\n\n $ cd doc\n $ make html\n\nThen the docs will be in \\_build/html. If\nyou don't want to read that, here is a short usage:\n\nFrom this directory, start Python and:\n\n``` python\n>>> from sympy import Symbol, cos\n>>> x = Symbol('x')\n>>> e = 1/cos(x)\n>>> print(e.series(x, 0, 10))\n1 + x**2/2 + 5*x**4/24 + 61*x**6/720 + 277*x**8/8064 + O(x**10)\n```\n\nSymPy also comes with a console that is a simple wrapper around the\nclassic python console (or IPython when available) that loads the SymPy\nnamespace and executes some common commands for you.\n\nTo start it, issue:\n\n $ bin/isympy\n\nfrom this directory, if SymPy is not installed or simply:\n\n $ isympy\n\nif SymPy is installed.\n\n## Installation\n\nSymPy has a hard dependency on the [mpmath](http://mpmath.org/) library\n(version \\>= 0.19). You should install it first, please refer to the\nmpmath installation guide:\n\n\n\nTo install SymPy using PyPI, run the following command:\n\n $ pip install sympy\n\nTo install SymPy using Anaconda, run the following command:\n\n $ conda install -c anaconda sympy\n\nTo install SymPy from GitHub source, first clone SymPy using `git`:\n\n $ git clone https://github.com/sympy/sympy.git\n\nThen, in the `sympy` repository that you cloned, simply run:\n\n $ pip install .\n\nSee for more information.\n\n## Contributing\n\nWe welcome contributions from anyone, even if you are new to open\nsource. Please read our [Introduction to Contributing](https://github.com/sympy/sympy/wiki/Introduction-to-contributing)\npage and the [SymPy Documentation Style Guide](https://docs.sympy.org/dev/documentation-style-guide.html). If you\nare new and looking for some way to contribute, a good place to start is\nto look at the issues tagged [Easy to Fix](https://github.com/sympy/sympy/issues?q=is%3Aopen+is%3Aissue+label%3A%22Easy+to+Fix%22).\n\nPlease note that all participants in this project are expected to follow\nour Code of Conduct. By participating in this project you agree to abide\nby its terms. See [CODE\\_OF\\_CONDUCT.md](CODE_OF_CONDUCT.md).\n\n## Tests\n\nTo execute all tests, run:\n\n $./setup.py test\n\nin the current directory.\n\nFor the more fine-grained running of tests or doctests, use `bin/test`\nor respectively `bin/doctest`. The master branch is automatically tested\nby GitHub Actions.\n\nTo test pull requests, use\n[sympy-bot](https://github.com/sympy/sympy-bot).\n\n## Regenerate Experimental LaTeX Parser/Lexer\n\nThe parser and lexer were generated with the [ANTLR4](http://antlr4.org)\ntoolchain in `sympy/parsing/latex/_antlr` and checked into the repo.\nPresently, most users should not need to regenerate these files, but\nif you plan to work on this feature, you will need the `antlr4`\ncommand-line tool (and you must ensure that it is in your `PATH`).\nOne way to get it is:\n\n $ conda install -c conda-forge antlr=4.11.1\n\nAlternatively, follow the instructions on the ANTLR website and download\nthe `antlr-4.11.1-complete.jar`. Then export the `CLASSPATH` as instructed\nand instead of creating `antlr4` as an alias, make it an executable file\nwith the following contents:\n``` bash\n#!/bin/bash\njava -jar /usr/local/lib/antlr-4.11.1-complete.jar \"$@\"\n```\n\nAfter making changes to `sympy/parsing/latex/LaTeX.g4`, run:\n\n $ ./setup.py antlr\n\n## Clean\n\nTo clean everything (thus getting the same tree as in the repository):\n\n $ git clean -Xdf\n\nwhich will clear everything ignored by `.gitignore`, and:\n\n $ git clean -df\n\nto clear all untracked files. You can revert the most recent changes in\ngit with:\n\n $ git reset --hard\n\nWARNING: The above commands will all clear changes you may have made,\nand you will lose them forever. Be sure to check things with `git\nstatus`, `git diff`, `git clean -Xn`, and `git clean -n` before doing any\nof those.\n\n## Bugs\n\nOur issue tracker is at . Please\nreport any bugs that you find. Or, even better, fork the repository on\nGitHub and create a pull request. We welcome all changes, big or small,\nand we will help you make the pull request if you are new to git (just\nask on our mailing list or Gitter Channel). If you further have any queries, you can find answers\non Stack Overflow using the [sympy](https://stackoverflow.com/questions/tagged/sympy) tag.\n\n## Brief History\n\nSymPy was started by Ondřej Čertík in 2005, he wrote some code during\nthe summer, then he wrote some more code during summer 2006. In February\n2007, Fabian Pedregosa joined the project and helped fix many things,\ncontributed documentation, and made it alive again. 5 students (Mateusz\nPaprocki, Brian Jorgensen, Jason Gedge, Robert Schwarz, and Chris Wu)\nimproved SymPy incredibly during summer 2007 as part of the Google\nSummer of Code. Pearu Peterson joined the development during the summer\n2007 and he has made SymPy much more competitive by rewriting the core\nfrom scratch, which has made it from 10x to 100x faster. Jurjen N.E. Bos\nhas contributed pretty-printing and other patches. Fredrik Johansson has\nwritten mpmath and contributed a lot of patches.\n\nSymPy has participated in every Google Summer of Code since 2007. You\ncan see for\nfull details. Each year has improved SymPy by bounds. Most of SymPy's\ndevelopment has come from Google Summer of Code students.\n\nIn 2011, Ondřej Čertík stepped down as lead developer, with Aaron\nMeurer, who also started as a Google Summer of Code student, taking his\nplace. Ondřej Čertík is still active in the community but is too busy\nwith work and family to play a lead development role.\n\nSince then, a lot more people have joined the development and some\npeople have also left. You can see the full list in doc/src/aboutus.rst,\nor online at:\n\n\n\nThe git history goes back to 2007 when development moved from svn to hg.\nTo see the history before that point, look at\n.\n\nYou can use git to see the biggest developers. The command:\n\n $ git shortlog -ns\n\nwill show each developer, sorted by commits to the project. The command:\n\n $ git shortlog -ns --since=\"1 year\"\n\nwill show the top developers from the last year.\n\n## Citation\n\nTo cite SymPy in publications use\n\n> Meurer A, Smith CP, Paprocki M, Čertík O, Kirpichev SB, Rocklin M,\n> Kumar A, Ivanov S, Moore JK, Singh S, Rathnayake T, Vig S, Granger BE,\n> Muller RP, Bonazzi F, Gupta H, Vats S, Johansson F, Pedregosa F, Curry\n> MJ, Terrel AR, Roučka Š, Saboo A, Fernando I, Kulal S, Cimrman R,\n> Scopatz A. (2017) SymPy: symbolic computing in Python. *PeerJ Computer\n> Science* 3:e103 \n\nA BibTeX entry for LaTeX users is\n\n``` bibtex\n@article{10.7717/peerj-cs.103,\n title = {SymPy: symbolic computing in Python},\n author = {Meurer, Aaron and Smith, Christopher P. and Paprocki, Mateusz and \\v{C}ert\\'{i}k, Ond\\v{r}ej and Kirpichev, Sergey B. and Rocklin, Matthew and Kumar, Amit and Ivanov, Sergiu and Moore, Jason K. and Singh, Sartaj and Rathnayake, Thilina and Vig, Sean and Granger, Brian E. and Muller, Richard P. and Bonazzi, Francesco and Gupta, Harsh and Vats, Shivam and Johansson, Fredrik and Pedregosa, Fabian and Curry, Matthew J. and Terrel, Andy R. and Rou\\v{c}ka, \\v{S}t\\v{e}p\\'{a}n and Saboo, Ashutosh and Fernando, Isuru and Kulal, Sumith and Cimrman, Robert and Scopatz, Anthony},\n year = 2017,\n month = Jan,\n keywords = {Python, Computer algebra system, Symbolics},\n abstract = {\n SymPy is an open-source computer algebra system written in pure Python. It is built with a focus on extensibility and ease of use, through both interactive and programmatic applications. These characteristics have led SymPy to become a popular symbolic library for the scientific Python ecosystem. This paper presents the architecture of SymPy, a description of its features, and a discussion of select submodules. The supplementary material provides additional examples and further outlines details of the architecture and features of SymPy.\n },\n volume = 3,\n pages = {e103},\n journal = {PeerJ Computer Science},\n issn = {2376-5992},\n url = {https://doi.org/10.7717/peerj-cs.103},\n doi = {10.7717/peerj-cs.103}\n}\n```\n\nSymPy is BSD licensed, so you are free to use it whatever you like, be\nit academic, commercial, creating forks or derivatives, as long as you\ncopy the BSD statement if you redistribute it (see the LICENSE file for\ndetails). That said, although not required by the SymPy license, if it\nis convenient for you, please cite SymPy when using it in your work and\nalso consider contributing all your changes back, so that we can\nincorporate it and all of us will benefit in the end.\n" + } + }, + { + "download_info": { + "url": "https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl", + "archive_info": { + "hash": "sha256=a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c", + "hashes": { + "sha256": "a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c" + } + } + }, + "is_direct": false, + "requested": true, + "metadata": { + "metadata_version": "2.1", + "name": "mpmath", + "version": "1.3.0", + "summary": "Python library for arbitrary-precision floating-point arithmetic", + "home_page": "http://mpmath.org/", + "author": "Fredrik Johansson", + "author_email": "fredrik.johansson@gmail.com", + "license": "BSD", + "classifier": [ + "License :: OSI Approved :: BSD License", + "Topic :: Scientific/Engineering :: Mathematics", + "Topic :: Software Development :: Libraries :: Python Modules", + "Programming Language :: Python", + "Programming Language :: Python :: 2", + "Programming Language :: Python :: 2.7", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.5", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: Implementation :: CPython", + "Programming Language :: Python :: Implementation :: PyPy" + ], + "requires_dist": [ + "pytest (>=4.6) ; extra == 'develop'", + "pycodestyle ; extra == 'develop'", + "pytest-cov ; extra == 'develop'", + "codecov ; extra == 'develop'", + "wheel ; extra == 'develop'", + "sphinx ; extra == 'docs'", + "gmpy2 (>=2.1.0a4) ; (platform_python_implementation != \"PyPy\") and extra == 'gmpy'", + "pytest (>=4.6) ; extra == 'tests'" + ], + "project_url": [ + "Source, https://github.com/fredrik-johansson/mpmath", + "Tracker, https://github.com/fredrik-johansson/mpmath/issues", + "Documentation, http://mpmath.org/doc/current/" + ], + "provides_extra": [ + "develop", + "docs", + "gmpy", + "tests" + ], + "description": "mpmath\n======\n\n|pypi version| |Build status| |Code coverage status| |Zenodo Badge|\n\n.. |pypi version| image:: https://img.shields.io/pypi/v/mpmath.svg\n :target: https://pypi.python.org/pypi/mpmath\n.. |Build status| image:: https://github.com/fredrik-johansson/mpmath/workflows/test/badge.svg\n :target: https://github.com/fredrik-johansson/mpmath/actions?workflow=test\n.. |Code coverage status| image:: https://codecov.io/gh/fredrik-johansson/mpmath/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/fredrik-johansson/mpmath\n.. |Zenodo Badge| image:: https://zenodo.org/badge/2934512.svg\n :target: https://zenodo.org/badge/latestdoi/2934512\n\nA Python library for arbitrary-precision floating-point arithmetic.\n\nWebsite: http://mpmath.org/\nMain author: Fredrik Johansson \n\nMpmath is free software released under the New BSD License (see the\nLICENSE file for details)\n\n0. History and credits\n----------------------\n\nThe following people (among others) have contributed major patches\nor new features to mpmath:\n\n* Pearu Peterson \n* Mario Pernici \n* Ondrej Certik \n* Vinzent Steinberg \n* Nimish Telang \n* Mike Taschuk \n* Case Van Horsen \n* Jorn Baayen \n* Chris Smith \n* Juan Arias de Reyna \n* Ioannis Tziakos \n* Aaron Meurer \n* Stefan Krastanov \n* Ken Allen \n* Timo Hartmann \n* Sergey B Kirpichev \n* Kris Kuhlman \n* Paul Masson \n* Michael Kagalenko \n* Jonathan Warner \n* Max Gaukler \n* Guillermo Navas-Palencia \n* Nike Dattani \n\nNumerous other people have contributed by reporting bugs,\nrequesting new features, or suggesting improvements to the\ndocumentation.\n\nFor a detailed changelog, including individual contributions,\nsee the CHANGES file.\n\nFredrik's work on mpmath during summer 2008 was sponsored by Google\nas part of the Google Summer of Code program.\n\nFredrik's work on mpmath during summer 2009 was sponsored by the\nAmerican Institute of Mathematics under the support of the National Science\nFoundation Grant No. 0757627 (FRG: L-functions and Modular Forms).\n\nAny opinions, findings, and conclusions or recommendations expressed in this\nmaterial are those of the author(s) and do not necessarily reflect the\nviews of the sponsors.\n\nCredit also goes to:\n\n* The authors of the GMP library and the Python wrapper\n gmpy, enabling mpmath to become much faster at\n high precision\n* The authors of MPFR, pari/gp, MPFUN, and other arbitrary-\n precision libraries, whose documentation has been helpful\n for implementing many of the algorithms in mpmath\n* Wikipedia contributors; Abramowitz & Stegun; Gradshteyn & Ryzhik;\n Wolfram Research for MathWorld and the Wolfram Functions site.\n These are the main references used for special functions\n implementations.\n* George Brandl for developing the Sphinx documentation tool\n used to build mpmath's documentation\n\nRelease history:\n\n* Version 1.3.0 released on March 7, 2023\n* Version 1.2.0 released on February 1, 2021\n* Version 1.1.0 released on December 11, 2018\n* Version 1.0.0 released on September 27, 2017\n* Version 0.19 released on June 10, 2014\n* Version 0.18 released on December 31, 2013\n* Version 0.17 released on February 1, 2011\n* Version 0.16 released on September 24, 2010\n* Version 0.15 released on June 6, 2010\n* Version 0.14 released on February 5, 2010\n* Version 0.13 released on August 13, 2009\n* Version 0.12 released on June 9, 2009\n* Version 0.11 released on January 26, 2009\n* Version 0.10 released on October 15, 2008\n* Version 0.9 released on August 23, 2008\n* Version 0.8 released on April 20, 2008\n* Version 0.7 released on March 12, 2008\n* Version 0.6 released on January 13, 2008\n* Version 0.5 released on November 24, 2007\n* Version 0.4 released on November 3, 2007\n* Version 0.3 released on October 5, 2007\n* Version 0.2 released on October 2, 2007\n* Version 0.1 released on September 27, 2007\n\n1. Download & installation\n--------------------------\n\nMpmath requires Python 2.7 or 3.5 (or later versions). It has been tested\nwith CPython 2.7, 3.5 through 3.7 and for PyPy.\n\nThe latest release of mpmath can be downloaded from the mpmath\nwebsite and from https://github.com/fredrik-johansson/mpmath/releases\n\nIt should also be available in the Python Package Index at\nhttps://pypi.python.org/pypi/mpmath\n\nTo install latest release of Mpmath with pip, simply run\n\n``pip install mpmath``\n\nOr unpack the mpmath archive and run\n\n``python setup.py install``\n\nMpmath can also be installed using\n\n``python -m easy_install mpmath``\n\nThe latest development code is available from\nhttps://github.com/fredrik-johansson/mpmath\n\nSee the main documentation for more detailed instructions.\n\n2. Running tests\n----------------\n\nThe unit tests in mpmath/tests/ can be run via the script\nruntests.py, but it is recommended to run them with py.test\n(https://pytest.org/), especially\nto generate more useful reports in case there are failures.\n\nYou may also want to check out the demo scripts in the demo\ndirectory.\n\nThe master branch is automatically tested by Travis CI.\n\n3. Documentation\n----------------\n\nDocumentation in reStructuredText format is available in the\ndoc directory included with the source package. These files\nare human-readable, but can be compiled to prettier HTML using\nthe build.py script (requires Sphinx, http://sphinx.pocoo.org/).\n\nSee setup.txt in the documentation for more information.\n\nThe most recent documentation is also available in HTML format:\n\nhttp://mpmath.org/doc/current/\n\n4. Known problems\n-----------------\n\nMpmath is a work in progress. Major issues include:\n\n* Some functions may return incorrect values when given extremely\n large arguments or arguments very close to singularities.\n\n* Directed rounding works for arithmetic operations. It is implemented\n heuristically for other operations, and their results may be off by one\n or two units in the last place (even if otherwise accurate).\n\n* Some IEEE 754 features are not available. Inifinities and NaN are\n partially supported; denormal rounding is currently not available\n at all.\n\n* The interface for switching precision and rounding is not finalized.\n The current method is not threadsafe.\n\n5. Help and bug reports\n-----------------------\n\nGeneral questions and comments can be sent to the mpmath mailinglist,\nmpmath@googlegroups.com\n\nYou can also report bugs and send patches to the mpmath issue tracker,\nhttps://github.com/fredrik-johansson/mpmath/issues\n" + } + }, + { + "download_info": { + "url": "https://files.pythonhosted.org/packages/6c/10/a7d0fa5baea8fe7b50f448ab742f26f52b80bfca85ac2be9d35cdd9a3246/pyparsing-3.0.9-py3-none-any.whl", + "archive_info": { + "hash": "sha256=5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc", + "hashes": { + "sha256": "5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc" + } + } + }, + "is_direct": false, + "requested": true, + "metadata": { + "metadata_version": "2.1", + "name": "pyparsing", + "version": "3.0.9", + "summary": "pyparsing module - Classes and methods to define and execute parsing grammars", + "description_content_type": "text/x-rst", + "author_email": "Paul McGuire ", + "classifier": [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "Intended Audience :: Information Technology", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: Implementation :: CPython", + "Programming Language :: Python :: Implementation :: PyPy", + "Typing :: Typed" + ], + "requires_dist": [ + "railroad-diagrams ; extra == \"diagrams\"", + "jinja2 ; extra == \"diagrams\"" + ], + "requires_python": ">=3.6.8", + "project_url": [ + "Homepage, https://github.com/pyparsing/pyparsing/" + ], + "provides_extra": [ + "diagrams" + ], + "description": "PyParsing -- A Python Parsing Module\n====================================\n\n|Build Status| |Coverage|\n\nIntroduction\n============\n\nThe pyparsing module is an alternative approach to creating and\nexecuting simple grammars, vs. the traditional lex/yacc approach, or the\nuse of regular expressions. The pyparsing module provides a library of\nclasses that client code uses to construct the grammar directly in\nPython code.\n\n*[Since first writing this description of pyparsing in late 2003, this\ntechnique for developing parsers has become more widespread, under the\nname Parsing Expression Grammars - PEGs. See more information on PEGs*\n`here `__\n*.]*\n\nHere is a program to parse ``\"Hello, World!\"`` (or any greeting of the form\n``\"salutation, addressee!\"``):\n\n.. code:: python\n\n from pyparsing import Word, alphas\n greet = Word(alphas) + \",\" + Word(alphas) + \"!\"\n hello = \"Hello, World!\"\n print(hello, \"->\", greet.parseString(hello))\n\nThe program outputs the following::\n\n Hello, World! -> ['Hello', ',', 'World', '!']\n\nThe Python representation of the grammar is quite readable, owing to the\nself-explanatory class names, and the use of '+', '|' and '^' operator\ndefinitions.\n\nThe parsed results returned from ``parseString()`` is a collection of type\n``ParseResults``, which can be accessed as a\nnested list, a dictionary, or an object with named attributes.\n\nThe pyparsing module handles some of the problems that are typically\nvexing when writing text parsers:\n\n- extra or missing whitespace (the above program will also handle ``\"Hello,World!\"``, ``\"Hello , World !\"``, etc.)\n- quoted strings\n- embedded comments\n\nThe examples directory includes a simple SQL parser, simple CORBA IDL\nparser, a config file parser, a chemical formula parser, and a four-\nfunction algebraic notation parser, among many others.\n\nDocumentation\n=============\n\nThere are many examples in the online docstrings of the classes\nand methods in pyparsing. You can find them compiled into `online docs `__. Additional\ndocumentation resources and project info are listed in the online\n`GitHub wiki `__. An\nentire directory of examples can be found `here `__.\n\nLicense\n=======\n\nMIT License. See header of the `pyparsing.py `__ file.\n\nHistory\n=======\n\nSee `CHANGES `__ file.\n\n.. |Build Status| image:: https://github.com/pyparsing/pyparsing/actions/workflows/ci.yml/badge.svg\n :target: https://github.com/pyparsing/pyparsing/actions/workflows/ci.yml\n.. |Coverage| image:: https://codecov.io/gh/pyparsing/pyparsing/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/pyparsing/pyparsing\n\n" + } + }, + { + "download_info": { + "url": "https://files.pythonhosted.org/packages/ab/c3/57f0601a2d4fe15de7a553c00adbc901425661bf048f2a22dfc500caf121/packaging-23.1-py3-none-any.whl", + "archive_info": { + "hash": "sha256=994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61", + "hashes": { + "sha256": "994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61" + } + } + }, + "is_direct": false, + "requested": true, + "metadata": { + "metadata_version": "2.1", + "name": "packaging", + "version": "23.1", + "summary": "Core utilities for Python packages", + "description_content_type": "text/x-rst", + "author_email": "Donald Stufft ", + "classifier": [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: Apache Software License", + "License :: OSI Approved :: BSD License", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: Implementation :: CPython", + "Programming Language :: Python :: Implementation :: PyPy", + "Typing :: Typed" + ], + "requires_python": ">=3.7", + "project_url": [ + "Documentation, https://packaging.pypa.io/", + "Source, https://github.com/pypa/packaging" + ], + "description": "packaging\n=========\n\n.. start-intro\n\nReusable core utilities for various Python Packaging\n`interoperability specifications `_.\n\nThis library provides utilities that implement the interoperability\nspecifications which have clearly one correct behaviour (eg: :pep:`440`)\nor benefit greatly from having a single shared implementation (eg: :pep:`425`).\n\n.. end-intro\n\nThe ``packaging`` project includes the following: version handling, specifiers,\nmarkers, requirements, tags, utilities.\n\nDocumentation\n-------------\n\nThe `documentation`_ provides information and the API for the following:\n\n- Version Handling\n- Specifiers\n- Markers\n- Requirements\n- Tags\n- Utilities\n\nInstallation\n------------\n\nUse ``pip`` to install these utilities::\n\n pip install packaging\n\nDiscussion\n----------\n\nIf you run into bugs, you can file them in our `issue tracker`_.\n\nYou can also join ``#pypa`` on Freenode to ask questions or get involved.\n\n\n.. _`documentation`: https://packaging.pypa.io/\n.. _`issue tracker`: https://github.com/pypa/packaging/issues\n\n\nCode of Conduct\n---------------\n\nEveryone interacting in the packaging project's codebases, issue trackers, chat\nrooms, and mailing lists is expected to follow the `PSF Code of Conduct`_.\n\n.. _PSF Code of Conduct: https://github.com/pypa/.github/blob/main/CODE_OF_CONDUCT.md\n\nContributing\n------------\n\nThe ``CONTRIBUTING.rst`` file outlines how to contribute to this project as\nwell as how to report a potential security issue. The documentation for this\nproject also covers information about `project development`_ and `security`_.\n\n.. _`project development`: https://packaging.pypa.io/en/latest/development/\n.. _`security`: https://packaging.pypa.io/en/latest/security/\n\nProject History\n---------------\n\nPlease review the ``CHANGELOG.rst`` file or the `Changelog documentation`_ for\nrecent changes and project history.\n\n.. _`Changelog documentation`: https://packaging.pypa.io/en/latest/changelog/\n\n" + } + }, + { + "download_info": { + "url": "https://files.pythonhosted.org/packages/36/7a/87837f39d0296e723bb9b62bbb257d0355c7f6128853c78955f57342a56d/python_dateutil-2.8.2-py2.py3-none-any.whl", + "archive_info": { + "hash": "sha256=961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9", + "hashes": { + "sha256": "961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" + } + } + }, + "is_direct": false, + "requested": true, + "metadata": { + "metadata_version": "2.1", + "name": "python-dateutil", + "version": "2.8.2", + "platform": [ + "UNKNOWN" + ], + "summary": "Extensions to the standard Python datetime module", + "description_content_type": "text/x-rst", + "home_page": "https://github.com/dateutil/dateutil", + "author": "Gustavo Niemeyer", + "author_email": "gustavo@niemeyer.net", + "maintainer": "Paul Ganssle", + "maintainer_email": "dateutil@python.org", + "license": "Dual License", + "classifier": [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: BSD License", + "License :: OSI Approved :: Apache Software License", + "Programming Language :: Python", + "Programming Language :: Python :: 2", + "Programming Language :: Python :: 2.7", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.3", + "Programming Language :: Python :: 3.4", + "Programming Language :: Python :: 3.5", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Topic :: Software Development :: Libraries" + ], + "requires_dist": [ + "six (>=1.5)" + ], + "requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7", + "project_url": [ + "Documentation, https://dateutil.readthedocs.io/en/stable/", + "Source, https://github.com/dateutil/dateutil" + ], + "description": "dateutil - powerful extensions to datetime\n==========================================\n\n|pypi| |support| |licence|\n\n|gitter| |readthedocs|\n\n|travis| |appveyor| |pipelines| |coverage|\n\n.. |pypi| image:: https://img.shields.io/pypi/v/python-dateutil.svg?style=flat-square\n :target: https://pypi.org/project/python-dateutil/\n :alt: pypi version\n\n.. |support| image:: https://img.shields.io/pypi/pyversions/python-dateutil.svg?style=flat-square\n :target: https://pypi.org/project/python-dateutil/\n :alt: supported Python version\n\n.. |travis| image:: https://img.shields.io/travis/dateutil/dateutil/master.svg?style=flat-square&label=Travis%20Build\n :target: https://travis-ci.org/dateutil/dateutil\n :alt: travis build status\n\n.. |appveyor| image:: https://img.shields.io/appveyor/ci/dateutil/dateutil/master.svg?style=flat-square&logo=appveyor\n :target: https://ci.appveyor.com/project/dateutil/dateutil\n :alt: appveyor build status\n\n.. |pipelines| image:: https://dev.azure.com/pythondateutilazure/dateutil/_apis/build/status/dateutil.dateutil?branchName=master\n :target: https://dev.azure.com/pythondateutilazure/dateutil/_build/latest?definitionId=1&branchName=master\n :alt: azure pipelines build status\n\n.. |coverage| image:: https://codecov.io/gh/dateutil/dateutil/branch/master/graphs/badge.svg?branch=master\n :target: https://codecov.io/gh/dateutil/dateutil?branch=master\n :alt: Code coverage\n\n.. |gitter| image:: https://badges.gitter.im/dateutil/dateutil.svg\n :alt: Join the chat at https://gitter.im/dateutil/dateutil\n :target: https://gitter.im/dateutil/dateutil\n\n.. |licence| image:: https://img.shields.io/pypi/l/python-dateutil.svg?style=flat-square\n :target: https://pypi.org/project/python-dateutil/\n :alt: licence\n\n.. |readthedocs| image:: https://img.shields.io/readthedocs/dateutil/latest.svg?style=flat-square&label=Read%20the%20Docs\n :alt: Read the documentation at https://dateutil.readthedocs.io/en/latest/\n :target: https://dateutil.readthedocs.io/en/latest/\n\nThe `dateutil` module provides powerful extensions to\nthe standard `datetime` module, available in Python.\n\nInstallation\n============\n`dateutil` can be installed from PyPI using `pip` (note that the package name is\ndifferent from the importable name)::\n\n pip install python-dateutil\n\nDownload\n========\ndateutil is available on PyPI\nhttps://pypi.org/project/python-dateutil/\n\nThe documentation is hosted at:\nhttps://dateutil.readthedocs.io/en/stable/\n\nCode\n====\nThe code and issue tracker are hosted on GitHub:\nhttps://github.com/dateutil/dateutil/\n\nFeatures\n========\n\n* Computing of relative deltas (next month, next year,\n next Monday, last week of month, etc);\n* Computing of relative deltas between two given\n date and/or datetime objects;\n* Computing of dates based on very flexible recurrence rules,\n using a superset of the `iCalendar `_\n specification. Parsing of RFC strings is supported as well.\n* Generic parsing of dates in almost any string format;\n* Timezone (tzinfo) implementations for tzfile(5) format\n files (/etc/localtime, /usr/share/zoneinfo, etc), TZ\n environment string (in all known formats), iCalendar\n format files, given ranges (with help from relative deltas),\n local machine timezone, fixed offset timezone, UTC timezone,\n and Windows registry-based time zones.\n* Internal up-to-date world timezone information based on\n Olson's database.\n* Computing of Easter Sunday dates for any given year,\n using Western, Orthodox or Julian algorithms;\n* A comprehensive test suite.\n\nQuick example\n=============\nHere's a snapshot, just to give an idea about the power of the\npackage. For more examples, look at the documentation.\n\nSuppose you want to know how much time is left, in\nyears/months/days/etc, before the next easter happening on a\nyear with a Friday 13th in August, and you want to get today's\ndate out of the \"date\" unix system command. Here is the code:\n\n.. code-block:: python3\n\n >>> from dateutil.relativedelta import *\n >>> from dateutil.easter import *\n >>> from dateutil.rrule import *\n >>> from dateutil.parser import *\n >>> from datetime import *\n >>> now = parse(\"Sat Oct 11 17:13:46 UTC 2003\")\n >>> today = now.date()\n >>> year = rrule(YEARLY,dtstart=now,bymonth=8,bymonthday=13,byweekday=FR)[0].year\n >>> rdelta = relativedelta(easter(year), today)\n >>> print(\"Today is: %s\" % today)\n Today is: 2003-10-11\n >>> print(\"Year with next Aug 13th on a Friday is: %s\" % year)\n Year with next Aug 13th on a Friday is: 2004\n >>> print(\"How far is the Easter of that year: %s\" % rdelta)\n How far is the Easter of that year: relativedelta(months=+6)\n >>> print(\"And the Easter of that year is: %s\" % (today+rdelta))\n And the Easter of that year is: 2004-04-11\n\nBeing exactly 6 months ahead was **really** a coincidence :)\n\nContributing\n============\n\nWe welcome many types of contributions - bug reports, pull requests (code, infrastructure or documentation fixes). For more information about how to contribute to the project, see the ``CONTRIBUTING.md`` file in the repository.\n\n\nAuthor\n======\nThe dateutil module was written by Gustavo Niemeyer \nin 2003.\n\nIt is maintained by:\n\n* Gustavo Niemeyer 2003-2011\n* Tomi Pieviläinen 2012-2014\n* Yaron de Leeuw 2014-2016\n* Paul Ganssle 2015-\n\nStarting with version 2.4.1 and running until 2.8.2, all source and binary\ndistributions will be signed by a PGP key that has, at the very least, been\nsigned by the key which made the previous release. A table of release signing\nkeys can be found below:\n\n=========== ============================\nReleases Signing key fingerprint\n=========== ============================\n2.4.1-2.8.2 `6B49 ACBA DCF6 BD1C A206 67AB CD54 FCE3 D964 BEFB`_ \n=========== ============================\n\nNew releases *may* have signed tags, but binary and source distributions\nuploaded to PyPI will no longer have GPG signatures attached.\n\nContact\n=======\nOur mailing list is available at `dateutil@python.org `_. As it is hosted by the PSF, it is subject to the `PSF code of\nconduct `_.\n\nLicense\n=======\n\nAll contributions after December 1, 2017 released under dual license - either `Apache 2.0 License `_ or the `BSD 3-Clause License `_. Contributions before December 1, 2017 - except those those explicitly relicensed - are released only under the BSD 3-Clause License.\n\n\n.. _6B49 ACBA DCF6 BD1C A206 67AB CD54 FCE3 D964 BEFB:\n https://pgp.mit.edu/pks/lookup?op=vindex&search=0xCD54FCE3D964BEFB\n\n\n" + } + }, + { + "download_info": { + "url": "https://files.pythonhosted.org/packages/7f/99/ad6bd37e748257dd70d6f85d916cafe79c0b0f5e2e95b11f7fbc82bf3110/pytz-2023.3-py2.py3-none-any.whl", + "archive_info": { + "hash": "sha256=a151b3abb88eda1d4e34a9814df37de2a80e301e68ba0fd856fb9b46bfbbbffb", + "hashes": { + "sha256": "a151b3abb88eda1d4e34a9814df37de2a80e301e68ba0fd856fb9b46bfbbbffb" + } + } + }, + "is_direct": false, + "requested": true, + "metadata": { + "metadata_version": "2.1", + "name": "pytz", + "version": "2023.3", + "platform": [ + "Independent" + ], + "summary": "World timezone definitions, modern and historical", + "keywords": [ + "timezone", + "tzinfo", + "datetime", + "olson", + "time" + ], + "home_page": "http://pythonhosted.org/pytz", + "download_url": "https://pypi.org/project/pytz/", + "author": "Stuart Bishop", + "author_email": "stuart@stuartbishop.net", + "maintainer": "Stuart Bishop", + "maintainer_email": "stuart@stuartbishop.net", + "license": "MIT", + "classifier": [ + "Development Status :: 6 - Mature", + "Intended Audience :: Developers", + "License :: OSI Approved :: MIT License", + "Natural Language :: English", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Programming Language :: Python :: 2", + "Programming Language :: Python :: 2.4", + "Programming Language :: Python :: 2.5", + "Programming Language :: Python :: 2.6", + "Programming Language :: Python :: 2.7", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.1", + "Programming Language :: Python :: 3.2", + "Programming Language :: Python :: 3.3", + "Programming Language :: Python :: 3.4", + "Programming Language :: Python :: 3.5", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Topic :: Software Development :: Libraries :: Python Modules" + ], + "description": "pytz - World Timezone Definitions for Python\n============================================\n\n:Author: Stuart Bishop \n\nIntroduction\n~~~~~~~~~~~~\n\npytz brings the Olson tz database into Python. This library allows\naccurate and cross platform timezone calculations using Python 2.4\nor higher. It also solves the issue of ambiguous times at the end\nof daylight saving time, which you can read more about in the Python\nLibrary Reference (``datetime.tzinfo``).\n\nAlmost all of the Olson timezones are supported.\n\n.. note::\n\n Projects using Python 3.9 or later should be using the support\n now included as part of the standard library, and third party\n packages work with it such as `tzdata `_.\n pytz offers no advantages beyond backwards compatibility with\n code written for earlier versions of Python.\n\n.. note::\n\n This library differs from the documented Python API for\n tzinfo implementations; if you want to create local wallclock\n times you need to use the ``localize()`` method documented in this\n document. In addition, if you perform date arithmetic on local\n times that cross DST boundaries, the result may be in an incorrect\n timezone (ie. subtract 1 minute from 2002-10-27 1:00 EST and you get\n 2002-10-27 0:59 EST instead of the correct 2002-10-27 1:59 EDT). A\n ``normalize()`` method is provided to correct this. Unfortunately these\n issues cannot be resolved without modifying the Python datetime\n implementation (see PEP-431).\n\n\nInstallation\n~~~~~~~~~~~~\n\nThis package can either be installed using ``pip`` or from a tarball using the\nstandard Python distutils.\n\nIf you are installing using ``pip``, you don't need to download anything as the\nlatest version will be downloaded for you from PyPI::\n\n pip install pytz\n\nIf you are installing from a tarball, run the following command as an\nadministrative user::\n\n python setup.py install\n\n\npytz for Enterprise\n~~~~~~~~~~~~~~~~~~~\n\nAvailable as part of the Tidelift Subscription.\n\nThe maintainers of pytz and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. `Learn more. `_.\n\n\nExample & Usage\n~~~~~~~~~~~~~~~\n\nLocalized times and date arithmetic\n-----------------------------------\n\n>>> from datetime import datetime, timedelta\n>>> from pytz import timezone\n>>> import pytz\n>>> utc = pytz.utc\n>>> utc.zone\n'UTC'\n>>> eastern = timezone('US/Eastern')\n>>> eastern.zone\n'US/Eastern'\n>>> amsterdam = timezone('Europe/Amsterdam')\n>>> fmt = '%Y-%m-%d %H:%M:%S %Z%z'\n\nThis library only supports two ways of building a localized time. The\nfirst is to use the ``localize()`` method provided by the pytz library.\nThis is used to localize a naive datetime (datetime with no timezone\ninformation):\n\n>>> loc_dt = eastern.localize(datetime(2002, 10, 27, 6, 0, 0))\n>>> print(loc_dt.strftime(fmt))\n2002-10-27 06:00:00 EST-0500\n\nThe second way of building a localized time is by converting an existing\nlocalized time using the standard ``astimezone()`` method:\n\n>>> ams_dt = loc_dt.astimezone(amsterdam)\n>>> ams_dt.strftime(fmt)\n'2002-10-27 12:00:00 CET+0100'\n\nUnfortunately using the tzinfo argument of the standard datetime\nconstructors ''does not work'' with pytz for many timezones.\n\n>>> datetime(2002, 10, 27, 12, 0, 0, tzinfo=amsterdam).strftime(fmt) # /!\\ Does not work this way!\n'2002-10-27 12:00:00 LMT+0018'\n\nIt is safe for timezones without daylight saving transitions though, such\nas UTC:\n\n>>> datetime(2002, 10, 27, 12, 0, 0, tzinfo=pytz.utc).strftime(fmt) # /!\\ Not recommended except for UTC\n'2002-10-27 12:00:00 UTC+0000'\n\nThe preferred way of dealing with times is to always work in UTC,\nconverting to localtime only when generating output to be read\nby humans.\n\n>>> utc_dt = datetime(2002, 10, 27, 6, 0, 0, tzinfo=utc)\n>>> loc_dt = utc_dt.astimezone(eastern)\n>>> loc_dt.strftime(fmt)\n'2002-10-27 01:00:00 EST-0500'\n\nThis library also allows you to do date arithmetic using local\ntimes, although it is more complicated than working in UTC as you\nneed to use the ``normalize()`` method to handle daylight saving time\nand other timezone transitions. In this example, ``loc_dt`` is set\nto the instant when daylight saving time ends in the US/Eastern\ntimezone.\n\n>>> before = loc_dt - timedelta(minutes=10)\n>>> before.strftime(fmt)\n'2002-10-27 00:50:00 EST-0500'\n>>> eastern.normalize(before).strftime(fmt)\n'2002-10-27 01:50:00 EDT-0400'\n>>> after = eastern.normalize(before + timedelta(minutes=20))\n>>> after.strftime(fmt)\n'2002-10-27 01:10:00 EST-0500'\n\nCreating local times is also tricky, and the reason why working with\nlocal times is not recommended. Unfortunately, you cannot just pass\na ``tzinfo`` argument when constructing a datetime (see the next\nsection for more details)\n\n>>> dt = datetime(2002, 10, 27, 1, 30, 0)\n>>> dt1 = eastern.localize(dt, is_dst=True)\n>>> dt1.strftime(fmt)\n'2002-10-27 01:30:00 EDT-0400'\n>>> dt2 = eastern.localize(dt, is_dst=False)\n>>> dt2.strftime(fmt)\n'2002-10-27 01:30:00 EST-0500'\n\nConverting between timezones is more easily done, using the\nstandard astimezone method.\n\n>>> utc_dt = utc.localize(datetime.utcfromtimestamp(1143408899))\n>>> utc_dt.strftime(fmt)\n'2006-03-26 21:34:59 UTC+0000'\n>>> au_tz = timezone('Australia/Sydney')\n>>> au_dt = utc_dt.astimezone(au_tz)\n>>> au_dt.strftime(fmt)\n'2006-03-27 08:34:59 AEDT+1100'\n>>> utc_dt2 = au_dt.astimezone(utc)\n>>> utc_dt2.strftime(fmt)\n'2006-03-26 21:34:59 UTC+0000'\n>>> utc_dt == utc_dt2\nTrue\n\nYou can take shortcuts when dealing with the UTC side of timezone\nconversions. ``normalize()`` and ``localize()`` are not really\nnecessary when there are no daylight saving time transitions to\ndeal with.\n\n>>> utc_dt = datetime.utcfromtimestamp(1143408899).replace(tzinfo=utc)\n>>> utc_dt.strftime(fmt)\n'2006-03-26 21:34:59 UTC+0000'\n>>> au_tz = timezone('Australia/Sydney')\n>>> au_dt = au_tz.normalize(utc_dt.astimezone(au_tz))\n>>> au_dt.strftime(fmt)\n'2006-03-27 08:34:59 AEDT+1100'\n>>> utc_dt2 = au_dt.astimezone(utc)\n>>> utc_dt2.strftime(fmt)\n'2006-03-26 21:34:59 UTC+0000'\n\n\n``tzinfo`` API\n--------------\n\nThe ``tzinfo`` instances returned by the ``timezone()`` function have\nbeen extended to cope with ambiguous times by adding an ``is_dst``\nparameter to the ``utcoffset()``, ``dst()`` && ``tzname()`` methods.\n\n>>> tz = timezone('America/St_Johns')\n\n>>> normal = datetime(2009, 9, 1)\n>>> ambiguous = datetime(2009, 10, 31, 23, 30)\n\nThe ``is_dst`` parameter is ignored for most timestamps. It is only used\nduring DST transition ambiguous periods to resolve that ambiguity.\n\n>>> print(tz.utcoffset(normal, is_dst=True))\n-1 day, 21:30:00\n>>> print(tz.dst(normal, is_dst=True))\n1:00:00\n>>> tz.tzname(normal, is_dst=True)\n'NDT'\n\n>>> print(tz.utcoffset(ambiguous, is_dst=True))\n-1 day, 21:30:00\n>>> print(tz.dst(ambiguous, is_dst=True))\n1:00:00\n>>> tz.tzname(ambiguous, is_dst=True)\n'NDT'\n\n>>> print(tz.utcoffset(normal, is_dst=False))\n-1 day, 21:30:00\n>>> tz.dst(normal, is_dst=False).seconds\n3600\n>>> tz.tzname(normal, is_dst=False)\n'NDT'\n\n>>> print(tz.utcoffset(ambiguous, is_dst=False))\n-1 day, 20:30:00\n>>> tz.dst(ambiguous, is_dst=False)\ndatetime.timedelta(0)\n>>> tz.tzname(ambiguous, is_dst=False)\n'NST'\n\nIf ``is_dst`` is not specified, ambiguous timestamps will raise\nan ``pytz.exceptions.AmbiguousTimeError`` exception.\n\n>>> print(tz.utcoffset(normal))\n-1 day, 21:30:00\n>>> print(tz.dst(normal))\n1:00:00\n>>> tz.tzname(normal)\n'NDT'\n\n>>> import pytz.exceptions\n>>> try:\n... tz.utcoffset(ambiguous)\n... except pytz.exceptions.AmbiguousTimeError:\n... print('pytz.exceptions.AmbiguousTimeError: %s' % ambiguous)\npytz.exceptions.AmbiguousTimeError: 2009-10-31 23:30:00\n>>> try:\n... tz.dst(ambiguous)\n... except pytz.exceptions.AmbiguousTimeError:\n... print('pytz.exceptions.AmbiguousTimeError: %s' % ambiguous)\npytz.exceptions.AmbiguousTimeError: 2009-10-31 23:30:00\n>>> try:\n... tz.tzname(ambiguous)\n... except pytz.exceptions.AmbiguousTimeError:\n... print('pytz.exceptions.AmbiguousTimeError: %s' % ambiguous)\npytz.exceptions.AmbiguousTimeError: 2009-10-31 23:30:00\n\n\nProblems with Localtime\n~~~~~~~~~~~~~~~~~~~~~~~\n\nThe major problem we have to deal with is that certain datetimes\nmay occur twice in a year. For example, in the US/Eastern timezone\non the last Sunday morning in October, the following sequence\nhappens:\n\n - 01:00 EDT occurs\n - 1 hour later, instead of 2:00am the clock is turned back 1 hour\n and 01:00 happens again (this time 01:00 EST)\n\nIn fact, every instant between 01:00 and 02:00 occurs twice. This means\nthat if you try and create a time in the 'US/Eastern' timezone\nthe standard datetime syntax, there is no way to specify if you meant\nbefore of after the end-of-daylight-saving-time transition. Using the\npytz custom syntax, the best you can do is make an educated guess:\n\n>>> loc_dt = eastern.localize(datetime(2002, 10, 27, 1, 30, 00))\n>>> loc_dt.strftime(fmt)\n'2002-10-27 01:30:00 EST-0500'\n\nAs you can see, the system has chosen one for you and there is a 50%\nchance of it being out by one hour. For some applications, this does\nnot matter. However, if you are trying to schedule meetings with people\nin different timezones or analyze log files it is not acceptable.\n\nThe best and simplest solution is to stick with using UTC. The pytz\npackage encourages using UTC for internal timezone representation by\nincluding a special UTC implementation based on the standard Python\nreference implementation in the Python documentation.\n\nThe UTC timezone unpickles to be the same instance, and pickles to a\nsmaller size than other pytz tzinfo instances. The UTC implementation\ncan be obtained as pytz.utc, pytz.UTC, or pytz.timezone('UTC').\n\n>>> import pickle, pytz\n>>> dt = datetime(2005, 3, 1, 14, 13, 21, tzinfo=utc)\n>>> naive = dt.replace(tzinfo=None)\n>>> p = pickle.dumps(dt, 1)\n>>> naive_p = pickle.dumps(naive, 1)\n>>> len(p) - len(naive_p)\n17\n>>> new = pickle.loads(p)\n>>> new == dt\nTrue\n>>> new is dt\nFalse\n>>> new.tzinfo is dt.tzinfo\nTrue\n>>> pytz.utc is pytz.UTC is pytz.timezone('UTC')\nTrue\n\nNote that some other timezones are commonly thought of as the same (GMT,\nGreenwich, Universal, etc.). The definition of UTC is distinct from these\nother timezones, and they are not equivalent. For this reason, they will\nnot compare the same in Python.\n\n>>> utc == pytz.timezone('GMT')\nFalse\n\nSee the section `What is UTC`_, below.\n\nIf you insist on working with local times, this library provides a\nfacility for constructing them unambiguously:\n\n>>> loc_dt = datetime(2002, 10, 27, 1, 30, 00)\n>>> est_dt = eastern.localize(loc_dt, is_dst=True)\n>>> edt_dt = eastern.localize(loc_dt, is_dst=False)\n>>> print(est_dt.strftime(fmt) + ' / ' + edt_dt.strftime(fmt))\n2002-10-27 01:30:00 EDT-0400 / 2002-10-27 01:30:00 EST-0500\n\nIf you pass None as the is_dst flag to localize(), pytz will refuse to\nguess and raise exceptions if you try to build ambiguous or non-existent\ntimes.\n\nFor example, 1:30am on 27th Oct 2002 happened twice in the US/Eastern\ntimezone when the clocks where put back at the end of Daylight Saving\nTime:\n\n>>> dt = datetime(2002, 10, 27, 1, 30, 00)\n>>> try:\n... eastern.localize(dt, is_dst=None)\n... except pytz.exceptions.AmbiguousTimeError:\n... print('pytz.exceptions.AmbiguousTimeError: %s' % dt)\npytz.exceptions.AmbiguousTimeError: 2002-10-27 01:30:00\n\nSimilarly, 2:30am on 7th April 2002 never happened at all in the\nUS/Eastern timezone, as the clocks where put forward at 2:00am skipping\nthe entire hour:\n\n>>> dt = datetime(2002, 4, 7, 2, 30, 00)\n>>> try:\n... eastern.localize(dt, is_dst=None)\n... except pytz.exceptions.NonExistentTimeError:\n... print('pytz.exceptions.NonExistentTimeError: %s' % dt)\npytz.exceptions.NonExistentTimeError: 2002-04-07 02:30:00\n\nBoth of these exceptions share a common base class to make error handling\neasier:\n\n>>> isinstance(pytz.AmbiguousTimeError(), pytz.InvalidTimeError)\nTrue\n>>> isinstance(pytz.NonExistentTimeError(), pytz.InvalidTimeError)\nTrue\n\n\nA special case is where countries change their timezone definitions\nwith no daylight savings time switch. For example, in 1915 Warsaw\nswitched from Warsaw time to Central European time with no daylight savings\ntransition. So at the stroke of midnight on August 5th 1915 the clocks\nwere wound back 24 minutes creating an ambiguous time period that cannot\nbe specified without referring to the timezone abbreviation or the\nactual UTC offset. In this case midnight happened twice, neither time\nduring a daylight saving time period. pytz handles this transition by\ntreating the ambiguous period before the switch as daylight savings\ntime, and the ambiguous period after as standard time.\n\n\n>>> warsaw = pytz.timezone('Europe/Warsaw')\n>>> amb_dt1 = warsaw.localize(datetime(1915, 8, 4, 23, 59, 59), is_dst=True)\n>>> amb_dt1.strftime(fmt)\n'1915-08-04 23:59:59 WMT+0124'\n>>> amb_dt2 = warsaw.localize(datetime(1915, 8, 4, 23, 59, 59), is_dst=False)\n>>> amb_dt2.strftime(fmt)\n'1915-08-04 23:59:59 CET+0100'\n>>> switch_dt = warsaw.localize(datetime(1915, 8, 5, 00, 00, 00), is_dst=False)\n>>> switch_dt.strftime(fmt)\n'1915-08-05 00:00:00 CET+0100'\n>>> str(switch_dt - amb_dt1)\n'0:24:01'\n>>> str(switch_dt - amb_dt2)\n'0:00:01'\n\nThe best way of creating a time during an ambiguous time period is\nby converting from another timezone such as UTC:\n\n>>> utc_dt = datetime(1915, 8, 4, 22, 36, tzinfo=pytz.utc)\n>>> utc_dt.astimezone(warsaw).strftime(fmt)\n'1915-08-04 23:36:00 CET+0100'\n\nThe standard Python way of handling all these ambiguities is not to\nhandle them, such as demonstrated in this example using the US/Eastern\ntimezone definition from the Python documentation (Note that this\nimplementation only works for dates between 1987 and 2006 - it is\nincluded for tests only!):\n\n>>> from pytz.reference import Eastern # pytz.reference only for tests\n>>> dt = datetime(2002, 10, 27, 0, 30, tzinfo=Eastern)\n>>> str(dt)\n'2002-10-27 00:30:00-04:00'\n>>> str(dt + timedelta(hours=1))\n'2002-10-27 01:30:00-05:00'\n>>> str(dt + timedelta(hours=2))\n'2002-10-27 02:30:00-05:00'\n>>> str(dt + timedelta(hours=3))\n'2002-10-27 03:30:00-05:00'\n\nNotice the first two results? At first glance you might think they are\ncorrect, but taking the UTC offset into account you find that they are\nactually two hours appart instead of the 1 hour we asked for.\n\n>>> from pytz.reference import UTC # pytz.reference only for tests\n>>> str(dt.astimezone(UTC))\n'2002-10-27 04:30:00+00:00'\n>>> str((dt + timedelta(hours=1)).astimezone(UTC))\n'2002-10-27 06:30:00+00:00'\n\n\nCountry Information\n~~~~~~~~~~~~~~~~~~~\n\nA mechanism is provided to access the timezones commonly in use\nfor a particular country, looked up using the ISO 3166 country code.\nIt returns a list of strings that can be used to retrieve the relevant\ntzinfo instance using ``pytz.timezone()``:\n\n>>> print(' '.join(pytz.country_timezones['nz']))\nPacific/Auckland Pacific/Chatham\n\nThe Olson database comes with a ISO 3166 country code to English country\nname mapping that pytz exposes as a dictionary:\n\n>>> print(pytz.country_names['nz'])\nNew Zealand\n\n\nWhat is UTC\n~~~~~~~~~~~\n\n'UTC' is `Coordinated Universal Time`_. It is a successor to, but distinct\nfrom, Greenwich Mean Time (GMT) and the various definitions of Universal\nTime. UTC is now the worldwide standard for regulating clocks and time\nmeasurement.\n\nAll other timezones are defined relative to UTC, and include offsets like\nUTC+0800 - hours to add or subtract from UTC to derive the local time. No\ndaylight saving time occurs in UTC, making it a useful timezone to perform\ndate arithmetic without worrying about the confusion and ambiguities caused\nby daylight saving time transitions, your country changing its timezone, or\nmobile computers that roam through multiple timezones.\n\n.. _Coordinated Universal Time: https://en.wikipedia.org/wiki/Coordinated_Universal_Time\n\n\nHelpers\n~~~~~~~\n\nThere are two lists of timezones provided.\n\n``all_timezones`` is the exhaustive list of the timezone names that can\nbe used.\n\n>>> from pytz import all_timezones\n>>> len(all_timezones) >= 500\nTrue\n>>> 'Etc/Greenwich' in all_timezones\nTrue\n\n``common_timezones`` is a list of useful, current timezones. It doesn't\ncontain deprecated zones or historical zones, except for a few I've\ndeemed in common usage, such as US/Eastern (open a bug report if you\nthink other timezones are deserving of being included here). It is also\na sequence of strings.\n\n>>> from pytz import common_timezones\n>>> len(common_timezones) < len(all_timezones)\nTrue\n>>> 'Etc/Greenwich' in common_timezones\nFalse\n>>> 'Australia/Melbourne' in common_timezones\nTrue\n>>> 'US/Eastern' in common_timezones\nTrue\n>>> 'Canada/Eastern' in common_timezones\nTrue\n>>> 'Australia/Yancowinna' in all_timezones\nTrue\n>>> 'Australia/Yancowinna' in common_timezones\nFalse\n\nBoth ``common_timezones`` and ``all_timezones`` are alphabetically\nsorted:\n\n>>> common_timezones_dupe = common_timezones[:]\n>>> common_timezones_dupe.sort()\n>>> common_timezones == common_timezones_dupe\nTrue\n>>> all_timezones_dupe = all_timezones[:]\n>>> all_timezones_dupe.sort()\n>>> all_timezones == all_timezones_dupe\nTrue\n\n``all_timezones`` and ``common_timezones`` are also available as sets.\n\n>>> from pytz import all_timezones_set, common_timezones_set\n>>> 'US/Eastern' in all_timezones_set\nTrue\n>>> 'US/Eastern' in common_timezones_set\nTrue\n>>> 'Australia/Victoria' in common_timezones_set\nFalse\n\nYou can also retrieve lists of timezones used by particular countries\nusing the ``country_timezones()`` function. It requires an ISO-3166\ntwo letter country code.\n\n>>> from pytz import country_timezones\n>>> print(' '.join(country_timezones('ch')))\nEurope/Zurich\n>>> print(' '.join(country_timezones('CH')))\nEurope/Zurich\n\n\nInternationalization - i18n/l10n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPytz is an interface to the IANA database, which uses ASCII names. The `Unicode Consortium's Unicode Locales (CLDR) `_\nproject provides translations. Python packages such as\n`Babel `_\nand Thomas Khyn's `l18n `_ package can be used\nto access these translations from Python.\n\n\nLicense\n~~~~~~~\n\nMIT license.\n\nThis code is also available as part of Zope 3 under the Zope Public\nLicense, Version 2.1 (ZPL).\n\nI'm happy to relicense this code if necessary for inclusion in other\nopen source projects.\n\n\nLatest Versions\n~~~~~~~~~~~~~~~\n\nThis package will be updated after releases of the Olson timezone\ndatabase. The latest version can be downloaded from the `Python Package\nIndex `_. The code that is used\nto generate this distribution is hosted on Github and available\nusing git::\n\n git clone https://github.com/stub42/pytz.git\n\nAnnouncements of new releases are made on\n`Launchpad `_, and the\n`Atom feed `_\nhosted there.\n\n\nBugs, Feature Requests & Patches\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nBugs should be reported on `Github `_.\nFeature requests are unlikely to be considered, and efforts instead directed\nto timezone support now built into Python or packages that work with it.\n\n\nSecurity Issues\n~~~~~~~~~~~~~~~\n\nReports about security issues can be made via `Tidelift `_.\n\n\nIssues & Limitations\n~~~~~~~~~~~~~~~~~~~~\n\n- This project is in maintenance mode. Projects using Python 3.9 or later\n are best served by using the timezone functionaly now included in core\n Python and packages that work with it such as `tzdata `_.\n\n- Offsets from UTC are rounded to the nearest whole minute, so timezones\n such as Europe/Amsterdam pre 1937 will be up to 30 seconds out. This\n was a limitation of the Python datetime library.\n\n- If you think a timezone definition is incorrect, I probably can't fix\n it. pytz is a direct translation of the Olson timezone database, and\n changes to the timezone definitions need to be made to this source.\n If you find errors they should be reported to the time zone mailing\n list, linked from http://www.iana.org/time-zones.\n\n\nFurther Reading\n~~~~~~~~~~~~~~~\n\nMore info than you want to know about timezones:\nhttps://data.iana.org/time-zones/tz-link.html\n\n\nContact\n~~~~~~~\n\nStuart Bishop \n\n\n\n" + } + }, + { + "download_info": { + "url": "https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl", + "archive_info": { + "hash": "sha256=8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254", + "hashes": { + "sha256": "8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + } + }, + "is_direct": false, + "requested": true, + "metadata": { + "metadata_version": "2.1", + "name": "six", + "version": "1.16.0", + "platform": [ + "UNKNOWN" + ], + "summary": "Python 2 and 3 compatibility utilities", + "home_page": "https://github.com/benjaminp/six", + "author": "Benjamin Peterson", + "author_email": "benjamin@python.org", + "license": "MIT", + "classifier": [ + "Development Status :: 5 - Production/Stable", + "Programming Language :: Python :: 2", + "Programming Language :: Python :: 3", + "Intended Audience :: Developers", + "License :: OSI Approved :: MIT License", + "Topic :: Software Development :: Libraries", + "Topic :: Utilities" + ], + "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*", + "description": ".. image:: https://img.shields.io/pypi/v/six.svg\n :target: https://pypi.org/project/six/\n :alt: six on PyPI\n\n.. image:: https://travis-ci.org/benjaminp/six.svg?branch=master\n :target: https://travis-ci.org/benjaminp/six\n :alt: six on TravisCI\n\n.. image:: https://readthedocs.org/projects/six/badge/?version=latest\n :target: https://six.readthedocs.io/\n :alt: six's documentation on Read the Docs\n\n.. image:: https://img.shields.io/badge/license-MIT-green.svg\n :target: https://github.com/benjaminp/six/blob/master/LICENSE\n :alt: MIT License badge\n\nSix is a Python 2 and 3 compatibility library. It provides utility functions\nfor smoothing over the differences between the Python versions with the goal of\nwriting Python code that is compatible on both Python versions. See the\ndocumentation for more information on what is provided.\n\nSix supports Python 2.7 and 3.3+. It is contained in only one Python\nfile, so it can be easily copied into your project. (The copyright and license\nnotice must be retained.)\n\nOnline documentation is at https://six.readthedocs.io/.\n\nBugs can be reported to https://github.com/benjaminp/six. The code can also\nbe found there.\n\n\n" + } + }, + { + "download_info": { + "url": "https://files.pythonhosted.org/packages/bd/7c/d38a0b30ce22fc26ed7dbc087c6d00851fb3395e9d0dac40bec1f905030c/wheel-0.38.4-py3-none-any.whl", + "archive_info": { + "hash": "sha256=b60533f3f5d530e971d6737ca6d58681ee434818fab630c83a734bb10c083ce8", + "hashes": { + "sha256": "b60533f3f5d530e971d6737ca6d58681ee434818fab630c83a734bb10c083ce8" + } + } + }, + "is_direct": false, + "requested": true, + "metadata": { + "metadata_version": "2.1", + "name": "wheel", + "version": "0.38.4", + "summary": "A built-package format for Python", + "keywords": [ + "wheel", + "packaging" + ], + "home_page": "https://github.com/pypa/wheel", + "author": "Daniel Holth", + "author_email": "dholth@fastmail.fm", + "maintainer": "Alex Grönholm", + "maintainer_email": "alex.gronholm@nextday.fi", + "license": "MIT", + "classifier": [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "Topic :: System :: Archiving :: Packaging", + "License :: OSI Approved :: MIT License", + "Programming Language :: Python", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11" + ], + "requires_dist": [ + "pytest (>=3.0.0) ; extra == 'test'" + ], + "requires_python": ">=3.7", + "project_url": [ + "Documentation, https://wheel.readthedocs.io/", + "Changelog, https://wheel.readthedocs.io/en/stable/news.html", + "Issue Tracker, https://github.com/pypa/wheel/issues" + ], + "provides_extra": [ + "test" + ], + "description": "wheel\n=====\n\nThis library is the reference implementation of the Python wheel packaging\nstandard, as defined in `PEP 427`_.\n\nIt has two different roles:\n\n#. A setuptools_ extension for building wheels that provides the\n ``bdist_wheel`` setuptools command\n#. A command line tool for working with wheel files\n\nIt should be noted that wheel is **not** intended to be used as a library, and\nas such there is no stable, public API.\n\n.. _PEP 427: https://www.python.org/dev/peps/pep-0427/\n.. _setuptools: https://pypi.org/project/setuptools/\n\nDocumentation\n-------------\n\nThe documentation_ can be found on Read The Docs.\n\n.. _documentation: https://wheel.readthedocs.io/\n\nCode of Conduct\n---------------\n\nEveryone interacting in the wheel project's codebases, issue trackers, chat\nrooms, and mailing lists is expected to follow the `PSF Code of Conduct`_.\n\n.. _PSF Code of Conduct: https://github.com/pypa/.github/blob/main/CODE_OF_CONDUCT.md\n" + } + }, + { + "download_info": { + "url": "https://files.pythonhosted.org/packages/f5/2c/074ab1c5be9c7d523d8d6d69d1f46f450fe7f11713147dc9e779aa4ca4ea/setuptools-67.8.0-py3-none-any.whl", + "archive_info": { + "hash": "sha256=5df61bf30bb10c6f756eb19e7c9f3b473051f48db77fddbe06ff2ca307df9a6f", + "hashes": { + "sha256": "5df61bf30bb10c6f756eb19e7c9f3b473051f48db77fddbe06ff2ca307df9a6f" + } + } + }, + "is_direct": false, + "requested": true, + "metadata": { + "metadata_version": "2.1", + "name": "setuptools", + "version": "67.8.0", + "summary": "Easily download, build, install, upgrade, and uninstall Python packages", + "keywords": [ + "CPAN", + "PyPI", + "distutils", + "eggs", + "package", + "management" + ], + "home_page": "https://github.com/pypa/setuptools", + "author": "Python Packaging Authority", + "author_email": "distutils-sig@python.org", + "classifier": [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: MIT License", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3 :: Only", + "Topic :: Software Development :: Libraries :: Python Modules", + "Topic :: System :: Archiving :: Packaging", + "Topic :: System :: Systems Administration", + "Topic :: Utilities" + ], + "requires_dist": [ + "sphinx (>=3.5) ; extra == 'docs'", + "jaraco.packaging (>=9) ; extra == 'docs'", + "rst.linker (>=1.9) ; extra == 'docs'", + "furo ; extra == 'docs'", + "sphinx-lint ; extra == 'docs'", + "jaraco.tidelift (>=1.4) ; extra == 'docs'", + "pygments-github-lexers (==0.0.5) ; extra == 'docs'", + "sphinx-favicon ; extra == 'docs'", + "sphinx-inline-tabs ; extra == 'docs'", + "sphinx-reredirects ; extra == 'docs'", + "sphinxcontrib-towncrier ; extra == 'docs'", + "sphinx-notfound-page (==0.8.3) ; extra == 'docs'", + "sphinx-hoverxref (<2) ; extra == 'docs'", + "pytest (>=6) ; extra == 'testing'", + "pytest-checkdocs (>=2.4) ; extra == 'testing'", + "pytest-enabler (>=1.3) ; extra == 'testing'", + "flake8-2020 ; extra == 'testing'", + "virtualenv (>=13.0.0) ; extra == 'testing'", + "wheel ; extra == 'testing'", + "pip (>=19.1) ; extra == 'testing'", + "jaraco.envs (>=2.2) ; extra == 'testing'", + "pytest-xdist ; extra == 'testing'", + "jaraco.path (>=3.2.0) ; extra == 'testing'", + "build[virtualenv] ; extra == 'testing'", + "filelock (>=3.4.0) ; extra == 'testing'", + "pip-run (>=8.8) ; extra == 'testing'", + "ini2toml[lite] (>=0.9) ; extra == 'testing'", + "tomli-w (>=1.0.0) ; extra == 'testing'", + "pytest-timeout ; extra == 'testing'", + "pytest-perf ; extra == 'testing'", + "pytest ; extra == 'testing-integration'", + "pytest-xdist ; extra == 'testing-integration'", + "pytest-enabler ; extra == 'testing-integration'", + "virtualenv (>=13.0.0) ; extra == 'testing-integration'", + "tomli ; extra == 'testing-integration'", + "wheel ; extra == 'testing-integration'", + "jaraco.path (>=3.2.0) ; extra == 'testing-integration'", + "jaraco.envs (>=2.2) ; extra == 'testing-integration'", + "build[virtualenv] ; extra == 'testing-integration'", + "filelock (>=3.4.0) ; extra == 'testing-integration'", + "pytest-black (>=0.3.7) ; (platform_python_implementation != \"PyPy\") and extra == 'testing'", + "pytest-cov ; (platform_python_implementation != \"PyPy\") and extra == 'testing'", + "pytest-mypy (>=0.9.1) ; (platform_python_implementation != \"PyPy\") and extra == 'testing'", + "pytest-ruff ; (sys_platform != \"cygwin\") and extra == 'testing'" + ], + "requires_python": ">=3.7", + "project_url": [ + "Documentation, https://setuptools.pypa.io/", + "Changelog, https://setuptools.pypa.io/en/stable/history.html" + ], + "provides_extra": [ + "certs", + "docs", + "ssl", + "testing", + "testing-integration" + ], + "description": ".. image:: https://img.shields.io/pypi/v/setuptools.svg\n :target: https://pypi.org/project/setuptools\n\n.. image:: https://img.shields.io/pypi/pyversions/setuptools.svg\n\n.. image:: https://github.com/pypa/setuptools/workflows/tests/badge.svg\n :target: https://github.com/pypa/setuptools/actions?query=workflow%3A%22tests%22\n :alt: tests\n\n.. image:: https://img.shields.io/badge/code%20style-black-000000.svg\n :target: https://github.com/psf/black\n :alt: Code style: Black\n\n.. image:: https://img.shields.io/readthedocs/setuptools/latest.svg\n :target: https://setuptools.pypa.io\n\n.. image:: https://img.shields.io/badge/skeleton-2023-informational\n :target: https://blog.jaraco.com/skeleton\n\n.. image:: https://img.shields.io/codecov/c/github/pypa/setuptools/master.svg?logo=codecov&logoColor=white\n :target: https://codecov.io/gh/pypa/setuptools\n\n.. image:: https://tidelift.com/badges/github/pypa/setuptools?style=flat\n :target: https://tidelift.com/subscription/pkg/pypi-setuptools?utm_source=pypi-setuptools&utm_medium=readme\n\n.. image:: https://img.shields.io/discord/803025117553754132\n :target: https://discord.com/channels/803025117553754132/815945031150993468\n :alt: Discord\n\nSee the `Installation Instructions\n`_ in the Python Packaging\nUser's Guide for instructions on installing, upgrading, and uninstalling\nSetuptools.\n\nQuestions and comments should be directed to `GitHub Discussions\n`_.\nBug reports and especially tested patches may be\nsubmitted directly to the `bug tracker\n`_.\n\n\nCode of Conduct\n===============\n\nEveryone interacting in the setuptools project's codebases, issue trackers,\nchat rooms, and fora is expected to follow the\n`PSF Code of Conduct `_.\n\n\nFor Enterprise\n==============\n\nAvailable as part of the Tidelift Subscription.\n\nSetuptools and the maintainers of thousands of other packages are working with Tidelift to deliver one enterprise subscription that covers all of the open source you use.\n\n`Learn more `_.\n\n\nSecurity Contact\n================\n\nTo report a security vulnerability, please use the\n`Tidelift security contact `_.\nTidelift will coordinate the fix and disclosure.\n" + } + } + ], + "environment": { + "implementation_name": "cpython", + "implementation_version": "3.10.12", + "os_name": "posix", + "platform_machine": "x86_64", + "platform_release": "5.15.0-194-generic", + "platform_system": "Linux", + "platform_version": "#204-Ubuntu SMP Wed Sep 2 13:09:23 UTC 2026", + "python_full_version": "3.10.12", + "platform_python_implementation": "CPython", + "python_version": "3.10", + "sys_platform": "linux" + } +} \ No newline at end of file diff --git a/registry/phase4ad-author-semantics/evidence/environment/installed-packages.json b/registry/phase4ad-author-semantics/evidence/environment/installed-packages.json new file mode 100644 index 0000000..5e4260e --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/environment/installed-packages.json @@ -0,0 +1,78 @@ +[ + { + "name": "Brian2", + "version": "2.5.1" + }, + { + "name": "Cython", + "version": "0.29.33" + }, + { + "name": "Jinja2", + "version": "2.11.3" + }, + { + "name": "joblib", + "version": "1.2.0" + }, + { + "name": "MarkupSafe", + "version": "1.1.1" + }, + { + "name": "mpmath", + "version": "1.3.0" + }, + { + "name": "numpy", + "version": "1.22.3" + }, + { + "name": "packaging", + "version": "23.1" + }, + { + "name": "pandas", + "version": "1.4.3" + }, + { + "name": "pip", + "version": "23.0.1" + }, + { + "name": "pyarrow", + "version": "11.0.0" + }, + { + "name": "pyparsing", + "version": "3.0.9" + }, + { + "name": "python-dateutil", + "version": "2.8.2" + }, + { + "name": "pytz", + "version": "2023.3" + }, + { + "name": "scipy", + "version": "1.8.1" + }, + { + "name": "setuptools", + "version": "67.8.0" + }, + { + "name": "six", + "version": "1.16.0" + }, + { + "name": "sympy", + "version": "1.12" + }, + { + "name": "wheel", + "version": "0.38.4" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/external-resources/LICENSE b/registry/phase4ad-author-semantics/evidence/external-resources/LICENSE new file mode 100644 index 0000000..deca2d0 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/external-resources/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Philip Shiu and Nico Spiller + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/registry/phase4ad-author-semantics/evidence/external-resources/environment_full.yml b/registry/phase4ad-author-semantics/evidence/external-resources/environment_full.yml new file mode 100644 index 0000000..1428b31 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/external-resources/environment_full.yml @@ -0,0 +1,109 @@ +name: brian2 +channels: + - defaults + - conda-forge +dependencies: + - abseil-cpp=20211102.0=h0e60522_0 + - arrow-cpp=11.0.0=py310h7cee713_0 + - asttokens=2.2.1=pyhd8ed1ab_0 + - aws-c-common=0.4.57=ha925a31_1 + - aws-c-event-stream=0.1.6=hd77b12b_5 + - aws-checksums=0.1.9=ha925a31_0 + - aws-sdk-cpp=1.8.185=hd77b12b_0 + - backcall=0.2.0=pyh9f0ad1d_0 + - backports=1.0=pyhd8ed1ab_3 + - backports.functools_lru_cache=1.6.4=pyhd8ed1ab_0 + - boost-cpp=1.78.0=h5b4e17d_0 + - brian2=2.5.1=py310hc781a3c_0 + - bzip2=1.0.8=he774522_0 + - c-ares=1.19.0=h2bbff1b_0 + - ca-certificates=2023.5.7=h56e8100_0 + - colorama=0.4.6=pyhd8ed1ab_0 + - cython=0.29.33=py310hd77b12b_0 + - debugpy=1.5.1=py310hd77b12b_0 + - decorator=5.1.1=pyhd8ed1ab_0 + - executing=1.2.0=pyhd8ed1ab_0 + - gflags=2.2.2=ha925a31_1004 + - glog=0.5.0=h4797de2_0 + - gsl=2.7=hdfb1a43_0 + - importlib-metadata=6.6.0=pyha770c72_0 + - importlib_metadata=6.6.0=hd8ed1ab_0 + - intel-openmp=2023.1.0=h57928b3_46319 + - ipykernel=6.15.0=pyh025b116_0 + - ipython=8.14.0=pyh08f2357_0 + - jedi=0.18.2=pyhd8ed1ab_0 + - jinja2=2.11.3=pyhd8ed1ab_2 + - joblib=1.2.0=pyhd8ed1ab_0 + - jupyter_client=8.2.0=pyhd8ed1ab_0 + - jupyter_core=5.3.0=py310h5588dad_0 + - libblas=3.9.0=8_mkl + - libbrotlicommon=1.0.9=h8ffe710_7 + - libbrotlidec=1.0.9=h8ffe710_7 + - libbrotlienc=1.0.9=h8ffe710_7 + - libcblas=3.9.0=8_mkl + - libcurl=7.88.1=h86230a5_0 + - libffi=3.4.4=hd77b12b_0 + - liblapack=3.9.0=8_mkl + - libprotobuf=3.20.3=h23ce68f_0 + - libsodium=1.0.18=h8d14728_1 + - libssh2=1.10.0=hcd4344a_0 + - libthrift=0.15.0=h636ae23_0 + - lz4-c=1.9.4=h2bbff1b_0 + - m2w64-gcc-libgfortran=5.3.0=6 + - m2w64-gcc-libs=5.3.0=7 + - m2w64-gcc-libs-core=5.3.0=7 + - m2w64-gmp=6.1.0=2 + - m2w64-libwinpthread-git=5.0.0.4634.697f757=2 + - markupsafe=1.1.1=py310he2412df_4 + - matplotlib-inline=0.1.6=pyhd8ed1ab_0 + - mkl=2020.4=hb70f87d_311 + - mpmath=1.3.0=pyhd8ed1ab_0 + - msys2-conda-epoch=20160418=1 + - nest-asyncio=1.5.6=pyhd8ed1ab_0 + - numpy=1.22.3=py310hed7ac4c_2 + - openssl=1.1.1t=h2bbff1b_0 + - orc=1.7.4=h623e30f_1 + - packaging=23.1=pyhd8ed1ab_0 + - pandas=1.4.3=py310hf5e1058_0 + - parso=0.8.3=pyhd8ed1ab_0 + - pickleshare=0.7.5=py_1003 + - pip=23.0.1=py310haa95532_0 + - platformdirs=3.5.1=pyhd8ed1ab_0 + - prompt-toolkit=3.0.38=pyha770c72_0 + - prompt_toolkit=3.0.38=hd8ed1ab_0 + - psutil=5.9.0=py310h2bbff1b_0 + - pure_eval=0.2.2=pyhd8ed1ab_0 + - py-cpuinfo=9.0.0=pyhd8ed1ab_0 + - pyarrow=11.0.0=py310h790e06d_0 + - pygments=2.15.1=pyhd8ed1ab_0 + - pyparsing=3.0.9=pyhd8ed1ab_0 + - python=3.10.11=h966fe2a_2 + - python-dateutil=2.8.2=pyhd8ed1ab_0 + - python_abi=3.10=2_cp310 + - pytz=2023.3=pyhd8ed1ab_0 + - pywin32=305=py310h2bbff1b_0 + - pyzmq=25.0.2=py310hd77b12b_0 + - re2=2022.04.01=h0e60522_0 + - scipy=1.8.1=py310h7c00807_2 + - setuptools=67.8.0=py310haa95532_0 + - six=1.16.0=pyh6c4a22f_0 + - snappy=1.1.9=h6c2663c_0 + - sqlite=3.41.2=h2bbff1b_0 + - stack_data=0.6.2=pyhd8ed1ab_0 + - sympy=1.12=pyh04b8f61_3 + - tk=8.6.12=h2bbff1b_0 + - tornado=6.2=py310he2412df_0 + - traitlets=5.9.0=pyhd8ed1ab_0 + - typing-extensions=4.6.3=hd8ed1ab_0 + - typing_extensions=4.6.3=pyha770c72_0 + - tzdata=2023c=h04d1e81_0 + - utf8proc=2.6.1=h2bbff1b_0 + - vc=14.2=h21ff451_1 + - vs2015_runtime=14.27.29016=h5e58377_2 + - wcwidth=0.2.6=pyhd8ed1ab_0 + - wheel=0.38.4=py310haa95532_0 + - xz=5.4.2=h8cc25b3_0 + - zeromq=4.3.4=h0e60522_1 + - zipp=3.15.0=pyhd8ed1ab_0 + - zlib=1.2.13=h8cc25b3_0 + - zstd=1.5.5=hd43e919_0 diff --git a/registry/phase4ad-author-semantics/evidence/external-resources/model.py b/registry/phase4ad-author-semantics/evidence/external-resources/model.py new file mode 100644 index 0000000..5ba7083 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/external-resources/model.py @@ -0,0 +1,373 @@ +import pandas as pd +from textwrap import dedent + +# brian 2 +from brian2 import NeuronGroup, Synapses, PoissonInput, SpikeMonitor, Network +from brian2 import mV, ms, Hz + +# file handling +from pathlib import Path + +# parallelization +from joblib import Parallel, delayed, parallel_backend +from time import time + +default_params = { + # trials + 't_run' : 1000 * ms, # duration of trial + 'n_run' : 30, # number of runs + + # network constants + # Kakaria and de Bivort 2017 https://doi.org/10.3389/fnbeh.2017.00008 + 'v_0' : -52 * mV, # resting potential + 'v_rst' : -52 * mV, # reset potential after spike + 'v_th' : -45 * mV, # threshold for spiking + 't_mbr' : 20 * ms, # membrane time scale (capacitance * resistance = .002 * uF * 10. * Mohm) + + # Jürgensen et al https://doi.org/10.1088/2634-4386/ac3ba6 + 'tau' : 5 * ms, # time constant + + # Lazar et al https://doi.org/10.7554/eLife.62362 + 't_rfc' : 2.2 * ms, # refractory period + + # Paul et al 2015 doi: 10.3389/fncel.2015.00029 + 't_dly' : 1.8*ms, # delay for changes in post-synaptic neuron + + # Free parameter + 'w_syn' : .275 * mV, # weight per synapse (note: modulated by exponential decay) + # Default activation rates + 'r_poi' : 150*Hz, # default rate of the Poisson inputs + 'r_poi2' : 0*Hz, # default rate of a 2nd class of Poisson inputs + 'f_poi' : 250, # scaling factor for Poisson synapse; 250 is sufficient to cause spiking + + # equations for neurons # alpha synapse https://doi.org/10.1017/CBO9780511815706; See https://brian2.readthedocs.io/en/stable/user/converting_from_integrated_form.html + 'eqs' : dedent(''' + dv/dt = (v_0 - v + g) / t_mbr : volt (unless refractory) + dg/dt = -g / tau : volt (unless refractory) + rfc : second + '''), + # condition for spike + 'eq_th' : 'v > v_th', + # rules for spike + 'eq_rst' : 'v = v_rst; w = 0; g = 0 * mV', +} + + +####################### +# brian2 model setup +def poi(neu, exc, exc2, params): + '''Create PoissonInput for neurons. + + For each neuron in 'names' a PoissonInput is generated and + the refractory period of that neuron is set to 0 in NeuronGroup. + + Parameters + ---------- + neu : NeuronGroup + Defined brian2.NeuronGroup object + exc : list + Indices of neurons for which to create Poisson input + exc2 : list + Indices of neurons for which to create Poisson input with `r_poi` + params : dict + Constants and equations that are used to construct the brian2 network model + + Returns + ------- + pois : list + PoissonInput objects for each neuron in 'exc' + neu : NeuronGroup + NeuronGroup with adjusted refractory periods + ''' + + pois = [] + for i in exc: + p = PoissonInput( + target=neu[i], + target_var='v', + N=1, + rate=params['r_poi'], + weight=params['w_syn']*params['f_poi'] + ) + neu[i].rfc = 0 * ms # no refractory period for Poisson targets + pois.append(p) + + for i in exc2: + p = PoissonInput( + target=neu[i], + target_var='v', + N=1, + rate=params['r_poi2'], + weight=params['w_syn']*params['f_poi'] + ) + neu[i].rfc = 0 * ms # no refractory period for Poisson targets + pois.append(p) + + return pois, neu + +def silence(slnc, syn): + '''Silence neuron by setting weights of all synapses from it to 0 + + Parameters + ---------- + slnc : list + List of neuron indices to silence + syn : brian2.Synapses + Defined synapses object + + Returns + ------- + syn : brian2.Synapses + Synapses with modified weights + ''' + + for i in slnc: + syn.w[' {} == i'.format(i)] = 0*mV + + return syn + +def create_model(path_comp, path_con, params): + '''Create default network model. + + Convert the "completeness materialization" and "connectivity" dataframes + into a brian2 neural network model. Network constants and equations + are defined at the beginning of this file. + + Parameters + ---------- + path_comp : str + path to "completeness materialization" dataframe + path_con : str + path to "connectivity" dataframe + params : dict + Constants and equations that are used to construct the brian2 network model + + + Returns + ------- + neu : NeuronGroup + brian2.NeuronGroup object with neurons as in 'path_comp' + syn : Synapses + brian2.Synapses object with connections as in 'path_con' + spk_mon : SpikeMonitor + brian2.SpikeMonitor object, which records time of spike events + ''' + + # load neuron connectivity dataframes + df_comp = pd.read_csv(path_comp, index_col=0) + df_con = pd.read_parquet(path_con) + + neu = NeuronGroup( # create neurons + N=len(df_comp), + model=params['eqs'], + method='linear', + threshold=params['eq_th'], + reset=params['eq_rst'], + refractory='rfc', + name='default_neurons', + namespace=params, + ) + neu.v = params['v_0'] # initialize values + neu.g = 0 + neu.rfc = params['t_rfc'] + + # create synapses + syn = Synapses(neu, neu, 'w : volt', on_pre='g += w', delay=params['t_dly'], name='default_synapses') + + # connect synapses + i_pre = df_con.loc[:, 'Presynaptic_Index'].values + i_post = df_con.loc[:, 'Postsynaptic_Index'].values + syn.connect(i=i_pre, j=i_post) + + # define connection weight + syn.w = df_con.loc[:,'Excitatory x Connectivity'].values * params['w_syn'] + + # object to record spikes + spk_mon = SpikeMonitor(neu) + + return neu, syn, spk_mon + +##################### +# running simulations +def get_spk_trn(spk_mon): + '''Extracts spike times from 'spk_mon' + + The spike times recorded in the SpikeMonitor object during + simulation are converted to a list of times for each neurons. + Returns dict with "brian ID": "list of spike times". + + Parameters + ---------- + spk_mon : SpikeMonitor + Contains recorded spike times + + Returns + ------- + spk_trn : dict + Mapping between brian neuron IDs and spike times + ''' + + spk_trn = {k: v for k, v in spk_mon.spike_trains().items() if len(v)} + + return spk_trn + +def construct_dataframe(res, exp_name, i2flyid): + '''Take spike time dict and collects spikes in pandas dataframe + + Parameters + ---------- + res : list + List with spike time dicts for each trial + exp_name : str + Name of the experiment + i2flyid : dict + Mapping between Brian IDs and flywire IDs + + Returns + ------- + df : pandas.DataFrame + Dataframe where each row is one spike + ''' + + ids, ts, nrun = [], [], [] + + for n, i in enumerate(res): + for j, k in i.items(): + ids.extend([j for _ in k]) + nrun.extend([n for _ in k]) + ts.extend([float(l) for l in k]) + + d = { + 't': ts, + 'trial': nrun, + 'flywire_id': [i2flyid[i] for i in ids], + 'exp_name': exp_name + } + df = pd.DataFrame(d) + + return df + +def run_trial(exc, exc2, slnc, path_comp, path_con, params): + '''Run single trial of coactivation/silencng experiment + + During the coactivation experiment, the neurons in 'exc' are + Poisson inputs. The simulation runs for 't_run'. + + + Parameters + ---------- + exc: list + contains indices of neurons for PoissonInput + exc2: list + contains indices of neurons for PoissonInput of different frequency `r_poi2` + slnc: list + contains indices of neurons to silence + path_comp: Path + path to "completeness materialization" dataframe + path_con: Path + path to "connectivity" dataframe + params : dict + Constants and equations that are used to construct the brian2 network model + + Returns + ------- + spk_trn : dict + Mapping between brian neuron IDs and spike times + ''' + + # get default network + neu, syn, spk_mon = create_model(path_comp, path_con, params) + # define Poisson input for excitation + poi_inp, neu = poi(neu, exc, exc2, params) + # silence neurons + syn = silence(slnc, syn) + # collect in Network object + net = Network(neu, syn, spk_mon, *poi_inp) + + # run simulation + net.run(duration=params['t_run']) + + # spike times + spk_trn = get_spk_trn(spk_mon) + + return spk_trn + + +def run_exp(exp_name, neu_exc, path_res, path_comp, path_con, + params=default_params, neu_slnc=[], neu_exc2=[], + n_proc=-1, force_overwrite=False): + ''' + Run default network experiment + Neurons in `neu_exc` are Poisson external inputs + Neurons in `neu_slnc` are silenced + + + Parameters + ---------- + exp_name: str + name of the experiment + neu_exc: list + contains custom names or flywire IDs of neurons to be excited + path_res: str + path to the output folder where spike data is stored + path_comp: str + path to "completeness materialization" dataframe + path_con: str + path to "connectivity" dataframe + params : dict + Constants and equations that are used to construct the brian2 network model + neu_slnc : list (optional) + contains custom names or flywire IDs of neurons to be silenced + neu_exc2 : list (optional) + contains custom names or flywire IDs of neurons to be excited with different frequency + requires `r_poi2` to be defined in `params` + n_proc: int (optional) + number of cores to be used for parallel runs + default: -1 (use all available cores) + n_proc=1 is equivalent serial code + force_overwrite : bool (optional) + If True, overwrite output files, else skip simulation, by default False + ''' + + # convert to Path objects + path_res, path_comp, path_con = [ Path(i) for i in [path_res, path_comp, path_con] ] + + # define output files + path_save = path_res / '{}.parquet'.format(exp_name) + if path_save.is_file() and not force_overwrite: + print('>>> Skipping experiment {} because {} exists and force_overwrite = {}'.format(exp_name, path_save, force_overwrite)) + return + + # load name/id mappings + df_comp = pd.read_csv(path_comp, index_col=0) # load completeness dataframe + flyid2i = {j: i for i, j in enumerate(df_comp.index)} # flywire id: biran ID + i2flyid = {j: i for i, j in flyid2i.items()} # brian ID: flywire ID + + # print info + print('>>> Experiment: {}'.format(exp_name)) + print(' Output file: {}'.format(path_save)) + print(' Excited neurons: {}'.format(len(neu_exc + neu_exc2))) + if neu_slnc: + print(' Silenced neurons: {}'.format(len(neu_slnc))) + + # start parallel calculation + n_run = params['n_run'] + start = time() + with parallel_backend('loky', n_jobs=n_proc): + exc = [ flyid2i[n] for n in neu_exc ] + exc2 = [ flyid2i[n] for n in neu_exc2 ] + slnc = [ flyid2i[n] for n in neu_slnc ] + res = Parallel()( + delayed( + run_trial)(exc, exc2, slnc, path_comp, path_con, params) for _ in range(n_run)) + + + # print simulation time + walltime = time() - start + print(' Elapsed time: {} s'.format(int(walltime))) + + # dataframe with spike times + df = construct_dataframe(res, exp_name, i2flyid) + + # store spike data + df.to_parquet(path_save, compression='brotli') diff --git a/registry/phase4ad-author-semantics/evidence/gpu-reference/extension.json b/registry/phase4ad-author-semantics/evidence/gpu-reference/extension.json new file mode 100644 index 0000000..9b9de4b --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/gpu-reference/extension.json @@ -0,0 +1,17 @@ +{ + "binary": "/data/digital-drosophila/experiments/phase4ad-author-semantics/gpu-reference/extension-build/male_cns_lif_deterministic_v2_ext.so", + "binary_sha256": "57f59f634cc8e3b03f4674a3ddb11ec933ab124feb0b9fa89d08fe26e60fcb7e", + "build_seconds": 55.24202698399972, + "flags": { + "cuda": [ + "-O3", + "--fmad=false", + "-std=c++20" + ], + "cxx": [ + "-O3", + "-ffp-contract=off" + ] + }, + "status": "PASS" +} diff --git a/registry/phase4ad-author-semantics/evidence/manifest.json b/registry/phase4ad-author-semantics/evidence/manifest.json new file mode 100644 index 0000000..f304589 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/manifest.json @@ -0,0 +1,2837 @@ +{ + "schema": "sha256-artifact-manifest-v1", + "root": "/data/digital-drosophila/experiments/phase4ad-author-semantics", + "created_utc": "2026-09-29T23:19:04.402859+00:00", + "excluded_directory_names": [ + ".venv", + "__pycache__" + ], + "self_hash_policy": "Manifest lists payload files; checksums also hashes manifest; neither hashes checksums.", + "files": [ + { + "path": "REPORT.md", + "bytes": 4543, + "sha256": "98eeae824607e83d0b35483a7d5ac586aebe68044e2457188040086e62e78b42" + }, + { + "path": "audit/all-motif-results.csv", + "bytes": 5967, + "sha256": "0b653f7362ec7b506766e78b78efaa82914df201844cdc71f6d70556d46204b5" + }, + { + "path": "audit/final-summary.json", + "bytes": 98948, + "sha256": "2037a37dcf74e28831676ca1583d07272dd2546540a95096db6623f2eafe1a87" + }, + { + "path": "audit/finalize-start.json", + "bytes": 266, + "sha256": "b4fbf4a99a33b67af1329609591f7b553e41e99d760a0cf0e6f04fd1b3b33454" + }, + { + "path": "audit/run-complete.json", + "bytes": 269, + "sha256": "3d5333dede7b368a94de91e206cd35cdf7e89614ac528fb00126178386a2d8b7" + }, + { + "path": "audit/run-start.json", + "bytes": 406, + "sha256": "9480e2e1c299aeb6b6136eb7c1fdb0a733da5eadce3e32d674c3f89c1abd50c1" + }, + { + "path": "components/feedforward-frozen/events.csv", + "bytes": 40, + "sha256": "7535cfeec9d160eb597a2a09930cd8d1a55a7c0f561f1b5907f68eb53e1453dd" + }, + { + "path": "components/feedforward-frozen/state.npz", + "bytes": 85957, + "sha256": "6a24c8d2ad476e2250af49172be12de9d43346bc84f043b19d012fa0c53d2fba" + }, + { + "path": "components/feedforward-refractory_gate_only/events.csv", + "bytes": 40, + "sha256": "7535cfeec9d160eb597a2a09930cd8d1a55a7c0f561f1b5907f68eb53e1453dd" + }, + { + "path": "components/feedforward-refractory_gate_only/state.npz", + "bytes": 86190, + "sha256": "7b9f9d9c4da0a6019c89da75365c995d641bd6f1ffd4741befcb28fa1ae5c8b2" + }, + { + "path": "components/feedforward-reset_and_refractory/events.csv", + "bytes": 40, + "sha256": "7535cfeec9d160eb597a2a09930cd8d1a55a7c0f561f1b5907f68eb53e1453dd" + }, + { + "path": "components/feedforward-reset_and_refractory/state.npz", + "bytes": 32597, + "sha256": "62b256fe806d17a345168593466f31410cc318099a812102cd38bd78735b9427" + }, + { + "path": "components/feedforward-reset_g_only/events.csv", + "bytes": 40, + "sha256": "7535cfeec9d160eb597a2a09930cd8d1a55a7c0f561f1b5907f68eb53e1453dd" + }, + { + "path": "components/feedforward-reset_g_only/state.npz", + "bytes": 32597, + "sha256": "62b256fe806d17a345168593466f31410cc318099a812102cd38bd78735b9427" + }, + { + "path": "components/five-frozen/events.csv", + "bytes": 15375, + "sha256": "5cf5375573658738a15ef51adc56f283c212e00b20668c3015b8f7542a483240" + }, + { + "path": "components/five-frozen/state.npz", + "bytes": 268297, + "sha256": "15095ada05014741f6b6576c2d12d1a8f1ae482ae6f012d5e2be346c796baf4b" + }, + { + "path": "components/five-refractory_gate_only/events.csv", + "bytes": 15670, + "sha256": "e31b6aa017bdd4bef6725aedb6c1ac40bd9f52e4e59d5fe1a1e11b31ef6825dd" + }, + { + "path": "components/five-refractory_gate_only/state.npz", + "bytes": 211413, + "sha256": "949ba5fdae4b3bb3a3d86a9cadc2967ff313272668b00af6cf5734c6fb0eff67" + }, + { + "path": "components/five-reset_and_refractory/events.csv", + "bytes": 6548, + "sha256": "5e9104d52c7573c6a22fbe823d500f53e86d41f04e929f177e92f0eebc1c1e46" + }, + { + "path": "components/five-reset_and_refractory/state.npz", + "bytes": 124260, + "sha256": "8c123230afb9a7a648dc2e5f726c03f4efd1adbe4dfa10409a668496ba2e4c92" + }, + { + "path": "components/five-reset_g_only/events.csv", + "bytes": 8966, + "sha256": "dfc35561b3c565297e5cf0c88db7438cf5787dac0f0c0cda21d17c2423d99233" + }, + { + "path": "components/five-reset_g_only/state.npz", + "bytes": 136736, + "sha256": "41da696d2f01e833d6c9f8450f34f45e54c85cf47ef778414c1a3dd4db2d5ddd" + }, + { + "path": "components/no_input-frozen/events.csv", + "bytes": 16, + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801" + }, + { + "path": "components/no_input-frozen/state.npz", + "bytes": 3114, + "sha256": "a74134da72381d0dbff10bb5143691add6081487dede488a939bb0a4dbf5c20e" + }, + { + "path": "components/no_input-refractory_gate_only/events.csv", + "bytes": 16, + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801" + }, + { + "path": "components/no_input-refractory_gate_only/state.npz", + "bytes": 3114, + "sha256": "a74134da72381d0dbff10bb5143691add6081487dede488a939bb0a4dbf5c20e" + }, + { + "path": "components/no_input-reset_and_refractory/events.csv", + "bytes": 16, + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801" + }, + { + "path": "components/no_input-reset_and_refractory/state.npz", + "bytes": 3114, + "sha256": "a74134da72381d0dbff10bb5143691add6081487dede488a939bb0a4dbf5c20e" + }, + { + "path": "components/no_input-reset_g_only/events.csv", + "bytes": 16, + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801" + }, + { + "path": "components/no_input-reset_g_only/state.npz", + "bytes": 3114, + "sha256": "a74134da72381d0dbff10bb5143691add6081487dede488a939bb0a4dbf5c20e" + }, + { + "path": "components/pair-frozen/events.csv", + "bytes": 4698, + "sha256": "85269a9465c20d11da108514d8541d8be7c2e105915bbb312205af4cb79b6b4c" + }, + { + "path": "components/pair-frozen/state.npz", + "bytes": 14660, + "sha256": "924774344956dd5a530c3d00c8103fe4d1b584837d5e91f05b60094540a78897" + }, + { + "path": "components/pair-refractory_gate_only/events.csv", + "bytes": 6303, + "sha256": "227d89de52ad6a1cf890a194bd5f560865eb551332ad85947532841fa37e13d3" + }, + { + "path": "components/pair-refractory_gate_only/state.npz", + "bytes": 82957, + "sha256": "16a00fbdb18bf782c511df1cc3cce617ea1fada9f713b647c604f4a5861c8876" + }, + { + "path": "components/pair-reset_and_refractory/events.csv", + "bytes": 2219, + "sha256": "9d9a0ccc139e8edef78fb6e34d1f2de2514a6b3f8902454356afbc8cd6f5fdc8" + }, + { + "path": "components/pair-reset_and_refractory/state.npz", + "bytes": 4864, + "sha256": "f195ee84569db48e70924a805caa11f72bdab2065401d5b50c5adff5896564dc" + }, + { + "path": "components/pair-reset_g_only/events.csv", + "bytes": 2219, + "sha256": "9d9a0ccc139e8edef78fb6e34d1f2de2514a6b3f8902454356afbc8cd6f5fdc8" + }, + { + "path": "components/pair-reset_g_only/state.npz", + "bytes": 4864, + "sha256": "f195ee84569db48e70924a805caa11f72bdab2065401d5b50c5adff5896564dc" + }, + { + "path": "components/summary.csv", + "bytes": 3953, + "sha256": "b20d807010ac88a7bef7165196c58715bfb94aa852db9f62bd4bf07e2760d52f" + }, + { + "path": "components/trio-frozen/events.csv", + "bytes": 10549, + "sha256": "4ea00ec307cf37524126d5e91c5916cb393b3eebd3b76fdb1aad8619de131c02" + }, + { + "path": "components/trio-frozen/state.npz", + "bytes": 18538, + "sha256": "46c8a495ee1358a6173a2eebebe9ce2d6481b27f10e0c56cf9602c7969cd8702" + }, + { + "path": "components/trio-refractory_gate_only/events.csv", + "bytes": 10910, + "sha256": "3784ade444b9d85739c3e795b20b40ac5c16b294caa4d1a59be13388e31b8332" + }, + { + "path": "components/trio-refractory_gate_only/state.npz", + "bytes": 101796, + "sha256": "2278ec172f905f6e6beef62beda868b2171bae07f60b5a1c270693aa5357028c" + }, + { + "path": "components/trio-reset_and_refractory/events.csv", + "bytes": 4653, + "sha256": "50a9639d41cfdb8a2e53c132276223656118b80ececaaa18d1a0951cb4147e58" + }, + { + "path": "components/trio-reset_and_refractory/state.npz", + "bytes": 6781, + "sha256": "754164fa014a08999f56d6ea73830bf6fe92600b9e99b8c9d497ec935b9fd2ed" + }, + { + "path": "components/trio-reset_g_only/events.csv", + "bytes": 5604, + "sha256": "f55c81f358a41a9bad9836d2a2de4964072b914d6d9cef32f225eadf941a94b7" + }, + { + "path": "components/trio-reset_g_only/state.npz", + "bytes": 6092, + "sha256": "a646d329fc8526d59f836fd0c51e970b65866c85b3e167c68bcce87e16e128e4" + }, + { + "path": "environment/bootstrap-notes.json", + "bytes": 610, + "sha256": "aa7d319154306833890ca93542252f78996e96b080e55a9337d7f2da222a7445" + }, + { + "path": "environment/frozen-scientific-environment.json", + "bytes": 358, + "sha256": "5acd7aa5a1825e5c053e9f4166f58cd9ec04129ed88f00afcdab2aa6ca204ca5" + }, + { + "path": "environment/install-report.json", + "bytes": 127330, + "sha256": "e2e9301ade63e6ca44635f5b28271a4368b8e2393b1bd935e57e173f685c6f9c" + }, + { + "path": "environment/installed-packages.json", + "bytes": 1049, + "sha256": "0175910c6265813bfd8cf7e2dcaed5a7decabb85072894a04b2c642a222ac298" + }, + { + "path": "external-resources/LICENSE", + "bytes": 1085, + "sha256": "3621f6d6476189190e2960fa43f11b275ba4eca848fdac50a1ba2925de6223e8" + }, + { + "path": "external-resources/environment_full.yml", + "bytes": 3445, + "sha256": "402fcef4968c99397b0e908b3323ab9e6ef86af5583e46e6427f96f3d1091adf" + }, + { + "path": "external-resources/model.py", + "bytes": 11900, + "sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e" + }, + { + "path": "gpu-reference/extension-build/.ninja_deps", + "bytes": 723996, + "sha256": "6d915bc355cb804bce5146e1e9b8b68d7e94703024a718baaba54239f131b266" + }, + { + "path": "gpu-reference/extension-build/.ninja_log", + "bytes": 224, + "sha256": "cf068429fad6783a4f8fd56e8280f76f870abebc0bc4d3796df2895e75e50c3c" + }, + { + "path": "gpu-reference/extension-build/build.ninja", + "bytes": 2109, + "sha256": "c570f72b9a2f486e104ed3bf5b1b9f2ccc729ecab02046cd62389d629fb4f48f" + }, + { + "path": "gpu-reference/extension-build/lock", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "gpu-reference/extension-build/male_cns_lif_deterministic_v2_ext.so", + "bytes": 291280, + "sha256": "57f59f634cc8e3b03f4674a3ddb11ec933ab124feb0b9fa89d08fe26e60fcb7e" + }, + { + "path": "gpu-reference/extension-build/phase4p_ext.cuda.o", + "bytes": 101992, + "sha256": "38680c6d618e1d4f26cf361a018de024ba148cf2c90bbfdde65fb8167643f5ba" + }, + { + "path": "gpu-reference/extension-build/phase4p_ext.o", + "bytes": 377136, + "sha256": "27d284f6a369221a931251b5a03ce133cc8231a97942567d4efafbfb45483811" + }, + { + "path": "gpu-reference/extension.json", + "bytes": 444, + "sha256": "ca5c82cc34d586d84bb93f4ebdbfba0d1d91578a61d79c271225a44cd5b76376" + }, + { + "path": "oracle/feedforward-float32/actual-weights.json", + "bytes": 307, + "sha256": "fce02b56f14b171ff3e5e38de15c700a6281d405a9802b859065f04292c61d2c" + }, + { + "path": "oracle/feedforward-float32/brian-output/events.csv", + "bytes": 40, + "sha256": "953b4c2f26e2846de67b40b22a19c2f59b29ff6fb56339925a01f110c6c1705e" + }, + { + "path": "oracle/feedforward-float32/brian-output/state.npz", + "bytes": 31593, + "sha256": "e1f07d0a74694edf97b75da62c8fc35371cd65c85828f90c418385498eccab7a" + }, + { + "path": "oracle/feedforward-float32/comparison.json", + "bytes": 298, + "sha256": "f29dddd95d78ae0906b6902d6acd82454ca0cc3d652374728f5b8125849b23a5" + }, + { + "path": "oracle/feedforward-float32/completeness.csv", + "bytes": 68, + "sha256": "301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5" + }, + { + "path": "oracle/feedforward-float32/connectivity.parquet", + "bytes": 4885, + "sha256": "627406997fa994afffa6c4df18cc584c43f4161b389a6669c2ceb64e5ae9dcd1" + }, + { + "path": "oracle/feedforward-float32/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/feedforward-float32/generated-code.json", + "bytes": 11537, + "sha256": "c65430d57ed21024c267316d854123ccc14cde79f7acb9ba9c34b1ce4e20665f" + }, + { + "path": "oracle/feedforward-float32/independent-output/events.csv", + "bytes": 40, + "sha256": "953b4c2f26e2846de67b40b22a19c2f59b29ff6fb56339925a01f110c6c1705e" + }, + { + "path": "oracle/feedforward-float32/independent-output/state.npz", + "bytes": 41292, + "sha256": "1a6f4be5a8418a74ea559bf96e587795c41fe987e147d49c28ac5759633e6c70" + }, + { + "path": "oracle/feedforward-float32/run-spec.json", + "bytes": 3072, + "sha256": "7528f0de24d434d08024d011adae364ac60e0211e2d0b176d655bd015c22e0c8" + }, + { + "path": "oracle/feedforward-float32/schedule.json", + "bytes": 1411, + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d" + }, + { + "path": "oracle/feedforward-float32/seed.json", + "bytes": 137, + "sha256": "335b295513fed2a617775adf590894234644c8bdf7268851434737d94e146208" + }, + { + "path": "oracle/feedforward-float32-repeat/actual-weights.json", + "bytes": 307, + "sha256": "fce02b56f14b171ff3e5e38de15c700a6281d405a9802b859065f04292c61d2c" + }, + { + "path": "oracle/feedforward-float32-repeat/brian-output/events.csv", + "bytes": 40, + "sha256": "953b4c2f26e2846de67b40b22a19c2f59b29ff6fb56339925a01f110c6c1705e" + }, + { + "path": "oracle/feedforward-float32-repeat/brian-output/state.npz", + "bytes": 31593, + "sha256": "e1f07d0a74694edf97b75da62c8fc35371cd65c85828f90c418385498eccab7a" + }, + { + "path": "oracle/feedforward-float32-repeat/completeness.csv", + "bytes": 68, + "sha256": "301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5" + }, + { + "path": "oracle/feedforward-float32-repeat/connectivity.parquet", + "bytes": 4885, + "sha256": "627406997fa994afffa6c4df18cc584c43f4161b389a6669c2ceb64e5ae9dcd1" + }, + { + "path": "oracle/feedforward-float32-repeat/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/feedforward-float32-repeat/generated-code.json", + "bytes": 11537, + "sha256": "77e30078f96559ccfddb3b75bd3aaf3c76a137c0c045aa986c0348518ed1ac9f" + }, + { + "path": "oracle/feedforward-float32-repeat/run-spec.json", + "bytes": 3072, + "sha256": "7528f0de24d434d08024d011adae364ac60e0211e2d0b176d655bd015c22e0c8" + }, + { + "path": "oracle/feedforward-float32-repeat/schedule.json", + "bytes": 1411, + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d" + }, + { + "path": "oracle/feedforward-float32-repeat/seed.json", + "bytes": 137, + "sha256": "335b295513fed2a617775adf590894234644c8bdf7268851434737d94e146208" + }, + { + "path": "oracle/feedforward-float64/actual-weights.json", + "bytes": 257, + "sha256": "5ae7652487b5fb80bb88586fe94344d8bc83ec046189e9385338d0bfd2323457" + }, + { + "path": "oracle/feedforward-float64/brian-output/events.csv", + "bytes": 40, + "sha256": "953b4c2f26e2846de67b40b22a19c2f59b29ff6fb56339925a01f110c6c1705e" + }, + { + "path": "oracle/feedforward-float64/brian-output/state.npz", + "bytes": 116499, + "sha256": "968e7990aa8a734a63ee61fef198ad6ae8372f6c676722c67e52c3708a428f71" + }, + { + "path": "oracle/feedforward-float64/comparison.json", + "bytes": 295, + "sha256": "317ab6c723ce928c1f019b85a833134400254991e49a9845a8f051b854963020" + }, + { + "path": "oracle/feedforward-float64/completeness.csv", + "bytes": 68, + "sha256": "301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5" + }, + { + "path": "oracle/feedforward-float64/connectivity.parquet", + "bytes": 4885, + "sha256": "627406997fa994afffa6c4df18cc584c43f4161b389a6669c2ceb64e5ae9dcd1" + }, + { + "path": "oracle/feedforward-float64/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/feedforward-float64/generated-code.json", + "bytes": 11537, + "sha256": "b8fcc2d1cb77b83b28fdbf6af1097556fdae8cc73508a5f1c6a58efa3ed4573c" + }, + { + "path": "oracle/feedforward-float64/independent-output/events.csv", + "bytes": 40, + "sha256": "953b4c2f26e2846de67b40b22a19c2f59b29ff6fb56339925a01f110c6c1705e" + }, + { + "path": "oracle/feedforward-float64/independent-output/state.npz", + "bytes": 116514, + "sha256": "2e3c2dd8d569277706a471f8a7b0bee8af4d58f7c728b85df38addae526bcaa5" + }, + { + "path": "oracle/feedforward-float64/run-spec.json", + "bytes": 3072, + "sha256": "f374b342910fab0110369cb5b9b2daf53e40e4c50b881a027fcafb5a5d00d532" + }, + { + "path": "oracle/feedforward-float64/schedule.json", + "bytes": 1411, + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d" + }, + { + "path": "oracle/feedforward-float64/seed.json", + "bytes": 124, + "sha256": "ea838909a3dcfabd586cf4181eb6788ed791472fc5f64556fc5e88004906d242" + }, + { + "path": "oracle/feedforward-float64-repeat/actual-weights.json", + "bytes": 257, + "sha256": "5ae7652487b5fb80bb88586fe94344d8bc83ec046189e9385338d0bfd2323457" + }, + { + "path": "oracle/feedforward-float64-repeat/brian-output/events.csv", + "bytes": 40, + "sha256": "953b4c2f26e2846de67b40b22a19c2f59b29ff6fb56339925a01f110c6c1705e" + }, + { + "path": "oracle/feedforward-float64-repeat/brian-output/state.npz", + "bytes": 116499, + "sha256": "968e7990aa8a734a63ee61fef198ad6ae8372f6c676722c67e52c3708a428f71" + }, + { + "path": "oracle/feedforward-float64-repeat/completeness.csv", + "bytes": 68, + "sha256": "301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5" + }, + { + "path": "oracle/feedforward-float64-repeat/connectivity.parquet", + "bytes": 4885, + "sha256": "627406997fa994afffa6c4df18cc584c43f4161b389a6669c2ceb64e5ae9dcd1" + }, + { + "path": "oracle/feedforward-float64-repeat/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/feedforward-float64-repeat/generated-code.json", + "bytes": 11537, + "sha256": "f7e9a9b47c364eb2ffe7691be257c6b06aa3f80f1f3eb4658e75b54636278efd" + }, + { + "path": "oracle/feedforward-float64-repeat/run-spec.json", + "bytes": 3072, + "sha256": "f374b342910fab0110369cb5b9b2daf53e40e4c50b881a027fcafb5a5d00d532" + }, + { + "path": "oracle/feedforward-float64-repeat/schedule.json", + "bytes": 1411, + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d" + }, + { + "path": "oracle/feedforward-float64-repeat/seed.json", + "bytes": 124, + "sha256": "ea838909a3dcfabd586cf4181eb6788ed791472fc5f64556fc5e88004906d242" + }, + { + "path": "oracle/five-float32/actual-weights.json", + "bytes": 843, + "sha256": "87c7305d5b8ffcd9f117485921900ace6ad76e9629e44bd5fde5d0fcad9ff4da" + }, + { + "path": "oracle/five-float32/brian-output/events.csv", + "bytes": 6300, + "sha256": "80b2ac9efc7aa1db0ed7e8922f8e9d464c4a2417248be1435454316c47f00ee2" + }, + { + "path": "oracle/five-float32/brian-output/state.npz", + "bytes": 123727, + "sha256": "55580de4130341e93379ebd2ea8065dfa9b86a1d64df6010f3908457c5f98818" + }, + { + "path": "oracle/five-float32/comparison.json", + "bytes": 296, + "sha256": "a66d6a4fbcc48be5208800e6b6ad0fa69c1604b242821bb74e562c77a5e67d3f" + }, + { + "path": "oracle/five-float32/completeness.csv", + "bytes": 68, + "sha256": "301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5" + }, + { + "path": "oracle/five-float32/connectivity.parquet", + "bytes": 5003, + "sha256": "43ea5a3c6c53315e9265863a6f05b3e6d8e9b9f299aef665e8bbe9c46f9eb2ce" + }, + { + "path": "oracle/five-float32/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/five-float32/generated-code.json", + "bytes": 11537, + "sha256": "b80159b10b6e2822bdb83230d2a6f56213836992d15e3facd3c9f10789a9aaf6" + }, + { + "path": "oracle/five-float32/independent-output/events.csv", + "bytes": 6300, + "sha256": "80b2ac9efc7aa1db0ed7e8922f8e9d464c4a2417248be1435454316c47f00ee2" + }, + { + "path": "oracle/five-float32/independent-output/state.npz", + "bytes": 170788, + "sha256": "027def19ce4441508a7736ee1185469c6714c8eb3cb1e2b37e189da7c6bec597" + }, + { + "path": "oracle/five-float32/run-spec.json", + "bytes": 3192, + "sha256": "303346fc360a675c71c0598e3a99bf5a6a6f5bc2aafbe4889668333c4183357c" + }, + { + "path": "oracle/five-float32/schedule.json", + "bytes": 1411, + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d" + }, + { + "path": "oracle/five-float32/seed.json", + "bytes": 137, + "sha256": "335b295513fed2a617775adf590894234644c8bdf7268851434737d94e146208" + }, + { + "path": "oracle/five-float32-repeat/actual-weights.json", + "bytes": 843, + "sha256": "87c7305d5b8ffcd9f117485921900ace6ad76e9629e44bd5fde5d0fcad9ff4da" + }, + { + "path": "oracle/five-float32-repeat/brian-output/events.csv", + "bytes": 6300, + "sha256": "80b2ac9efc7aa1db0ed7e8922f8e9d464c4a2417248be1435454316c47f00ee2" + }, + { + "path": "oracle/five-float32-repeat/brian-output/state.npz", + "bytes": 123727, + "sha256": "55580de4130341e93379ebd2ea8065dfa9b86a1d64df6010f3908457c5f98818" + }, + { + "path": "oracle/five-float32-repeat/completeness.csv", + "bytes": 68, + "sha256": "301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5" + }, + { + "path": "oracle/five-float32-repeat/connectivity.parquet", + "bytes": 5003, + "sha256": "43ea5a3c6c53315e9265863a6f05b3e6d8e9b9f299aef665e8bbe9c46f9eb2ce" + }, + { + "path": "oracle/five-float32-repeat/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/five-float32-repeat/generated-code.json", + "bytes": 11537, + "sha256": "b3e1a32ea67bcbb51205dbdb80c88d127e42328b965102c695820877b9857e43" + }, + { + "path": "oracle/five-float32-repeat/run-spec.json", + "bytes": 3192, + "sha256": "303346fc360a675c71c0598e3a99bf5a6a6f5bc2aafbe4889668333c4183357c" + }, + { + "path": "oracle/five-float32-repeat/schedule.json", + "bytes": 1411, + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d" + }, + { + "path": "oracle/five-float32-repeat/seed.json", + "bytes": 137, + "sha256": "335b295513fed2a617775adf590894234644c8bdf7268851434737d94e146208" + }, + { + "path": "oracle/five-float64/actual-weights.json", + "bytes": 683, + "sha256": "7cf304b269ed2c25edb9040b91c2ed10d1f335b6be59b819f5f23ede2ae6757c" + }, + { + "path": "oracle/five-float64/brian-output/events.csv", + "bytes": 6300, + "sha256": "80b2ac9efc7aa1db0ed7e8922f8e9d464c4a2417248be1435454316c47f00ee2" + }, + { + "path": "oracle/five-float64/brian-output/state.npz", + "bytes": 210791, + "sha256": "a59c994e53f70fb895b1009b9b074e32aa0aa51b9419848e96e54aa71cdd046d" + }, + { + "path": "oracle/five-float64/comparison.json", + "bytes": 294, + "sha256": "b6b9e1736743bb4f282ecd354e83e027f506ee4583e7cb7c070b9ba60d99253a" + }, + { + "path": "oracle/five-float64/completeness.csv", + "bytes": 68, + "sha256": "301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5" + }, + { + "path": "oracle/five-float64/connectivity.parquet", + "bytes": 5003, + "sha256": "43ea5a3c6c53315e9265863a6f05b3e6d8e9b9f299aef665e8bbe9c46f9eb2ce" + }, + { + "path": "oracle/five-float64/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/five-float64/generated-code.json", + "bytes": 11537, + "sha256": "fc6c228a1f24c65b5172799dfaa2568cdb615db639226022e10cced292099fe2" + }, + { + "path": "oracle/five-float64/independent-output/events.csv", + "bytes": 6300, + "sha256": "80b2ac9efc7aa1db0ed7e8922f8e9d464c4a2417248be1435454316c47f00ee2" + }, + { + "path": "oracle/five-float64/independent-output/state.npz", + "bytes": 209291, + "sha256": "938e04a8a4594297405f5f2bd28b4bd3f7c7bdb45172c4000c239bf867e95d6e" + }, + { + "path": "oracle/five-float64/run-spec.json", + "bytes": 3192, + "sha256": "101e0cf3fb3fb2ce75e8f0cb6526285f66026317a5e550716363c1d1ff928265" + }, + { + "path": "oracle/five-float64/schedule.json", + "bytes": 1411, + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d" + }, + { + "path": "oracle/five-float64/seed.json", + "bytes": 124, + "sha256": "ea838909a3dcfabd586cf4181eb6788ed791472fc5f64556fc5e88004906d242" + }, + { + "path": "oracle/five-float64-repeat/actual-weights.json", + "bytes": 683, + "sha256": "7cf304b269ed2c25edb9040b91c2ed10d1f335b6be59b819f5f23ede2ae6757c" + }, + { + "path": "oracle/five-float64-repeat/brian-output/events.csv", + "bytes": 6300, + "sha256": "80b2ac9efc7aa1db0ed7e8922f8e9d464c4a2417248be1435454316c47f00ee2" + }, + { + "path": "oracle/five-float64-repeat/brian-output/state.npz", + "bytes": 210791, + "sha256": "a59c994e53f70fb895b1009b9b074e32aa0aa51b9419848e96e54aa71cdd046d" + }, + { + "path": "oracle/five-float64-repeat/completeness.csv", + "bytes": 68, + "sha256": "301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5" + }, + { + "path": "oracle/five-float64-repeat/connectivity.parquet", + "bytes": 5003, + "sha256": "43ea5a3c6c53315e9265863a6f05b3e6d8e9b9f299aef665e8bbe9c46f9eb2ce" + }, + { + "path": "oracle/five-float64-repeat/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/five-float64-repeat/generated-code.json", + "bytes": 11537, + "sha256": "a0f43549be169ed0ab0b8193779e79f45b140a43ca19e73062d3617ab98e6abb" + }, + { + "path": "oracle/five-float64-repeat/run-spec.json", + "bytes": 3192, + "sha256": "101e0cf3fb3fb2ce75e8f0cb6526285f66026317a5e550716363c1d1ff928265" + }, + { + "path": "oracle/five-float64-repeat/schedule.json", + "bytes": 1411, + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d" + }, + { + "path": "oracle/five-float64-repeat/seed.json", + "bytes": 124, + "sha256": "ea838909a3dcfabd586cf4181eb6788ed791472fc5f64556fc5e88004906d242" + }, + { + "path": "oracle/no_input-float32/actual-weights.json", + "bytes": 843, + "sha256": "87c7305d5b8ffcd9f117485921900ace6ad76e9629e44bd5fde5d0fcad9ff4da" + }, + { + "path": "oracle/no_input-float32/brian-output/events.csv", + "bytes": 16, + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801" + }, + { + "path": "oracle/no_input-float32/brian-output/state.npz", + "bytes": 3162, + "sha256": "14c95cbc13ff15e775adb758dc57b7cf0658def99dc554facff8f4f4030c3630" + }, + { + "path": "oracle/no_input-float32/comparison.json", + "bytes": 297, + "sha256": "e7ac75d3c7853ec3526b7dc1bdd7f94ccba58b4392c2a704ac4bc25b34130ce5" + }, + { + "path": "oracle/no_input-float32/completeness.csv", + "bytes": 68, + "sha256": "301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5" + }, + { + "path": "oracle/no_input-float32/connectivity.parquet", + "bytes": 5003, + "sha256": "43ea5a3c6c53315e9265863a6f05b3e6d8e9b9f299aef665e8bbe9c46f9eb2ce" + }, + { + "path": "oracle/no_input-float32/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/no_input-float32/generated-code.json", + "bytes": 11367, + "sha256": "51391a395fd7e4608f1b17621601e3ffbe251a18f719623e5d5267ffd070deab" + }, + { + "path": "oracle/no_input-float32/independent-output/events.csv", + "bytes": 16, + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801" + }, + { + "path": "oracle/no_input-float32/independent-output/state.npz", + "bytes": 5527, + "sha256": "59f38c3dea1c88fcc492614dffc36cdc8771b6cb1904d82e2834262026808a15" + }, + { + "path": "oracle/no_input-float32/run-spec.json", + "bytes": 3192, + "sha256": "c23e196bc4701ec1c085fe9d6eb81167bfa3300181de8390bc6d6be22374e5d9" + }, + { + "path": "oracle/no_input-float32/schedule.json", + "bytes": 1212, + "sha256": "a0ae45ec1bd5e9ad66296742ebb857263b1bde14ca260bbba260b570d359dcd5" + }, + { + "path": "oracle/no_input-float32/seed.json", + "bytes": 75, + "sha256": "77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830" + }, + { + "path": "oracle/no_input-float32-repeat/actual-weights.json", + "bytes": 843, + "sha256": "87c7305d5b8ffcd9f117485921900ace6ad76e9629e44bd5fde5d0fcad9ff4da" + }, + { + "path": "oracle/no_input-float32-repeat/brian-output/events.csv", + "bytes": 16, + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801" + }, + { + "path": "oracle/no_input-float32-repeat/brian-output/state.npz", + "bytes": 3162, + "sha256": "14c95cbc13ff15e775adb758dc57b7cf0658def99dc554facff8f4f4030c3630" + }, + { + "path": "oracle/no_input-float32-repeat/completeness.csv", + "bytes": 68, + "sha256": "301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5" + }, + { + "path": "oracle/no_input-float32-repeat/connectivity.parquet", + "bytes": 5003, + "sha256": "43ea5a3c6c53315e9265863a6f05b3e6d8e9b9f299aef665e8bbe9c46f9eb2ce" + }, + { + "path": "oracle/no_input-float32-repeat/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/no_input-float32-repeat/generated-code.json", + "bytes": 11367, + "sha256": "bee4c08cf69cb20302b0a4dea5ea76fe44bc6ae32ac869cd4c415a8719efb6b3" + }, + { + "path": "oracle/no_input-float32-repeat/run-spec.json", + "bytes": 3192, + "sha256": "c23e196bc4701ec1c085fe9d6eb81167bfa3300181de8390bc6d6be22374e5d9" + }, + { + "path": "oracle/no_input-float32-repeat/schedule.json", + "bytes": 1212, + "sha256": "a0ae45ec1bd5e9ad66296742ebb857263b1bde14ca260bbba260b570d359dcd5" + }, + { + "path": "oracle/no_input-float32-repeat/seed.json", + "bytes": 75, + "sha256": "77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830" + }, + { + "path": "oracle/no_input-float64/actual-weights.json", + "bytes": 683, + "sha256": "7cf304b269ed2c25edb9040b91c2ed10d1f335b6be59b819f5f23ede2ae6757c" + }, + { + "path": "oracle/no_input-float64/brian-output/events.csv", + "bytes": 16, + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801" + }, + { + "path": "oracle/no_input-float64/brian-output/state.npz", + "bytes": 5504, + "sha256": "e9ca16e82b3fa11b6ce38f258d15a3c5d2666c4b8ac2c05e481ae2c6462666c1" + }, + { + "path": "oracle/no_input-float64/comparison.json", + "bytes": 295, + "sha256": "34382539f3576746462c29b584d5c3efbcc827f434e5c55d399c58e0fe5212f7" + }, + { + "path": "oracle/no_input-float64/completeness.csv", + "bytes": 68, + "sha256": "301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5" + }, + { + "path": "oracle/no_input-float64/connectivity.parquet", + "bytes": 5003, + "sha256": "43ea5a3c6c53315e9265863a6f05b3e6d8e9b9f299aef665e8bbe9c46f9eb2ce" + }, + { + "path": "oracle/no_input-float64/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/no_input-float64/generated-code.json", + "bytes": 11367, + "sha256": "70ea4ff3fd649f4303c189e58980b7c0aa628694c3cedfcb37aa2ccae1d6c079" + }, + { + "path": "oracle/no_input-float64/independent-output/events.csv", + "bytes": 16, + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801" + }, + { + "path": "oracle/no_input-float64/independent-output/state.npz", + "bytes": 5507, + "sha256": "27070591642beb87f800b700c4b6fe7ea474a2e5a9b1b3ed82cd6de0e854d501" + }, + { + "path": "oracle/no_input-float64/run-spec.json", + "bytes": 3192, + "sha256": "9de22a53132abac0de19554f76a0737cb81b62bea257813962b75dbd633b8978" + }, + { + "path": "oracle/no_input-float64/schedule.json", + "bytes": 1212, + "sha256": "a0ae45ec1bd5e9ad66296742ebb857263b1bde14ca260bbba260b570d359dcd5" + }, + { + "path": "oracle/no_input-float64/seed.json", + "bytes": 75, + "sha256": "77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830" + }, + { + "path": "oracle/no_input-float64-repeat/actual-weights.json", + "bytes": 683, + "sha256": "7cf304b269ed2c25edb9040b91c2ed10d1f335b6be59b819f5f23ede2ae6757c" + }, + { + "path": "oracle/no_input-float64-repeat/brian-output/events.csv", + "bytes": 16, + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801" + }, + { + "path": "oracle/no_input-float64-repeat/brian-output/state.npz", + "bytes": 5504, + "sha256": "e9ca16e82b3fa11b6ce38f258d15a3c5d2666c4b8ac2c05e481ae2c6462666c1" + }, + { + "path": "oracle/no_input-float64-repeat/completeness.csv", + "bytes": 68, + "sha256": "301ae4572c658aa307fc998e009377e9c82467d97d66aa1ac4b3f518385ec5a5" + }, + { + "path": "oracle/no_input-float64-repeat/connectivity.parquet", + "bytes": 5003, + "sha256": "43ea5a3c6c53315e9265863a6f05b3e6d8e9b9f299aef665e8bbe9c46f9eb2ce" + }, + { + "path": "oracle/no_input-float64-repeat/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/no_input-float64-repeat/generated-code.json", + "bytes": 11367, + "sha256": "3db565a7f030aafed20764a918587a86fab4ba509c223e58027bc2e12b5bb8a5" + }, + { + "path": "oracle/no_input-float64-repeat/run-spec.json", + "bytes": 3192, + "sha256": "9de22a53132abac0de19554f76a0737cb81b62bea257813962b75dbd633b8978" + }, + { + "path": "oracle/no_input-float64-repeat/schedule.json", + "bytes": 1212, + "sha256": "a0ae45ec1bd5e9ad66296742ebb857263b1bde14ca260bbba260b570d359dcd5" + }, + { + "path": "oracle/no_input-float64-repeat/seed.json", + "bytes": 75, + "sha256": "77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830" + }, + { + "path": "oracle/pair-float32/actual-weights.json", + "bytes": 179, + "sha256": "3056ff61f015cfa9572b32d18aeebf0e79a877c6c37a1b429c90e385bba08d07" + }, + { + "path": "oracle/pair-float32/brian-output/events.csv", + "bytes": 2120, + "sha256": "0c40dff2cecdd85cb64a03156c3ca7b538ba2046756844ab84b26db830d0e7bd" + }, + { + "path": "oracle/pair-float32/brian-output/state.npz", + "bytes": 4480, + "sha256": "e559d89af8d1ca4774fa5f53446381a4b9b55d88e52ea3b3baaaf68d2de3fce7" + }, + { + "path": "oracle/pair-float32/comparison.json", + "bytes": 293, + "sha256": "3e53a79835ecc9e5306577e20a7952a36844407750be7455d2ccd53a49823ee5" + }, + { + "path": "oracle/pair-float32/completeness.csv", + "bytes": 44, + "sha256": "5af02939034e66e7a8e7c361555203906d69bbba0042b1ab549041db1626f02b" + }, + { + "path": "oracle/pair-float32/connectivity.parquet", + "bytes": 4823, + "sha256": "1072f50d478d1890de7602c48f6a7f1b89e11a665a173e7a705a5fab3b3f8771" + }, + { + "path": "oracle/pair-float32/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/pair-float32/generated-code.json", + "bytes": 11537, + "sha256": "8c1278d8e1e4b028900e0353f7f9800300dad618be28e028714c7c1889a64099" + }, + { + "path": "oracle/pair-float32/independent-output/events.csv", + "bytes": 2120, + "sha256": "0c40dff2cecdd85cb64a03156c3ca7b538ba2046756844ab84b26db830d0e7bd" + }, + { + "path": "oracle/pair-float32/independent-output/state.npz", + "bytes": 6971, + "sha256": "fcaee342515e8a92a46ee1df7b63a83f38fa950a77bc12d173930f91136dbcba" + }, + { + "path": "oracle/pair-float32/run-spec.json", + "bytes": 3012, + "sha256": "be400c1c9248322775cb9bb2c23a8ab4b4bb536f220c955806f194718191b6de" + }, + { + "path": "oracle/pair-float32/schedule.json", + "bytes": 1411, + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d" + }, + { + "path": "oracle/pair-float32/seed.json", + "bytes": 137, + "sha256": "335b295513fed2a617775adf590894234644c8bdf7268851434737d94e146208" + }, + { + "path": "oracle/pair-float32-repeat/actual-weights.json", + "bytes": 179, + "sha256": "3056ff61f015cfa9572b32d18aeebf0e79a877c6c37a1b429c90e385bba08d07" + }, + { + "path": "oracle/pair-float32-repeat/brian-output/events.csv", + "bytes": 2120, + "sha256": "0c40dff2cecdd85cb64a03156c3ca7b538ba2046756844ab84b26db830d0e7bd" + }, + { + "path": "oracle/pair-float32-repeat/brian-output/state.npz", + "bytes": 4480, + "sha256": "e559d89af8d1ca4774fa5f53446381a4b9b55d88e52ea3b3baaaf68d2de3fce7" + }, + { + "path": "oracle/pair-float32-repeat/completeness.csv", + "bytes": 44, + "sha256": "5af02939034e66e7a8e7c361555203906d69bbba0042b1ab549041db1626f02b" + }, + { + "path": "oracle/pair-float32-repeat/connectivity.parquet", + "bytes": 4823, + "sha256": "1072f50d478d1890de7602c48f6a7f1b89e11a665a173e7a705a5fab3b3f8771" + }, + { + "path": "oracle/pair-float32-repeat/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/pair-float32-repeat/generated-code.json", + "bytes": 11537, + "sha256": "110a0b1d596da82dfad41024ac1b00ab636b0e5e927a7108782af257b21ae3c2" + }, + { + "path": "oracle/pair-float32-repeat/run-spec.json", + "bytes": 3012, + "sha256": "be400c1c9248322775cb9bb2c23a8ab4b4bb536f220c955806f194718191b6de" + }, + { + "path": "oracle/pair-float32-repeat/schedule.json", + "bytes": 1411, + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d" + }, + { + "path": "oracle/pair-float32-repeat/seed.json", + "bytes": 137, + "sha256": "335b295513fed2a617775adf590894234644c8bdf7268851434737d94e146208" + }, + { + "path": "oracle/pair-float64/actual-weights.json", + "bytes": 146, + "sha256": "8a3f9d74c53e9cf8eb01c82be313c29b5f82efe15e2a23aba463f6de3a36a791" + }, + { + "path": "oracle/pair-float64/brian-output/events.csv", + "bytes": 2120, + "sha256": "0c40dff2cecdd85cb64a03156c3ca7b538ba2046756844ab84b26db830d0e7bd" + }, + { + "path": "oracle/pair-float64/brian-output/state.npz", + "bytes": 6595, + "sha256": "df0486fc1a7865b85d88dfcb41170233dac2063af28246b6c5043903a4a817ca" + }, + { + "path": "oracle/pair-float64/comparison.json", + "bytes": 295, + "sha256": "15a03555e6cd6f5df21587c3ce23a75c7ec6a112bc20153e53a8286a1801060e" + }, + { + "path": "oracle/pair-float64/completeness.csv", + "bytes": 44, + "sha256": "5af02939034e66e7a8e7c361555203906d69bbba0042b1ab549041db1626f02b" + }, + { + "path": "oracle/pair-float64/connectivity.parquet", + "bytes": 4823, + "sha256": "1072f50d478d1890de7602c48f6a7f1b89e11a665a173e7a705a5fab3b3f8771" + }, + { + "path": "oracle/pair-float64/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/pair-float64/generated-code.json", + "bytes": 11537, + "sha256": "8c1278d8e1e4b028900e0353f7f9800300dad618be28e028714c7c1889a64099" + }, + { + "path": "oracle/pair-float64/independent-output/events.csv", + "bytes": 2120, + "sha256": "0c40dff2cecdd85cb64a03156c3ca7b538ba2046756844ab84b26db830d0e7bd" + }, + { + "path": "oracle/pair-float64/independent-output/state.npz", + "bytes": 6568, + "sha256": "b3e98ff351b1a3290371de6e95628ed4026c34bf59720ba4b63d04fdcb879e48" + }, + { + "path": "oracle/pair-float64/run-spec.json", + "bytes": 3012, + "sha256": "a54ed0bc7bafe0d45f951255cdda987a5e4e2433a98cac45c1c3b4f9141d7c65" + }, + { + "path": "oracle/pair-float64/schedule.json", + "bytes": 1411, + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d" + }, + { + "path": "oracle/pair-float64/seed.json", + "bytes": 124, + "sha256": "ea838909a3dcfabd586cf4181eb6788ed791472fc5f64556fc5e88004906d242" + }, + { + "path": "oracle/pair-float64-repeat/actual-weights.json", + "bytes": 146, + "sha256": "8a3f9d74c53e9cf8eb01c82be313c29b5f82efe15e2a23aba463f6de3a36a791" + }, + { + "path": "oracle/pair-float64-repeat/brian-output/events.csv", + "bytes": 2120, + "sha256": "0c40dff2cecdd85cb64a03156c3ca7b538ba2046756844ab84b26db830d0e7bd" + }, + { + "path": "oracle/pair-float64-repeat/brian-output/state.npz", + "bytes": 6595, + "sha256": "df0486fc1a7865b85d88dfcb41170233dac2063af28246b6c5043903a4a817ca" + }, + { + "path": "oracle/pair-float64-repeat/completeness.csv", + "bytes": 44, + "sha256": "5af02939034e66e7a8e7c361555203906d69bbba0042b1ab549041db1626f02b" + }, + { + "path": "oracle/pair-float64-repeat/connectivity.parquet", + "bytes": 4823, + "sha256": "1072f50d478d1890de7602c48f6a7f1b89e11a665a173e7a705a5fab3b3f8771" + }, + { + "path": "oracle/pair-float64-repeat/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/pair-float64-repeat/generated-code.json", + "bytes": 11537, + "sha256": "86fd33e9730c1d4675224eaff6ecc4feaf9808e58f51c93e7df252c821998736" + }, + { + "path": "oracle/pair-float64-repeat/run-spec.json", + "bytes": 3012, + "sha256": "a54ed0bc7bafe0d45f951255cdda987a5e4e2433a98cac45c1c3b4f9141d7c65" + }, + { + "path": "oracle/pair-float64-repeat/schedule.json", + "bytes": 1411, + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d" + }, + { + "path": "oracle/pair-float64-repeat/seed.json", + "bytes": 124, + "sha256": "ea838909a3dcfabd586cf4181eb6788ed791472fc5f64556fc5e88004906d242" + }, + { + "path": "oracle/poi-interface/audit.json", + "bytes": 3170, + "sha256": "4a8bf9f0e2c4954cea97b7c6eebebf422196641047c31935017d81268ab576f5" + }, + { + "path": "oracle/poi-interface/completeness.csv", + "bytes": 50, + "sha256": "06e601b217fdbc48eee57eac01cc9a9fa649ec2a1810a2e212efcd3e4b632303" + }, + { + "path": "oracle/poi-interface/connectivity.parquet", + "bytes": 5447, + "sha256": "34f12d50889ccf2e637d913a0f3c4104d49032a6a67f9c3fbcd52e68ce95d701" + }, + { + "path": "oracle/poi-interface/environment.json", + "bytes": 2188, + "sha256": "1e7bcd97221db01bba542320601325572330ffe2a867607d3105d0417c2850ae" + }, + { + "path": "oracle/poi-interface/generated-code.json", + "bytes": 10641, + "sha256": "eb11dd4b866c1fb80ec414b55335e1263fc041cddc46d098d523c6fd52c297ef" + }, + { + "path": "oracle/poi-interface/schedule.json", + "bytes": 1244, + "sha256": "eac8d994e23c5fbb5fff6b537f24d759b0000793d9fd7938669e45b1242b0410" + }, + { + "path": "oracle/trio-float32/actual-weights.json", + "bytes": 412, + "sha256": "d1fe988c385189af8d4ea1879eb7f863115a35f881a06f3d4c61b6cb2357eb6d" + }, + { + "path": "oracle/trio-float32/brian-output/events.csv", + "bytes": 4445, + "sha256": "7ae48f3fb283fda9f19b47215e23b6f8fe7b2f0265e400b5620acf98fed9c053" + }, + { + "path": "oracle/trio-float32/brian-output/state.npz", + "bytes": 6889, + "sha256": "5cfe47ae0e456407c1c26a04c6a29b2daaa5fa2a264a4275b12d674dcd5ca027" + }, + { + "path": "oracle/trio-float32/comparison.json", + "bytes": 294, + "sha256": "29510d4a5da61d412f4a5b852c793744983bc9b5a761fd3d175e8b7d5178777d" + }, + { + "path": "oracle/trio-float32/completeness.csv", + "bytes": 51, + "sha256": "e8795d5efb2eebefaae419c6df6d18d3cea3c390d9df7987f55823f5a860169e" + }, + { + "path": "oracle/trio-float32/connectivity.parquet", + "bytes": 4889, + "sha256": "22570cdceb09128d4bde46fd75897af776f7d91d89b8581d13133f55779f1e91" + }, + { + "path": "oracle/trio-float32/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/trio-float32/generated-code.json", + "bytes": 11535, + "sha256": "795226925d44b77912780f62a0881256e964a80baf362dfcf3173643ca417bbe" + }, + { + "path": "oracle/trio-float32/independent-output/events.csv", + "bytes": 4445, + "sha256": "7ae48f3fb283fda9f19b47215e23b6f8fe7b2f0265e400b5620acf98fed9c053" + }, + { + "path": "oracle/trio-float32/independent-output/state.npz", + "bytes": 12636, + "sha256": "60645b816f9ba7f5ff6a5ab91bff6c070546d07ef2f0565b1f7cff77b5d47145" + }, + { + "path": "oracle/trio-float32/run-spec.json", + "bytes": 3074, + "sha256": "391b9abfa2f300cc624185f4fe87bea1ed9417921c40ce4f71e7a9ed19777662" + }, + { + "path": "oracle/trio-float32/schedule.json", + "bytes": 1411, + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d" + }, + { + "path": "oracle/trio-float32/seed.json", + "bytes": 137, + "sha256": "335b295513fed2a617775adf590894234644c8bdf7268851434737d94e146208" + }, + { + "path": "oracle/trio-float32-repeat/actual-weights.json", + "bytes": 412, + "sha256": "d1fe988c385189af8d4ea1879eb7f863115a35f881a06f3d4c61b6cb2357eb6d" + }, + { + "path": "oracle/trio-float32-repeat/brian-output/events.csv", + "bytes": 4445, + "sha256": "7ae48f3fb283fda9f19b47215e23b6f8fe7b2f0265e400b5620acf98fed9c053" + }, + { + "path": "oracle/trio-float32-repeat/brian-output/state.npz", + "bytes": 6889, + "sha256": "5cfe47ae0e456407c1c26a04c6a29b2daaa5fa2a264a4275b12d674dcd5ca027" + }, + { + "path": "oracle/trio-float32-repeat/completeness.csv", + "bytes": 51, + "sha256": "e8795d5efb2eebefaae419c6df6d18d3cea3c390d9df7987f55823f5a860169e" + }, + { + "path": "oracle/trio-float32-repeat/connectivity.parquet", + "bytes": 4889, + "sha256": "22570cdceb09128d4bde46fd75897af776f7d91d89b8581d13133f55779f1e91" + }, + { + "path": "oracle/trio-float32-repeat/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/trio-float32-repeat/generated-code.json", + "bytes": 11537, + "sha256": "fc6c228a1f24c65b5172799dfaa2568cdb615db639226022e10cced292099fe2" + }, + { + "path": "oracle/trio-float32-repeat/run-spec.json", + "bytes": 3074, + "sha256": "391b9abfa2f300cc624185f4fe87bea1ed9417921c40ce4f71e7a9ed19777662" + }, + { + "path": "oracle/trio-float32-repeat/schedule.json", + "bytes": 1411, + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d" + }, + { + "path": "oracle/trio-float32-repeat/seed.json", + "bytes": 137, + "sha256": "335b295513fed2a617775adf590894234644c8bdf7268851434737d94e146208" + }, + { + "path": "oracle/trio-float64/actual-weights.json", + "bytes": 356, + "sha256": "21ab46d0419138b16b0407d31b4acde4a25f7016beb9e65a0c3a358707ee8565" + }, + { + "path": "oracle/trio-float64/brian-output/events.csv", + "bytes": 4445, + "sha256": "7ae48f3fb283fda9f19b47215e23b6f8fe7b2f0265e400b5620acf98fed9c053" + }, + { + "path": "oracle/trio-float64/brian-output/state.npz", + "bytes": 13530, + "sha256": "fc2be53c305f1b7d08934aa4a8550bc125bbf5a42a31cab7cb21f74e253d45b0" + }, + { + "path": "oracle/trio-float64/comparison.json", + "bytes": 295, + "sha256": "a7c9b2a63b57539e5ac0eefcc2943558b617f67afa3841873e95ca2e44d7db0b" + }, + { + "path": "oracle/trio-float64/completeness.csv", + "bytes": 51, + "sha256": "e8795d5efb2eebefaae419c6df6d18d3cea3c390d9df7987f55823f5a860169e" + }, + { + "path": "oracle/trio-float64/connectivity.parquet", + "bytes": 4889, + "sha256": "22570cdceb09128d4bde46fd75897af776f7d91d89b8581d13133f55779f1e91" + }, + { + "path": "oracle/trio-float64/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/trio-float64/generated-code.json", + "bytes": 11531, + "sha256": "9b0f5455ef57b378efa1099b79d8285fe8f6d41a480ada58e57c2748b8cba02f" + }, + { + "path": "oracle/trio-float64/independent-output/events.csv", + "bytes": 4445, + "sha256": "7ae48f3fb283fda9f19b47215e23b6f8fe7b2f0265e400b5620acf98fed9c053" + }, + { + "path": "oracle/trio-float64/independent-output/state.npz", + "bytes": 13507, + "sha256": "83cf9d1a3e9e73b5f2a95a52cbc005a56ccb893e4990c4bc06f7c9393577788c" + }, + { + "path": "oracle/trio-float64/run-spec.json", + "bytes": 3074, + "sha256": "2d3c683e78db15aa7ee8aea0ac79ed51f44dacc8618b3419bb591811060d2cf1" + }, + { + "path": "oracle/trio-float64/schedule.json", + "bytes": 1411, + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d" + }, + { + "path": "oracle/trio-float64/seed.json", + "bytes": 124, + "sha256": "ea838909a3dcfabd586cf4181eb6788ed791472fc5f64556fc5e88004906d242" + }, + { + "path": "oracle/trio-float64-repeat/actual-weights.json", + "bytes": 356, + "sha256": "21ab46d0419138b16b0407d31b4acde4a25f7016beb9e65a0c3a358707ee8565" + }, + { + "path": "oracle/trio-float64-repeat/brian-output/events.csv", + "bytes": 4445, + "sha256": "7ae48f3fb283fda9f19b47215e23b6f8fe7b2f0265e400b5620acf98fed9c053" + }, + { + "path": "oracle/trio-float64-repeat/brian-output/state.npz", + "bytes": 13530, + "sha256": "fc2be53c305f1b7d08934aa4a8550bc125bbf5a42a31cab7cb21f74e253d45b0" + }, + { + "path": "oracle/trio-float64-repeat/completeness.csv", + "bytes": 51, + "sha256": "e8795d5efb2eebefaae419c6df6d18d3cea3c390d9df7987f55823f5a860169e" + }, + { + "path": "oracle/trio-float64-repeat/connectivity.parquet", + "bytes": 4889, + "sha256": "22570cdceb09128d4bde46fd75897af776f7d91d89b8581d13133f55779f1e91" + }, + { + "path": "oracle/trio-float64-repeat/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/trio-float64-repeat/generated-code.json", + "bytes": 11535, + "sha256": "795226925d44b77912780f62a0881256e964a80baf362dfcf3173643ca417bbe" + }, + { + "path": "oracle/trio-float64-repeat/run-spec.json", + "bytes": 3074, + "sha256": "2d3c683e78db15aa7ee8aea0ac79ed51f44dacc8618b3419bb591811060d2cf1" + }, + { + "path": "oracle/trio-float64-repeat/schedule.json", + "bytes": 1411, + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d" + }, + { + "path": "oracle/trio-float64-repeat/seed.json", + "bytes": 124, + "sha256": "ea838909a3dcfabd586cf4181eb6788ed791472fc5f64556fc5e88004906d242" + }, + { + "path": "oracle/unit-above_threshold-float32/actual-weights.json", + "bytes": 94, + "sha256": "db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b" + }, + { + "path": "oracle/unit-above_threshold-float32/brian-output/events.csv", + "bytes": 21, + "sha256": "cfad3e3ae7578e64365753675ead4358495da79ee379d78e192172b50a688023" + }, + { + "path": "oracle/unit-above_threshold-float32/brian-output/state.npz", + "bytes": 1404, + "sha256": "367bda1dee3a6bd6c9e04afab7ef93f835cabd9329f7eb7d5b51adab2e5e07d9" + }, + { + "path": "oracle/unit-above_threshold-float32/comparison.json", + "bytes": 297, + "sha256": "e7ac75d3c7853ec3526b7dc1bdd7f94ccba58b4392c2a704ac4bc25b34130ce5" + }, + { + "path": "oracle/unit-above_threshold-float32/completeness.csv", + "bytes": 35, + "sha256": "6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466" + }, + { + "path": "oracle/unit-above_threshold-float32/connectivity.parquet", + "bytes": 4791, + "sha256": "27046e66bff85457b7945c5646ae0ac6f94d59065846dee47cfe90aacaee9ec1" + }, + { + "path": "oracle/unit-above_threshold-float32/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/unit-above_threshold-float32/external-arrivals.csv", + "bytes": 29, + "sha256": "c5982c3d7ddbb031347cb389692bd9e78b4d851732d4192ca8d9db1f5ce31128" + }, + { + "path": "oracle/unit-above_threshold-float32/generated-code.json", + "bytes": 11537, + "sha256": "8c1278d8e1e4b028900e0353f7f9800300dad618be28e028714c7c1889a64099" + }, + { + "path": "oracle/unit-above_threshold-float32/independent-output/events.csv", + "bytes": 21, + "sha256": "cfad3e3ae7578e64365753675ead4358495da79ee379d78e192172b50a688023" + }, + { + "path": "oracle/unit-above_threshold-float32/independent-output/state.npz", + "bytes": 1422, + "sha256": "255a185d372d457eaf15e2512db78751f0d994fd6a3969bd3b5e3095ef6628bb" + }, + { + "path": "oracle/unit-above_threshold-float32/run-spec.json", + "bytes": 2976, + "sha256": "05cc155e6979dea2f1aad7cf64fad64e2cb2f8e6b3578d6bc1948b27c8bda779" + }, + { + "path": "oracle/unit-above_threshold-float32/schedule.json", + "bytes": 1411, + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d" + }, + { + "path": "oracle/unit-above_threshold-float32/seed.json", + "bytes": 135, + "sha256": "a6f4b88a4b799a7ac2b91764d632dbf3e05b16535a9c5ab64ad59092902db88e" + }, + { + "path": "oracle/unit-above_threshold-float64/actual-weights.json", + "bytes": 94, + "sha256": "db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b" + }, + { + "path": "oracle/unit-above_threshold-float64/brian-output/events.csv", + "bytes": 21, + "sha256": "cfad3e3ae7578e64365753675ead4358495da79ee379d78e192172b50a688023" + }, + { + "path": "oracle/unit-above_threshold-float64/brian-output/state.npz", + "bytes": 1417, + "sha256": "d2796957a5a007cf0fb8a491565fca7017109ca792207bf88e7885a2d139da8e" + }, + { + "path": "oracle/unit-above_threshold-float64/comparison.json", + "bytes": 295, + "sha256": "34382539f3576746462c29b584d5c3efbcc827f434e5c55d399c58e0fe5212f7" + }, + { + "path": "oracle/unit-above_threshold-float64/completeness.csv", + "bytes": 35, + "sha256": "6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466" + }, + { + "path": "oracle/unit-above_threshold-float64/connectivity.parquet", + "bytes": 4791, + "sha256": "27046e66bff85457b7945c5646ae0ac6f94d59065846dee47cfe90aacaee9ec1" + }, + { + "path": "oracle/unit-above_threshold-float64/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/unit-above_threshold-float64/external-arrivals.csv", + "bytes": 29, + "sha256": "c5982c3d7ddbb031347cb389692bd9e78b4d851732d4192ca8d9db1f5ce31128" + }, + { + "path": "oracle/unit-above_threshold-float64/generated-code.json", + "bytes": 11537, + "sha256": "260ff4764dbbad4c87966c46d61f804b146c9c3b98ab50db2bd135aa33086050" + }, + { + "path": "oracle/unit-above_threshold-float64/independent-output/events.csv", + "bytes": 21, + "sha256": "cfad3e3ae7578e64365753675ead4358495da79ee379d78e192172b50a688023" + }, + { + "path": "oracle/unit-above_threshold-float64/independent-output/state.npz", + "bytes": 1420, + "sha256": "aadd0c427beb534c78f62d64459ad2403981654d4c6df18d3d0538c0a867a010" + }, + { + "path": "oracle/unit-above_threshold-float64/run-spec.json", + "bytes": 2976, + "sha256": "caabe9c7956d99f38f6cdc7f08bc81501186998221f4f9fb6c2d77fa68e9398b" + }, + { + "path": "oracle/unit-above_threshold-float64/schedule.json", + "bytes": 1411, + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d" + }, + { + "path": "oracle/unit-above_threshold-float64/seed.json", + "bytes": 122, + "sha256": "05b71129e058b3685e2913a4ea737a387b407b09f521670ec4b00d19c9e3eac5" + }, + { + "path": "oracle/unit-delay_18-float32/actual-weights.json", + "bytes": 127, + "sha256": "c9b7702f929fe1e2a3d5bdaa673994de0db223fff4e09b52e7c5759c2b972e32" + }, + { + "path": "oracle/unit-delay_18-float32/brian-output/events.csv", + "bytes": 21, + "sha256": "10b1b3eda316d86e0df6180a7e00c914528fcb0949728895ba25605d11e409b3" + }, + { + "path": "oracle/unit-delay_18-float32/brian-output/state.npz", + "bytes": 2673, + "sha256": "bf6177ae609e33c81f46afb499da962aa82ea493b172377d690e5842e42a9017" + }, + { + "path": "oracle/unit-delay_18-float32/comparison.json", + "bytes": 296, + "sha256": "37f394b3a181d7f99431910bba73c4b11d83379bb33525e5f93aad4903121c3f" + }, + { + "path": "oracle/unit-delay_18-float32/completeness.csv", + "bytes": 40, + "sha256": "843dba272f8f33a966eb902023ed2851be0f0316ea02245d48b613f72b38785b" + }, + { + "path": "oracle/unit-delay_18-float32/connectivity.parquet", + "bytes": 4791, + "sha256": "e69f1527a0dcdb8de465ae38a9264124ac14e96277daab69c178f6ef5e987555" + }, + { + "path": "oracle/unit-delay_18-float32/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/unit-delay_18-float32/generated-code.json", + "bytes": 11537, + "sha256": "1628ba80041d8f31231e9c809ab0fcb48062bb957ec98d3f8b5d4b0e6bb78137" + }, + { + "path": "oracle/unit-delay_18-float32/independent-output/events.csv", + "bytes": 21, + "sha256": "10b1b3eda316d86e0df6180a7e00c914528fcb0949728895ba25605d11e409b3" + }, + { + "path": "oracle/unit-delay_18-float32/independent-output/state.npz", + "bytes": 3182, + "sha256": "46abab9351e62c525c17fef31edbefc400e8322362188ea1c9d9c20fcf1d0f30" + }, + { + "path": "oracle/unit-delay_18-float32/run-spec.json", + "bytes": 2984, + "sha256": "250f049da54ebe5be709647d7f5eff2bb16faf9931980bfbfdc45de75612953b" + }, + { + "path": "oracle/unit-delay_18-float32/schedule.json", + "bytes": 1411, + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d" + }, + { + "path": "oracle/unit-delay_18-float32/seed.json", + "bytes": 135, + "sha256": "242b26859a24e2fcc60597f50c28f4a52f08edfd42c38100c5964576cbc37ccc" + }, + { + "path": "oracle/unit-delay_18-float64/actual-weights.json", + "bytes": 101, + "sha256": "213ee768839567d5f119ae77d914541359f91a5a206ab6c7bf1a8293a29cc816" + }, + { + "path": "oracle/unit-delay_18-float64/brian-output/events.csv", + "bytes": 21, + "sha256": "10b1b3eda316d86e0df6180a7e00c914528fcb0949728895ba25605d11e409b3" + }, + { + "path": "oracle/unit-delay_18-float64/brian-output/state.npz", + "bytes": 4116, + "sha256": "5f112e5aae8ee0e74347d508397ad2d4f7ec2ad149f4c00ea65ecf41c632d1cb" + }, + { + "path": "oracle/unit-delay_18-float64/comparison.json", + "bytes": 297, + "sha256": "1a4ff3495394f915ef545e4e76101b0bd51a31bc93a3b566c6ba0f8273ba51ba" + }, + { + "path": "oracle/unit-delay_18-float64/completeness.csv", + "bytes": 40, + "sha256": "843dba272f8f33a966eb902023ed2851be0f0316ea02245d48b613f72b38785b" + }, + { + "path": "oracle/unit-delay_18-float64/connectivity.parquet", + "bytes": 4791, + "sha256": "e69f1527a0dcdb8de465ae38a9264124ac14e96277daab69c178f6ef5e987555" + }, + { + "path": "oracle/unit-delay_18-float64/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/unit-delay_18-float64/generated-code.json", + "bytes": 11537, + "sha256": "b754c9b23e259086e1b17bf3a2179a7f22acecec2eaf39b82bc48df31178dc08" + }, + { + "path": "oracle/unit-delay_18-float64/independent-output/events.csv", + "bytes": 21, + "sha256": "10b1b3eda316d86e0df6180a7e00c914528fcb0949728895ba25605d11e409b3" + }, + { + "path": "oracle/unit-delay_18-float64/independent-output/state.npz", + "bytes": 4125, + "sha256": "0e2389bb9a8c4f1a5be9f5cda11bcdb977839d608cacd7eff0249a0af3e8e180" + }, + { + "path": "oracle/unit-delay_18-float64/run-spec.json", + "bytes": 2984, + "sha256": "bab3876796fe01fd3c21a252d18de06bd1e2c3d9db8ceab600b28c7f5f6580ae" + }, + { + "path": "oracle/unit-delay_18-float64/schedule.json", + "bytes": 1411, + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d" + }, + { + "path": "oracle/unit-delay_18-float64/seed.json", + "bytes": 122, + "sha256": "5084ab20be7af7ed30622b8e72f679fb89d3de638ce8f4af4c7c0c24a1d45a29" + }, + { + "path": "oracle/unit-equal_threshold-float32/actual-weights.json", + "bytes": 94, + "sha256": "db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b" + }, + { + "path": "oracle/unit-equal_threshold-float32/brian-output/events.csv", + "bytes": 16, + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801" + }, + { + "path": "oracle/unit-equal_threshold-float32/brian-output/state.npz", + "bytes": 1959, + "sha256": "e0b133b9473e529e9a6d29c5cd236f9b9f4a88dc17b11317386d829d7d3b83ac" + }, + { + "path": "oracle/unit-equal_threshold-float32/comparison.json", + "bytes": 298, + "sha256": "950e79516e1d611cc30336d2ec02ef99c9511fce58dfe1eb4edc92aedddff8f7" + }, + { + "path": "oracle/unit-equal_threshold-float32/completeness.csv", + "bytes": 35, + "sha256": "6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466" + }, + { + "path": "oracle/unit-equal_threshold-float32/connectivity.parquet", + "bytes": 4791, + "sha256": "27046e66bff85457b7945c5646ae0ac6f94d59065846dee47cfe90aacaee9ec1" + }, + { + "path": "oracle/unit-equal_threshold-float32/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/unit-equal_threshold-float32/external-arrivals.csv", + "bytes": 29, + "sha256": "c5982c3d7ddbb031347cb389692bd9e78b4d851732d4192ca8d9db1f5ce31128" + }, + { + "path": "oracle/unit-equal_threshold-float32/generated-code.json", + "bytes": 11537, + "sha256": "86fd33e9730c1d4675224eaff6ecc4feaf9808e58f51c93e7df252c821998736" + }, + { + "path": "oracle/unit-equal_threshold-float32/independent-output/events.csv", + "bytes": 16, + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801" + }, + { + "path": "oracle/unit-equal_threshold-float32/independent-output/state.npz", + "bytes": 2314, + "sha256": "e0511cd2618ec1229697e25a46cc0f69c31522317f02188c6fde3ccdfb21b8b4" + }, + { + "path": "oracle/unit-equal_threshold-float32/run-spec.json", + "bytes": 2976, + "sha256": "fac5e0aa0191b2c1588aab61ae63bd33506f9e1388025be1147eece5c1a7201e" + }, + { + "path": "oracle/unit-equal_threshold-float32/schedule.json", + "bytes": 1411, + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d" + }, + { + "path": "oracle/unit-equal_threshold-float32/seed.json", + "bytes": 136, + "sha256": "478668928b9024183568ba20f423f1f81eb9da3a2ad3427ce9bd55ed27779602" + }, + { + "path": "oracle/unit-equal_threshold-float64/actual-weights.json", + "bytes": 94, + "sha256": "db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b" + }, + { + "path": "oracle/unit-equal_threshold-float64/brian-output/events.csv", + "bytes": 16, + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801" + }, + { + "path": "oracle/unit-equal_threshold-float64/brian-output/state.npz", + "bytes": 2835, + "sha256": "20d649e7f7cc7bc9b231ff0d5cd86474d71bb45ad1965d1fcc6cd44fe9b10fcc" + }, + { + "path": "oracle/unit-equal_threshold-float64/comparison.json", + "bytes": 297, + "sha256": "92164ae71a1399241866df040a559c7c1a9b8fca9327bcb009665a6bf8eeef4a" + }, + { + "path": "oracle/unit-equal_threshold-float64/completeness.csv", + "bytes": 35, + "sha256": "6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466" + }, + { + "path": "oracle/unit-equal_threshold-float64/connectivity.parquet", + "bytes": 4791, + "sha256": "27046e66bff85457b7945c5646ae0ac6f94d59065846dee47cfe90aacaee9ec1" + }, + { + "path": "oracle/unit-equal_threshold-float64/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/unit-equal_threshold-float64/external-arrivals.csv", + "bytes": 29, + "sha256": "c5982c3d7ddbb031347cb389692bd9e78b4d851732d4192ca8d9db1f5ce31128" + }, + { + "path": "oracle/unit-equal_threshold-float64/generated-code.json", + "bytes": 11537, + "sha256": "b754c9b23e259086e1b17bf3a2179a7f22acecec2eaf39b82bc48df31178dc08" + }, + { + "path": "oracle/unit-equal_threshold-float64/independent-output/events.csv", + "bytes": 16, + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801" + }, + { + "path": "oracle/unit-equal_threshold-float64/independent-output/state.npz", + "bytes": 2832, + "sha256": "39bb07a9f2a71652ead9cb5cd1d82626b367d9f77f28a2890f29813d6abd531c" + }, + { + "path": "oracle/unit-equal_threshold-float64/run-spec.json", + "bytes": 2976, + "sha256": "048c7994f12ce279353916c6e0770aa942c4d265953a73f2fbdcfc823899c68d" + }, + { + "path": "oracle/unit-equal_threshold-float64/schedule.json", + "bytes": 1411, + "sha256": "d3183a588eff0f4824dd5680af6401e35370fa7e74268ae0700ba5522e6d278d" + }, + { + "path": "oracle/unit-equal_threshold-float64/seed.json", + "bytes": 123, + "sha256": "2fce02c931341034076747847551dd7c463a5afbca82f53aac1ea5262da25546" + }, + { + "path": "oracle/unit-inhibition-float32/actual-weights.json", + "bytes": 94, + "sha256": "db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b" + }, + { + "path": "oracle/unit-inhibition-float32/brian-output/events.csv", + "bytes": 16, + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801" + }, + { + "path": "oracle/unit-inhibition-float32/brian-output/state.npz", + "bytes": 2711, + "sha256": "e17bb1325b04dd6a39587a15f5be9de3a898369643de9d8ac0d8cb8f50fa0655" + }, + { + "path": "oracle/unit-inhibition-float32/comparison.json", + "bytes": 297, + "sha256": "00dc58085703002b0c7828f8626b7a4c0a67ccb780e9934b1a6027278e160147" + }, + { + "path": "oracle/unit-inhibition-float32/completeness.csv", + "bytes": 35, + "sha256": "6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466" + }, + { + "path": "oracle/unit-inhibition-float32/connectivity.parquet", + "bytes": 4791, + "sha256": "27046e66bff85457b7945c5646ae0ac6f94d59065846dee47cfe90aacaee9ec1" + }, + { + "path": "oracle/unit-inhibition-float32/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/unit-inhibition-float32/external-arrivals.csv", + "bytes": 39, + "sha256": "cdb3b47045c3e08a5e7f91d835e9b974267e8c39aa5c0b6f01848d02fddc9121" + }, + { + "path": "oracle/unit-inhibition-float32/generated-code.json", + "bytes": 15279, + "sha256": "24049d57fb087bbf6a32304d9a5a21ad9015d7c07dd5a42f94d5856e24648910" + }, + { + "path": "oracle/unit-inhibition-float32/independent-output/events.csv", + "bytes": 16, + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801" + }, + { + "path": "oracle/unit-inhibition-float32/independent-output/state.npz", + "bytes": 3220, + "sha256": "7606a26a9237ce3a3a1b93549e9a9e9489c4bd0f209fdcfaadad20bdfd71b025" + }, + { + "path": "oracle/unit-inhibition-float32/run-spec.json", + "bytes": 3047, + "sha256": "2be318173be5d8ab53909c92b7a10158dd792342f23706755bacd93b99d6304c" + }, + { + "path": "oracle/unit-inhibition-float32/schedule.json", + "bytes": 1584, + "sha256": "fed340d7ab41bbb7a1a18d125c8a2fb0129c1eeea1967ade86725f1e7753d116" + }, + { + "path": "oracle/unit-inhibition-float32/seed.json", + "bytes": 75, + "sha256": "77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830" + }, + { + "path": "oracle/unit-inhibition-float64/actual-weights.json", + "bytes": 94, + "sha256": "db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b" + }, + { + "path": "oracle/unit-inhibition-float64/brian-output/events.csv", + "bytes": 16, + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801" + }, + { + "path": "oracle/unit-inhibition-float64/brian-output/state.npz", + "bytes": 4210, + "sha256": "bb92d8189c4899d878f3ba14981a0d3e5d9e533ed193a4ac46d7ae96b5b8ed2b" + }, + { + "path": "oracle/unit-inhibition-float64/comparison.json", + "bytes": 297, + "sha256": "9b5906fd6915f910df0c46bd171cb693bc3be927321585f298ce5bf41c675dd1" + }, + { + "path": "oracle/unit-inhibition-float64/completeness.csv", + "bytes": 35, + "sha256": "6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466" + }, + { + "path": "oracle/unit-inhibition-float64/connectivity.parquet", + "bytes": 4791, + "sha256": "27046e66bff85457b7945c5646ae0ac6f94d59065846dee47cfe90aacaee9ec1" + }, + { + "path": "oracle/unit-inhibition-float64/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/unit-inhibition-float64/external-arrivals.csv", + "bytes": 39, + "sha256": "cdb3b47045c3e08a5e7f91d835e9b974267e8c39aa5c0b6f01848d02fddc9121" + }, + { + "path": "oracle/unit-inhibition-float64/generated-code.json", + "bytes": 15279, + "sha256": "f7353d7fd8f7c017924959f0db57b3a7101b72b65f0bcb4fe8ba5bf02f7c8cb3" + }, + { + "path": "oracle/unit-inhibition-float64/independent-output/events.csv", + "bytes": 16, + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801" + }, + { + "path": "oracle/unit-inhibition-float64/independent-output/state.npz", + "bytes": 4212, + "sha256": "0ba4c1b5727aa46dc66855cc9d61bfce3f19c2af046ff41b4e1fd3594565a455" + }, + { + "path": "oracle/unit-inhibition-float64/run-spec.json", + "bytes": 3047, + "sha256": "1618df58c1883b6a34f4f247fa2a4dac41d29391f405efb8813d49d49ae9aab9" + }, + { + "path": "oracle/unit-inhibition-float64/schedule.json", + "bytes": 1584, + "sha256": "fed340d7ab41bbb7a1a18d125c8a2fb0129c1eeea1967ade86725f1e7753d116" + }, + { + "path": "oracle/unit-inhibition-float64/seed.json", + "bytes": 75, + "sha256": "77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830" + }, + { + "path": "oracle/unit-nonzero_g_reset-float32/actual-weights.json", + "bytes": 94, + "sha256": "db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b" + }, + { + "path": "oracle/unit-nonzero_g_reset-float32/brian-output/events.csv", + "bytes": 21, + "sha256": "d8885a4d083fff2f22fad52be2eaf08adc23e25015dafded0fedc16cf36a4cb1" + }, + { + "path": "oracle/unit-nonzero_g_reset-float32/brian-output/state.npz", + "bytes": 1412, + "sha256": "b1397ec47218beb84a911a3df7461c2b5a34ae827b0321e9420f7840bc2dd946" + }, + { + "path": "oracle/unit-nonzero_g_reset-float32/comparison.json", + "bytes": 283, + "sha256": "a67c8fb6afb8cca2f58f0710a9c78720ddbbe78994fb230a4a55f42270c8fd49" + }, + { + "path": "oracle/unit-nonzero_g_reset-float32/completeness.csv", + "bytes": 35, + "sha256": "6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466" + }, + { + "path": "oracle/unit-nonzero_g_reset-float32/connectivity.parquet", + "bytes": 4791, + "sha256": "27046e66bff85457b7945c5646ae0ac6f94d59065846dee47cfe90aacaee9ec1" + }, + { + "path": "oracle/unit-nonzero_g_reset-float32/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/unit-nonzero_g_reset-float32/external-arrivals.csv", + "bytes": 41, + "sha256": "997f7e35a6eb1a267ccef4c8794c72e7d0d119a7d5328bffb271e05602555651" + }, + { + "path": "oracle/unit-nonzero_g_reset-float32/generated-code.json", + "bytes": 15279, + "sha256": "3fb96b24ee1b80fecd16b80dbee70762cf917583a27ca3574393dd9571268708" + }, + { + "path": "oracle/unit-nonzero_g_reset-float32/independent-output/events.csv", + "bytes": 21, + "sha256": "d8885a4d083fff2f22fad52be2eaf08adc23e25015dafded0fedc16cf36a4cb1" + }, + { + "path": "oracle/unit-nonzero_g_reset-float32/independent-output/state.npz", + "bytes": 1431, + "sha256": "c22b4ca49e3b3f3b1226d75dbfd7f5c8e59a7cc8f27ce5b31e5683b77b88d05d" + }, + { + "path": "oracle/unit-nonzero_g_reset-float32/run-spec.json", + "bytes": 3061, + "sha256": "4782f44e07a5e6e99502c733fb77cf1bf8f3b767e9b87914347d07165a035b7b" + }, + { + "path": "oracle/unit-nonzero_g_reset-float32/schedule.json", + "bytes": 1584, + "sha256": "fed340d7ab41bbb7a1a18d125c8a2fb0129c1eeea1967ade86725f1e7753d116" + }, + { + "path": "oracle/unit-nonzero_g_reset-float32/seed.json", + "bytes": 75, + "sha256": "77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830" + }, + { + "path": "oracle/unit-nonzero_g_reset-float64/actual-weights.json", + "bytes": 94, + "sha256": "db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b" + }, + { + "path": "oracle/unit-nonzero_g_reset-float64/brian-output/events.csv", + "bytes": 21, + "sha256": "d8885a4d083fff2f22fad52be2eaf08adc23e25015dafded0fedc16cf36a4cb1" + }, + { + "path": "oracle/unit-nonzero_g_reset-float64/brian-output/state.npz", + "bytes": 1428, + "sha256": "c7e06817d1c24d8f5b190e7ad900f560b62b695f3e2f3f60b81f87de32f95efd" + }, + { + "path": "oracle/unit-nonzero_g_reset-float64/comparison.json", + "bytes": 295, + "sha256": "34382539f3576746462c29b584d5c3efbcc827f434e5c55d399c58e0fe5212f7" + }, + { + "path": "oracle/unit-nonzero_g_reset-float64/completeness.csv", + "bytes": 35, + "sha256": "6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466" + }, + { + "path": "oracle/unit-nonzero_g_reset-float64/connectivity.parquet", + "bytes": 4791, + "sha256": "27046e66bff85457b7945c5646ae0ac6f94d59065846dee47cfe90aacaee9ec1" + }, + { + "path": "oracle/unit-nonzero_g_reset-float64/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/unit-nonzero_g_reset-float64/external-arrivals.csv", + "bytes": 41, + "sha256": "997f7e35a6eb1a267ccef4c8794c72e7d0d119a7d5328bffb271e05602555651" + }, + { + "path": "oracle/unit-nonzero_g_reset-float64/generated-code.json", + "bytes": 15279, + "sha256": "b5921dbc5e709b3405a4b1ed1521f834bb0a4999d154f5e6f772a290aaaa8de7" + }, + { + "path": "oracle/unit-nonzero_g_reset-float64/independent-output/events.csv", + "bytes": 21, + "sha256": "d8885a4d083fff2f22fad52be2eaf08adc23e25015dafded0fedc16cf36a4cb1" + }, + { + "path": "oracle/unit-nonzero_g_reset-float64/independent-output/state.npz", + "bytes": 1434, + "sha256": "4d372bb8e51307731fa7339822838c3580c64ee1dd4d4f3ad8ad0420258bd1b8" + }, + { + "path": "oracle/unit-nonzero_g_reset-float64/run-spec.json", + "bytes": 3049, + "sha256": "916cdd2cd038a2ae1e79681ebfeeb83af185407cf2b1b87583cc50f4164c4808" + }, + { + "path": "oracle/unit-nonzero_g_reset-float64/schedule.json", + "bytes": 1584, + "sha256": "fed340d7ab41bbb7a1a18d125c8a2fb0129c1eeea1967ade86725f1e7753d116" + }, + { + "path": "oracle/unit-nonzero_g_reset-float64/seed.json", + "bytes": 75, + "sha256": "77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830" + }, + { + "path": "oracle/unit-refractory_boundary-float32/actual-weights.json", + "bytes": 94, + "sha256": "db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b" + }, + { + "path": "oracle/unit-refractory_boundary-float32/brian-output/events.csv", + "bytes": 21, + "sha256": "cfad3e3ae7578e64365753675ead4358495da79ee379d78e192172b50a688023" + }, + { + "path": "oracle/unit-refractory_boundary-float32/brian-output/state.npz", + "bytes": 2551, + "sha256": "1a096b2af8c95436307c5368107a197bd30614a55a5f48b22cc15cdcab231c05" + }, + { + "path": "oracle/unit-refractory_boundary-float32/comparison.json", + "bytes": 298, + "sha256": "704e19a55381a72ef05e90655d079152bf96893b54cb2aaf8413ffa6a97cb32c" + }, + { + "path": "oracle/unit-refractory_boundary-float32/completeness.csv", + "bytes": 35, + "sha256": "6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466" + }, + { + "path": "oracle/unit-refractory_boundary-float32/connectivity.parquet", + "bytes": 4791, + "sha256": "27046e66bff85457b7945c5646ae0ac6f94d59065846dee47cfe90aacaee9ec1" + }, + { + "path": "oracle/unit-refractory_boundary-float32/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/unit-refractory_boundary-float32/external-arrivals.csv", + "bytes": 68, + "sha256": "f9298feb0fed9c1e4cfb4a01313d436437fa9cdacb03bc9f67cf4299dc76df86" + }, + { + "path": "oracle/unit-refractory_boundary-float32/generated-code.json", + "bytes": 15449, + "sha256": "608de56c02e7febe4cdcdaa8c17faded84b9fa187d6f08eb7c393c9fb07f9be3" + }, + { + "path": "oracle/unit-refractory_boundary-float32/independent-output/events.csv", + "bytes": 21, + "sha256": "cfad3e3ae7578e64365753675ead4358495da79ee379d78e192172b50a688023" + }, + { + "path": "oracle/unit-refractory_boundary-float32/independent-output/state.npz", + "bytes": 3054, + "sha256": "aef84b2be80bd1c41edad68cfc6610e31fc306e67bb8f8eec4677a65b9dab37e" + }, + { + "path": "oracle/unit-refractory_boundary-float32/run-spec.json", + "bytes": 3141, + "sha256": "23f4baa792e2a02933f40b2c37392eab2bb6e56b0ab8395b1183f2c5a0f11fa1" + }, + { + "path": "oracle/unit-refractory_boundary-float32/schedule.json", + "bytes": 1807, + "sha256": "9cef827c7fcf9c050b60ec311a0e6bcdfc311c2f2689ad2437c61fa6085d7388" + }, + { + "path": "oracle/unit-refractory_boundary-float32/seed.json", + "bytes": 135, + "sha256": "a6f4b88a4b799a7ac2b91764d632dbf3e05b16535a9c5ab64ad59092902db88e" + }, + { + "path": "oracle/unit-refractory_boundary-float64/actual-weights.json", + "bytes": 94, + "sha256": "db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b" + }, + { + "path": "oracle/unit-refractory_boundary-float64/brian-output/events.csv", + "bytes": 21, + "sha256": "cfad3e3ae7578e64365753675ead4358495da79ee379d78e192172b50a688023" + }, + { + "path": "oracle/unit-refractory_boundary-float64/brian-output/state.npz", + "bytes": 3953, + "sha256": "cfb31ac1d31ae1dfda4b1c8de4e194ca2a6678d3188e650112617c19b183a017" + }, + { + "path": "oracle/unit-refractory_boundary-float64/comparison.json", + "bytes": 297, + "sha256": "718e19524ef625c1f7920b78f11f64b18dc2f49c12ed32f5eceb70108085e316" + }, + { + "path": "oracle/unit-refractory_boundary-float64/completeness.csv", + "bytes": 35, + "sha256": "6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466" + }, + { + "path": "oracle/unit-refractory_boundary-float64/connectivity.parquet", + "bytes": 4791, + "sha256": "27046e66bff85457b7945c5646ae0ac6f94d59065846dee47cfe90aacaee9ec1" + }, + { + "path": "oracle/unit-refractory_boundary-float64/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/unit-refractory_boundary-float64/external-arrivals.csv", + "bytes": 68, + "sha256": "f9298feb0fed9c1e4cfb4a01313d436437fa9cdacb03bc9f67cf4299dc76df86" + }, + { + "path": "oracle/unit-refractory_boundary-float64/generated-code.json", + "bytes": 15449, + "sha256": "3ccb5eecdcdbbc850e60d8209d263e5b4764630323d8109695308c3c4cf7b539" + }, + { + "path": "oracle/unit-refractory_boundary-float64/independent-output/events.csv", + "bytes": 21, + "sha256": "cfad3e3ae7578e64365753675ead4358495da79ee379d78e192172b50a688023" + }, + { + "path": "oracle/unit-refractory_boundary-float64/independent-output/state.npz", + "bytes": 3951, + "sha256": "1eabc0d77607ccefd7bcc893f863a6f3dc6b4e77fb01e1ece25c05c749278dc7" + }, + { + "path": "oracle/unit-refractory_boundary-float64/run-spec.json", + "bytes": 3077, + "sha256": "89b378f4d00fd6431724acb74a1aa156a659d57fe5bb04ed140cd995b3843a64" + }, + { + "path": "oracle/unit-refractory_boundary-float64/schedule.json", + "bytes": 1807, + "sha256": "9cef827c7fcf9c050b60ec311a0e6bcdfc311c2f2689ad2437c61fa6085d7388" + }, + { + "path": "oracle/unit-refractory_boundary-float64/seed.json", + "bytes": 122, + "sha256": "05b71129e058b3685e2913a4ea737a387b407b09f521670ec4b00d19c9e3eac5" + }, + { + "path": "oracle/unit-weak_excitation-float32/actual-weights.json", + "bytes": 94, + "sha256": "db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b" + }, + { + "path": "oracle/unit-weak_excitation-float32/brian-output/events.csv", + "bytes": 16, + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801" + }, + { + "path": "oracle/unit-weak_excitation-float32/brian-output/state.npz", + "bytes": 2715, + "sha256": "dbc70d2acac1e00394f5997eea123503406ad816b65eb735824cc0b8dd8b35d7" + }, + { + "path": "oracle/unit-weak_excitation-float32/comparison.json", + "bytes": 297, + "sha256": "0ae4a6f8661f1413a315b181e1c23ea71159075c2d2e31f7e3af270a92682231" + }, + { + "path": "oracle/unit-weak_excitation-float32/completeness.csv", + "bytes": 35, + "sha256": "6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466" + }, + { + "path": "oracle/unit-weak_excitation-float32/connectivity.parquet", + "bytes": 4791, + "sha256": "27046e66bff85457b7945c5646ae0ac6f94d59065846dee47cfe90aacaee9ec1" + }, + { + "path": "oracle/unit-weak_excitation-float32/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/unit-weak_excitation-float32/external-arrivals.csv", + "bytes": 38, + "sha256": "ea42121e82562a2dbfe3c5824556db9579c107749339c5e3b47f118b12249d8a" + }, + { + "path": "oracle/unit-weak_excitation-float32/generated-code.json", + "bytes": 15279, + "sha256": "b5921dbc5e709b3405a4b1ed1521f834bb0a4999d154f5e6f772a290aaaa8de7" + }, + { + "path": "oracle/unit-weak_excitation-float32/independent-output/events.csv", + "bytes": 16, + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801" + }, + { + "path": "oracle/unit-weak_excitation-float32/independent-output/state.npz", + "bytes": 3221, + "sha256": "93ce0a2838dab0c652f6ec2fb8c96992c42fd2d1e041eb589eb8987fab2498eb" + }, + { + "path": "oracle/unit-weak_excitation-float32/run-spec.json", + "bytes": 3046, + "sha256": "fa4c5b573d984a526abe9d7abc497575e7fafe53a7fc3c9e76d4741fa0c2efbd" + }, + { + "path": "oracle/unit-weak_excitation-float32/schedule.json", + "bytes": 1584, + "sha256": "fed340d7ab41bbb7a1a18d125c8a2fb0129c1eeea1967ade86725f1e7753d116" + }, + { + "path": "oracle/unit-weak_excitation-float32/seed.json", + "bytes": 75, + "sha256": "77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830" + }, + { + "path": "oracle/unit-weak_excitation-float64/actual-weights.json", + "bytes": 94, + "sha256": "db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b" + }, + { + "path": "oracle/unit-weak_excitation-float64/brian-output/events.csv", + "bytes": 16, + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801" + }, + { + "path": "oracle/unit-weak_excitation-float64/brian-output/state.npz", + "bytes": 4217, + "sha256": "4591217f7526896243c0e3e8310a8f885e72ffad6bda56559a7edc8fbce1c0c3" + }, + { + "path": "oracle/unit-weak_excitation-float64/comparison.json", + "bytes": 297, + "sha256": "f39862589647cc0cfca90de10aebad6265a9ea94c533915991c700403cec8b60" + }, + { + "path": "oracle/unit-weak_excitation-float64/completeness.csv", + "bytes": 35, + "sha256": "6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466" + }, + { + "path": "oracle/unit-weak_excitation-float64/connectivity.parquet", + "bytes": 4791, + "sha256": "27046e66bff85457b7945c5646ae0ac6f94d59065846dee47cfe90aacaee9ec1" + }, + { + "path": "oracle/unit-weak_excitation-float64/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/unit-weak_excitation-float64/external-arrivals.csv", + "bytes": 38, + "sha256": "ea42121e82562a2dbfe3c5824556db9579c107749339c5e3b47f118b12249d8a" + }, + { + "path": "oracle/unit-weak_excitation-float64/generated-code.json", + "bytes": 15275, + "sha256": "023b8cdde1fea892e40cd5e58e75bed9d7febcd670a6c749882deb04c7d84132" + }, + { + "path": "oracle/unit-weak_excitation-float64/independent-output/events.csv", + "bytes": 16, + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801" + }, + { + "path": "oracle/unit-weak_excitation-float64/independent-output/state.npz", + "bytes": 4217, + "sha256": "4c0b86fcae0498e9e510a3333bf919a33e0b8bd19fb0d0a37aed4e102a5e61e6" + }, + { + "path": "oracle/unit-weak_excitation-float64/run-spec.json", + "bytes": 3046, + "sha256": "3ae45d37b147e6dd3a5bd596b8757e4909cbb0c1386d30e94becfd1ae331d90c" + }, + { + "path": "oracle/unit-weak_excitation-float64/schedule.json", + "bytes": 1584, + "sha256": "fed340d7ab41bbb7a1a18d125c8a2fb0129c1eeea1967ade86725f1e7753d116" + }, + { + "path": "oracle/unit-weak_excitation-float64/seed.json", + "bytes": 75, + "sha256": "77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830" + }, + { + "path": "oracle/unit-zero-float32/actual-weights.json", + "bytes": 94, + "sha256": "db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b" + }, + { + "path": "oracle/unit-zero-float32/brian-output/events.csv", + "bytes": 16, + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801" + }, + { + "path": "oracle/unit-zero-float32/brian-output/state.npz", + "bytes": 1338, + "sha256": "4e1d81697ef3df005548a1cb5891dce91fdfbee6c8cfc9586fff98c8a406e72e" + }, + { + "path": "oracle/unit-zero-float32/comparison.json", + "bytes": 297, + "sha256": "e7ac75d3c7853ec3526b7dc1bdd7f94ccba58b4392c2a704ac4bc25b34130ce5" + }, + { + "path": "oracle/unit-zero-float32/completeness.csv", + "bytes": 35, + "sha256": "6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466" + }, + { + "path": "oracle/unit-zero-float32/connectivity.parquet", + "bytes": 4791, + "sha256": "27046e66bff85457b7945c5646ae0ac6f94d59065846dee47cfe90aacaee9ec1" + }, + { + "path": "oracle/unit-zero-float32/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/unit-zero-float32/external-arrivals.csv", + "bytes": 29, + "sha256": "c5982c3d7ddbb031347cb389692bd9e78b4d851732d4192ca8d9db1f5ce31128" + }, + { + "path": "oracle/unit-zero-float32/generated-code.json", + "bytes": 11367, + "sha256": "daea9555d1ba0effb445e581ad4c74741d57b85ad6477907ff579a0957dc7242" + }, + { + "path": "oracle/unit-zero-float32/independent-output/events.csv", + "bytes": 16, + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801" + }, + { + "path": "oracle/unit-zero-float32/independent-output/state.npz", + "bytes": 1364, + "sha256": "6f45ddfec94ada6a8747f5addc1f9f4a51d737739e245c7dc10739bf7e18cfc3" + }, + { + "path": "oracle/unit-zero-float32/run-spec.json", + "bytes": 2978, + "sha256": "521bb565556d8daee043b995415ac154e9e63af899c2266b023e031acc27eef6" + }, + { + "path": "oracle/unit-zero-float32/schedule.json", + "bytes": 1212, + "sha256": "a0ae45ec1bd5e9ad66296742ebb857263b1bde14ca260bbba260b570d359dcd5" + }, + { + "path": "oracle/unit-zero-float32/seed.json", + "bytes": 75, + "sha256": "77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830" + }, + { + "path": "oracle/unit-zero-float64/actual-weights.json", + "bytes": 94, + "sha256": "db73a9c3923de0e57985b46613bf87bf599fcdd11541bb9576bc239838c8062b" + }, + { + "path": "oracle/unit-zero-float64/brian-output/events.csv", + "bytes": 16, + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801" + }, + { + "path": "oracle/unit-zero-float64/brian-output/state.npz", + "bytes": 1359, + "sha256": "08b144e5f87768b33642885391e00812222ef69ed15282fbc525c986e058dda9" + }, + { + "path": "oracle/unit-zero-float64/comparison.json", + "bytes": 295, + "sha256": "34382539f3576746462c29b584d5c3efbcc827f434e5c55d399c58e0fe5212f7" + }, + { + "path": "oracle/unit-zero-float64/completeness.csv", + "bytes": 35, + "sha256": "6798ede76e783a56766ebb676a851519cce260486155c8ea3a9c306903d95466" + }, + { + "path": "oracle/unit-zero-float64/connectivity.parquet", + "bytes": 4791, + "sha256": "27046e66bff85457b7945c5646ae0ac6f94d59065846dee47cfe90aacaee9ec1" + }, + { + "path": "oracle/unit-zero-float64/environment.json", + "bytes": 2188, + "sha256": "e048a4bb7d8508a47abafa3174336ddb1173191e6cb2a6e62207a07e287201f4" + }, + { + "path": "oracle/unit-zero-float64/external-arrivals.csv", + "bytes": 29, + "sha256": "c5982c3d7ddbb031347cb389692bd9e78b4d851732d4192ca8d9db1f5ce31128" + }, + { + "path": "oracle/unit-zero-float64/generated-code.json", + "bytes": 11359, + "sha256": "659f799403ba4fec6b169b25f70a96477681c3d79b70b54687792c29149eb96a" + }, + { + "path": "oracle/unit-zero-float64/independent-output/events.csv", + "bytes": 16, + "sha256": "7629aa69f016398dea6007af19edce7566ebf6f480c75e8af176821c20bbd801" + }, + { + "path": "oracle/unit-zero-float64/independent-output/state.npz", + "bytes": 1361, + "sha256": "d5c77d7a0fe8023a11635ab793f30a6c8e419211aea3707deddda9b2c38c6f8b" + }, + { + "path": "oracle/unit-zero-float64/run-spec.json", + "bytes": 2978, + "sha256": "d4852ae58f33a87ac68f3efea658b432833e41921dd6914b12c3e153a870f3aa" + }, + { + "path": "oracle/unit-zero-float64/schedule.json", + "bytes": 1212, + "sha256": "a0ae45ec1bd5e9ad66296742ebb857263b1bde14ca260bbba260b570d359dcd5" + }, + { + "path": "oracle/unit-zero-float64/seed.json", + "bytes": 75, + "sha256": "77d0534413e66efb896580996b934bc368c90e1fa65d19c0dd6e5e36d8eda830" + }, + { + "path": "performance/summary.json", + "bytes": 108, + "sha256": "78bc80361a72f4620b39dc0363a1c2d13cff756f2cf920f879dcdf9b7ba8e3d1" + }, + { + "path": "protocol/preregistered.json", + "bytes": 6799, + "sha256": "dd3c72b63544c8ec63e6b0f5eb4291a34f225537d63d56912998377de9cfd20e" + }, + { + "path": "regression/author-motifs.json", + "bytes": 4137, + "sha256": "ef1016ca89aad6a53209927015a423c6a7bff49bb2dc271e98ba90cd4b22a274" + }, + { + "path": "regression/feedforward-float32-repeat.json", + "bytes": 138, + "sha256": "5762a442ecb94319bed0f35b8e64adbf9d122f938c99b1249107adfd1e717cb7" + }, + { + "path": "regression/feedforward-float64-repeat.json", + "bytes": 138, + "sha256": "5762a442ecb94319bed0f35b8e64adbf9d122f938c99b1249107adfd1e717cb7" + }, + { + "path": "regression/feedforward-precision-cross-comparison.json", + "bytes": 295, + "sha256": "f428f9d3f572e8f66bce255f348861e1e1994973bdb7f5d3206924195d829383" + }, + { + "path": "regression/five-float32-repeat.json", + "bytes": 138, + "sha256": "5762a442ecb94319bed0f35b8e64adbf9d122f938c99b1249107adfd1e717cb7" + }, + { + "path": "regression/five-float64-repeat.json", + "bytes": 138, + "sha256": "5762a442ecb94319bed0f35b8e64adbf9d122f938c99b1249107adfd1e717cb7" + }, + { + "path": "regression/five-precision-cross-comparison.json", + "bytes": 298, + "sha256": "8aa2658f0be118fcfa9bafb8b07fedcb3713842aab31da5d360c1092bf73a600" + }, + { + "path": "regression/frozen-auditory-100hz.json", + "bytes": 178, + "sha256": "520d9d9fcc26f6041113f9d94b0690a487cb89d38aa5eb9888857abdfed19ea4" + }, + { + "path": "regression/frozen-auditory-10hz.json", + "bytes": 177, + "sha256": "bf6d4a709ad9020de4007f44addec2cd38b7598c4dcd58bf7cbf31b41d2807bd" + }, + { + "path": "regression/frozen-components.json", + "bytes": 1039, + "sha256": "7e2e4f200f40ef1f5df3736176344c3a300533cb12f3cfb8022845ce312701ca" + }, + { + "path": "regression/frozen-five.json", + "bytes": 1355, + "sha256": "331153e43e8b49d53c370b4990f11c3d956a5a869cb3c5331e5e216f93a694cb" + }, + { + "path": "regression/frozen-gustatory-50hz.json", + "bytes": 177, + "sha256": "800a8f2e6e5ab44608919b73a4fcfe2b35b9007418fa7cf0f4ae8e93d1fbc1fa" + }, + { + "path": "regression/frozen-mechanosensory-50hz.json", + "bytes": 183, + "sha256": "98fb62ea14694a0df78c673c3c76728d62a4036835c82f03eb2e7f2c17bf4625" + }, + { + "path": "regression/frozen-olfactory-50hz.json", + "bytes": 178, + "sha256": "9284aa8d73c36e6a0441320a9511cec65099bcf7ffd772f982e62e78ab8a3666" + }, + { + "path": "regression/no_input-float32-repeat.json", + "bytes": 138, + "sha256": "5762a442ecb94319bed0f35b8e64adbf9d122f938c99b1249107adfd1e717cb7" + }, + { + "path": "regression/no_input-float64-repeat.json", + "bytes": 138, + "sha256": "5762a442ecb94319bed0f35b8e64adbf9d122f938c99b1249107adfd1e717cb7" + }, + { + "path": "regression/no_input-precision-cross-comparison.json", + "bytes": 241, + "sha256": "76f106dbc71d81822f8711e5970da7876fe76416a14a185d7915e8480381c544" + }, + { + "path": "regression/old-integrity-after.json", + "bytes": 2750, + "sha256": "242b02c49b613d2cff475f570083b0521460c840dca51c17902f7df40e052581" + }, + { + "path": "regression/old-integrity-before.json", + "bytes": 2541, + "sha256": "0347f6273992fa842ea4f9526492362ac9774ad1194c8367b0632e7367987116" + }, + { + "path": "regression/pair-float32-repeat.json", + "bytes": 138, + "sha256": "5762a442ecb94319bed0f35b8e64adbf9d122f938c99b1249107adfd1e717cb7" + }, + { + "path": "regression/pair-float64-repeat.json", + "bytes": 138, + "sha256": "5762a442ecb94319bed0f35b8e64adbf9d122f938c99b1249107adfd1e717cb7" + }, + { + "path": "regression/pair-precision-cross-comparison.json", + "bytes": 295, + "sha256": "69c2960eb018b5d4957aea01ff60ceae6df8785315a239b07ab432b7a205a541" + }, + { + "path": "regression/preregistration-after.json", + "bytes": 16184, + "sha256": "f4a10cd026bb3e3e2d84f3fa26125462fdd09d2fedf2198f89faa7ba4bb065a3" + }, + { + "path": "regression/trio-float32-repeat.json", + "bytes": 138, + "sha256": "5762a442ecb94319bed0f35b8e64adbf9d122f938c99b1249107adfd1e717cb7" + }, + { + "path": "regression/trio-float64-repeat.json", + "bytes": 138, + "sha256": "5762a442ecb94319bed0f35b8e64adbf9d122f938c99b1249107adfd1e717cb7" + }, + { + "path": "regression/trio-precision-cross-comparison.json", + "bytes": 296, + "sha256": "ffa52f9ff04c4887c714cf1dc69159263a3cce02be605e0830f945ece22de508" + }, + { + "path": "regression/unit-above_threshold-float32.json", + "bytes": 459, + "sha256": "e3326d69d3fb00d5d6d5b2d7764426ad0a1c02b7bf7fa067dd2866e78574aedd" + }, + { + "path": "regression/unit-above_threshold-float64.json", + "bytes": 457, + "sha256": "c4720e6d20648b3292b7693a27782a755b65bc9ac40df1240c5f9c804d4c60ec" + }, + { + "path": "regression/unit-delay_18-float32.json", + "bytes": 527, + "sha256": "5fe18868d3780d899ec9fe97630e019d70420023f367109cf015b984d18478f7" + }, + { + "path": "regression/unit-delay_18-float64.json", + "bytes": 528, + "sha256": "7cde7f95e04a3870fe6b42a99493f2cba5cf8e6b20ca01d7a39d6eca02a829d9" + }, + { + "path": "regression/unit-equal_threshold-float32.json", + "bytes": 453, + "sha256": "3ff0b4c36f7f672a0110378f85d12dd144451b4210f7cc647d77df12187ff9fe" + }, + { + "path": "regression/unit-equal_threshold-float64.json", + "bytes": 452, + "sha256": "3b2ed15b07ea2422e184764006054c23d5a80810c3bbfa6ce6fee5ff2f42a7a0" + }, + { + "path": "regression/unit-fixtures.json", + "bytes": 8586, + "sha256": "d8c24f386628b3c4186017a93b1f8a30c754a8da1ad2f787318cc564e297e958" + }, + { + "path": "regression/unit-inhibition-float32.json", + "bytes": 495, + "sha256": "f18d377531f46ff53d572c649a0c5308203d207af25071190e5fe8414594c0dd" + }, + { + "path": "regression/unit-inhibition-float64.json", + "bytes": 495, + "sha256": "fe463e5e1de6dd528b31b09d3fd20b4e454ff4f6346dbd974ab9638fab3dc6b6" + }, + { + "path": "regression/unit-nonzero_g_reset-float32.json", + "bytes": 499, + "sha256": "45e62f5ca365ac7f40a74cf23094de1a8dc4f576d2ba7d56cc8866037921ea22" + }, + { + "path": "regression/unit-nonzero_g_reset-float64.json", + "bytes": 511, + "sha256": "1b04dd164e00670c3f36bc17bb5d8e974703c94296d0b12f93de06de792d417f" + }, + { + "path": "regression/unit-refractory_boundary-float32.json", + "bytes": 553, + "sha256": "cf3b2e0230e50b25e96c39b425aefafab780b01817377c0ce1e7e2aa20c43a30" + }, + { + "path": "regression/unit-refractory_boundary-float64.json", + "bytes": 552, + "sha256": "57837e95ae73d376794a8fbb615ced5f412b4c43f7f31c56f08d65d66f74ca7b" + }, + { + "path": "regression/unit-weak_excitation-float32.json", + "bytes": 500, + "sha256": "97d17aa7336ed7c51e557fbc94c673773e94aa1dd5fc9069708964051086b995" + }, + { + "path": "regression/unit-weak_excitation-float64.json", + "bytes": 500, + "sha256": "912f3ca442d089ed6e920bc0c00a8e30a1d62f34ee7a22b2f2b5e6f0544a3706" + }, + { + "path": "regression/unit-zero-float32.json", + "bytes": 474, + "sha256": "cb42c0c2025e86b4006bb9e2aa6e893f0185be55c3baa77bddece09ed691e938" + }, + { + "path": "regression/unit-zero-float64.json", + "bytes": 472, + "sha256": "4cc37c186bd7f6e6579840e516c840ae607581041b2d6da66971da611304e1d9" + } + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/actual-weights.json new file mode 100644 index 0000000..3da2958 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/actual-weights.json @@ -0,0 +1,20 @@ +{ + "edge_id": [ + 1337065, + 1467355, + 1559765, + 20992891 + ], + "weights_mv": [ + 28.599998474121094, + 64.625, + 62.14999771118164, + 11.824999809265137 + ], + "weights_volt": [ + 0.028599999845027924, + 0.06462500244379044, + 0.062150001525878906, + 0.011824999935925007 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/brian-output/events.csv new file mode 100644 index 0000000..05e673a --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/brian-output/events.csv @@ -0,0 +1,4 @@ +step,neuron_idx +0,1381 +51,1511 +104,1197 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/completeness.csv new file mode 100644 index 0000000..9592749 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/completeness.csv @@ -0,0 +1,6 @@ +global_neuron_idx,local_index +1197,0 +1381,1 +1511,2 +82312,3 +133666,4 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/generated-code.json new file mode 100644 index 0000000..5b80ca3 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/generated-code.json @@ -0,0 +1,127 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_7", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "active": true, + "code_objects": [], + "name": "oracle_seed_injection", + "order": 0, + "type": "NetworkOperation", + "when": "before_thresholds" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_8", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_4", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_4", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/run-spec.json new file mode 100644 index 0000000..399187c --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/run-spec.json @@ -0,0 +1,123 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 1000.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + 1337065, + 1467355, + 1559765, + 20992891 + ], + "external_arrivals": { + "events": 0, + "ordering": "after default_synapses.pre" + }, + "internal_voltage_unit": "volt", + "nodes": [ + 1197, + 1381, + 1511, + 82312, + 133666 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float32", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float32", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": 1381 + }, + "steps": 10000, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/schedule.json new file mode 100644 index 0000000..82854df --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+---------------------------------+----------------------+-------------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \noracle_seed_injection (NetworkOperation) | -- | 100. us (every step) | before_thresholds | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/seed.json new file mode 100644 index 0000000..2896d59 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32-repeat/seed.json @@ -0,0 +1,7 @@ +{ + "applied_mv": -43.99999976158142, + "injections": 1, + "margin_mv": 1.0, + "requested_global_node": 1381, + "spiked_at_zero": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/actual-weights.json new file mode 100644 index 0000000..3da2958 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/actual-weights.json @@ -0,0 +1,20 @@ +{ + "edge_id": [ + 1337065, + 1467355, + 1559765, + 20992891 + ], + "weights_mv": [ + 28.599998474121094, + 64.625, + 62.14999771118164, + 11.824999809265137 + ], + "weights_volt": [ + 0.028599999845027924, + 0.06462500244379044, + 0.062150001525878906, + 0.011824999935925007 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/brian-output/events.csv new file mode 100644 index 0000000..05e673a --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/brian-output/events.csv @@ -0,0 +1,4 @@ +step,neuron_idx +0,1381 +51,1511 +104,1197 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/comparison.json b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/comparison.json new file mode 100644 index 0000000..1b1d646 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/comparison.json @@ -0,0 +1,11 @@ +{ + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.00020179152488708496, + "mean_abs_mv": 1.9821550031807453e-05, + "same_event_prefix_max_abs_mv": 0.00020179152488708496, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/completeness.csv new file mode 100644 index 0000000..9592749 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/completeness.csv @@ -0,0 +1,6 @@ +global_neuron_idx,local_index +1197,0 +1381,1 +1511,2 +82312,3 +133666,4 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/generated-code.json new file mode 100644 index 0000000..e0bc716 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/generated-code.json @@ -0,0 +1,127 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_6", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "active": true, + "code_objects": [], + "name": "oracle_seed_injection", + "order": 0, + "type": "NetworkOperation", + "when": "before_thresholds" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_7", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_7", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_7", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/independent-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/independent-output/events.csv new file mode 100644 index 0000000..05e673a --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/independent-output/events.csv @@ -0,0 +1,4 @@ +step,neuron_idx +0,1381 +51,1511 +104,1197 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/run-spec.json new file mode 100644 index 0000000..399187c --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/run-spec.json @@ -0,0 +1,123 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 1000.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + 1337065, + 1467355, + 1559765, + 20992891 + ], + "external_arrivals": { + "events": 0, + "ordering": "after default_synapses.pre" + }, + "internal_voltage_unit": "volt", + "nodes": [ + 1197, + 1381, + 1511, + 82312, + 133666 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float32", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float32", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": 1381 + }, + "steps": 10000, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/schedule.json new file mode 100644 index 0000000..82854df --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+---------------------------------+----------------------+-------------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \noracle_seed_injection (NetworkOperation) | -- | 100. us (every step) | before_thresholds | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/seed.json new file mode 100644 index 0000000..2896d59 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float32/seed.json @@ -0,0 +1,7 @@ +{ + "applied_mv": -43.99999976158142, + "injections": 1, + "margin_mv": 1.0, + "requested_global_node": 1381, + "spiked_at_zero": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/actual-weights.json new file mode 100644 index 0000000..ef4c108 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/actual-weights.json @@ -0,0 +1,20 @@ +{ + "edge_id": [ + 1337065, + 1467355, + 1559765, + 20992891 + ], + "weights_mv": [ + 28.6, + 64.625, + 62.150000000000006, + 11.825000000000001 + ], + "weights_volt": [ + 0.0286, + 0.064625, + 0.062150000000000004, + 0.011825 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/brian-output/events.csv new file mode 100644 index 0000000..05e673a --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/brian-output/events.csv @@ -0,0 +1,4 @@ +step,neuron_idx +0,1381 +51,1511 +104,1197 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/completeness.csv new file mode 100644 index 0000000..9592749 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/completeness.csv @@ -0,0 +1,6 @@ +global_neuron_idx,local_index +1197,0 +1381,1 +1511,2 +82312,3 +133666,4 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/generated-code.json new file mode 100644 index 0000000..c76747a --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/generated-code.json @@ -0,0 +1,127 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_5", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "active": true, + "code_objects": [], + "name": "oracle_seed_injection", + "order": 0, + "type": "NetworkOperation", + "when": "before_thresholds" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_6", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_6", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_6", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/run-spec.json new file mode 100644 index 0000000..0af564c --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/run-spec.json @@ -0,0 +1,123 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 1000.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + 1337065, + 1467355, + 1559765, + 20992891 + ], + "external_arrivals": { + "events": 0, + "ordering": "after default_synapses.pre" + }, + "internal_voltage_unit": "volt", + "nodes": [ + 1197, + 1381, + 1511, + 82312, + 133666 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float64", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float64", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": 1381 + }, + "steps": 10000, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/schedule.json new file mode 100644 index 0000000..82854df --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+---------------------------------+----------------------+-------------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \noracle_seed_injection (NetworkOperation) | -- | 100. us (every step) | before_thresholds | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/seed.json new file mode 100644 index 0000000..37b8750 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64-repeat/seed.json @@ -0,0 +1,7 @@ +{ + "applied_mv": -44.0, + "injections": 1, + "margin_mv": 1.0, + "requested_global_node": 1381, + "spiked_at_zero": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/actual-weights.json new file mode 100644 index 0000000..ef4c108 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/actual-weights.json @@ -0,0 +1,20 @@ +{ + "edge_id": [ + 1337065, + 1467355, + 1559765, + 20992891 + ], + "weights_mv": [ + 28.6, + 64.625, + 62.150000000000006, + 11.825000000000001 + ], + "weights_volt": [ + 0.0286, + 0.064625, + 0.062150000000000004, + 0.011825 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/brian-output/events.csv new file mode 100644 index 0000000..05e673a --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/brian-output/events.csv @@ -0,0 +1,4 @@ +step,neuron_idx +0,1381 +51,1511 +104,1197 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/comparison.json b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/comparison.json new file mode 100644 index 0000000..906245d --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/comparison.json @@ -0,0 +1,11 @@ +{ + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 3.765876499528531e-13, + "mean_abs_mv": 3.893371799264915e-14, + "same_event_prefix_max_abs_mv": 3.765876499528531e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/completeness.csv new file mode 100644 index 0000000..9592749 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/completeness.csv @@ -0,0 +1,6 @@ +global_neuron_idx,local_index +1197,0 +1381,1 +1511,2 +82312,3 +133666,4 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/generated-code.json new file mode 100644 index 0000000..a9b8245 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/generated-code.json @@ -0,0 +1,127 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_4", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "active": true, + "code_objects": [], + "name": "oracle_seed_injection", + "order": 0, + "type": "NetworkOperation", + "when": "before_thresholds" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_5", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_5", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_5", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/independent-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/independent-output/events.csv new file mode 100644 index 0000000..05e673a --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/independent-output/events.csv @@ -0,0 +1,4 @@ +step,neuron_idx +0,1381 +51,1511 +104,1197 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/run-spec.json new file mode 100644 index 0000000..0af564c --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/run-spec.json @@ -0,0 +1,123 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 1000.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + 1337065, + 1467355, + 1559765, + 20992891 + ], + "external_arrivals": { + "events": 0, + "ordering": "after default_synapses.pre" + }, + "internal_voltage_unit": "volt", + "nodes": [ + 1197, + 1381, + 1511, + 82312, + 133666 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float64", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float64", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": 1381 + }, + "steps": 10000, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/schedule.json new file mode 100644 index 0000000..82854df --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+---------------------------------+----------------------+-------------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \noracle_seed_injection (NetworkOperation) | -- | 100. us (every step) | before_thresholds | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/seed.json new file mode 100644 index 0000000..37b8750 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/feedforward-float64/seed.json @@ -0,0 +1,7 @@ +{ + "applied_mv": -44.0, + "injections": 1, + "margin_mv": 1.0, + "requested_global_node": 1381, + "spiked_at_zero": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/actual-weights.json new file mode 100644 index 0000000..8ac25e1 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/actual-weights.json @@ -0,0 +1,47 @@ +{ + "edge_id": [ + 1336648, + 1336655, + 1337065, + 1467340, + 1467355, + 1467852, + 1559765, + 1559772, + 1560267, + 20992285, + 20992291, + 20992294, + 20992891 + ], + "weights_mv": [ + 57.75, + 47.29999923706055, + 28.599998474121094, + 71.2249984741211, + 64.625, + 17.599998474121094, + 62.14999771118164, + 77.82499694824219, + 19.249998092651367, + 26.125, + 15.675000190734863, + 20.899999618530273, + 11.824999809265137 + ], + "weights_volt": [ + 0.057750001549720764, + 0.04729999974370003, + 0.028599999845027924, + 0.07122500240802765, + 0.06462500244379044, + 0.01759999990463257, + 0.062150001525878906, + 0.07782500237226486, + 0.01924999989569187, + 0.026125000789761543, + 0.015675000846385956, + 0.020899999886751175, + 0.011824999935925007 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/brian-output/events.csv new file mode 100644 index 0000000..18a7e41 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/brian-output/events.csv @@ -0,0 +1,611 @@ +step,neuron_idx +0,1381 +46,1197 +51,1511 +79,1381 +91,133666 +99,1197 +120,1511 +140,1381 +163,1197 +170,133666 +185,1511 +205,1381 +220,1197 +246,1511 +259,133666 +268,1381 +288,1197 +306,1511 +330,1381 +341,133666 +351,1197 +371,1511 +391,1381 +414,1197 +422,133666 +436,1511 +457,1381 +471,1197 +497,1511 +510,133666 +519,1381 +539,1197 +557,1511 +581,1381 +592,133666 +602,1197 +622,1511 +642,1381 +665,1197 +673,133666 +687,1511 +708,1381 +722,1197 +748,1511 +761,133666 +770,1381 +790,1197 +808,1511 +832,1381 +843,133666 +853,1197 +873,1511 +881,82312 +893,1381 +916,1197 +924,133666 +938,1511 +959,1381 +973,1197 +999,1511 +1012,133666 +1021,1381 +1041,1197 +1059,1511 +1083,1381 +1094,133666 +1104,1197 +1124,1511 +1144,1381 +1167,1197 +1175,133666 +1189,1511 +1210,1381 +1224,1197 +1250,1511 +1263,133666 +1272,1381 +1292,1197 +1310,1511 +1334,1381 +1345,133666 +1355,1197 +1375,1511 +1395,1381 +1418,1197 +1426,133666 +1440,1511 +1461,1381 +1475,1197 +1501,1511 +1514,133666 +1523,1381 +1543,1197 +1561,1511 +1585,1381 +1596,133666 +1606,1197 +1626,1511 +1641,82312 +1646,1381 +1669,1197 +1677,133666 +1691,1511 +1712,1381 +1726,1197 +1752,1511 +1765,133666 +1774,1381 +1794,1197 +1812,1511 +1836,1381 +1847,133666 +1857,1197 +1877,1511 +1897,1381 +1920,1197 +1928,133666 +1942,1511 +1963,1381 +1977,1197 +2003,1511 +2016,133666 +2025,1381 +2045,1197 +2063,1511 +2087,1381 +2098,133666 +2108,1197 +2128,1511 +2148,1381 +2171,1197 +2179,133666 +2193,1511 +2214,1381 +2228,1197 +2254,1511 +2267,133666 +2276,1381 +2296,1197 +2314,1511 +2338,1381 +2349,133666 +2359,1197 +2379,1511 +2394,82312 +2399,1381 +2422,1197 +2430,133666 +2444,1511 +2465,1381 +2479,1197 +2505,1511 +2518,133666 +2527,1381 +2547,1197 +2565,1511 +2589,1381 +2600,133666 +2610,1197 +2630,1511 +2650,1381 +2673,1197 +2681,133666 +2695,1511 +2716,1381 +2730,1197 +2756,1511 +2769,133666 +2778,1381 +2798,1197 +2816,1511 +2840,1381 +2851,133666 +2861,1197 +2881,1511 +2901,1381 +2924,1197 +2932,133666 +2946,1511 +2967,1381 +2981,1197 +3007,1511 +3020,133666 +3029,1381 +3049,1197 +3067,1511 +3091,1381 +3102,133666 +3112,1197 +3132,1511 +3147,82312 +3152,1381 +3175,1197 +3183,133666 +3197,1511 +3218,1381 +3232,1197 +3258,1511 +3271,133666 +3280,1381 +3300,1197 +3318,1511 +3342,1381 +3353,133666 +3363,1197 +3383,1511 +3403,1381 +3426,1197 +3434,133666 +3448,1511 +3469,1381 +3483,1197 +3509,1511 +3522,133666 +3531,1381 +3551,1197 +3569,1511 +3593,1381 +3604,133666 +3614,1197 +3634,1511 +3654,1381 +3677,1197 +3685,133666 +3699,1511 +3720,1381 +3734,1197 +3760,1511 +3773,133666 +3782,1381 +3802,1197 +3820,1511 +3844,1381 +3855,133666 +3865,1197 +3885,1511 +3900,82312 +3905,1381 +3928,1197 +3936,133666 +3950,1511 +3971,1381 +3985,1197 +4011,1511 +4024,133666 +4033,1381 +4053,1197 +4071,1511 +4095,1381 +4106,133666 +4116,1197 +4136,1511 +4156,1381 +4179,1197 +4187,133666 +4201,1511 +4222,1381 +4236,1197 +4262,1511 +4275,133666 +4284,1381 +4304,1197 +4322,1511 +4346,1381 +4357,133666 +4367,1197 +4387,1511 +4407,1381 +4430,1197 +4438,133666 +4452,1511 +4473,1381 +4487,1197 +4513,1511 +4526,133666 +4535,1381 +4555,1197 +4573,1511 +4597,1381 +4608,133666 +4618,1197 +4638,1511 +4653,82312 +4658,1381 +4681,1197 +4689,133666 +4703,1511 +4724,1381 +4738,1197 +4764,1511 +4777,133666 +4786,1381 +4806,1197 +4824,1511 +4848,1381 +4859,133666 +4869,1197 +4889,1511 +4909,1381 +4932,1197 +4940,133666 +4954,1511 +4975,1381 +4989,1197 +5015,1511 +5028,133666 +5037,1381 +5057,1197 +5075,1511 +5099,1381 +5110,133666 +5120,1197 +5140,1511 +5160,1381 +5183,1197 +5191,133666 +5205,1511 +5226,1381 +5240,1197 +5266,1511 +5279,133666 +5288,1381 +5308,1197 +5326,1511 +5350,1381 +5361,133666 +5371,1197 +5391,1511 +5406,82312 +5411,1381 +5434,1197 +5442,133666 +5456,1511 +5477,1381 +5491,1197 +5517,1511 +5530,133666 +5539,1381 +5559,1197 +5577,1511 +5601,1381 +5612,133666 +5622,1197 +5642,1511 +5662,1381 +5685,1197 +5693,133666 +5707,1511 +5728,1381 +5742,1197 +5768,1511 +5781,133666 +5790,1381 +5810,1197 +5828,1511 +5852,1381 +5863,133666 +5873,1197 +5893,1511 +5913,1381 +5936,1197 +5944,133666 +5958,1511 +5979,1381 +5993,1197 +6019,1511 +6032,133666 +6041,1381 +6061,1197 +6079,1511 +6103,1381 +6114,133666 +6124,1197 +6144,1511 +6159,82312 +6164,1381 +6187,1197 +6195,133666 +6209,1511 +6230,1381 +6244,1197 +6270,1511 +6283,133666 +6292,1381 +6312,1197 +6330,1511 +6354,1381 +6365,133666 +6375,1197 +6395,1511 +6415,1381 +6438,1197 +6446,133666 +6460,1511 +6481,1381 +6495,1197 +6521,1511 +6534,133666 +6543,1381 +6563,1197 +6581,1511 +6605,1381 +6616,133666 +6626,1197 +6646,1511 +6666,1381 +6689,1197 +6697,133666 +6711,1511 +6732,1381 +6746,1197 +6772,1511 +6785,133666 +6794,1381 +6814,1197 +6832,1511 +6856,1381 +6867,133666 +6877,1197 +6897,1511 +6912,82312 +6917,1381 +6940,1197 +6948,133666 +6962,1511 +6983,1381 +6997,1197 +7023,1511 +7036,133666 +7045,1381 +7065,1197 +7083,1511 +7107,1381 +7118,133666 +7128,1197 +7148,1511 +7168,1381 +7191,1197 +7199,133666 +7213,1511 +7234,1381 +7248,1197 +7274,1511 +7287,133666 +7296,1381 +7316,1197 +7334,1511 +7358,1381 +7369,133666 +7379,1197 +7399,1511 +7419,1381 +7442,1197 +7450,133666 +7464,1511 +7485,1381 +7499,1197 +7525,1511 +7538,133666 +7547,1381 +7567,1197 +7585,1511 +7609,1381 +7620,133666 +7630,1197 +7650,1511 +7665,82312 +7670,1381 +7693,1197 +7701,133666 +7715,1511 +7736,1381 +7750,1197 +7776,1511 +7789,133666 +7798,1381 +7818,1197 +7836,1511 +7860,1381 +7871,133666 +7881,1197 +7901,1511 +7921,1381 +7944,1197 +7952,133666 +7966,1511 +7987,1381 +8001,1197 +8027,1511 +8040,133666 +8049,1381 +8069,1197 +8087,1511 +8111,1381 +8122,133666 +8132,1197 +8152,1511 +8172,1381 +8195,1197 +8203,133666 +8217,1511 +8238,1381 +8252,1197 +8278,1511 +8291,133666 +8300,1381 +8320,1197 +8338,1511 +8362,1381 +8373,133666 +8383,1197 +8403,1511 +8418,82312 +8423,1381 +8446,1197 +8454,133666 +8468,1511 +8489,1381 +8503,1197 +8529,1511 +8542,133666 +8551,1381 +8571,1197 +8589,1511 +8613,1381 +8624,133666 +8634,1197 +8654,1511 +8674,1381 +8697,1197 +8705,133666 +8719,1511 +8740,1381 +8754,1197 +8780,1511 +8793,133666 +8802,1381 +8822,1197 +8840,1511 +8864,1381 +8875,133666 +8885,1197 +8905,1511 +8925,1381 +8948,1197 +8956,133666 +8970,1511 +8991,1381 +9005,1197 +9031,1511 +9044,133666 +9053,1381 +9073,1197 +9091,1511 +9115,1381 +9126,133666 +9136,1197 +9156,1511 +9171,82312 +9176,1381 +9199,1197 +9207,133666 +9221,1511 +9242,1381 +9256,1197 +9282,1511 +9295,133666 +9304,1381 +9324,1197 +9342,1511 +9366,1381 +9377,133666 +9387,1197 +9407,1511 +9427,1381 +9450,1197 +9458,133666 +9472,1511 +9493,1381 +9507,1197 +9533,1511 +9546,133666 +9555,1381 +9575,1197 +9593,1511 +9617,1381 +9628,133666 +9638,1197 +9658,1511 +9678,1381 +9701,1197 +9709,133666 +9723,1511 +9744,1381 +9758,1197 +9784,1511 +9797,133666 +9806,1381 +9826,1197 +9844,1511 +9868,1381 +9879,133666 +9889,1197 +9909,1511 +9924,82312 +9929,1381 +9952,1197 +9960,133666 +9974,1511 +9995,1381 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/completeness.csv new file mode 100644 index 0000000..9592749 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/completeness.csv @@ -0,0 +1,6 @@ +global_neuron_idx,local_index +1197,0 +1381,1 +1511,2 +82312,3 +133666,4 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/generated-code.json new file mode 100644 index 0000000..173c129 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/generated-code.json @@ -0,0 +1,127 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_3", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "active": true, + "code_objects": [], + "name": "oracle_seed_injection", + "order": 0, + "type": "NetworkOperation", + "when": "before_thresholds" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_4", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_4", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_4", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/run-spec.json new file mode 100644 index 0000000..4539c9b --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/run-spec.json @@ -0,0 +1,132 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 1000.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + 1336648, + 1336655, + 1337065, + 1467340, + 1467355, + 1467852, + 1559765, + 1559772, + 1560267, + 20992285, + 20992291, + 20992294, + 20992891 + ], + "external_arrivals": { + "events": 0, + "ordering": "after default_synapses.pre" + }, + "internal_voltage_unit": "volt", + "nodes": [ + 1197, + 1381, + 1511, + 82312, + 133666 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float32", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float32", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": 1381 + }, + "steps": 10000, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/schedule.json new file mode 100644 index 0000000..82854df --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+---------------------------------+----------------------+-------------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \noracle_seed_injection (NetworkOperation) | -- | 100. us (every step) | before_thresholds | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/seed.json new file mode 100644 index 0000000..2896d59 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float32-repeat/seed.json @@ -0,0 +1,7 @@ +{ + "applied_mv": -43.99999976158142, + "injections": 1, + "margin_mv": 1.0, + "requested_global_node": 1381, + "spiked_at_zero": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float32/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/five-float32/actual-weights.json new file mode 100644 index 0000000..8ac25e1 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float32/actual-weights.json @@ -0,0 +1,47 @@ +{ + "edge_id": [ + 1336648, + 1336655, + 1337065, + 1467340, + 1467355, + 1467852, + 1559765, + 1559772, + 1560267, + 20992285, + 20992291, + 20992294, + 20992891 + ], + "weights_mv": [ + 57.75, + 47.29999923706055, + 28.599998474121094, + 71.2249984741211, + 64.625, + 17.599998474121094, + 62.14999771118164, + 77.82499694824219, + 19.249998092651367, + 26.125, + 15.675000190734863, + 20.899999618530273, + 11.824999809265137 + ], + "weights_volt": [ + 0.057750001549720764, + 0.04729999974370003, + 0.028599999845027924, + 0.07122500240802765, + 0.06462500244379044, + 0.01759999990463257, + 0.062150001525878906, + 0.07782500237226486, + 0.01924999989569187, + 0.026125000789761543, + 0.015675000846385956, + 0.020899999886751175, + 0.011824999935925007 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float32/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/five-float32/brian-output/events.csv new file mode 100644 index 0000000..18a7e41 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float32/brian-output/events.csv @@ -0,0 +1,611 @@ +step,neuron_idx +0,1381 +46,1197 +51,1511 +79,1381 +91,133666 +99,1197 +120,1511 +140,1381 +163,1197 +170,133666 +185,1511 +205,1381 +220,1197 +246,1511 +259,133666 +268,1381 +288,1197 +306,1511 +330,1381 +341,133666 +351,1197 +371,1511 +391,1381 +414,1197 +422,133666 +436,1511 +457,1381 +471,1197 +497,1511 +510,133666 +519,1381 +539,1197 +557,1511 +581,1381 +592,133666 +602,1197 +622,1511 +642,1381 +665,1197 +673,133666 +687,1511 +708,1381 +722,1197 +748,1511 +761,133666 +770,1381 +790,1197 +808,1511 +832,1381 +843,133666 +853,1197 +873,1511 +881,82312 +893,1381 +916,1197 +924,133666 +938,1511 +959,1381 +973,1197 +999,1511 +1012,133666 +1021,1381 +1041,1197 +1059,1511 +1083,1381 +1094,133666 +1104,1197 +1124,1511 +1144,1381 +1167,1197 +1175,133666 +1189,1511 +1210,1381 +1224,1197 +1250,1511 +1263,133666 +1272,1381 +1292,1197 +1310,1511 +1334,1381 +1345,133666 +1355,1197 +1375,1511 +1395,1381 +1418,1197 +1426,133666 +1440,1511 +1461,1381 +1475,1197 +1501,1511 +1514,133666 +1523,1381 +1543,1197 +1561,1511 +1585,1381 +1596,133666 +1606,1197 +1626,1511 +1641,82312 +1646,1381 +1669,1197 +1677,133666 +1691,1511 +1712,1381 +1726,1197 +1752,1511 +1765,133666 +1774,1381 +1794,1197 +1812,1511 +1836,1381 +1847,133666 +1857,1197 +1877,1511 +1897,1381 +1920,1197 +1928,133666 +1942,1511 +1963,1381 +1977,1197 +2003,1511 +2016,133666 +2025,1381 +2045,1197 +2063,1511 +2087,1381 +2098,133666 +2108,1197 +2128,1511 +2148,1381 +2171,1197 +2179,133666 +2193,1511 +2214,1381 +2228,1197 +2254,1511 +2267,133666 +2276,1381 +2296,1197 +2314,1511 +2338,1381 +2349,133666 +2359,1197 +2379,1511 +2394,82312 +2399,1381 +2422,1197 +2430,133666 +2444,1511 +2465,1381 +2479,1197 +2505,1511 +2518,133666 +2527,1381 +2547,1197 +2565,1511 +2589,1381 +2600,133666 +2610,1197 +2630,1511 +2650,1381 +2673,1197 +2681,133666 +2695,1511 +2716,1381 +2730,1197 +2756,1511 +2769,133666 +2778,1381 +2798,1197 +2816,1511 +2840,1381 +2851,133666 +2861,1197 +2881,1511 +2901,1381 +2924,1197 +2932,133666 +2946,1511 +2967,1381 +2981,1197 +3007,1511 +3020,133666 +3029,1381 +3049,1197 +3067,1511 +3091,1381 +3102,133666 +3112,1197 +3132,1511 +3147,82312 +3152,1381 +3175,1197 +3183,133666 +3197,1511 +3218,1381 +3232,1197 +3258,1511 +3271,133666 +3280,1381 +3300,1197 +3318,1511 +3342,1381 +3353,133666 +3363,1197 +3383,1511 +3403,1381 +3426,1197 +3434,133666 +3448,1511 +3469,1381 +3483,1197 +3509,1511 +3522,133666 +3531,1381 +3551,1197 +3569,1511 +3593,1381 +3604,133666 +3614,1197 +3634,1511 +3654,1381 +3677,1197 +3685,133666 +3699,1511 +3720,1381 +3734,1197 +3760,1511 +3773,133666 +3782,1381 +3802,1197 +3820,1511 +3844,1381 +3855,133666 +3865,1197 +3885,1511 +3900,82312 +3905,1381 +3928,1197 +3936,133666 +3950,1511 +3971,1381 +3985,1197 +4011,1511 +4024,133666 +4033,1381 +4053,1197 +4071,1511 +4095,1381 +4106,133666 +4116,1197 +4136,1511 +4156,1381 +4179,1197 +4187,133666 +4201,1511 +4222,1381 +4236,1197 +4262,1511 +4275,133666 +4284,1381 +4304,1197 +4322,1511 +4346,1381 +4357,133666 +4367,1197 +4387,1511 +4407,1381 +4430,1197 +4438,133666 +4452,1511 +4473,1381 +4487,1197 +4513,1511 +4526,133666 +4535,1381 +4555,1197 +4573,1511 +4597,1381 +4608,133666 +4618,1197 +4638,1511 +4653,82312 +4658,1381 +4681,1197 +4689,133666 +4703,1511 +4724,1381 +4738,1197 +4764,1511 +4777,133666 +4786,1381 +4806,1197 +4824,1511 +4848,1381 +4859,133666 +4869,1197 +4889,1511 +4909,1381 +4932,1197 +4940,133666 +4954,1511 +4975,1381 +4989,1197 +5015,1511 +5028,133666 +5037,1381 +5057,1197 +5075,1511 +5099,1381 +5110,133666 +5120,1197 +5140,1511 +5160,1381 +5183,1197 +5191,133666 +5205,1511 +5226,1381 +5240,1197 +5266,1511 +5279,133666 +5288,1381 +5308,1197 +5326,1511 +5350,1381 +5361,133666 +5371,1197 +5391,1511 +5406,82312 +5411,1381 +5434,1197 +5442,133666 +5456,1511 +5477,1381 +5491,1197 +5517,1511 +5530,133666 +5539,1381 +5559,1197 +5577,1511 +5601,1381 +5612,133666 +5622,1197 +5642,1511 +5662,1381 +5685,1197 +5693,133666 +5707,1511 +5728,1381 +5742,1197 +5768,1511 +5781,133666 +5790,1381 +5810,1197 +5828,1511 +5852,1381 +5863,133666 +5873,1197 +5893,1511 +5913,1381 +5936,1197 +5944,133666 +5958,1511 +5979,1381 +5993,1197 +6019,1511 +6032,133666 +6041,1381 +6061,1197 +6079,1511 +6103,1381 +6114,133666 +6124,1197 +6144,1511 +6159,82312 +6164,1381 +6187,1197 +6195,133666 +6209,1511 +6230,1381 +6244,1197 +6270,1511 +6283,133666 +6292,1381 +6312,1197 +6330,1511 +6354,1381 +6365,133666 +6375,1197 +6395,1511 +6415,1381 +6438,1197 +6446,133666 +6460,1511 +6481,1381 +6495,1197 +6521,1511 +6534,133666 +6543,1381 +6563,1197 +6581,1511 +6605,1381 +6616,133666 +6626,1197 +6646,1511 +6666,1381 +6689,1197 +6697,133666 +6711,1511 +6732,1381 +6746,1197 +6772,1511 +6785,133666 +6794,1381 +6814,1197 +6832,1511 +6856,1381 +6867,133666 +6877,1197 +6897,1511 +6912,82312 +6917,1381 +6940,1197 +6948,133666 +6962,1511 +6983,1381 +6997,1197 +7023,1511 +7036,133666 +7045,1381 +7065,1197 +7083,1511 +7107,1381 +7118,133666 +7128,1197 +7148,1511 +7168,1381 +7191,1197 +7199,133666 +7213,1511 +7234,1381 +7248,1197 +7274,1511 +7287,133666 +7296,1381 +7316,1197 +7334,1511 +7358,1381 +7369,133666 +7379,1197 +7399,1511 +7419,1381 +7442,1197 +7450,133666 +7464,1511 +7485,1381 +7499,1197 +7525,1511 +7538,133666 +7547,1381 +7567,1197 +7585,1511 +7609,1381 +7620,133666 +7630,1197 +7650,1511 +7665,82312 +7670,1381 +7693,1197 +7701,133666 +7715,1511 +7736,1381 +7750,1197 +7776,1511 +7789,133666 +7798,1381 +7818,1197 +7836,1511 +7860,1381 +7871,133666 +7881,1197 +7901,1511 +7921,1381 +7944,1197 +7952,133666 +7966,1511 +7987,1381 +8001,1197 +8027,1511 +8040,133666 +8049,1381 +8069,1197 +8087,1511 +8111,1381 +8122,133666 +8132,1197 +8152,1511 +8172,1381 +8195,1197 +8203,133666 +8217,1511 +8238,1381 +8252,1197 +8278,1511 +8291,133666 +8300,1381 +8320,1197 +8338,1511 +8362,1381 +8373,133666 +8383,1197 +8403,1511 +8418,82312 +8423,1381 +8446,1197 +8454,133666 +8468,1511 +8489,1381 +8503,1197 +8529,1511 +8542,133666 +8551,1381 +8571,1197 +8589,1511 +8613,1381 +8624,133666 +8634,1197 +8654,1511 +8674,1381 +8697,1197 +8705,133666 +8719,1511 +8740,1381 +8754,1197 +8780,1511 +8793,133666 +8802,1381 +8822,1197 +8840,1511 +8864,1381 +8875,133666 +8885,1197 +8905,1511 +8925,1381 +8948,1197 +8956,133666 +8970,1511 +8991,1381 +9005,1197 +9031,1511 +9044,133666 +9053,1381 +9073,1197 +9091,1511 +9115,1381 +9126,133666 +9136,1197 +9156,1511 +9171,82312 +9176,1381 +9199,1197 +9207,133666 +9221,1511 +9242,1381 +9256,1197 +9282,1511 +9295,133666 +9304,1381 +9324,1197 +9342,1511 +9366,1381 +9377,133666 +9387,1197 +9407,1511 +9427,1381 +9450,1197 +9458,133666 +9472,1511 +9493,1381 +9507,1197 +9533,1511 +9546,133666 +9555,1381 +9575,1197 +9593,1511 +9617,1381 +9628,133666 +9638,1197 +9658,1511 +9678,1381 +9701,1197 +9709,133666 +9723,1511 +9744,1381 +9758,1197 +9784,1511 +9797,133666 +9806,1381 +9826,1197 +9844,1511 +9868,1381 +9879,133666 +9889,1197 +9909,1511 +9924,82312 +9929,1381 +9952,1197 +9960,133666 +9974,1511 +9995,1381 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float32/comparison.json b/registry/phase4ad-author-semantics/evidence/oracle/five-float32/comparison.json new file mode 100644 index 0000000..1c36ba4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float32/comparison.json @@ -0,0 +1,11 @@ +{ + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.0002123713493347168, + "mean_abs_mv": 1.7726411819458007e-05, + "same_event_prefix_max_abs_mv": 0.0002123713493347168, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float32/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/five-float32/completeness.csv new file mode 100644 index 0000000..9592749 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float32/completeness.csv @@ -0,0 +1,6 @@ +global_neuron_idx,local_index +1197,0 +1381,1 +1511,2 +82312,3 +133666,4 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float32/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/five-float32/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float32/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float32/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/five-float32/generated-code.json new file mode 100644 index 0000000..c284726 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float32/generated-code.json @@ -0,0 +1,127 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_1", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "active": true, + "code_objects": [], + "name": "oracle_seed_injection", + "order": 0, + "type": "NetworkOperation", + "when": "before_thresholds" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_3", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_3", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_3", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float32/independent-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/five-float32/independent-output/events.csv new file mode 100644 index 0000000..18a7e41 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float32/independent-output/events.csv @@ -0,0 +1,611 @@ +step,neuron_idx +0,1381 +46,1197 +51,1511 +79,1381 +91,133666 +99,1197 +120,1511 +140,1381 +163,1197 +170,133666 +185,1511 +205,1381 +220,1197 +246,1511 +259,133666 +268,1381 +288,1197 +306,1511 +330,1381 +341,133666 +351,1197 +371,1511 +391,1381 +414,1197 +422,133666 +436,1511 +457,1381 +471,1197 +497,1511 +510,133666 +519,1381 +539,1197 +557,1511 +581,1381 +592,133666 +602,1197 +622,1511 +642,1381 +665,1197 +673,133666 +687,1511 +708,1381 +722,1197 +748,1511 +761,133666 +770,1381 +790,1197 +808,1511 +832,1381 +843,133666 +853,1197 +873,1511 +881,82312 +893,1381 +916,1197 +924,133666 +938,1511 +959,1381 +973,1197 +999,1511 +1012,133666 +1021,1381 +1041,1197 +1059,1511 +1083,1381 +1094,133666 +1104,1197 +1124,1511 +1144,1381 +1167,1197 +1175,133666 +1189,1511 +1210,1381 +1224,1197 +1250,1511 +1263,133666 +1272,1381 +1292,1197 +1310,1511 +1334,1381 +1345,133666 +1355,1197 +1375,1511 +1395,1381 +1418,1197 +1426,133666 +1440,1511 +1461,1381 +1475,1197 +1501,1511 +1514,133666 +1523,1381 +1543,1197 +1561,1511 +1585,1381 +1596,133666 +1606,1197 +1626,1511 +1641,82312 +1646,1381 +1669,1197 +1677,133666 +1691,1511 +1712,1381 +1726,1197 +1752,1511 +1765,133666 +1774,1381 +1794,1197 +1812,1511 +1836,1381 +1847,133666 +1857,1197 +1877,1511 +1897,1381 +1920,1197 +1928,133666 +1942,1511 +1963,1381 +1977,1197 +2003,1511 +2016,133666 +2025,1381 +2045,1197 +2063,1511 +2087,1381 +2098,133666 +2108,1197 +2128,1511 +2148,1381 +2171,1197 +2179,133666 +2193,1511 +2214,1381 +2228,1197 +2254,1511 +2267,133666 +2276,1381 +2296,1197 +2314,1511 +2338,1381 +2349,133666 +2359,1197 +2379,1511 +2394,82312 +2399,1381 +2422,1197 +2430,133666 +2444,1511 +2465,1381 +2479,1197 +2505,1511 +2518,133666 +2527,1381 +2547,1197 +2565,1511 +2589,1381 +2600,133666 +2610,1197 +2630,1511 +2650,1381 +2673,1197 +2681,133666 +2695,1511 +2716,1381 +2730,1197 +2756,1511 +2769,133666 +2778,1381 +2798,1197 +2816,1511 +2840,1381 +2851,133666 +2861,1197 +2881,1511 +2901,1381 +2924,1197 +2932,133666 +2946,1511 +2967,1381 +2981,1197 +3007,1511 +3020,133666 +3029,1381 +3049,1197 +3067,1511 +3091,1381 +3102,133666 +3112,1197 +3132,1511 +3147,82312 +3152,1381 +3175,1197 +3183,133666 +3197,1511 +3218,1381 +3232,1197 +3258,1511 +3271,133666 +3280,1381 +3300,1197 +3318,1511 +3342,1381 +3353,133666 +3363,1197 +3383,1511 +3403,1381 +3426,1197 +3434,133666 +3448,1511 +3469,1381 +3483,1197 +3509,1511 +3522,133666 +3531,1381 +3551,1197 +3569,1511 +3593,1381 +3604,133666 +3614,1197 +3634,1511 +3654,1381 +3677,1197 +3685,133666 +3699,1511 +3720,1381 +3734,1197 +3760,1511 +3773,133666 +3782,1381 +3802,1197 +3820,1511 +3844,1381 +3855,133666 +3865,1197 +3885,1511 +3900,82312 +3905,1381 +3928,1197 +3936,133666 +3950,1511 +3971,1381 +3985,1197 +4011,1511 +4024,133666 +4033,1381 +4053,1197 +4071,1511 +4095,1381 +4106,133666 +4116,1197 +4136,1511 +4156,1381 +4179,1197 +4187,133666 +4201,1511 +4222,1381 +4236,1197 +4262,1511 +4275,133666 +4284,1381 +4304,1197 +4322,1511 +4346,1381 +4357,133666 +4367,1197 +4387,1511 +4407,1381 +4430,1197 +4438,133666 +4452,1511 +4473,1381 +4487,1197 +4513,1511 +4526,133666 +4535,1381 +4555,1197 +4573,1511 +4597,1381 +4608,133666 +4618,1197 +4638,1511 +4653,82312 +4658,1381 +4681,1197 +4689,133666 +4703,1511 +4724,1381 +4738,1197 +4764,1511 +4777,133666 +4786,1381 +4806,1197 +4824,1511 +4848,1381 +4859,133666 +4869,1197 +4889,1511 +4909,1381 +4932,1197 +4940,133666 +4954,1511 +4975,1381 +4989,1197 +5015,1511 +5028,133666 +5037,1381 +5057,1197 +5075,1511 +5099,1381 +5110,133666 +5120,1197 +5140,1511 +5160,1381 +5183,1197 +5191,133666 +5205,1511 +5226,1381 +5240,1197 +5266,1511 +5279,133666 +5288,1381 +5308,1197 +5326,1511 +5350,1381 +5361,133666 +5371,1197 +5391,1511 +5406,82312 +5411,1381 +5434,1197 +5442,133666 +5456,1511 +5477,1381 +5491,1197 +5517,1511 +5530,133666 +5539,1381 +5559,1197 +5577,1511 +5601,1381 +5612,133666 +5622,1197 +5642,1511 +5662,1381 +5685,1197 +5693,133666 +5707,1511 +5728,1381 +5742,1197 +5768,1511 +5781,133666 +5790,1381 +5810,1197 +5828,1511 +5852,1381 +5863,133666 +5873,1197 +5893,1511 +5913,1381 +5936,1197 +5944,133666 +5958,1511 +5979,1381 +5993,1197 +6019,1511 +6032,133666 +6041,1381 +6061,1197 +6079,1511 +6103,1381 +6114,133666 +6124,1197 +6144,1511 +6159,82312 +6164,1381 +6187,1197 +6195,133666 +6209,1511 +6230,1381 +6244,1197 +6270,1511 +6283,133666 +6292,1381 +6312,1197 +6330,1511 +6354,1381 +6365,133666 +6375,1197 +6395,1511 +6415,1381 +6438,1197 +6446,133666 +6460,1511 +6481,1381 +6495,1197 +6521,1511 +6534,133666 +6543,1381 +6563,1197 +6581,1511 +6605,1381 +6616,133666 +6626,1197 +6646,1511 +6666,1381 +6689,1197 +6697,133666 +6711,1511 +6732,1381 +6746,1197 +6772,1511 +6785,133666 +6794,1381 +6814,1197 +6832,1511 +6856,1381 +6867,133666 +6877,1197 +6897,1511 +6912,82312 +6917,1381 +6940,1197 +6948,133666 +6962,1511 +6983,1381 +6997,1197 +7023,1511 +7036,133666 +7045,1381 +7065,1197 +7083,1511 +7107,1381 +7118,133666 +7128,1197 +7148,1511 +7168,1381 +7191,1197 +7199,133666 +7213,1511 +7234,1381 +7248,1197 +7274,1511 +7287,133666 +7296,1381 +7316,1197 +7334,1511 +7358,1381 +7369,133666 +7379,1197 +7399,1511 +7419,1381 +7442,1197 +7450,133666 +7464,1511 +7485,1381 +7499,1197 +7525,1511 +7538,133666 +7547,1381 +7567,1197 +7585,1511 +7609,1381 +7620,133666 +7630,1197 +7650,1511 +7665,82312 +7670,1381 +7693,1197 +7701,133666 +7715,1511 +7736,1381 +7750,1197 +7776,1511 +7789,133666 +7798,1381 +7818,1197 +7836,1511 +7860,1381 +7871,133666 +7881,1197 +7901,1511 +7921,1381 +7944,1197 +7952,133666 +7966,1511 +7987,1381 +8001,1197 +8027,1511 +8040,133666 +8049,1381 +8069,1197 +8087,1511 +8111,1381 +8122,133666 +8132,1197 +8152,1511 +8172,1381 +8195,1197 +8203,133666 +8217,1511 +8238,1381 +8252,1197 +8278,1511 +8291,133666 +8300,1381 +8320,1197 +8338,1511 +8362,1381 +8373,133666 +8383,1197 +8403,1511 +8418,82312 +8423,1381 +8446,1197 +8454,133666 +8468,1511 +8489,1381 +8503,1197 +8529,1511 +8542,133666 +8551,1381 +8571,1197 +8589,1511 +8613,1381 +8624,133666 +8634,1197 +8654,1511 +8674,1381 +8697,1197 +8705,133666 +8719,1511 +8740,1381 +8754,1197 +8780,1511 +8793,133666 +8802,1381 +8822,1197 +8840,1511 +8864,1381 +8875,133666 +8885,1197 +8905,1511 +8925,1381 +8948,1197 +8956,133666 +8970,1511 +8991,1381 +9005,1197 +9031,1511 +9044,133666 +9053,1381 +9073,1197 +9091,1511 +9115,1381 +9126,133666 +9136,1197 +9156,1511 +9171,82312 +9176,1381 +9199,1197 +9207,133666 +9221,1511 +9242,1381 +9256,1197 +9282,1511 +9295,133666 +9304,1381 +9324,1197 +9342,1511 +9366,1381 +9377,133666 +9387,1197 +9407,1511 +9427,1381 +9450,1197 +9458,133666 +9472,1511 +9493,1381 +9507,1197 +9533,1511 +9546,133666 +9555,1381 +9575,1197 +9593,1511 +9617,1381 +9628,133666 +9638,1197 +9658,1511 +9678,1381 +9701,1197 +9709,133666 +9723,1511 +9744,1381 +9758,1197 +9784,1511 +9797,133666 +9806,1381 +9826,1197 +9844,1511 +9868,1381 +9879,133666 +9889,1197 +9909,1511 +9924,82312 +9929,1381 +9952,1197 +9960,133666 +9974,1511 +9995,1381 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float32/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/five-float32/run-spec.json new file mode 100644 index 0000000..4539c9b --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float32/run-spec.json @@ -0,0 +1,132 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 1000.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + 1336648, + 1336655, + 1337065, + 1467340, + 1467355, + 1467852, + 1559765, + 1559772, + 1560267, + 20992285, + 20992291, + 20992294, + 20992891 + ], + "external_arrivals": { + "events": 0, + "ordering": "after default_synapses.pre" + }, + "internal_voltage_unit": "volt", + "nodes": [ + 1197, + 1381, + 1511, + 82312, + 133666 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float32", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float32", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": 1381 + }, + "steps": 10000, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float32/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/five-float32/schedule.json new file mode 100644 index 0000000..82854df --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float32/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+---------------------------------+----------------------+-------------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \noracle_seed_injection (NetworkOperation) | -- | 100. us (every step) | before_thresholds | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float32/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/five-float32/seed.json new file mode 100644 index 0000000..2896d59 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float32/seed.json @@ -0,0 +1,7 @@ +{ + "applied_mv": -43.99999976158142, + "injections": 1, + "margin_mv": 1.0, + "requested_global_node": 1381, + "spiked_at_zero": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/actual-weights.json new file mode 100644 index 0000000..dd3aa41 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/actual-weights.json @@ -0,0 +1,47 @@ +{ + "edge_id": [ + 1336648, + 1336655, + 1337065, + 1467340, + 1467355, + 1467852, + 1559765, + 1559772, + 1560267, + 20992285, + 20992291, + 20992294, + 20992891 + ], + "weights_mv": [ + 57.75, + 47.300000000000004, + 28.6, + 71.22500000000001, + 64.625, + 17.6, + 62.150000000000006, + 77.825, + 19.25, + 26.125000000000004, + 15.675, + 20.900000000000002, + 11.825000000000001 + ], + "weights_volt": [ + 0.05775, + 0.0473, + 0.0286, + 0.07122500000000001, + 0.064625, + 0.0176, + 0.062150000000000004, + 0.077825, + 0.01925, + 0.026125000000000002, + 0.015675, + 0.020900000000000002, + 0.011825 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/brian-output/events.csv new file mode 100644 index 0000000..18a7e41 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/brian-output/events.csv @@ -0,0 +1,611 @@ +step,neuron_idx +0,1381 +46,1197 +51,1511 +79,1381 +91,133666 +99,1197 +120,1511 +140,1381 +163,1197 +170,133666 +185,1511 +205,1381 +220,1197 +246,1511 +259,133666 +268,1381 +288,1197 +306,1511 +330,1381 +341,133666 +351,1197 +371,1511 +391,1381 +414,1197 +422,133666 +436,1511 +457,1381 +471,1197 +497,1511 +510,133666 +519,1381 +539,1197 +557,1511 +581,1381 +592,133666 +602,1197 +622,1511 +642,1381 +665,1197 +673,133666 +687,1511 +708,1381 +722,1197 +748,1511 +761,133666 +770,1381 +790,1197 +808,1511 +832,1381 +843,133666 +853,1197 +873,1511 +881,82312 +893,1381 +916,1197 +924,133666 +938,1511 +959,1381 +973,1197 +999,1511 +1012,133666 +1021,1381 +1041,1197 +1059,1511 +1083,1381 +1094,133666 +1104,1197 +1124,1511 +1144,1381 +1167,1197 +1175,133666 +1189,1511 +1210,1381 +1224,1197 +1250,1511 +1263,133666 +1272,1381 +1292,1197 +1310,1511 +1334,1381 +1345,133666 +1355,1197 +1375,1511 +1395,1381 +1418,1197 +1426,133666 +1440,1511 +1461,1381 +1475,1197 +1501,1511 +1514,133666 +1523,1381 +1543,1197 +1561,1511 +1585,1381 +1596,133666 +1606,1197 +1626,1511 +1641,82312 +1646,1381 +1669,1197 +1677,133666 +1691,1511 +1712,1381 +1726,1197 +1752,1511 +1765,133666 +1774,1381 +1794,1197 +1812,1511 +1836,1381 +1847,133666 +1857,1197 +1877,1511 +1897,1381 +1920,1197 +1928,133666 +1942,1511 +1963,1381 +1977,1197 +2003,1511 +2016,133666 +2025,1381 +2045,1197 +2063,1511 +2087,1381 +2098,133666 +2108,1197 +2128,1511 +2148,1381 +2171,1197 +2179,133666 +2193,1511 +2214,1381 +2228,1197 +2254,1511 +2267,133666 +2276,1381 +2296,1197 +2314,1511 +2338,1381 +2349,133666 +2359,1197 +2379,1511 +2394,82312 +2399,1381 +2422,1197 +2430,133666 +2444,1511 +2465,1381 +2479,1197 +2505,1511 +2518,133666 +2527,1381 +2547,1197 +2565,1511 +2589,1381 +2600,133666 +2610,1197 +2630,1511 +2650,1381 +2673,1197 +2681,133666 +2695,1511 +2716,1381 +2730,1197 +2756,1511 +2769,133666 +2778,1381 +2798,1197 +2816,1511 +2840,1381 +2851,133666 +2861,1197 +2881,1511 +2901,1381 +2924,1197 +2932,133666 +2946,1511 +2967,1381 +2981,1197 +3007,1511 +3020,133666 +3029,1381 +3049,1197 +3067,1511 +3091,1381 +3102,133666 +3112,1197 +3132,1511 +3147,82312 +3152,1381 +3175,1197 +3183,133666 +3197,1511 +3218,1381 +3232,1197 +3258,1511 +3271,133666 +3280,1381 +3300,1197 +3318,1511 +3342,1381 +3353,133666 +3363,1197 +3383,1511 +3403,1381 +3426,1197 +3434,133666 +3448,1511 +3469,1381 +3483,1197 +3509,1511 +3522,133666 +3531,1381 +3551,1197 +3569,1511 +3593,1381 +3604,133666 +3614,1197 +3634,1511 +3654,1381 +3677,1197 +3685,133666 +3699,1511 +3720,1381 +3734,1197 +3760,1511 +3773,133666 +3782,1381 +3802,1197 +3820,1511 +3844,1381 +3855,133666 +3865,1197 +3885,1511 +3900,82312 +3905,1381 +3928,1197 +3936,133666 +3950,1511 +3971,1381 +3985,1197 +4011,1511 +4024,133666 +4033,1381 +4053,1197 +4071,1511 +4095,1381 +4106,133666 +4116,1197 +4136,1511 +4156,1381 +4179,1197 +4187,133666 +4201,1511 +4222,1381 +4236,1197 +4262,1511 +4275,133666 +4284,1381 +4304,1197 +4322,1511 +4346,1381 +4357,133666 +4367,1197 +4387,1511 +4407,1381 +4430,1197 +4438,133666 +4452,1511 +4473,1381 +4487,1197 +4513,1511 +4526,133666 +4535,1381 +4555,1197 +4573,1511 +4597,1381 +4608,133666 +4618,1197 +4638,1511 +4653,82312 +4658,1381 +4681,1197 +4689,133666 +4703,1511 +4724,1381 +4738,1197 +4764,1511 +4777,133666 +4786,1381 +4806,1197 +4824,1511 +4848,1381 +4859,133666 +4869,1197 +4889,1511 +4909,1381 +4932,1197 +4940,133666 +4954,1511 +4975,1381 +4989,1197 +5015,1511 +5028,133666 +5037,1381 +5057,1197 +5075,1511 +5099,1381 +5110,133666 +5120,1197 +5140,1511 +5160,1381 +5183,1197 +5191,133666 +5205,1511 +5226,1381 +5240,1197 +5266,1511 +5279,133666 +5288,1381 +5308,1197 +5326,1511 +5350,1381 +5361,133666 +5371,1197 +5391,1511 +5406,82312 +5411,1381 +5434,1197 +5442,133666 +5456,1511 +5477,1381 +5491,1197 +5517,1511 +5530,133666 +5539,1381 +5559,1197 +5577,1511 +5601,1381 +5612,133666 +5622,1197 +5642,1511 +5662,1381 +5685,1197 +5693,133666 +5707,1511 +5728,1381 +5742,1197 +5768,1511 +5781,133666 +5790,1381 +5810,1197 +5828,1511 +5852,1381 +5863,133666 +5873,1197 +5893,1511 +5913,1381 +5936,1197 +5944,133666 +5958,1511 +5979,1381 +5993,1197 +6019,1511 +6032,133666 +6041,1381 +6061,1197 +6079,1511 +6103,1381 +6114,133666 +6124,1197 +6144,1511 +6159,82312 +6164,1381 +6187,1197 +6195,133666 +6209,1511 +6230,1381 +6244,1197 +6270,1511 +6283,133666 +6292,1381 +6312,1197 +6330,1511 +6354,1381 +6365,133666 +6375,1197 +6395,1511 +6415,1381 +6438,1197 +6446,133666 +6460,1511 +6481,1381 +6495,1197 +6521,1511 +6534,133666 +6543,1381 +6563,1197 +6581,1511 +6605,1381 +6616,133666 +6626,1197 +6646,1511 +6666,1381 +6689,1197 +6697,133666 +6711,1511 +6732,1381 +6746,1197 +6772,1511 +6785,133666 +6794,1381 +6814,1197 +6832,1511 +6856,1381 +6867,133666 +6877,1197 +6897,1511 +6912,82312 +6917,1381 +6940,1197 +6948,133666 +6962,1511 +6983,1381 +6997,1197 +7023,1511 +7036,133666 +7045,1381 +7065,1197 +7083,1511 +7107,1381 +7118,133666 +7128,1197 +7148,1511 +7168,1381 +7191,1197 +7199,133666 +7213,1511 +7234,1381 +7248,1197 +7274,1511 +7287,133666 +7296,1381 +7316,1197 +7334,1511 +7358,1381 +7369,133666 +7379,1197 +7399,1511 +7419,1381 +7442,1197 +7450,133666 +7464,1511 +7485,1381 +7499,1197 +7525,1511 +7538,133666 +7547,1381 +7567,1197 +7585,1511 +7609,1381 +7620,133666 +7630,1197 +7650,1511 +7665,82312 +7670,1381 +7693,1197 +7701,133666 +7715,1511 +7736,1381 +7750,1197 +7776,1511 +7789,133666 +7798,1381 +7818,1197 +7836,1511 +7860,1381 +7871,133666 +7881,1197 +7901,1511 +7921,1381 +7944,1197 +7952,133666 +7966,1511 +7987,1381 +8001,1197 +8027,1511 +8040,133666 +8049,1381 +8069,1197 +8087,1511 +8111,1381 +8122,133666 +8132,1197 +8152,1511 +8172,1381 +8195,1197 +8203,133666 +8217,1511 +8238,1381 +8252,1197 +8278,1511 +8291,133666 +8300,1381 +8320,1197 +8338,1511 +8362,1381 +8373,133666 +8383,1197 +8403,1511 +8418,82312 +8423,1381 +8446,1197 +8454,133666 +8468,1511 +8489,1381 +8503,1197 +8529,1511 +8542,133666 +8551,1381 +8571,1197 +8589,1511 +8613,1381 +8624,133666 +8634,1197 +8654,1511 +8674,1381 +8697,1197 +8705,133666 +8719,1511 +8740,1381 +8754,1197 +8780,1511 +8793,133666 +8802,1381 +8822,1197 +8840,1511 +8864,1381 +8875,133666 +8885,1197 +8905,1511 +8925,1381 +8948,1197 +8956,133666 +8970,1511 +8991,1381 +9005,1197 +9031,1511 +9044,133666 +9053,1381 +9073,1197 +9091,1511 +9115,1381 +9126,133666 +9136,1197 +9156,1511 +9171,82312 +9176,1381 +9199,1197 +9207,133666 +9221,1511 +9242,1381 +9256,1197 +9282,1511 +9295,133666 +9304,1381 +9324,1197 +9342,1511 +9366,1381 +9377,133666 +9387,1197 +9407,1511 +9427,1381 +9450,1197 +9458,133666 +9472,1511 +9493,1381 +9507,1197 +9533,1511 +9546,133666 +9555,1381 +9575,1197 +9593,1511 +9617,1381 +9628,133666 +9638,1197 +9658,1511 +9678,1381 +9701,1197 +9709,133666 +9723,1511 +9744,1381 +9758,1197 +9784,1511 +9797,133666 +9806,1381 +9826,1197 +9844,1511 +9868,1381 +9879,133666 +9889,1197 +9909,1511 +9924,82312 +9929,1381 +9952,1197 +9960,133666 +9974,1511 +9995,1381 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/completeness.csv new file mode 100644 index 0000000..9592749 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/completeness.csv @@ -0,0 +1,6 @@ +global_neuron_idx,local_index +1197,0 +1381,1 +1511,2 +82312,3 +133666,4 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/generated-code.json new file mode 100644 index 0000000..128ac1e --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/generated-code.json @@ -0,0 +1,127 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_2", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "active": true, + "code_objects": [], + "name": "oracle_seed_injection", + "order": 0, + "type": "NetworkOperation", + "when": "before_thresholds" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_2", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_2", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_2", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/run-spec.json new file mode 100644 index 0000000..2d00e44 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/run-spec.json @@ -0,0 +1,132 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 1000.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + 1336648, + 1336655, + 1337065, + 1467340, + 1467355, + 1467852, + 1559765, + 1559772, + 1560267, + 20992285, + 20992291, + 20992294, + 20992891 + ], + "external_arrivals": { + "events": 0, + "ordering": "after default_synapses.pre" + }, + "internal_voltage_unit": "volt", + "nodes": [ + 1197, + 1381, + 1511, + 82312, + 133666 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float64", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float64", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": 1381 + }, + "steps": 10000, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/schedule.json new file mode 100644 index 0000000..82854df --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+---------------------------------+----------------------+-------------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \noracle_seed_injection (NetworkOperation) | -- | 100. us (every step) | before_thresholds | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/seed.json new file mode 100644 index 0000000..37b8750 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float64-repeat/seed.json @@ -0,0 +1,7 @@ +{ + "applied_mv": -44.0, + "injections": 1, + "margin_mv": 1.0, + "requested_global_node": 1381, + "spiked_at_zero": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float64/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/five-float64/actual-weights.json new file mode 100644 index 0000000..dd3aa41 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float64/actual-weights.json @@ -0,0 +1,47 @@ +{ + "edge_id": [ + 1336648, + 1336655, + 1337065, + 1467340, + 1467355, + 1467852, + 1559765, + 1559772, + 1560267, + 20992285, + 20992291, + 20992294, + 20992891 + ], + "weights_mv": [ + 57.75, + 47.300000000000004, + 28.6, + 71.22500000000001, + 64.625, + 17.6, + 62.150000000000006, + 77.825, + 19.25, + 26.125000000000004, + 15.675, + 20.900000000000002, + 11.825000000000001 + ], + "weights_volt": [ + 0.05775, + 0.0473, + 0.0286, + 0.07122500000000001, + 0.064625, + 0.0176, + 0.062150000000000004, + 0.077825, + 0.01925, + 0.026125000000000002, + 0.015675, + 0.020900000000000002, + 0.011825 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float64/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/five-float64/brian-output/events.csv new file mode 100644 index 0000000..18a7e41 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float64/brian-output/events.csv @@ -0,0 +1,611 @@ +step,neuron_idx +0,1381 +46,1197 +51,1511 +79,1381 +91,133666 +99,1197 +120,1511 +140,1381 +163,1197 +170,133666 +185,1511 +205,1381 +220,1197 +246,1511 +259,133666 +268,1381 +288,1197 +306,1511 +330,1381 +341,133666 +351,1197 +371,1511 +391,1381 +414,1197 +422,133666 +436,1511 +457,1381 +471,1197 +497,1511 +510,133666 +519,1381 +539,1197 +557,1511 +581,1381 +592,133666 +602,1197 +622,1511 +642,1381 +665,1197 +673,133666 +687,1511 +708,1381 +722,1197 +748,1511 +761,133666 +770,1381 +790,1197 +808,1511 +832,1381 +843,133666 +853,1197 +873,1511 +881,82312 +893,1381 +916,1197 +924,133666 +938,1511 +959,1381 +973,1197 +999,1511 +1012,133666 +1021,1381 +1041,1197 +1059,1511 +1083,1381 +1094,133666 +1104,1197 +1124,1511 +1144,1381 +1167,1197 +1175,133666 +1189,1511 +1210,1381 +1224,1197 +1250,1511 +1263,133666 +1272,1381 +1292,1197 +1310,1511 +1334,1381 +1345,133666 +1355,1197 +1375,1511 +1395,1381 +1418,1197 +1426,133666 +1440,1511 +1461,1381 +1475,1197 +1501,1511 +1514,133666 +1523,1381 +1543,1197 +1561,1511 +1585,1381 +1596,133666 +1606,1197 +1626,1511 +1641,82312 +1646,1381 +1669,1197 +1677,133666 +1691,1511 +1712,1381 +1726,1197 +1752,1511 +1765,133666 +1774,1381 +1794,1197 +1812,1511 +1836,1381 +1847,133666 +1857,1197 +1877,1511 +1897,1381 +1920,1197 +1928,133666 +1942,1511 +1963,1381 +1977,1197 +2003,1511 +2016,133666 +2025,1381 +2045,1197 +2063,1511 +2087,1381 +2098,133666 +2108,1197 +2128,1511 +2148,1381 +2171,1197 +2179,133666 +2193,1511 +2214,1381 +2228,1197 +2254,1511 +2267,133666 +2276,1381 +2296,1197 +2314,1511 +2338,1381 +2349,133666 +2359,1197 +2379,1511 +2394,82312 +2399,1381 +2422,1197 +2430,133666 +2444,1511 +2465,1381 +2479,1197 +2505,1511 +2518,133666 +2527,1381 +2547,1197 +2565,1511 +2589,1381 +2600,133666 +2610,1197 +2630,1511 +2650,1381 +2673,1197 +2681,133666 +2695,1511 +2716,1381 +2730,1197 +2756,1511 +2769,133666 +2778,1381 +2798,1197 +2816,1511 +2840,1381 +2851,133666 +2861,1197 +2881,1511 +2901,1381 +2924,1197 +2932,133666 +2946,1511 +2967,1381 +2981,1197 +3007,1511 +3020,133666 +3029,1381 +3049,1197 +3067,1511 +3091,1381 +3102,133666 +3112,1197 +3132,1511 +3147,82312 +3152,1381 +3175,1197 +3183,133666 +3197,1511 +3218,1381 +3232,1197 +3258,1511 +3271,133666 +3280,1381 +3300,1197 +3318,1511 +3342,1381 +3353,133666 +3363,1197 +3383,1511 +3403,1381 +3426,1197 +3434,133666 +3448,1511 +3469,1381 +3483,1197 +3509,1511 +3522,133666 +3531,1381 +3551,1197 +3569,1511 +3593,1381 +3604,133666 +3614,1197 +3634,1511 +3654,1381 +3677,1197 +3685,133666 +3699,1511 +3720,1381 +3734,1197 +3760,1511 +3773,133666 +3782,1381 +3802,1197 +3820,1511 +3844,1381 +3855,133666 +3865,1197 +3885,1511 +3900,82312 +3905,1381 +3928,1197 +3936,133666 +3950,1511 +3971,1381 +3985,1197 +4011,1511 +4024,133666 +4033,1381 +4053,1197 +4071,1511 +4095,1381 +4106,133666 +4116,1197 +4136,1511 +4156,1381 +4179,1197 +4187,133666 +4201,1511 +4222,1381 +4236,1197 +4262,1511 +4275,133666 +4284,1381 +4304,1197 +4322,1511 +4346,1381 +4357,133666 +4367,1197 +4387,1511 +4407,1381 +4430,1197 +4438,133666 +4452,1511 +4473,1381 +4487,1197 +4513,1511 +4526,133666 +4535,1381 +4555,1197 +4573,1511 +4597,1381 +4608,133666 +4618,1197 +4638,1511 +4653,82312 +4658,1381 +4681,1197 +4689,133666 +4703,1511 +4724,1381 +4738,1197 +4764,1511 +4777,133666 +4786,1381 +4806,1197 +4824,1511 +4848,1381 +4859,133666 +4869,1197 +4889,1511 +4909,1381 +4932,1197 +4940,133666 +4954,1511 +4975,1381 +4989,1197 +5015,1511 +5028,133666 +5037,1381 +5057,1197 +5075,1511 +5099,1381 +5110,133666 +5120,1197 +5140,1511 +5160,1381 +5183,1197 +5191,133666 +5205,1511 +5226,1381 +5240,1197 +5266,1511 +5279,133666 +5288,1381 +5308,1197 +5326,1511 +5350,1381 +5361,133666 +5371,1197 +5391,1511 +5406,82312 +5411,1381 +5434,1197 +5442,133666 +5456,1511 +5477,1381 +5491,1197 +5517,1511 +5530,133666 +5539,1381 +5559,1197 +5577,1511 +5601,1381 +5612,133666 +5622,1197 +5642,1511 +5662,1381 +5685,1197 +5693,133666 +5707,1511 +5728,1381 +5742,1197 +5768,1511 +5781,133666 +5790,1381 +5810,1197 +5828,1511 +5852,1381 +5863,133666 +5873,1197 +5893,1511 +5913,1381 +5936,1197 +5944,133666 +5958,1511 +5979,1381 +5993,1197 +6019,1511 +6032,133666 +6041,1381 +6061,1197 +6079,1511 +6103,1381 +6114,133666 +6124,1197 +6144,1511 +6159,82312 +6164,1381 +6187,1197 +6195,133666 +6209,1511 +6230,1381 +6244,1197 +6270,1511 +6283,133666 +6292,1381 +6312,1197 +6330,1511 +6354,1381 +6365,133666 +6375,1197 +6395,1511 +6415,1381 +6438,1197 +6446,133666 +6460,1511 +6481,1381 +6495,1197 +6521,1511 +6534,133666 +6543,1381 +6563,1197 +6581,1511 +6605,1381 +6616,133666 +6626,1197 +6646,1511 +6666,1381 +6689,1197 +6697,133666 +6711,1511 +6732,1381 +6746,1197 +6772,1511 +6785,133666 +6794,1381 +6814,1197 +6832,1511 +6856,1381 +6867,133666 +6877,1197 +6897,1511 +6912,82312 +6917,1381 +6940,1197 +6948,133666 +6962,1511 +6983,1381 +6997,1197 +7023,1511 +7036,133666 +7045,1381 +7065,1197 +7083,1511 +7107,1381 +7118,133666 +7128,1197 +7148,1511 +7168,1381 +7191,1197 +7199,133666 +7213,1511 +7234,1381 +7248,1197 +7274,1511 +7287,133666 +7296,1381 +7316,1197 +7334,1511 +7358,1381 +7369,133666 +7379,1197 +7399,1511 +7419,1381 +7442,1197 +7450,133666 +7464,1511 +7485,1381 +7499,1197 +7525,1511 +7538,133666 +7547,1381 +7567,1197 +7585,1511 +7609,1381 +7620,133666 +7630,1197 +7650,1511 +7665,82312 +7670,1381 +7693,1197 +7701,133666 +7715,1511 +7736,1381 +7750,1197 +7776,1511 +7789,133666 +7798,1381 +7818,1197 +7836,1511 +7860,1381 +7871,133666 +7881,1197 +7901,1511 +7921,1381 +7944,1197 +7952,133666 +7966,1511 +7987,1381 +8001,1197 +8027,1511 +8040,133666 +8049,1381 +8069,1197 +8087,1511 +8111,1381 +8122,133666 +8132,1197 +8152,1511 +8172,1381 +8195,1197 +8203,133666 +8217,1511 +8238,1381 +8252,1197 +8278,1511 +8291,133666 +8300,1381 +8320,1197 +8338,1511 +8362,1381 +8373,133666 +8383,1197 +8403,1511 +8418,82312 +8423,1381 +8446,1197 +8454,133666 +8468,1511 +8489,1381 +8503,1197 +8529,1511 +8542,133666 +8551,1381 +8571,1197 +8589,1511 +8613,1381 +8624,133666 +8634,1197 +8654,1511 +8674,1381 +8697,1197 +8705,133666 +8719,1511 +8740,1381 +8754,1197 +8780,1511 +8793,133666 +8802,1381 +8822,1197 +8840,1511 +8864,1381 +8875,133666 +8885,1197 +8905,1511 +8925,1381 +8948,1197 +8956,133666 +8970,1511 +8991,1381 +9005,1197 +9031,1511 +9044,133666 +9053,1381 +9073,1197 +9091,1511 +9115,1381 +9126,133666 +9136,1197 +9156,1511 +9171,82312 +9176,1381 +9199,1197 +9207,133666 +9221,1511 +9242,1381 +9256,1197 +9282,1511 +9295,133666 +9304,1381 +9324,1197 +9342,1511 +9366,1381 +9377,133666 +9387,1197 +9407,1511 +9427,1381 +9450,1197 +9458,133666 +9472,1511 +9493,1381 +9507,1197 +9533,1511 +9546,133666 +9555,1381 +9575,1197 +9593,1511 +9617,1381 +9628,133666 +9638,1197 +9658,1511 +9678,1381 +9701,1197 +9709,133666 +9723,1511 +9744,1381 +9758,1197 +9784,1511 +9797,133666 +9806,1381 +9826,1197 +9844,1511 +9868,1381 +9879,133666 +9889,1197 +9909,1511 +9924,82312 +9929,1381 +9952,1197 +9960,133666 +9974,1511 +9995,1381 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float64/comparison.json b/registry/phase4ad-author-semantics/evidence/oracle/five-float64/comparison.json new file mode 100644 index 0000000..2c53cbb --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float64/comparison.json @@ -0,0 +1,11 @@ +{ + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 3.836930773104541e-13, + "mean_abs_mv": 3.28896643253529e-14, + "same_event_prefix_max_abs_mv": 3.836930773104541e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float64/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/five-float64/completeness.csv new file mode 100644 index 0000000..9592749 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float64/completeness.csv @@ -0,0 +1,6 @@ +global_neuron_idx,local_index +1197,0 +1381,1 +1511,2 +82312,3 +133666,4 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float64/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/five-float64/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float64/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float64/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/five-float64/generated-code.json new file mode 100644 index 0000000..9dbc8f9 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float64/generated-code.json @@ -0,0 +1,127 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_1", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "active": true, + "code_objects": [], + "name": "oracle_seed_injection", + "order": 0, + "type": "NetworkOperation", + "when": "before_thresholds" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_2", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_2", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_2", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float64/independent-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/five-float64/independent-output/events.csv new file mode 100644 index 0000000..18a7e41 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float64/independent-output/events.csv @@ -0,0 +1,611 @@ +step,neuron_idx +0,1381 +46,1197 +51,1511 +79,1381 +91,133666 +99,1197 +120,1511 +140,1381 +163,1197 +170,133666 +185,1511 +205,1381 +220,1197 +246,1511 +259,133666 +268,1381 +288,1197 +306,1511 +330,1381 +341,133666 +351,1197 +371,1511 +391,1381 +414,1197 +422,133666 +436,1511 +457,1381 +471,1197 +497,1511 +510,133666 +519,1381 +539,1197 +557,1511 +581,1381 +592,133666 +602,1197 +622,1511 +642,1381 +665,1197 +673,133666 +687,1511 +708,1381 +722,1197 +748,1511 +761,133666 +770,1381 +790,1197 +808,1511 +832,1381 +843,133666 +853,1197 +873,1511 +881,82312 +893,1381 +916,1197 +924,133666 +938,1511 +959,1381 +973,1197 +999,1511 +1012,133666 +1021,1381 +1041,1197 +1059,1511 +1083,1381 +1094,133666 +1104,1197 +1124,1511 +1144,1381 +1167,1197 +1175,133666 +1189,1511 +1210,1381 +1224,1197 +1250,1511 +1263,133666 +1272,1381 +1292,1197 +1310,1511 +1334,1381 +1345,133666 +1355,1197 +1375,1511 +1395,1381 +1418,1197 +1426,133666 +1440,1511 +1461,1381 +1475,1197 +1501,1511 +1514,133666 +1523,1381 +1543,1197 +1561,1511 +1585,1381 +1596,133666 +1606,1197 +1626,1511 +1641,82312 +1646,1381 +1669,1197 +1677,133666 +1691,1511 +1712,1381 +1726,1197 +1752,1511 +1765,133666 +1774,1381 +1794,1197 +1812,1511 +1836,1381 +1847,133666 +1857,1197 +1877,1511 +1897,1381 +1920,1197 +1928,133666 +1942,1511 +1963,1381 +1977,1197 +2003,1511 +2016,133666 +2025,1381 +2045,1197 +2063,1511 +2087,1381 +2098,133666 +2108,1197 +2128,1511 +2148,1381 +2171,1197 +2179,133666 +2193,1511 +2214,1381 +2228,1197 +2254,1511 +2267,133666 +2276,1381 +2296,1197 +2314,1511 +2338,1381 +2349,133666 +2359,1197 +2379,1511 +2394,82312 +2399,1381 +2422,1197 +2430,133666 +2444,1511 +2465,1381 +2479,1197 +2505,1511 +2518,133666 +2527,1381 +2547,1197 +2565,1511 +2589,1381 +2600,133666 +2610,1197 +2630,1511 +2650,1381 +2673,1197 +2681,133666 +2695,1511 +2716,1381 +2730,1197 +2756,1511 +2769,133666 +2778,1381 +2798,1197 +2816,1511 +2840,1381 +2851,133666 +2861,1197 +2881,1511 +2901,1381 +2924,1197 +2932,133666 +2946,1511 +2967,1381 +2981,1197 +3007,1511 +3020,133666 +3029,1381 +3049,1197 +3067,1511 +3091,1381 +3102,133666 +3112,1197 +3132,1511 +3147,82312 +3152,1381 +3175,1197 +3183,133666 +3197,1511 +3218,1381 +3232,1197 +3258,1511 +3271,133666 +3280,1381 +3300,1197 +3318,1511 +3342,1381 +3353,133666 +3363,1197 +3383,1511 +3403,1381 +3426,1197 +3434,133666 +3448,1511 +3469,1381 +3483,1197 +3509,1511 +3522,133666 +3531,1381 +3551,1197 +3569,1511 +3593,1381 +3604,133666 +3614,1197 +3634,1511 +3654,1381 +3677,1197 +3685,133666 +3699,1511 +3720,1381 +3734,1197 +3760,1511 +3773,133666 +3782,1381 +3802,1197 +3820,1511 +3844,1381 +3855,133666 +3865,1197 +3885,1511 +3900,82312 +3905,1381 +3928,1197 +3936,133666 +3950,1511 +3971,1381 +3985,1197 +4011,1511 +4024,133666 +4033,1381 +4053,1197 +4071,1511 +4095,1381 +4106,133666 +4116,1197 +4136,1511 +4156,1381 +4179,1197 +4187,133666 +4201,1511 +4222,1381 +4236,1197 +4262,1511 +4275,133666 +4284,1381 +4304,1197 +4322,1511 +4346,1381 +4357,133666 +4367,1197 +4387,1511 +4407,1381 +4430,1197 +4438,133666 +4452,1511 +4473,1381 +4487,1197 +4513,1511 +4526,133666 +4535,1381 +4555,1197 +4573,1511 +4597,1381 +4608,133666 +4618,1197 +4638,1511 +4653,82312 +4658,1381 +4681,1197 +4689,133666 +4703,1511 +4724,1381 +4738,1197 +4764,1511 +4777,133666 +4786,1381 +4806,1197 +4824,1511 +4848,1381 +4859,133666 +4869,1197 +4889,1511 +4909,1381 +4932,1197 +4940,133666 +4954,1511 +4975,1381 +4989,1197 +5015,1511 +5028,133666 +5037,1381 +5057,1197 +5075,1511 +5099,1381 +5110,133666 +5120,1197 +5140,1511 +5160,1381 +5183,1197 +5191,133666 +5205,1511 +5226,1381 +5240,1197 +5266,1511 +5279,133666 +5288,1381 +5308,1197 +5326,1511 +5350,1381 +5361,133666 +5371,1197 +5391,1511 +5406,82312 +5411,1381 +5434,1197 +5442,133666 +5456,1511 +5477,1381 +5491,1197 +5517,1511 +5530,133666 +5539,1381 +5559,1197 +5577,1511 +5601,1381 +5612,133666 +5622,1197 +5642,1511 +5662,1381 +5685,1197 +5693,133666 +5707,1511 +5728,1381 +5742,1197 +5768,1511 +5781,133666 +5790,1381 +5810,1197 +5828,1511 +5852,1381 +5863,133666 +5873,1197 +5893,1511 +5913,1381 +5936,1197 +5944,133666 +5958,1511 +5979,1381 +5993,1197 +6019,1511 +6032,133666 +6041,1381 +6061,1197 +6079,1511 +6103,1381 +6114,133666 +6124,1197 +6144,1511 +6159,82312 +6164,1381 +6187,1197 +6195,133666 +6209,1511 +6230,1381 +6244,1197 +6270,1511 +6283,133666 +6292,1381 +6312,1197 +6330,1511 +6354,1381 +6365,133666 +6375,1197 +6395,1511 +6415,1381 +6438,1197 +6446,133666 +6460,1511 +6481,1381 +6495,1197 +6521,1511 +6534,133666 +6543,1381 +6563,1197 +6581,1511 +6605,1381 +6616,133666 +6626,1197 +6646,1511 +6666,1381 +6689,1197 +6697,133666 +6711,1511 +6732,1381 +6746,1197 +6772,1511 +6785,133666 +6794,1381 +6814,1197 +6832,1511 +6856,1381 +6867,133666 +6877,1197 +6897,1511 +6912,82312 +6917,1381 +6940,1197 +6948,133666 +6962,1511 +6983,1381 +6997,1197 +7023,1511 +7036,133666 +7045,1381 +7065,1197 +7083,1511 +7107,1381 +7118,133666 +7128,1197 +7148,1511 +7168,1381 +7191,1197 +7199,133666 +7213,1511 +7234,1381 +7248,1197 +7274,1511 +7287,133666 +7296,1381 +7316,1197 +7334,1511 +7358,1381 +7369,133666 +7379,1197 +7399,1511 +7419,1381 +7442,1197 +7450,133666 +7464,1511 +7485,1381 +7499,1197 +7525,1511 +7538,133666 +7547,1381 +7567,1197 +7585,1511 +7609,1381 +7620,133666 +7630,1197 +7650,1511 +7665,82312 +7670,1381 +7693,1197 +7701,133666 +7715,1511 +7736,1381 +7750,1197 +7776,1511 +7789,133666 +7798,1381 +7818,1197 +7836,1511 +7860,1381 +7871,133666 +7881,1197 +7901,1511 +7921,1381 +7944,1197 +7952,133666 +7966,1511 +7987,1381 +8001,1197 +8027,1511 +8040,133666 +8049,1381 +8069,1197 +8087,1511 +8111,1381 +8122,133666 +8132,1197 +8152,1511 +8172,1381 +8195,1197 +8203,133666 +8217,1511 +8238,1381 +8252,1197 +8278,1511 +8291,133666 +8300,1381 +8320,1197 +8338,1511 +8362,1381 +8373,133666 +8383,1197 +8403,1511 +8418,82312 +8423,1381 +8446,1197 +8454,133666 +8468,1511 +8489,1381 +8503,1197 +8529,1511 +8542,133666 +8551,1381 +8571,1197 +8589,1511 +8613,1381 +8624,133666 +8634,1197 +8654,1511 +8674,1381 +8697,1197 +8705,133666 +8719,1511 +8740,1381 +8754,1197 +8780,1511 +8793,133666 +8802,1381 +8822,1197 +8840,1511 +8864,1381 +8875,133666 +8885,1197 +8905,1511 +8925,1381 +8948,1197 +8956,133666 +8970,1511 +8991,1381 +9005,1197 +9031,1511 +9044,133666 +9053,1381 +9073,1197 +9091,1511 +9115,1381 +9126,133666 +9136,1197 +9156,1511 +9171,82312 +9176,1381 +9199,1197 +9207,133666 +9221,1511 +9242,1381 +9256,1197 +9282,1511 +9295,133666 +9304,1381 +9324,1197 +9342,1511 +9366,1381 +9377,133666 +9387,1197 +9407,1511 +9427,1381 +9450,1197 +9458,133666 +9472,1511 +9493,1381 +9507,1197 +9533,1511 +9546,133666 +9555,1381 +9575,1197 +9593,1511 +9617,1381 +9628,133666 +9638,1197 +9658,1511 +9678,1381 +9701,1197 +9709,133666 +9723,1511 +9744,1381 +9758,1197 +9784,1511 +9797,133666 +9806,1381 +9826,1197 +9844,1511 +9868,1381 +9879,133666 +9889,1197 +9909,1511 +9924,82312 +9929,1381 +9952,1197 +9960,133666 +9974,1511 +9995,1381 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float64/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/five-float64/run-spec.json new file mode 100644 index 0000000..2d00e44 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float64/run-spec.json @@ -0,0 +1,132 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 1000.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + 1336648, + 1336655, + 1337065, + 1467340, + 1467355, + 1467852, + 1559765, + 1559772, + 1560267, + 20992285, + 20992291, + 20992294, + 20992891 + ], + "external_arrivals": { + "events": 0, + "ordering": "after default_synapses.pre" + }, + "internal_voltage_unit": "volt", + "nodes": [ + 1197, + 1381, + 1511, + 82312, + 133666 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float64", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float64", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": 1381 + }, + "steps": 10000, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float64/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/five-float64/schedule.json new file mode 100644 index 0000000..82854df --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float64/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+---------------------------------+----------------------+-------------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \noracle_seed_injection (NetworkOperation) | -- | 100. us (every step) | before_thresholds | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/five-float64/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/five-float64/seed.json new file mode 100644 index 0000000..37b8750 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/five-float64/seed.json @@ -0,0 +1,7 @@ +{ + "applied_mv": -44.0, + "injections": 1, + "margin_mv": 1.0, + "requested_global_node": 1381, + "spiked_at_zero": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/actual-weights.json new file mode 100644 index 0000000..8ac25e1 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/actual-weights.json @@ -0,0 +1,47 @@ +{ + "edge_id": [ + 1336648, + 1336655, + 1337065, + 1467340, + 1467355, + 1467852, + 1559765, + 1559772, + 1560267, + 20992285, + 20992291, + 20992294, + 20992891 + ], + "weights_mv": [ + 57.75, + 47.29999923706055, + 28.599998474121094, + 71.2249984741211, + 64.625, + 17.599998474121094, + 62.14999771118164, + 77.82499694824219, + 19.249998092651367, + 26.125, + 15.675000190734863, + 20.899999618530273, + 11.824999809265137 + ], + "weights_volt": [ + 0.057750001549720764, + 0.04729999974370003, + 0.028599999845027924, + 0.07122500240802765, + 0.06462500244379044, + 0.01759999990463257, + 0.062150001525878906, + 0.07782500237226486, + 0.01924999989569187, + 0.026125000789761543, + 0.015675000846385956, + 0.020899999886751175, + 0.011824999935925007 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/brian-output/events.csv new file mode 100644 index 0000000..256e1e4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/brian-output/events.csv @@ -0,0 +1 @@ +step,neuron_idx diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/completeness.csv new file mode 100644 index 0000000..9592749 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/completeness.csv @@ -0,0 +1,6 @@ +global_neuron_idx,local_index +1197,0 +1381,1 +1511,2 +82312,3 +133666,4 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/generated-code.json new file mode 100644 index 0000000..0748450 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/generated-code.json @@ -0,0 +1,119 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_6", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_7", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_8", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_8", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/run-spec.json new file mode 100644 index 0000000..e659585 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/run-spec.json @@ -0,0 +1,132 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 1000.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + 1336648, + 1336655, + 1337065, + 1467340, + 1467355, + 1467852, + 1559765, + 1559772, + 1560267, + 20992285, + 20992291, + 20992294, + 20992891 + ], + "external_arrivals": { + "events": 0, + "ordering": "after default_synapses.pre" + }, + "internal_voltage_unit": "volt", + "nodes": [ + 1197, + 1381, + 1511, + 82312, + 133666 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float32", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float32", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": null + }, + "steps": 10000, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/schedule.json new file mode 100644 index 0000000..cd48c36 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+---------------------------------+----------------------+------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/seed.json new file mode 100644 index 0000000..f164c97 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32-repeat/seed.json @@ -0,0 +1,5 @@ +{ + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": null +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/actual-weights.json new file mode 100644 index 0000000..8ac25e1 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/actual-weights.json @@ -0,0 +1,47 @@ +{ + "edge_id": [ + 1336648, + 1336655, + 1337065, + 1467340, + 1467355, + 1467852, + 1559765, + 1559772, + 1560267, + 20992285, + 20992291, + 20992294, + 20992891 + ], + "weights_mv": [ + 57.75, + 47.29999923706055, + 28.599998474121094, + 71.2249984741211, + 64.625, + 17.599998474121094, + 62.14999771118164, + 77.82499694824219, + 19.249998092651367, + 26.125, + 15.675000190734863, + 20.899999618530273, + 11.824999809265137 + ], + "weights_volt": [ + 0.057750001549720764, + 0.04729999974370003, + 0.028599999845027924, + 0.07122500240802765, + 0.06462500244379044, + 0.01759999990463257, + 0.062150001525878906, + 0.07782500237226486, + 0.01924999989569187, + 0.026125000789761543, + 0.015675000846385956, + 0.020899999886751175, + 0.011824999935925007 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/brian-output/events.csv new file mode 100644 index 0000000..256e1e4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/brian-output/events.csv @@ -0,0 +1 @@ +step,neuron_idx diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/comparison.json b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/comparison.json new file mode 100644 index 0000000..a9e3395 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/comparison.json @@ -0,0 +1,11 @@ +{ + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 1.0728836059570312e-06, + "mean_abs_mv": 5.364418029785156e-07, + "same_event_prefix_max_abs_mv": 1.0728836059570312e-06, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/completeness.csv new file mode 100644 index 0000000..9592749 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/completeness.csv @@ -0,0 +1,6 @@ +global_neuron_idx,local_index +1197,0 +1381,1 +1511,2 +82312,3 +133666,4 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/generated-code.json new file mode 100644 index 0000000..ae98e74 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/generated-code.json @@ -0,0 +1,119 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_5", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_6", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_7", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_7", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/independent-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/independent-output/events.csv new file mode 100644 index 0000000..256e1e4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/independent-output/events.csv @@ -0,0 +1 @@ +step,neuron_idx diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/run-spec.json new file mode 100644 index 0000000..e659585 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/run-spec.json @@ -0,0 +1,132 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 1000.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + 1336648, + 1336655, + 1337065, + 1467340, + 1467355, + 1467852, + 1559765, + 1559772, + 1560267, + 20992285, + 20992291, + 20992294, + 20992891 + ], + "external_arrivals": { + "events": 0, + "ordering": "after default_synapses.pre" + }, + "internal_voltage_unit": "volt", + "nodes": [ + 1197, + 1381, + 1511, + 82312, + 133666 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float32", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float32", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": null + }, + "steps": 10000, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/schedule.json new file mode 100644 index 0000000..cd48c36 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+---------------------------------+----------------------+------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/seed.json new file mode 100644 index 0000000..f164c97 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float32/seed.json @@ -0,0 +1,5 @@ +{ + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": null +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/actual-weights.json new file mode 100644 index 0000000..dd3aa41 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/actual-weights.json @@ -0,0 +1,47 @@ +{ + "edge_id": [ + 1336648, + 1336655, + 1337065, + 1467340, + 1467355, + 1467852, + 1559765, + 1559772, + 1560267, + 20992285, + 20992291, + 20992294, + 20992891 + ], + "weights_mv": [ + 57.75, + 47.300000000000004, + 28.6, + 71.22500000000001, + 64.625, + 17.6, + 62.150000000000006, + 77.825, + 19.25, + 26.125000000000004, + 15.675, + 20.900000000000002, + 11.825000000000001 + ], + "weights_volt": [ + 0.05775, + 0.0473, + 0.0286, + 0.07122500000000001, + 0.064625, + 0.0176, + 0.062150000000000004, + 0.077825, + 0.01925, + 0.026125000000000002, + 0.015675, + 0.020900000000000002, + 0.011825 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/brian-output/events.csv new file mode 100644 index 0000000..256e1e4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/brian-output/events.csv @@ -0,0 +1 @@ +step,neuron_idx diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/completeness.csv new file mode 100644 index 0000000..9592749 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/completeness.csv @@ -0,0 +1,6 @@ +global_neuron_idx,local_index +1197,0 +1381,1 +1511,2 +82312,3 +133666,4 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/generated-code.json new file mode 100644 index 0000000..3117e6f --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/generated-code.json @@ -0,0 +1,119 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_4", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_5", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_6", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_6", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/run-spec.json new file mode 100644 index 0000000..69bef84 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/run-spec.json @@ -0,0 +1,132 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 1000.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + 1336648, + 1336655, + 1337065, + 1467340, + 1467355, + 1467852, + 1559765, + 1559772, + 1560267, + 20992285, + 20992291, + 20992294, + 20992891 + ], + "external_arrivals": { + "events": 0, + "ordering": "after default_synapses.pre" + }, + "internal_voltage_unit": "volt", + "nodes": [ + 1197, + 1381, + 1511, + 82312, + 133666 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float64", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float64", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": null + }, + "steps": 10000, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/schedule.json new file mode 100644 index 0000000..cd48c36 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+---------------------------------+----------------------+------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/seed.json new file mode 100644 index 0000000..f164c97 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64-repeat/seed.json @@ -0,0 +1,5 @@ +{ + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": null +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/actual-weights.json new file mode 100644 index 0000000..dd3aa41 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/actual-weights.json @@ -0,0 +1,47 @@ +{ + "edge_id": [ + 1336648, + 1336655, + 1337065, + 1467340, + 1467355, + 1467852, + 1559765, + 1559772, + 1560267, + 20992285, + 20992291, + 20992294, + 20992891 + ], + "weights_mv": [ + 57.75, + 47.300000000000004, + 28.6, + 71.22500000000001, + 64.625, + 17.6, + 62.150000000000006, + 77.825, + 19.25, + 26.125000000000004, + 15.675, + 20.900000000000002, + 11.825000000000001 + ], + "weights_volt": [ + 0.05775, + 0.0473, + 0.0286, + 0.07122500000000001, + 0.064625, + 0.0176, + 0.062150000000000004, + 0.077825, + 0.01925, + 0.026125000000000002, + 0.015675, + 0.020900000000000002, + 0.011825 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/brian-output/events.csv new file mode 100644 index 0000000..256e1e4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/brian-output/events.csv @@ -0,0 +1 @@ +step,neuron_idx diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/comparison.json b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/comparison.json new file mode 100644 index 0000000..9ae07c7 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/comparison.json @@ -0,0 +1,11 @@ +{ + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 7.105427357601002e-15, + "mean_abs_mv": 3.552713678800501e-15, + "same_event_prefix_max_abs_mv": 7.105427357601002e-15, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/completeness.csv new file mode 100644 index 0000000..9592749 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/completeness.csv @@ -0,0 +1,6 @@ +global_neuron_idx,local_index +1197,0 +1381,1 +1511,2 +82312,3 +133666,4 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/generated-code.json new file mode 100644 index 0000000..264bb2c --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/generated-code.json @@ -0,0 +1,119 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_3", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_4", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_5", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_5", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/independent-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/independent-output/events.csv new file mode 100644 index 0000000..256e1e4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/independent-output/events.csv @@ -0,0 +1 @@ +step,neuron_idx diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/run-spec.json new file mode 100644 index 0000000..69bef84 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/run-spec.json @@ -0,0 +1,132 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 1000.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + 1336648, + 1336655, + 1337065, + 1467340, + 1467355, + 1467852, + 1559765, + 1559772, + 1560267, + 20992285, + 20992291, + 20992294, + 20992891 + ], + "external_arrivals": { + "events": 0, + "ordering": "after default_synapses.pre" + }, + "internal_voltage_unit": "volt", + "nodes": [ + 1197, + 1381, + 1511, + 82312, + 133666 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float64", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float64", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": null + }, + "steps": 10000, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/schedule.json new file mode 100644 index 0000000..cd48c36 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+---------------------------------+----------------------+------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/seed.json new file mode 100644 index 0000000..f164c97 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/no_input-float64/seed.json @@ -0,0 +1,5 @@ +{ + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": null +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/actual-weights.json new file mode 100644 index 0000000..a4b7db2 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/actual-weights.json @@ -0,0 +1,14 @@ +{ + "edge_id": [ + 1467355, + 1559772 + ], + "weights_mv": [ + 64.625, + 77.82499694824219 + ], + "weights_volt": [ + 0.06462500244379044, + 0.07782500237226486 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/brian-output/events.csv new file mode 100644 index 0000000..19c96f7 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/brian-output/events.csv @@ -0,0 +1,214 @@ +step,neuron_idx +0,1381 +51,1511 +94,1381 +145,1511 +188,1381 +239,1511 +282,1381 +333,1511 +376,1381 +427,1511 +470,1381 +521,1511 +564,1381 +615,1511 +658,1381 +709,1511 +752,1381 +803,1511 +846,1381 +897,1511 +940,1381 +991,1511 +1034,1381 +1085,1511 +1128,1381 +1179,1511 +1222,1381 +1273,1511 +1316,1381 +1367,1511 +1410,1381 +1461,1511 +1504,1381 +1555,1511 +1598,1381 +1649,1511 +1692,1381 +1743,1511 +1786,1381 +1837,1511 +1880,1381 +1931,1511 +1974,1381 +2025,1511 +2068,1381 +2119,1511 +2162,1381 +2213,1511 +2256,1381 +2307,1511 +2350,1381 +2401,1511 +2444,1381 +2495,1511 +2538,1381 +2589,1511 +2632,1381 +2683,1511 +2726,1381 +2777,1511 +2820,1381 +2871,1511 +2914,1381 +2965,1511 +3008,1381 +3059,1511 +3102,1381 +3153,1511 +3196,1381 +3247,1511 +3290,1381 +3341,1511 +3384,1381 +3435,1511 +3478,1381 +3529,1511 +3572,1381 +3623,1511 +3666,1381 +3717,1511 +3760,1381 +3811,1511 +3854,1381 +3905,1511 +3948,1381 +3999,1511 +4042,1381 +4093,1511 +4136,1381 +4187,1511 +4230,1381 +4281,1511 +4324,1381 +4375,1511 +4418,1381 +4469,1511 +4512,1381 +4563,1511 +4606,1381 +4657,1511 +4700,1381 +4751,1511 +4794,1381 +4845,1511 +4888,1381 +4939,1511 +4982,1381 +5033,1511 +5076,1381 +5127,1511 +5170,1381 +5221,1511 +5264,1381 +5315,1511 +5358,1381 +5409,1511 +5452,1381 +5503,1511 +5546,1381 +5597,1511 +5640,1381 +5691,1511 +5734,1381 +5785,1511 +5828,1381 +5879,1511 +5922,1381 +5973,1511 +6016,1381 +6067,1511 +6110,1381 +6161,1511 +6204,1381 +6255,1511 +6298,1381 +6349,1511 +6392,1381 +6443,1511 +6486,1381 +6537,1511 +6580,1381 +6631,1511 +6674,1381 +6725,1511 +6768,1381 +6819,1511 +6862,1381 +6913,1511 +6956,1381 +7007,1511 +7050,1381 +7101,1511 +7144,1381 +7195,1511 +7238,1381 +7289,1511 +7332,1381 +7383,1511 +7426,1381 +7477,1511 +7520,1381 +7571,1511 +7614,1381 +7665,1511 +7708,1381 +7759,1511 +7802,1381 +7853,1511 +7896,1381 +7947,1511 +7990,1381 +8041,1511 +8084,1381 +8135,1511 +8178,1381 +8229,1511 +8272,1381 +8323,1511 +8366,1381 +8417,1511 +8460,1381 +8511,1511 +8554,1381 +8605,1511 +8648,1381 +8699,1511 +8742,1381 +8793,1511 +8836,1381 +8887,1511 +8930,1381 +8981,1511 +9024,1381 +9075,1511 +9118,1381 +9169,1511 +9212,1381 +9263,1511 +9306,1381 +9357,1511 +9400,1381 +9451,1511 +9494,1381 +9545,1511 +9588,1381 +9639,1511 +9682,1381 +9733,1511 +9776,1381 +9827,1511 +9870,1381 +9921,1511 +9964,1381 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/completeness.csv new file mode 100644 index 0000000..8ad30be --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/completeness.csv @@ -0,0 +1,3 @@ +global_neuron_idx,local_index +1381,0 +1511,1 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/generated-code.json new file mode 100644 index 0000000..245d070 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/generated-code.json @@ -0,0 +1,127 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_9", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "active": true, + "code_objects": [], + "name": "oracle_seed_injection", + "order": 0, + "type": "NetworkOperation", + "when": "before_thresholds" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_9", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_9", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_9", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/run-spec.json new file mode 100644 index 0000000..5891b28 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/run-spec.json @@ -0,0 +1,118 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 1000.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + 1467355, + 1559772 + ], + "external_arrivals": { + "events": 0, + "ordering": "after default_synapses.pre" + }, + "internal_voltage_unit": "volt", + "nodes": [ + 1381, + 1511 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float32", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float32", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": 1381 + }, + "steps": 10000, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/schedule.json new file mode 100644 index 0000000..82854df --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+---------------------------------+----------------------+-------------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \noracle_seed_injection (NetworkOperation) | -- | 100. us (every step) | before_thresholds | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/seed.json new file mode 100644 index 0000000..2896d59 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32-repeat/seed.json @@ -0,0 +1,7 @@ +{ + "applied_mv": -43.99999976158142, + "injections": 1, + "margin_mv": 1.0, + "requested_global_node": 1381, + "spiked_at_zero": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float32/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32/actual-weights.json new file mode 100644 index 0000000..a4b7db2 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32/actual-weights.json @@ -0,0 +1,14 @@ +{ + "edge_id": [ + 1467355, + 1559772 + ], + "weights_mv": [ + 64.625, + 77.82499694824219 + ], + "weights_volt": [ + 0.06462500244379044, + 0.07782500237226486 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float32/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32/brian-output/events.csv new file mode 100644 index 0000000..19c96f7 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32/brian-output/events.csv @@ -0,0 +1,214 @@ +step,neuron_idx +0,1381 +51,1511 +94,1381 +145,1511 +188,1381 +239,1511 +282,1381 +333,1511 +376,1381 +427,1511 +470,1381 +521,1511 +564,1381 +615,1511 +658,1381 +709,1511 +752,1381 +803,1511 +846,1381 +897,1511 +940,1381 +991,1511 +1034,1381 +1085,1511 +1128,1381 +1179,1511 +1222,1381 +1273,1511 +1316,1381 +1367,1511 +1410,1381 +1461,1511 +1504,1381 +1555,1511 +1598,1381 +1649,1511 +1692,1381 +1743,1511 +1786,1381 +1837,1511 +1880,1381 +1931,1511 +1974,1381 +2025,1511 +2068,1381 +2119,1511 +2162,1381 +2213,1511 +2256,1381 +2307,1511 +2350,1381 +2401,1511 +2444,1381 +2495,1511 +2538,1381 +2589,1511 +2632,1381 +2683,1511 +2726,1381 +2777,1511 +2820,1381 +2871,1511 +2914,1381 +2965,1511 +3008,1381 +3059,1511 +3102,1381 +3153,1511 +3196,1381 +3247,1511 +3290,1381 +3341,1511 +3384,1381 +3435,1511 +3478,1381 +3529,1511 +3572,1381 +3623,1511 +3666,1381 +3717,1511 +3760,1381 +3811,1511 +3854,1381 +3905,1511 +3948,1381 +3999,1511 +4042,1381 +4093,1511 +4136,1381 +4187,1511 +4230,1381 +4281,1511 +4324,1381 +4375,1511 +4418,1381 +4469,1511 +4512,1381 +4563,1511 +4606,1381 +4657,1511 +4700,1381 +4751,1511 +4794,1381 +4845,1511 +4888,1381 +4939,1511 +4982,1381 +5033,1511 +5076,1381 +5127,1511 +5170,1381 +5221,1511 +5264,1381 +5315,1511 +5358,1381 +5409,1511 +5452,1381 +5503,1511 +5546,1381 +5597,1511 +5640,1381 +5691,1511 +5734,1381 +5785,1511 +5828,1381 +5879,1511 +5922,1381 +5973,1511 +6016,1381 +6067,1511 +6110,1381 +6161,1511 +6204,1381 +6255,1511 +6298,1381 +6349,1511 +6392,1381 +6443,1511 +6486,1381 +6537,1511 +6580,1381 +6631,1511 +6674,1381 +6725,1511 +6768,1381 +6819,1511 +6862,1381 +6913,1511 +6956,1381 +7007,1511 +7050,1381 +7101,1511 +7144,1381 +7195,1511 +7238,1381 +7289,1511 +7332,1381 +7383,1511 +7426,1381 +7477,1511 +7520,1381 +7571,1511 +7614,1381 +7665,1511 +7708,1381 +7759,1511 +7802,1381 +7853,1511 +7896,1381 +7947,1511 +7990,1381 +8041,1511 +8084,1381 +8135,1511 +8178,1381 +8229,1511 +8272,1381 +8323,1511 +8366,1381 +8417,1511 +8460,1381 +8511,1511 +8554,1381 +8605,1511 +8648,1381 +8699,1511 +8742,1381 +8793,1511 +8836,1381 +8887,1511 +8930,1381 +8981,1511 +9024,1381 +9075,1511 +9118,1381 +9169,1511 +9212,1381 +9263,1511 +9306,1381 +9357,1511 +9400,1381 +9451,1511 +9494,1381 +9545,1511 +9588,1381 +9639,1511 +9682,1381 +9733,1511 +9776,1381 +9827,1511 +9870,1381 +9921,1511 +9964,1381 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float32/comparison.json b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32/comparison.json new file mode 100644 index 0000000..094f4af --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32/comparison.json @@ -0,0 +1,11 @@ +{ + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 2.41696834564209e-05, + "mean_abs_mv": 2.619914710521698e-06, + "same_event_prefix_max_abs_mv": 2.41696834564209e-05, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float32/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32/completeness.csv new file mode 100644 index 0000000..8ad30be --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32/completeness.csv @@ -0,0 +1,3 @@ +global_neuron_idx,local_index +1381,0 +1511,1 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float32/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float32/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32/generated-code.json new file mode 100644 index 0000000..8a7e49d --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32/generated-code.json @@ -0,0 +1,127 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_8", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "active": true, + "code_objects": [], + "name": "oracle_seed_injection", + "order": 0, + "type": "NetworkOperation", + "when": "before_thresholds" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_8", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_8", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_8", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float32/independent-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32/independent-output/events.csv new file mode 100644 index 0000000..19c96f7 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32/independent-output/events.csv @@ -0,0 +1,214 @@ +step,neuron_idx +0,1381 +51,1511 +94,1381 +145,1511 +188,1381 +239,1511 +282,1381 +333,1511 +376,1381 +427,1511 +470,1381 +521,1511 +564,1381 +615,1511 +658,1381 +709,1511 +752,1381 +803,1511 +846,1381 +897,1511 +940,1381 +991,1511 +1034,1381 +1085,1511 +1128,1381 +1179,1511 +1222,1381 +1273,1511 +1316,1381 +1367,1511 +1410,1381 +1461,1511 +1504,1381 +1555,1511 +1598,1381 +1649,1511 +1692,1381 +1743,1511 +1786,1381 +1837,1511 +1880,1381 +1931,1511 +1974,1381 +2025,1511 +2068,1381 +2119,1511 +2162,1381 +2213,1511 +2256,1381 +2307,1511 +2350,1381 +2401,1511 +2444,1381 +2495,1511 +2538,1381 +2589,1511 +2632,1381 +2683,1511 +2726,1381 +2777,1511 +2820,1381 +2871,1511 +2914,1381 +2965,1511 +3008,1381 +3059,1511 +3102,1381 +3153,1511 +3196,1381 +3247,1511 +3290,1381 +3341,1511 +3384,1381 +3435,1511 +3478,1381 +3529,1511 +3572,1381 +3623,1511 +3666,1381 +3717,1511 +3760,1381 +3811,1511 +3854,1381 +3905,1511 +3948,1381 +3999,1511 +4042,1381 +4093,1511 +4136,1381 +4187,1511 +4230,1381 +4281,1511 +4324,1381 +4375,1511 +4418,1381 +4469,1511 +4512,1381 +4563,1511 +4606,1381 +4657,1511 +4700,1381 +4751,1511 +4794,1381 +4845,1511 +4888,1381 +4939,1511 +4982,1381 +5033,1511 +5076,1381 +5127,1511 +5170,1381 +5221,1511 +5264,1381 +5315,1511 +5358,1381 +5409,1511 +5452,1381 +5503,1511 +5546,1381 +5597,1511 +5640,1381 +5691,1511 +5734,1381 +5785,1511 +5828,1381 +5879,1511 +5922,1381 +5973,1511 +6016,1381 +6067,1511 +6110,1381 +6161,1511 +6204,1381 +6255,1511 +6298,1381 +6349,1511 +6392,1381 +6443,1511 +6486,1381 +6537,1511 +6580,1381 +6631,1511 +6674,1381 +6725,1511 +6768,1381 +6819,1511 +6862,1381 +6913,1511 +6956,1381 +7007,1511 +7050,1381 +7101,1511 +7144,1381 +7195,1511 +7238,1381 +7289,1511 +7332,1381 +7383,1511 +7426,1381 +7477,1511 +7520,1381 +7571,1511 +7614,1381 +7665,1511 +7708,1381 +7759,1511 +7802,1381 +7853,1511 +7896,1381 +7947,1511 +7990,1381 +8041,1511 +8084,1381 +8135,1511 +8178,1381 +8229,1511 +8272,1381 +8323,1511 +8366,1381 +8417,1511 +8460,1381 +8511,1511 +8554,1381 +8605,1511 +8648,1381 +8699,1511 +8742,1381 +8793,1511 +8836,1381 +8887,1511 +8930,1381 +8981,1511 +9024,1381 +9075,1511 +9118,1381 +9169,1511 +9212,1381 +9263,1511 +9306,1381 +9357,1511 +9400,1381 +9451,1511 +9494,1381 +9545,1511 +9588,1381 +9639,1511 +9682,1381 +9733,1511 +9776,1381 +9827,1511 +9870,1381 +9921,1511 +9964,1381 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float32/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32/run-spec.json new file mode 100644 index 0000000..5891b28 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32/run-spec.json @@ -0,0 +1,118 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 1000.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + 1467355, + 1559772 + ], + "external_arrivals": { + "events": 0, + "ordering": "after default_synapses.pre" + }, + "internal_voltage_unit": "volt", + "nodes": [ + 1381, + 1511 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float32", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float32", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": 1381 + }, + "steps": 10000, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float32/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32/schedule.json new file mode 100644 index 0000000..82854df --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+---------------------------------+----------------------+-------------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \noracle_seed_injection (NetworkOperation) | -- | 100. us (every step) | before_thresholds | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float32/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32/seed.json new file mode 100644 index 0000000..2896d59 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float32/seed.json @@ -0,0 +1,7 @@ +{ + "applied_mv": -43.99999976158142, + "injections": 1, + "margin_mv": 1.0, + "requested_global_node": 1381, + "spiked_at_zero": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/actual-weights.json new file mode 100644 index 0000000..bbdf21e --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/actual-weights.json @@ -0,0 +1,14 @@ +{ + "edge_id": [ + 1467355, + 1559772 + ], + "weights_mv": [ + 64.625, + 77.825 + ], + "weights_volt": [ + 0.064625, + 0.077825 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/brian-output/events.csv new file mode 100644 index 0000000..19c96f7 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/brian-output/events.csv @@ -0,0 +1,214 @@ +step,neuron_idx +0,1381 +51,1511 +94,1381 +145,1511 +188,1381 +239,1511 +282,1381 +333,1511 +376,1381 +427,1511 +470,1381 +521,1511 +564,1381 +615,1511 +658,1381 +709,1511 +752,1381 +803,1511 +846,1381 +897,1511 +940,1381 +991,1511 +1034,1381 +1085,1511 +1128,1381 +1179,1511 +1222,1381 +1273,1511 +1316,1381 +1367,1511 +1410,1381 +1461,1511 +1504,1381 +1555,1511 +1598,1381 +1649,1511 +1692,1381 +1743,1511 +1786,1381 +1837,1511 +1880,1381 +1931,1511 +1974,1381 +2025,1511 +2068,1381 +2119,1511 +2162,1381 +2213,1511 +2256,1381 +2307,1511 +2350,1381 +2401,1511 +2444,1381 +2495,1511 +2538,1381 +2589,1511 +2632,1381 +2683,1511 +2726,1381 +2777,1511 +2820,1381 +2871,1511 +2914,1381 +2965,1511 +3008,1381 +3059,1511 +3102,1381 +3153,1511 +3196,1381 +3247,1511 +3290,1381 +3341,1511 +3384,1381 +3435,1511 +3478,1381 +3529,1511 +3572,1381 +3623,1511 +3666,1381 +3717,1511 +3760,1381 +3811,1511 +3854,1381 +3905,1511 +3948,1381 +3999,1511 +4042,1381 +4093,1511 +4136,1381 +4187,1511 +4230,1381 +4281,1511 +4324,1381 +4375,1511 +4418,1381 +4469,1511 +4512,1381 +4563,1511 +4606,1381 +4657,1511 +4700,1381 +4751,1511 +4794,1381 +4845,1511 +4888,1381 +4939,1511 +4982,1381 +5033,1511 +5076,1381 +5127,1511 +5170,1381 +5221,1511 +5264,1381 +5315,1511 +5358,1381 +5409,1511 +5452,1381 +5503,1511 +5546,1381 +5597,1511 +5640,1381 +5691,1511 +5734,1381 +5785,1511 +5828,1381 +5879,1511 +5922,1381 +5973,1511 +6016,1381 +6067,1511 +6110,1381 +6161,1511 +6204,1381 +6255,1511 +6298,1381 +6349,1511 +6392,1381 +6443,1511 +6486,1381 +6537,1511 +6580,1381 +6631,1511 +6674,1381 +6725,1511 +6768,1381 +6819,1511 +6862,1381 +6913,1511 +6956,1381 +7007,1511 +7050,1381 +7101,1511 +7144,1381 +7195,1511 +7238,1381 +7289,1511 +7332,1381 +7383,1511 +7426,1381 +7477,1511 +7520,1381 +7571,1511 +7614,1381 +7665,1511 +7708,1381 +7759,1511 +7802,1381 +7853,1511 +7896,1381 +7947,1511 +7990,1381 +8041,1511 +8084,1381 +8135,1511 +8178,1381 +8229,1511 +8272,1381 +8323,1511 +8366,1381 +8417,1511 +8460,1381 +8511,1511 +8554,1381 +8605,1511 +8648,1381 +8699,1511 +8742,1381 +8793,1511 +8836,1381 +8887,1511 +8930,1381 +8981,1511 +9024,1381 +9075,1511 +9118,1381 +9169,1511 +9212,1381 +9263,1511 +9306,1381 +9357,1511 +9400,1381 +9451,1511 +9494,1381 +9545,1511 +9588,1381 +9639,1511 +9682,1381 +9733,1511 +9776,1381 +9827,1511 +9870,1381 +9921,1511 +9964,1381 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/completeness.csv new file mode 100644 index 0000000..8ad30be --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/completeness.csv @@ -0,0 +1,3 @@ +global_neuron_idx,local_index +1381,0 +1511,1 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/generated-code.json new file mode 100644 index 0000000..a3090f6 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/generated-code.json @@ -0,0 +1,127 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_7", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "active": true, + "code_objects": [], + "name": "oracle_seed_injection", + "order": 0, + "type": "NetworkOperation", + "when": "before_thresholds" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_7", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_7", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_7", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/run-spec.json new file mode 100644 index 0000000..196815b --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/run-spec.json @@ -0,0 +1,118 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 1000.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + 1467355, + 1559772 + ], + "external_arrivals": { + "events": 0, + "ordering": "after default_synapses.pre" + }, + "internal_voltage_unit": "volt", + "nodes": [ + 1381, + 1511 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float64", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float64", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": 1381 + }, + "steps": 10000, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/schedule.json new file mode 100644 index 0000000..82854df --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+---------------------------------+----------------------+-------------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \noracle_seed_injection (NetworkOperation) | -- | 100. us (every step) | before_thresholds | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/seed.json new file mode 100644 index 0000000..37b8750 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64-repeat/seed.json @@ -0,0 +1,7 @@ +{ + "applied_mv": -44.0, + "injections": 1, + "margin_mv": 1.0, + "requested_global_node": 1381, + "spiked_at_zero": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float64/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64/actual-weights.json new file mode 100644 index 0000000..bbdf21e --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64/actual-weights.json @@ -0,0 +1,14 @@ +{ + "edge_id": [ + 1467355, + 1559772 + ], + "weights_mv": [ + 64.625, + 77.825 + ], + "weights_volt": [ + 0.064625, + 0.077825 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float64/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64/brian-output/events.csv new file mode 100644 index 0000000..19c96f7 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64/brian-output/events.csv @@ -0,0 +1,214 @@ +step,neuron_idx +0,1381 +51,1511 +94,1381 +145,1511 +188,1381 +239,1511 +282,1381 +333,1511 +376,1381 +427,1511 +470,1381 +521,1511 +564,1381 +615,1511 +658,1381 +709,1511 +752,1381 +803,1511 +846,1381 +897,1511 +940,1381 +991,1511 +1034,1381 +1085,1511 +1128,1381 +1179,1511 +1222,1381 +1273,1511 +1316,1381 +1367,1511 +1410,1381 +1461,1511 +1504,1381 +1555,1511 +1598,1381 +1649,1511 +1692,1381 +1743,1511 +1786,1381 +1837,1511 +1880,1381 +1931,1511 +1974,1381 +2025,1511 +2068,1381 +2119,1511 +2162,1381 +2213,1511 +2256,1381 +2307,1511 +2350,1381 +2401,1511 +2444,1381 +2495,1511 +2538,1381 +2589,1511 +2632,1381 +2683,1511 +2726,1381 +2777,1511 +2820,1381 +2871,1511 +2914,1381 +2965,1511 +3008,1381 +3059,1511 +3102,1381 +3153,1511 +3196,1381 +3247,1511 +3290,1381 +3341,1511 +3384,1381 +3435,1511 +3478,1381 +3529,1511 +3572,1381 +3623,1511 +3666,1381 +3717,1511 +3760,1381 +3811,1511 +3854,1381 +3905,1511 +3948,1381 +3999,1511 +4042,1381 +4093,1511 +4136,1381 +4187,1511 +4230,1381 +4281,1511 +4324,1381 +4375,1511 +4418,1381 +4469,1511 +4512,1381 +4563,1511 +4606,1381 +4657,1511 +4700,1381 +4751,1511 +4794,1381 +4845,1511 +4888,1381 +4939,1511 +4982,1381 +5033,1511 +5076,1381 +5127,1511 +5170,1381 +5221,1511 +5264,1381 +5315,1511 +5358,1381 +5409,1511 +5452,1381 +5503,1511 +5546,1381 +5597,1511 +5640,1381 +5691,1511 +5734,1381 +5785,1511 +5828,1381 +5879,1511 +5922,1381 +5973,1511 +6016,1381 +6067,1511 +6110,1381 +6161,1511 +6204,1381 +6255,1511 +6298,1381 +6349,1511 +6392,1381 +6443,1511 +6486,1381 +6537,1511 +6580,1381 +6631,1511 +6674,1381 +6725,1511 +6768,1381 +6819,1511 +6862,1381 +6913,1511 +6956,1381 +7007,1511 +7050,1381 +7101,1511 +7144,1381 +7195,1511 +7238,1381 +7289,1511 +7332,1381 +7383,1511 +7426,1381 +7477,1511 +7520,1381 +7571,1511 +7614,1381 +7665,1511 +7708,1381 +7759,1511 +7802,1381 +7853,1511 +7896,1381 +7947,1511 +7990,1381 +8041,1511 +8084,1381 +8135,1511 +8178,1381 +8229,1511 +8272,1381 +8323,1511 +8366,1381 +8417,1511 +8460,1381 +8511,1511 +8554,1381 +8605,1511 +8648,1381 +8699,1511 +8742,1381 +8793,1511 +8836,1381 +8887,1511 +8930,1381 +8981,1511 +9024,1381 +9075,1511 +9118,1381 +9169,1511 +9212,1381 +9263,1511 +9306,1381 +9357,1511 +9400,1381 +9451,1511 +9494,1381 +9545,1511 +9588,1381 +9639,1511 +9682,1381 +9733,1511 +9776,1381 +9827,1511 +9870,1381 +9921,1511 +9964,1381 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float64/comparison.json b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64/comparison.json new file mode 100644 index 0000000..18a335b --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64/comparison.json @@ -0,0 +1,11 @@ +{ + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 7.105427357601002e-14, + "mean_abs_mv": 8.832579112549865e-15, + "same_event_prefix_max_abs_mv": 7.105427357601002e-14, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float64/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64/completeness.csv new file mode 100644 index 0000000..8ad30be --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64/completeness.csv @@ -0,0 +1,3 @@ +global_neuron_idx,local_index +1381,0 +1511,1 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float64/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float64/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64/generated-code.json new file mode 100644 index 0000000..8a7e49d --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64/generated-code.json @@ -0,0 +1,127 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_8", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "active": true, + "code_objects": [], + "name": "oracle_seed_injection", + "order": 0, + "type": "NetworkOperation", + "when": "before_thresholds" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_8", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_8", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_8", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float64/independent-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64/independent-output/events.csv new file mode 100644 index 0000000..19c96f7 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64/independent-output/events.csv @@ -0,0 +1,214 @@ +step,neuron_idx +0,1381 +51,1511 +94,1381 +145,1511 +188,1381 +239,1511 +282,1381 +333,1511 +376,1381 +427,1511 +470,1381 +521,1511 +564,1381 +615,1511 +658,1381 +709,1511 +752,1381 +803,1511 +846,1381 +897,1511 +940,1381 +991,1511 +1034,1381 +1085,1511 +1128,1381 +1179,1511 +1222,1381 +1273,1511 +1316,1381 +1367,1511 +1410,1381 +1461,1511 +1504,1381 +1555,1511 +1598,1381 +1649,1511 +1692,1381 +1743,1511 +1786,1381 +1837,1511 +1880,1381 +1931,1511 +1974,1381 +2025,1511 +2068,1381 +2119,1511 +2162,1381 +2213,1511 +2256,1381 +2307,1511 +2350,1381 +2401,1511 +2444,1381 +2495,1511 +2538,1381 +2589,1511 +2632,1381 +2683,1511 +2726,1381 +2777,1511 +2820,1381 +2871,1511 +2914,1381 +2965,1511 +3008,1381 +3059,1511 +3102,1381 +3153,1511 +3196,1381 +3247,1511 +3290,1381 +3341,1511 +3384,1381 +3435,1511 +3478,1381 +3529,1511 +3572,1381 +3623,1511 +3666,1381 +3717,1511 +3760,1381 +3811,1511 +3854,1381 +3905,1511 +3948,1381 +3999,1511 +4042,1381 +4093,1511 +4136,1381 +4187,1511 +4230,1381 +4281,1511 +4324,1381 +4375,1511 +4418,1381 +4469,1511 +4512,1381 +4563,1511 +4606,1381 +4657,1511 +4700,1381 +4751,1511 +4794,1381 +4845,1511 +4888,1381 +4939,1511 +4982,1381 +5033,1511 +5076,1381 +5127,1511 +5170,1381 +5221,1511 +5264,1381 +5315,1511 +5358,1381 +5409,1511 +5452,1381 +5503,1511 +5546,1381 +5597,1511 +5640,1381 +5691,1511 +5734,1381 +5785,1511 +5828,1381 +5879,1511 +5922,1381 +5973,1511 +6016,1381 +6067,1511 +6110,1381 +6161,1511 +6204,1381 +6255,1511 +6298,1381 +6349,1511 +6392,1381 +6443,1511 +6486,1381 +6537,1511 +6580,1381 +6631,1511 +6674,1381 +6725,1511 +6768,1381 +6819,1511 +6862,1381 +6913,1511 +6956,1381 +7007,1511 +7050,1381 +7101,1511 +7144,1381 +7195,1511 +7238,1381 +7289,1511 +7332,1381 +7383,1511 +7426,1381 +7477,1511 +7520,1381 +7571,1511 +7614,1381 +7665,1511 +7708,1381 +7759,1511 +7802,1381 +7853,1511 +7896,1381 +7947,1511 +7990,1381 +8041,1511 +8084,1381 +8135,1511 +8178,1381 +8229,1511 +8272,1381 +8323,1511 +8366,1381 +8417,1511 +8460,1381 +8511,1511 +8554,1381 +8605,1511 +8648,1381 +8699,1511 +8742,1381 +8793,1511 +8836,1381 +8887,1511 +8930,1381 +8981,1511 +9024,1381 +9075,1511 +9118,1381 +9169,1511 +9212,1381 +9263,1511 +9306,1381 +9357,1511 +9400,1381 +9451,1511 +9494,1381 +9545,1511 +9588,1381 +9639,1511 +9682,1381 +9733,1511 +9776,1381 +9827,1511 +9870,1381 +9921,1511 +9964,1381 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float64/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64/run-spec.json new file mode 100644 index 0000000..196815b --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64/run-spec.json @@ -0,0 +1,118 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 1000.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + 1467355, + 1559772 + ], + "external_arrivals": { + "events": 0, + "ordering": "after default_synapses.pre" + }, + "internal_voltage_unit": "volt", + "nodes": [ + 1381, + 1511 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float64", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float64", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": 1381 + }, + "steps": 10000, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float64/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64/schedule.json new file mode 100644 index 0000000..82854df --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+---------------------------------+----------------------+-------------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \noracle_seed_injection (NetworkOperation) | -- | 100. us (every step) | before_thresholds | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/pair-float64/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64/seed.json new file mode 100644 index 0000000..37b8750 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/pair-float64/seed.json @@ -0,0 +1,7 @@ +{ + "applied_mv": -44.0, + "injections": 1, + "margin_mv": 1.0, + "requested_global_node": 1381, + "spiked_at_zero": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/poi-interface/audit.json b/registry/phase4ad-author-semantics/evidence/oracle/poi-interface/audit.json new file mode 100644 index 0000000..7b820ea --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/poi-interface/audit.json @@ -0,0 +1,76 @@ +{ + "gate": true, + "checks": { + "exact_author_source": true, + "one_poisson_input": true, + "initial_refractory_is_original": true, + "only_excited_target_loses_refractory": true, + "actual_voltage_interface": true, + "actual_N_one": true, + "actual_rate_150_hz": true, + "actual_weight_68_75_mv": true, + "actual_synapses_slot_order_zero": true, + "zero_elapsed_time": true, + "no_recorded_spikes": true, + "compile_preserves_voltage": true, + "compile_preserves_g": true, + "compile_preserves_weights": true, + "compile_preserves_refractory_configuration": true + }, + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "fixture": "two synthetic nodes, one raw_count=1 connection", + "nodes": [ + -2, + -1 + ], + "exc_local_indices": [ + 0 + ], + "exc2_local_indices": [], + "rfc_before_ms": [ + 2.2, + 2.2 + ], + "rfc_after_ms": [ + 0.0, + 2.2 + ], + "poisson_inputs": [ + { + "name": "poissoninput", + "type": "PoissonInput", + "target_group": "default_neurons_subgroup", + "target_local_start": 0, + "target_local_stop": 1, + "target_global_nodes": [ + -2 + ], + "target_var": "v", + "N": 1, + "rate_hz": 150.0, + "weight_mv": 68.75, + "weight_volt": 0.06875, + "when": "synapses", + "order": 0, + "dt_ms": 0.1, + "abstract_code": "v += poissoninput_binomial()*68.75 * mvolt", + "generated_code": [ + "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n _lio_1 = 68.75 * mvolt\n # vector code\n _vectorisation_idx = LazyArange(N)\n _sub_idx = _array_default_neurons_subgroup__sub_idx\n v = _array_default_neurons_v[_sub_idx]\n not_refractory = _array_default_neurons_not_refractory[_sub_idx]\n v[not_refractory] += _lio_1 * poissoninput_binomial(_vectorisation_idx[not_refractory])\n _array_default_neurons_v[_sub_idx] = v\n" + ] + } + ], + "synaptic_weight_mv": [ + 0.275 + ], + "input_hashes": { + "completeness.csv": "06e601b217fdbc48eee57eac01cc9a9fa649ec2a1810a2e212efcd3e4b632303", + "connectivity.parquet": "34f12d50889ccf2e637d913a0f3c4104d49032a6a67f9c3fbcd52e68ce95d701" + }, + "simulation_duration_ms": 0.0, + "stochastic_time_steps": 0, + "random_realization_tested": false, + "common_seed_experiment": false, + "interpretation": "Original poi adds 68.75 mV to voltage at 150 Hz with N=1 in the synapses slot and sets its target rfc to zero. This interface is not the common initial seed experiment.", + "scope": "Compile-time interface audit only; no stochastic trial, learning, or whole-brain simulation. The optional exc2 helper branch is not exercised." +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/poi-interface/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/poi-interface/completeness.csv new file mode 100644 index 0000000..3c4f3cb --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/poi-interface/completeness.csv @@ -0,0 +1,3 @@ +synthetic_global_neuron_idx,local_index +-2,0 +-1,1 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/poi-interface/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/poi-interface/environment.json new file mode 100644 index 0000000..76beec3 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/poi-interface/environment.json @@ -0,0 +1,102 @@ +{ + "python": "3.10.12", + "author_python": "3.10.11", + "python_patch_matches": false, + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "author_platform": "Windows", + "packages": { + "brian2": { + "expected": "2.5.1", + "actual": "2.5.1", + "matches": true + }, + "numpy": { + "expected": "1.22.3", + "actual": "1.22.3", + "matches": true + }, + "pandas": { + "expected": "1.4.3", + "actual": "1.4.3", + "matches": true + }, + "scipy": { + "expected": "1.8.1", + "actual": "1.8.1", + "matches": true + }, + "pyarrow": { + "expected": "11.0.0", + "actual": "11.0.0", + "matches": true + }, + "joblib": { + "expected": "1.2.0", + "actual": "1.2.0", + "matches": true + }, + "cython": { + "expected": "0.29.33", + "actual": "0.29.33", + "matches": true + }, + "jinja2": { + "expected": "2.11.3", + "actual": "2.11.3", + "matches": true + }, + "markupsafe": { + "expected": "1.1.1", + "actual": "1.1.1", + "matches": true + }, + "sympy": { + "expected": "1.12", + "actual": "1.12", + "matches": true + }, + "mpmath": { + "expected": "1.3.0", + "actual": "1.3.0", + "matches": true + }, + "pyparsing": { + "expected": "3.0.9", + "actual": "3.0.9", + "matches": true + }, + "packaging": { + "expected": "23.1", + "actual": "23.1", + "matches": true + }, + "setuptools": { + "expected": "67.8.0", + "actual": "67.8.0", + "matches": true + }, + "python-dateutil": { + "expected": "2.8.2", + "actual": "2.8.2", + "matches": true + }, + "pytz": { + "expected": "2023.3", + "actual": "2023.3", + "matches": true + }, + "six": { + "expected": "1.16.0", + "actual": "1.16.0", + "matches": true + }, + "wheel": { + "expected": "0.38.4", + "actual": "0.38.4", + "matches": true + } + }, + "all_package_pins_match": true, + "binary_identical_author_environment_claimed": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/poi-interface/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/poi-interface/generated-code.json new file mode 100644 index 0000000..748d439 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/poi-interface/generated-code.json @@ -0,0 +1,119 @@ +[ + { + "name": "default_neurons", + "type": "NeuronGroup", + "when": "start", + "order": 0, + "active": true, + "code_objects": [] + }, + { + "name": "default_synapses", + "type": "Synapses", + "when": "start", + "order": 0, + "active": true, + "code_objects": [] + }, + { + "name": "default_neurons_stateupdater", + "type": "StateUpdater", + "when": "groups", + "order": 0, + "active": true, + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "code_objects": [ + { + "name": "default_neurons_stateupdater_codeobject_7", + "type": "CallableProxyType", + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n" + } + ] + }, + { + "name": "default_neurons_spike_thresholder", + "type": "Thresholder", + "when": "thresholds", + "order": 0, + "active": true, + "abstract_code": "_cond = (v > v_th) and not_refractory", + "user_code": "_cond = v > v_th", + "code_objects": [ + { + "name": "default_neurons_spike_thresholder_codeobject_7", + "type": "CallableProxyType", + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n" + } + ] + }, + { + "name": "spikemonitor", + "type": "SpikeMonitor", + "when": "thresholds", + "order": 1, + "active": true, + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "user_code": "None", + "code_objects": [ + { + "name": "spikemonitor_codeobject", + "type": "CallableProxyType", + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n" + } + ] + }, + { + "name": "default_synapses_pre", + "type": "SynapticPathway", + "when": "synapses", + "order": -1, + "active": true, + "abstract_code": "g += w\n", + "user_code": "None", + "code_objects": [ + { + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType", + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n" + }, + { + "name": "default_synapses_pre_codeobject_7", + "type": "CallableProxyType", + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n" + } + ] + }, + { + "name": "poissoninput", + "type": "PoissonInput", + "when": "synapses", + "order": 0, + "active": true, + "abstract_code": "v += poissoninput_binomial()*68.75 * mvolt", + "user_code": "", + "code_objects": [ + { + "name": "poissoninput_codeobject", + "type": "CallableProxyType", + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n _lio_1 = 68.75 * mvolt\n # vector code\n _vectorisation_idx = LazyArange(N)\n _sub_idx = _array_default_neurons_subgroup__sub_idx\n v = _array_default_neurons_v[_sub_idx]\n not_refractory = _array_default_neurons_not_refractory[_sub_idx]\n v[not_refractory] += _lio_1 * poissoninput_binomial(_vectorisation_idx[not_refractory])\n _array_default_neurons_v[_sub_idx] = v\n" + } + ] + }, + { + "name": "default_neurons_spike_resetter", + "type": "Resetter", + "when": "resets", + "order": 0, + "active": true, + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "user_code": "None", + "code_objects": [ + { + "name": "default_neurons_spike_resetter_codeobject_7", + "type": "CallableProxyType", + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n" + } + ] + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/poi-interface/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/poi-interface/schedule.json new file mode 100644 index 0000000..f3c3699 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/poi-interface/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+-------------------------------------+----------------------+------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \npoissoninput (PoissonInput) | default_neurons_subgroup (Subgroup) | 100. us (every step) | synapses | 0 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/actual-weights.json new file mode 100644 index 0000000..e7e6a10 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/actual-weights.json @@ -0,0 +1,26 @@ +{ + "edge_id": [ + 1336648, + 1336655, + 1467340, + 1467355, + 1559765, + 1559772 + ], + "weights_mv": [ + 57.75, + 47.29999923706055, + 71.2249984741211, + 64.625, + 62.14999771118164, + 77.82499694824219 + ], + "weights_volt": [ + 0.057750001549720764, + 0.04729999974370003, + 0.07122500240802765, + 0.06462500244379044, + 0.062150001525878906, + 0.07782500237226486 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/brian-output/events.csv new file mode 100644 index 0000000..0b32adf --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/brian-output/events.csv @@ -0,0 +1,449 @@ +step,neuron_idx +0,1381 +46,1197 +51,1511 +79,1381 +99,1197 +122,1511 +144,1381 +166,1197 +188,1511 +211,1381 +233,1197 +255,1511 +278,1381 +300,1197 +322,1511 +345,1381 +367,1197 +389,1511 +412,1381 +434,1197 +456,1511 +479,1381 +501,1197 +523,1511 +546,1381 +568,1197 +590,1511 +613,1381 +635,1197 +657,1511 +680,1381 +702,1197 +724,1511 +747,1381 +769,1197 +791,1511 +814,1381 +836,1197 +858,1511 +881,1381 +903,1197 +925,1511 +948,1381 +970,1197 +992,1511 +1015,1381 +1037,1197 +1059,1511 +1082,1381 +1104,1197 +1126,1511 +1149,1381 +1171,1197 +1193,1511 +1216,1381 +1238,1197 +1260,1511 +1283,1381 +1305,1197 +1327,1511 +1350,1381 +1372,1197 +1394,1511 +1417,1381 +1439,1197 +1461,1511 +1484,1381 +1506,1197 +1528,1511 +1551,1381 +1573,1197 +1595,1511 +1618,1381 +1640,1197 +1662,1511 +1685,1381 +1707,1197 +1729,1511 +1752,1381 +1774,1197 +1796,1511 +1819,1381 +1841,1197 +1863,1511 +1886,1381 +1908,1197 +1930,1511 +1953,1381 +1975,1197 +1997,1511 +2020,1381 +2042,1197 +2064,1511 +2087,1381 +2109,1197 +2131,1511 +2154,1381 +2176,1197 +2198,1511 +2221,1381 +2243,1197 +2265,1511 +2288,1381 +2310,1197 +2332,1511 +2355,1381 +2377,1197 +2399,1511 +2422,1381 +2444,1197 +2466,1511 +2489,1381 +2511,1197 +2533,1511 +2556,1381 +2578,1197 +2600,1511 +2623,1381 +2645,1197 +2667,1511 +2690,1381 +2712,1197 +2734,1511 +2757,1381 +2779,1197 +2801,1511 +2824,1381 +2846,1197 +2868,1511 +2891,1381 +2913,1197 +2935,1511 +2958,1381 +2980,1197 +3002,1511 +3025,1381 +3047,1197 +3069,1511 +3092,1381 +3114,1197 +3136,1511 +3159,1381 +3181,1197 +3203,1511 +3226,1381 +3248,1197 +3270,1511 +3293,1381 +3315,1197 +3337,1511 +3360,1381 +3382,1197 +3404,1511 +3427,1381 +3449,1197 +3471,1511 +3494,1381 +3516,1197 +3538,1511 +3561,1381 +3583,1197 +3605,1511 +3628,1381 +3650,1197 +3672,1511 +3695,1381 +3717,1197 +3739,1511 +3762,1381 +3784,1197 +3806,1511 +3829,1381 +3851,1197 +3873,1511 +3896,1381 +3918,1197 +3940,1511 +3963,1381 +3985,1197 +4007,1511 +4030,1381 +4052,1197 +4074,1511 +4097,1381 +4119,1197 +4141,1511 +4164,1381 +4186,1197 +4208,1511 +4231,1381 +4253,1197 +4275,1511 +4298,1381 +4320,1197 +4342,1511 +4365,1381 +4387,1197 +4409,1511 +4432,1381 +4454,1197 +4476,1511 +4499,1381 +4521,1197 +4543,1511 +4566,1381 +4588,1197 +4610,1511 +4633,1381 +4655,1197 +4677,1511 +4700,1381 +4722,1197 +4744,1511 +4767,1381 +4789,1197 +4811,1511 +4834,1381 +4856,1197 +4878,1511 +4901,1381 +4923,1197 +4945,1511 +4968,1381 +4990,1197 +5012,1511 +5035,1381 +5057,1197 +5079,1511 +5102,1381 +5124,1197 +5146,1511 +5169,1381 +5191,1197 +5213,1511 +5236,1381 +5258,1197 +5280,1511 +5303,1381 +5325,1197 +5347,1511 +5370,1381 +5392,1197 +5414,1511 +5437,1381 +5459,1197 +5481,1511 +5504,1381 +5526,1197 +5548,1511 +5571,1381 +5593,1197 +5615,1511 +5638,1381 +5660,1197 +5682,1511 +5705,1381 +5727,1197 +5749,1511 +5772,1381 +5794,1197 +5816,1511 +5839,1381 +5861,1197 +5883,1511 +5906,1381 +5928,1197 +5950,1511 +5973,1381 +5995,1197 +6017,1511 +6040,1381 +6062,1197 +6084,1511 +6107,1381 +6129,1197 +6151,1511 +6174,1381 +6196,1197 +6218,1511 +6241,1381 +6263,1197 +6285,1511 +6308,1381 +6330,1197 +6352,1511 +6375,1381 +6397,1197 +6419,1511 +6442,1381 +6464,1197 +6486,1511 +6509,1381 +6531,1197 +6553,1511 +6576,1381 +6598,1197 +6620,1511 +6643,1381 +6665,1197 +6687,1511 +6710,1381 +6732,1197 +6754,1511 +6777,1381 +6799,1197 +6821,1511 +6844,1381 +6866,1197 +6888,1511 +6911,1381 +6933,1197 +6955,1511 +6978,1381 +7000,1197 +7022,1511 +7045,1381 +7067,1197 +7089,1511 +7112,1381 +7134,1197 +7156,1511 +7179,1381 +7201,1197 +7223,1511 +7246,1381 +7268,1197 +7290,1511 +7313,1381 +7335,1197 +7357,1511 +7380,1381 +7402,1197 +7424,1511 +7447,1381 +7469,1197 +7491,1511 +7514,1381 +7536,1197 +7558,1511 +7581,1381 +7603,1197 +7625,1511 +7648,1381 +7670,1197 +7692,1511 +7715,1381 +7737,1197 +7759,1511 +7782,1381 +7804,1197 +7826,1511 +7849,1381 +7871,1197 +7893,1511 +7916,1381 +7938,1197 +7960,1511 +7983,1381 +8005,1197 +8027,1511 +8050,1381 +8072,1197 +8094,1511 +8117,1381 +8139,1197 +8161,1511 +8184,1381 +8206,1197 +8228,1511 +8251,1381 +8273,1197 +8295,1511 +8318,1381 +8340,1197 +8362,1511 +8385,1381 +8407,1197 +8429,1511 +8452,1381 +8474,1197 +8496,1511 +8519,1381 +8541,1197 +8563,1511 +8586,1381 +8608,1197 +8630,1511 +8653,1381 +8675,1197 +8697,1511 +8720,1381 +8742,1197 +8764,1511 +8787,1381 +8809,1197 +8831,1511 +8854,1381 +8876,1197 +8898,1511 +8921,1381 +8943,1197 +8965,1511 +8988,1381 +9010,1197 +9032,1511 +9055,1381 +9077,1197 +9099,1511 +9122,1381 +9144,1197 +9166,1511 +9189,1381 +9211,1197 +9233,1511 +9256,1381 +9278,1197 +9300,1511 +9323,1381 +9345,1197 +9367,1511 +9390,1381 +9412,1197 +9434,1511 +9457,1381 +9479,1197 +9501,1511 +9524,1381 +9546,1197 +9568,1511 +9591,1381 +9613,1197 +9635,1511 +9658,1381 +9680,1197 +9702,1511 +9725,1381 +9747,1197 +9769,1511 +9792,1381 +9814,1197 +9836,1511 +9859,1381 +9881,1197 +9903,1511 +9926,1381 +9948,1197 +9970,1511 +9993,1381 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/completeness.csv new file mode 100644 index 0000000..38343a0 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/completeness.csv @@ -0,0 +1,4 @@ +global_neuron_idx,local_index +1197,0 +1381,1 +1511,2 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/generated-code.json new file mode 100644 index 0000000..9dbc8f9 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/generated-code.json @@ -0,0 +1,127 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_1", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "active": true, + "code_objects": [], + "name": "oracle_seed_injection", + "order": 0, + "type": "NetworkOperation", + "when": "before_thresholds" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_2", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_2", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_2", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/run-spec.json new file mode 100644 index 0000000..01c0515 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/run-spec.json @@ -0,0 +1,123 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 1000.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + 1336648, + 1336655, + 1467340, + 1467355, + 1559765, + 1559772 + ], + "external_arrivals": { + "events": 0, + "ordering": "after default_synapses.pre" + }, + "internal_voltage_unit": "volt", + "nodes": [ + 1197, + 1381, + 1511 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float32", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float32", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": 1381 + }, + "steps": 10000, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/schedule.json new file mode 100644 index 0000000..82854df --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+---------------------------------+----------------------+-------------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \noracle_seed_injection (NetworkOperation) | -- | 100. us (every step) | before_thresholds | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/seed.json new file mode 100644 index 0000000..2896d59 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32-repeat/seed.json @@ -0,0 +1,7 @@ +{ + "applied_mv": -43.99999976158142, + "injections": 1, + "margin_mv": 1.0, + "requested_global_node": 1381, + "spiked_at_zero": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float32/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32/actual-weights.json new file mode 100644 index 0000000..e7e6a10 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32/actual-weights.json @@ -0,0 +1,26 @@ +{ + "edge_id": [ + 1336648, + 1336655, + 1467340, + 1467355, + 1559765, + 1559772 + ], + "weights_mv": [ + 57.75, + 47.29999923706055, + 71.2249984741211, + 64.625, + 62.14999771118164, + 77.82499694824219 + ], + "weights_volt": [ + 0.057750001549720764, + 0.04729999974370003, + 0.07122500240802765, + 0.06462500244379044, + 0.062150001525878906, + 0.07782500237226486 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float32/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32/brian-output/events.csv new file mode 100644 index 0000000..0b32adf --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32/brian-output/events.csv @@ -0,0 +1,449 @@ +step,neuron_idx +0,1381 +46,1197 +51,1511 +79,1381 +99,1197 +122,1511 +144,1381 +166,1197 +188,1511 +211,1381 +233,1197 +255,1511 +278,1381 +300,1197 +322,1511 +345,1381 +367,1197 +389,1511 +412,1381 +434,1197 +456,1511 +479,1381 +501,1197 +523,1511 +546,1381 +568,1197 +590,1511 +613,1381 +635,1197 +657,1511 +680,1381 +702,1197 +724,1511 +747,1381 +769,1197 +791,1511 +814,1381 +836,1197 +858,1511 +881,1381 +903,1197 +925,1511 +948,1381 +970,1197 +992,1511 +1015,1381 +1037,1197 +1059,1511 +1082,1381 +1104,1197 +1126,1511 +1149,1381 +1171,1197 +1193,1511 +1216,1381 +1238,1197 +1260,1511 +1283,1381 +1305,1197 +1327,1511 +1350,1381 +1372,1197 +1394,1511 +1417,1381 +1439,1197 +1461,1511 +1484,1381 +1506,1197 +1528,1511 +1551,1381 +1573,1197 +1595,1511 +1618,1381 +1640,1197 +1662,1511 +1685,1381 +1707,1197 +1729,1511 +1752,1381 +1774,1197 +1796,1511 +1819,1381 +1841,1197 +1863,1511 +1886,1381 +1908,1197 +1930,1511 +1953,1381 +1975,1197 +1997,1511 +2020,1381 +2042,1197 +2064,1511 +2087,1381 +2109,1197 +2131,1511 +2154,1381 +2176,1197 +2198,1511 +2221,1381 +2243,1197 +2265,1511 +2288,1381 +2310,1197 +2332,1511 +2355,1381 +2377,1197 +2399,1511 +2422,1381 +2444,1197 +2466,1511 +2489,1381 +2511,1197 +2533,1511 +2556,1381 +2578,1197 +2600,1511 +2623,1381 +2645,1197 +2667,1511 +2690,1381 +2712,1197 +2734,1511 +2757,1381 +2779,1197 +2801,1511 +2824,1381 +2846,1197 +2868,1511 +2891,1381 +2913,1197 +2935,1511 +2958,1381 +2980,1197 +3002,1511 +3025,1381 +3047,1197 +3069,1511 +3092,1381 +3114,1197 +3136,1511 +3159,1381 +3181,1197 +3203,1511 +3226,1381 +3248,1197 +3270,1511 +3293,1381 +3315,1197 +3337,1511 +3360,1381 +3382,1197 +3404,1511 +3427,1381 +3449,1197 +3471,1511 +3494,1381 +3516,1197 +3538,1511 +3561,1381 +3583,1197 +3605,1511 +3628,1381 +3650,1197 +3672,1511 +3695,1381 +3717,1197 +3739,1511 +3762,1381 +3784,1197 +3806,1511 +3829,1381 +3851,1197 +3873,1511 +3896,1381 +3918,1197 +3940,1511 +3963,1381 +3985,1197 +4007,1511 +4030,1381 +4052,1197 +4074,1511 +4097,1381 +4119,1197 +4141,1511 +4164,1381 +4186,1197 +4208,1511 +4231,1381 +4253,1197 +4275,1511 +4298,1381 +4320,1197 +4342,1511 +4365,1381 +4387,1197 +4409,1511 +4432,1381 +4454,1197 +4476,1511 +4499,1381 +4521,1197 +4543,1511 +4566,1381 +4588,1197 +4610,1511 +4633,1381 +4655,1197 +4677,1511 +4700,1381 +4722,1197 +4744,1511 +4767,1381 +4789,1197 +4811,1511 +4834,1381 +4856,1197 +4878,1511 +4901,1381 +4923,1197 +4945,1511 +4968,1381 +4990,1197 +5012,1511 +5035,1381 +5057,1197 +5079,1511 +5102,1381 +5124,1197 +5146,1511 +5169,1381 +5191,1197 +5213,1511 +5236,1381 +5258,1197 +5280,1511 +5303,1381 +5325,1197 +5347,1511 +5370,1381 +5392,1197 +5414,1511 +5437,1381 +5459,1197 +5481,1511 +5504,1381 +5526,1197 +5548,1511 +5571,1381 +5593,1197 +5615,1511 +5638,1381 +5660,1197 +5682,1511 +5705,1381 +5727,1197 +5749,1511 +5772,1381 +5794,1197 +5816,1511 +5839,1381 +5861,1197 +5883,1511 +5906,1381 +5928,1197 +5950,1511 +5973,1381 +5995,1197 +6017,1511 +6040,1381 +6062,1197 +6084,1511 +6107,1381 +6129,1197 +6151,1511 +6174,1381 +6196,1197 +6218,1511 +6241,1381 +6263,1197 +6285,1511 +6308,1381 +6330,1197 +6352,1511 +6375,1381 +6397,1197 +6419,1511 +6442,1381 +6464,1197 +6486,1511 +6509,1381 +6531,1197 +6553,1511 +6576,1381 +6598,1197 +6620,1511 +6643,1381 +6665,1197 +6687,1511 +6710,1381 +6732,1197 +6754,1511 +6777,1381 +6799,1197 +6821,1511 +6844,1381 +6866,1197 +6888,1511 +6911,1381 +6933,1197 +6955,1511 +6978,1381 +7000,1197 +7022,1511 +7045,1381 +7067,1197 +7089,1511 +7112,1381 +7134,1197 +7156,1511 +7179,1381 +7201,1197 +7223,1511 +7246,1381 +7268,1197 +7290,1511 +7313,1381 +7335,1197 +7357,1511 +7380,1381 +7402,1197 +7424,1511 +7447,1381 +7469,1197 +7491,1511 +7514,1381 +7536,1197 +7558,1511 +7581,1381 +7603,1197 +7625,1511 +7648,1381 +7670,1197 +7692,1511 +7715,1381 +7737,1197 +7759,1511 +7782,1381 +7804,1197 +7826,1511 +7849,1381 +7871,1197 +7893,1511 +7916,1381 +7938,1197 +7960,1511 +7983,1381 +8005,1197 +8027,1511 +8050,1381 +8072,1197 +8094,1511 +8117,1381 +8139,1197 +8161,1511 +8184,1381 +8206,1197 +8228,1511 +8251,1381 +8273,1197 +8295,1511 +8318,1381 +8340,1197 +8362,1511 +8385,1381 +8407,1197 +8429,1511 +8452,1381 +8474,1197 +8496,1511 +8519,1381 +8541,1197 +8563,1511 +8586,1381 +8608,1197 +8630,1511 +8653,1381 +8675,1197 +8697,1511 +8720,1381 +8742,1197 +8764,1511 +8787,1381 +8809,1197 +8831,1511 +8854,1381 +8876,1197 +8898,1511 +8921,1381 +8943,1197 +8965,1511 +8988,1381 +9010,1197 +9032,1511 +9055,1381 +9077,1197 +9099,1511 +9122,1381 +9144,1197 +9166,1511 +9189,1381 +9211,1197 +9233,1511 +9256,1381 +9278,1197 +9300,1511 +9323,1381 +9345,1197 +9367,1511 +9390,1381 +9412,1197 +9434,1511 +9457,1381 +9479,1197 +9501,1511 +9524,1381 +9546,1197 +9568,1511 +9591,1381 +9613,1197 +9635,1511 +9658,1381 +9680,1197 +9702,1511 +9725,1381 +9747,1197 +9769,1511 +9792,1381 +9814,1197 +9836,1511 +9859,1381 +9881,1197 +9903,1511 +9926,1381 +9948,1197 +9970,1511 +9993,1381 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float32/comparison.json b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32/comparison.json new file mode 100644 index 0000000..fb4ff98 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32/comparison.json @@ -0,0 +1,11 @@ +{ + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 4.25875186920166e-05, + "mean_abs_mv": 3.7165323893229165e-06, + "same_event_prefix_max_abs_mv": 4.25875186920166e-05, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float32/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32/completeness.csv new file mode 100644 index 0000000..38343a0 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32/completeness.csv @@ -0,0 +1,4 @@ +global_neuron_idx,local_index +1197,0 +1381,1 +1511,2 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float32/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float32/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32/generated-code.json new file mode 100644 index 0000000..dd576cc --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32/generated-code.json @@ -0,0 +1,127 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "active": true, + "code_objects": [], + "name": "oracle_seed_injection", + "order": 0, + "type": "NetworkOperation", + "when": "before_thresholds" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_1", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_1", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_1", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float32/independent-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32/independent-output/events.csv new file mode 100644 index 0000000..0b32adf --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32/independent-output/events.csv @@ -0,0 +1,449 @@ +step,neuron_idx +0,1381 +46,1197 +51,1511 +79,1381 +99,1197 +122,1511 +144,1381 +166,1197 +188,1511 +211,1381 +233,1197 +255,1511 +278,1381 +300,1197 +322,1511 +345,1381 +367,1197 +389,1511 +412,1381 +434,1197 +456,1511 +479,1381 +501,1197 +523,1511 +546,1381 +568,1197 +590,1511 +613,1381 +635,1197 +657,1511 +680,1381 +702,1197 +724,1511 +747,1381 +769,1197 +791,1511 +814,1381 +836,1197 +858,1511 +881,1381 +903,1197 +925,1511 +948,1381 +970,1197 +992,1511 +1015,1381 +1037,1197 +1059,1511 +1082,1381 +1104,1197 +1126,1511 +1149,1381 +1171,1197 +1193,1511 +1216,1381 +1238,1197 +1260,1511 +1283,1381 +1305,1197 +1327,1511 +1350,1381 +1372,1197 +1394,1511 +1417,1381 +1439,1197 +1461,1511 +1484,1381 +1506,1197 +1528,1511 +1551,1381 +1573,1197 +1595,1511 +1618,1381 +1640,1197 +1662,1511 +1685,1381 +1707,1197 +1729,1511 +1752,1381 +1774,1197 +1796,1511 +1819,1381 +1841,1197 +1863,1511 +1886,1381 +1908,1197 +1930,1511 +1953,1381 +1975,1197 +1997,1511 +2020,1381 +2042,1197 +2064,1511 +2087,1381 +2109,1197 +2131,1511 +2154,1381 +2176,1197 +2198,1511 +2221,1381 +2243,1197 +2265,1511 +2288,1381 +2310,1197 +2332,1511 +2355,1381 +2377,1197 +2399,1511 +2422,1381 +2444,1197 +2466,1511 +2489,1381 +2511,1197 +2533,1511 +2556,1381 +2578,1197 +2600,1511 +2623,1381 +2645,1197 +2667,1511 +2690,1381 +2712,1197 +2734,1511 +2757,1381 +2779,1197 +2801,1511 +2824,1381 +2846,1197 +2868,1511 +2891,1381 +2913,1197 +2935,1511 +2958,1381 +2980,1197 +3002,1511 +3025,1381 +3047,1197 +3069,1511 +3092,1381 +3114,1197 +3136,1511 +3159,1381 +3181,1197 +3203,1511 +3226,1381 +3248,1197 +3270,1511 +3293,1381 +3315,1197 +3337,1511 +3360,1381 +3382,1197 +3404,1511 +3427,1381 +3449,1197 +3471,1511 +3494,1381 +3516,1197 +3538,1511 +3561,1381 +3583,1197 +3605,1511 +3628,1381 +3650,1197 +3672,1511 +3695,1381 +3717,1197 +3739,1511 +3762,1381 +3784,1197 +3806,1511 +3829,1381 +3851,1197 +3873,1511 +3896,1381 +3918,1197 +3940,1511 +3963,1381 +3985,1197 +4007,1511 +4030,1381 +4052,1197 +4074,1511 +4097,1381 +4119,1197 +4141,1511 +4164,1381 +4186,1197 +4208,1511 +4231,1381 +4253,1197 +4275,1511 +4298,1381 +4320,1197 +4342,1511 +4365,1381 +4387,1197 +4409,1511 +4432,1381 +4454,1197 +4476,1511 +4499,1381 +4521,1197 +4543,1511 +4566,1381 +4588,1197 +4610,1511 +4633,1381 +4655,1197 +4677,1511 +4700,1381 +4722,1197 +4744,1511 +4767,1381 +4789,1197 +4811,1511 +4834,1381 +4856,1197 +4878,1511 +4901,1381 +4923,1197 +4945,1511 +4968,1381 +4990,1197 +5012,1511 +5035,1381 +5057,1197 +5079,1511 +5102,1381 +5124,1197 +5146,1511 +5169,1381 +5191,1197 +5213,1511 +5236,1381 +5258,1197 +5280,1511 +5303,1381 +5325,1197 +5347,1511 +5370,1381 +5392,1197 +5414,1511 +5437,1381 +5459,1197 +5481,1511 +5504,1381 +5526,1197 +5548,1511 +5571,1381 +5593,1197 +5615,1511 +5638,1381 +5660,1197 +5682,1511 +5705,1381 +5727,1197 +5749,1511 +5772,1381 +5794,1197 +5816,1511 +5839,1381 +5861,1197 +5883,1511 +5906,1381 +5928,1197 +5950,1511 +5973,1381 +5995,1197 +6017,1511 +6040,1381 +6062,1197 +6084,1511 +6107,1381 +6129,1197 +6151,1511 +6174,1381 +6196,1197 +6218,1511 +6241,1381 +6263,1197 +6285,1511 +6308,1381 +6330,1197 +6352,1511 +6375,1381 +6397,1197 +6419,1511 +6442,1381 +6464,1197 +6486,1511 +6509,1381 +6531,1197 +6553,1511 +6576,1381 +6598,1197 +6620,1511 +6643,1381 +6665,1197 +6687,1511 +6710,1381 +6732,1197 +6754,1511 +6777,1381 +6799,1197 +6821,1511 +6844,1381 +6866,1197 +6888,1511 +6911,1381 +6933,1197 +6955,1511 +6978,1381 +7000,1197 +7022,1511 +7045,1381 +7067,1197 +7089,1511 +7112,1381 +7134,1197 +7156,1511 +7179,1381 +7201,1197 +7223,1511 +7246,1381 +7268,1197 +7290,1511 +7313,1381 +7335,1197 +7357,1511 +7380,1381 +7402,1197 +7424,1511 +7447,1381 +7469,1197 +7491,1511 +7514,1381 +7536,1197 +7558,1511 +7581,1381 +7603,1197 +7625,1511 +7648,1381 +7670,1197 +7692,1511 +7715,1381 +7737,1197 +7759,1511 +7782,1381 +7804,1197 +7826,1511 +7849,1381 +7871,1197 +7893,1511 +7916,1381 +7938,1197 +7960,1511 +7983,1381 +8005,1197 +8027,1511 +8050,1381 +8072,1197 +8094,1511 +8117,1381 +8139,1197 +8161,1511 +8184,1381 +8206,1197 +8228,1511 +8251,1381 +8273,1197 +8295,1511 +8318,1381 +8340,1197 +8362,1511 +8385,1381 +8407,1197 +8429,1511 +8452,1381 +8474,1197 +8496,1511 +8519,1381 +8541,1197 +8563,1511 +8586,1381 +8608,1197 +8630,1511 +8653,1381 +8675,1197 +8697,1511 +8720,1381 +8742,1197 +8764,1511 +8787,1381 +8809,1197 +8831,1511 +8854,1381 +8876,1197 +8898,1511 +8921,1381 +8943,1197 +8965,1511 +8988,1381 +9010,1197 +9032,1511 +9055,1381 +9077,1197 +9099,1511 +9122,1381 +9144,1197 +9166,1511 +9189,1381 +9211,1197 +9233,1511 +9256,1381 +9278,1197 +9300,1511 +9323,1381 +9345,1197 +9367,1511 +9390,1381 +9412,1197 +9434,1511 +9457,1381 +9479,1197 +9501,1511 +9524,1381 +9546,1197 +9568,1511 +9591,1381 +9613,1197 +9635,1511 +9658,1381 +9680,1197 +9702,1511 +9725,1381 +9747,1197 +9769,1511 +9792,1381 +9814,1197 +9836,1511 +9859,1381 +9881,1197 +9903,1511 +9926,1381 +9948,1197 +9970,1511 +9993,1381 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float32/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32/run-spec.json new file mode 100644 index 0000000..01c0515 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32/run-spec.json @@ -0,0 +1,123 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 1000.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + 1336648, + 1336655, + 1467340, + 1467355, + 1559765, + 1559772 + ], + "external_arrivals": { + "events": 0, + "ordering": "after default_synapses.pre" + }, + "internal_voltage_unit": "volt", + "nodes": [ + 1197, + 1381, + 1511 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float32", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float32", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": 1381 + }, + "steps": 10000, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float32/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32/schedule.json new file mode 100644 index 0000000..82854df --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+---------------------------------+----------------------+-------------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \noracle_seed_injection (NetworkOperation) | -- | 100. us (every step) | before_thresholds | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float32/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32/seed.json new file mode 100644 index 0000000..2896d59 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float32/seed.json @@ -0,0 +1,7 @@ +{ + "applied_mv": -43.99999976158142, + "injections": 1, + "margin_mv": 1.0, + "requested_global_node": 1381, + "spiked_at_zero": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/actual-weights.json new file mode 100644 index 0000000..bbab456 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/actual-weights.json @@ -0,0 +1,26 @@ +{ + "edge_id": [ + 1336648, + 1336655, + 1467340, + 1467355, + 1559765, + 1559772 + ], + "weights_mv": [ + 57.75, + 47.300000000000004, + 71.22500000000001, + 64.625, + 62.150000000000006, + 77.825 + ], + "weights_volt": [ + 0.05775, + 0.0473, + 0.07122500000000001, + 0.064625, + 0.062150000000000004, + 0.077825 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/brian-output/events.csv new file mode 100644 index 0000000..0b32adf --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/brian-output/events.csv @@ -0,0 +1,449 @@ +step,neuron_idx +0,1381 +46,1197 +51,1511 +79,1381 +99,1197 +122,1511 +144,1381 +166,1197 +188,1511 +211,1381 +233,1197 +255,1511 +278,1381 +300,1197 +322,1511 +345,1381 +367,1197 +389,1511 +412,1381 +434,1197 +456,1511 +479,1381 +501,1197 +523,1511 +546,1381 +568,1197 +590,1511 +613,1381 +635,1197 +657,1511 +680,1381 +702,1197 +724,1511 +747,1381 +769,1197 +791,1511 +814,1381 +836,1197 +858,1511 +881,1381 +903,1197 +925,1511 +948,1381 +970,1197 +992,1511 +1015,1381 +1037,1197 +1059,1511 +1082,1381 +1104,1197 +1126,1511 +1149,1381 +1171,1197 +1193,1511 +1216,1381 +1238,1197 +1260,1511 +1283,1381 +1305,1197 +1327,1511 +1350,1381 +1372,1197 +1394,1511 +1417,1381 +1439,1197 +1461,1511 +1484,1381 +1506,1197 +1528,1511 +1551,1381 +1573,1197 +1595,1511 +1618,1381 +1640,1197 +1662,1511 +1685,1381 +1707,1197 +1729,1511 +1752,1381 +1774,1197 +1796,1511 +1819,1381 +1841,1197 +1863,1511 +1886,1381 +1908,1197 +1930,1511 +1953,1381 +1975,1197 +1997,1511 +2020,1381 +2042,1197 +2064,1511 +2087,1381 +2109,1197 +2131,1511 +2154,1381 +2176,1197 +2198,1511 +2221,1381 +2243,1197 +2265,1511 +2288,1381 +2310,1197 +2332,1511 +2355,1381 +2377,1197 +2399,1511 +2422,1381 +2444,1197 +2466,1511 +2489,1381 +2511,1197 +2533,1511 +2556,1381 +2578,1197 +2600,1511 +2623,1381 +2645,1197 +2667,1511 +2690,1381 +2712,1197 +2734,1511 +2757,1381 +2779,1197 +2801,1511 +2824,1381 +2846,1197 +2868,1511 +2891,1381 +2913,1197 +2935,1511 +2958,1381 +2980,1197 +3002,1511 +3025,1381 +3047,1197 +3069,1511 +3092,1381 +3114,1197 +3136,1511 +3159,1381 +3181,1197 +3203,1511 +3226,1381 +3248,1197 +3270,1511 +3293,1381 +3315,1197 +3337,1511 +3360,1381 +3382,1197 +3404,1511 +3427,1381 +3449,1197 +3471,1511 +3494,1381 +3516,1197 +3538,1511 +3561,1381 +3583,1197 +3605,1511 +3628,1381 +3650,1197 +3672,1511 +3695,1381 +3717,1197 +3739,1511 +3762,1381 +3784,1197 +3806,1511 +3829,1381 +3851,1197 +3873,1511 +3896,1381 +3918,1197 +3940,1511 +3963,1381 +3985,1197 +4007,1511 +4030,1381 +4052,1197 +4074,1511 +4097,1381 +4119,1197 +4141,1511 +4164,1381 +4186,1197 +4208,1511 +4231,1381 +4253,1197 +4275,1511 +4298,1381 +4320,1197 +4342,1511 +4365,1381 +4387,1197 +4409,1511 +4432,1381 +4454,1197 +4476,1511 +4499,1381 +4521,1197 +4543,1511 +4566,1381 +4588,1197 +4610,1511 +4633,1381 +4655,1197 +4677,1511 +4700,1381 +4722,1197 +4744,1511 +4767,1381 +4789,1197 +4811,1511 +4834,1381 +4856,1197 +4878,1511 +4901,1381 +4923,1197 +4945,1511 +4968,1381 +4990,1197 +5012,1511 +5035,1381 +5057,1197 +5079,1511 +5102,1381 +5124,1197 +5146,1511 +5169,1381 +5191,1197 +5213,1511 +5236,1381 +5258,1197 +5280,1511 +5303,1381 +5325,1197 +5347,1511 +5370,1381 +5392,1197 +5414,1511 +5437,1381 +5459,1197 +5481,1511 +5504,1381 +5526,1197 +5548,1511 +5571,1381 +5593,1197 +5615,1511 +5638,1381 +5660,1197 +5682,1511 +5705,1381 +5727,1197 +5749,1511 +5772,1381 +5794,1197 +5816,1511 +5839,1381 +5861,1197 +5883,1511 +5906,1381 +5928,1197 +5950,1511 +5973,1381 +5995,1197 +6017,1511 +6040,1381 +6062,1197 +6084,1511 +6107,1381 +6129,1197 +6151,1511 +6174,1381 +6196,1197 +6218,1511 +6241,1381 +6263,1197 +6285,1511 +6308,1381 +6330,1197 +6352,1511 +6375,1381 +6397,1197 +6419,1511 +6442,1381 +6464,1197 +6486,1511 +6509,1381 +6531,1197 +6553,1511 +6576,1381 +6598,1197 +6620,1511 +6643,1381 +6665,1197 +6687,1511 +6710,1381 +6732,1197 +6754,1511 +6777,1381 +6799,1197 +6821,1511 +6844,1381 +6866,1197 +6888,1511 +6911,1381 +6933,1197 +6955,1511 +6978,1381 +7000,1197 +7022,1511 +7045,1381 +7067,1197 +7089,1511 +7112,1381 +7134,1197 +7156,1511 +7179,1381 +7201,1197 +7223,1511 +7246,1381 +7268,1197 +7290,1511 +7313,1381 +7335,1197 +7357,1511 +7380,1381 +7402,1197 +7424,1511 +7447,1381 +7469,1197 +7491,1511 +7514,1381 +7536,1197 +7558,1511 +7581,1381 +7603,1197 +7625,1511 +7648,1381 +7670,1197 +7692,1511 +7715,1381 +7737,1197 +7759,1511 +7782,1381 +7804,1197 +7826,1511 +7849,1381 +7871,1197 +7893,1511 +7916,1381 +7938,1197 +7960,1511 +7983,1381 +8005,1197 +8027,1511 +8050,1381 +8072,1197 +8094,1511 +8117,1381 +8139,1197 +8161,1511 +8184,1381 +8206,1197 +8228,1511 +8251,1381 +8273,1197 +8295,1511 +8318,1381 +8340,1197 +8362,1511 +8385,1381 +8407,1197 +8429,1511 +8452,1381 +8474,1197 +8496,1511 +8519,1381 +8541,1197 +8563,1511 +8586,1381 +8608,1197 +8630,1511 +8653,1381 +8675,1197 +8697,1511 +8720,1381 +8742,1197 +8764,1511 +8787,1381 +8809,1197 +8831,1511 +8854,1381 +8876,1197 +8898,1511 +8921,1381 +8943,1197 +8965,1511 +8988,1381 +9010,1197 +9032,1511 +9055,1381 +9077,1197 +9099,1511 +9122,1381 +9144,1197 +9166,1511 +9189,1381 +9211,1197 +9233,1511 +9256,1381 +9278,1197 +9300,1511 +9323,1381 +9345,1197 +9367,1511 +9390,1381 +9412,1197 +9434,1511 +9457,1381 +9479,1197 +9501,1511 +9524,1381 +9546,1197 +9568,1511 +9591,1381 +9613,1197 +9635,1511 +9658,1381 +9680,1197 +9702,1511 +9725,1381 +9747,1197 +9769,1511 +9792,1381 +9814,1197 +9836,1511 +9859,1381 +9881,1197 +9903,1511 +9926,1381 +9948,1197 +9970,1511 +9993,1381 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/completeness.csv new file mode 100644 index 0000000..38343a0 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/completeness.csv @@ -0,0 +1,4 @@ +global_neuron_idx,local_index +1197,0 +1381,1 +1511,2 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/generated-code.json new file mode 100644 index 0000000..dd576cc --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/generated-code.json @@ -0,0 +1,127 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "active": true, + "code_objects": [], + "name": "oracle_seed_injection", + "order": 0, + "type": "NetworkOperation", + "when": "before_thresholds" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_1", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_1", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_1", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/run-spec.json new file mode 100644 index 0000000..e95601e --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/run-spec.json @@ -0,0 +1,123 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 1000.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + 1336648, + 1336655, + 1467340, + 1467355, + 1559765, + 1559772 + ], + "external_arrivals": { + "events": 0, + "ordering": "after default_synapses.pre" + }, + "internal_voltage_unit": "volt", + "nodes": [ + 1197, + 1381, + 1511 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float64", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float64", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": 1381 + }, + "steps": 10000, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/schedule.json new file mode 100644 index 0000000..82854df --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+---------------------------------+----------------------+-------------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \noracle_seed_injection (NetworkOperation) | -- | 100. us (every step) | before_thresholds | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/seed.json new file mode 100644 index 0000000..37b8750 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64-repeat/seed.json @@ -0,0 +1,7 @@ +{ + "applied_mv": -44.0, + "injections": 1, + "margin_mv": 1.0, + "requested_global_node": 1381, + "spiked_at_zero": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float64/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64/actual-weights.json new file mode 100644 index 0000000..bbab456 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64/actual-weights.json @@ -0,0 +1,26 @@ +{ + "edge_id": [ + 1336648, + 1336655, + 1467340, + 1467355, + 1559765, + 1559772 + ], + "weights_mv": [ + 57.75, + 47.300000000000004, + 71.22500000000001, + 64.625, + 62.150000000000006, + 77.825 + ], + "weights_volt": [ + 0.05775, + 0.0473, + 0.07122500000000001, + 0.064625, + 0.062150000000000004, + 0.077825 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float64/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64/brian-output/events.csv new file mode 100644 index 0000000..0b32adf --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64/brian-output/events.csv @@ -0,0 +1,449 @@ +step,neuron_idx +0,1381 +46,1197 +51,1511 +79,1381 +99,1197 +122,1511 +144,1381 +166,1197 +188,1511 +211,1381 +233,1197 +255,1511 +278,1381 +300,1197 +322,1511 +345,1381 +367,1197 +389,1511 +412,1381 +434,1197 +456,1511 +479,1381 +501,1197 +523,1511 +546,1381 +568,1197 +590,1511 +613,1381 +635,1197 +657,1511 +680,1381 +702,1197 +724,1511 +747,1381 +769,1197 +791,1511 +814,1381 +836,1197 +858,1511 +881,1381 +903,1197 +925,1511 +948,1381 +970,1197 +992,1511 +1015,1381 +1037,1197 +1059,1511 +1082,1381 +1104,1197 +1126,1511 +1149,1381 +1171,1197 +1193,1511 +1216,1381 +1238,1197 +1260,1511 +1283,1381 +1305,1197 +1327,1511 +1350,1381 +1372,1197 +1394,1511 +1417,1381 +1439,1197 +1461,1511 +1484,1381 +1506,1197 +1528,1511 +1551,1381 +1573,1197 +1595,1511 +1618,1381 +1640,1197 +1662,1511 +1685,1381 +1707,1197 +1729,1511 +1752,1381 +1774,1197 +1796,1511 +1819,1381 +1841,1197 +1863,1511 +1886,1381 +1908,1197 +1930,1511 +1953,1381 +1975,1197 +1997,1511 +2020,1381 +2042,1197 +2064,1511 +2087,1381 +2109,1197 +2131,1511 +2154,1381 +2176,1197 +2198,1511 +2221,1381 +2243,1197 +2265,1511 +2288,1381 +2310,1197 +2332,1511 +2355,1381 +2377,1197 +2399,1511 +2422,1381 +2444,1197 +2466,1511 +2489,1381 +2511,1197 +2533,1511 +2556,1381 +2578,1197 +2600,1511 +2623,1381 +2645,1197 +2667,1511 +2690,1381 +2712,1197 +2734,1511 +2757,1381 +2779,1197 +2801,1511 +2824,1381 +2846,1197 +2868,1511 +2891,1381 +2913,1197 +2935,1511 +2958,1381 +2980,1197 +3002,1511 +3025,1381 +3047,1197 +3069,1511 +3092,1381 +3114,1197 +3136,1511 +3159,1381 +3181,1197 +3203,1511 +3226,1381 +3248,1197 +3270,1511 +3293,1381 +3315,1197 +3337,1511 +3360,1381 +3382,1197 +3404,1511 +3427,1381 +3449,1197 +3471,1511 +3494,1381 +3516,1197 +3538,1511 +3561,1381 +3583,1197 +3605,1511 +3628,1381 +3650,1197 +3672,1511 +3695,1381 +3717,1197 +3739,1511 +3762,1381 +3784,1197 +3806,1511 +3829,1381 +3851,1197 +3873,1511 +3896,1381 +3918,1197 +3940,1511 +3963,1381 +3985,1197 +4007,1511 +4030,1381 +4052,1197 +4074,1511 +4097,1381 +4119,1197 +4141,1511 +4164,1381 +4186,1197 +4208,1511 +4231,1381 +4253,1197 +4275,1511 +4298,1381 +4320,1197 +4342,1511 +4365,1381 +4387,1197 +4409,1511 +4432,1381 +4454,1197 +4476,1511 +4499,1381 +4521,1197 +4543,1511 +4566,1381 +4588,1197 +4610,1511 +4633,1381 +4655,1197 +4677,1511 +4700,1381 +4722,1197 +4744,1511 +4767,1381 +4789,1197 +4811,1511 +4834,1381 +4856,1197 +4878,1511 +4901,1381 +4923,1197 +4945,1511 +4968,1381 +4990,1197 +5012,1511 +5035,1381 +5057,1197 +5079,1511 +5102,1381 +5124,1197 +5146,1511 +5169,1381 +5191,1197 +5213,1511 +5236,1381 +5258,1197 +5280,1511 +5303,1381 +5325,1197 +5347,1511 +5370,1381 +5392,1197 +5414,1511 +5437,1381 +5459,1197 +5481,1511 +5504,1381 +5526,1197 +5548,1511 +5571,1381 +5593,1197 +5615,1511 +5638,1381 +5660,1197 +5682,1511 +5705,1381 +5727,1197 +5749,1511 +5772,1381 +5794,1197 +5816,1511 +5839,1381 +5861,1197 +5883,1511 +5906,1381 +5928,1197 +5950,1511 +5973,1381 +5995,1197 +6017,1511 +6040,1381 +6062,1197 +6084,1511 +6107,1381 +6129,1197 +6151,1511 +6174,1381 +6196,1197 +6218,1511 +6241,1381 +6263,1197 +6285,1511 +6308,1381 +6330,1197 +6352,1511 +6375,1381 +6397,1197 +6419,1511 +6442,1381 +6464,1197 +6486,1511 +6509,1381 +6531,1197 +6553,1511 +6576,1381 +6598,1197 +6620,1511 +6643,1381 +6665,1197 +6687,1511 +6710,1381 +6732,1197 +6754,1511 +6777,1381 +6799,1197 +6821,1511 +6844,1381 +6866,1197 +6888,1511 +6911,1381 +6933,1197 +6955,1511 +6978,1381 +7000,1197 +7022,1511 +7045,1381 +7067,1197 +7089,1511 +7112,1381 +7134,1197 +7156,1511 +7179,1381 +7201,1197 +7223,1511 +7246,1381 +7268,1197 +7290,1511 +7313,1381 +7335,1197 +7357,1511 +7380,1381 +7402,1197 +7424,1511 +7447,1381 +7469,1197 +7491,1511 +7514,1381 +7536,1197 +7558,1511 +7581,1381 +7603,1197 +7625,1511 +7648,1381 +7670,1197 +7692,1511 +7715,1381 +7737,1197 +7759,1511 +7782,1381 +7804,1197 +7826,1511 +7849,1381 +7871,1197 +7893,1511 +7916,1381 +7938,1197 +7960,1511 +7983,1381 +8005,1197 +8027,1511 +8050,1381 +8072,1197 +8094,1511 +8117,1381 +8139,1197 +8161,1511 +8184,1381 +8206,1197 +8228,1511 +8251,1381 +8273,1197 +8295,1511 +8318,1381 +8340,1197 +8362,1511 +8385,1381 +8407,1197 +8429,1511 +8452,1381 +8474,1197 +8496,1511 +8519,1381 +8541,1197 +8563,1511 +8586,1381 +8608,1197 +8630,1511 +8653,1381 +8675,1197 +8697,1511 +8720,1381 +8742,1197 +8764,1511 +8787,1381 +8809,1197 +8831,1511 +8854,1381 +8876,1197 +8898,1511 +8921,1381 +8943,1197 +8965,1511 +8988,1381 +9010,1197 +9032,1511 +9055,1381 +9077,1197 +9099,1511 +9122,1381 +9144,1197 +9166,1511 +9189,1381 +9211,1197 +9233,1511 +9256,1381 +9278,1197 +9300,1511 +9323,1381 +9345,1197 +9367,1511 +9390,1381 +9412,1197 +9434,1511 +9457,1381 +9479,1197 +9501,1511 +9524,1381 +9546,1197 +9568,1511 +9591,1381 +9613,1197 +9635,1511 +9658,1381 +9680,1197 +9702,1511 +9725,1381 +9747,1197 +9769,1511 +9792,1381 +9814,1197 +9836,1511 +9859,1381 +9881,1197 +9903,1511 +9926,1381 +9948,1197 +9970,1511 +9993,1381 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float64/comparison.json b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64/comparison.json new file mode 100644 index 0000000..d25c05c --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64/comparison.json @@ -0,0 +1,11 @@ +{ + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 8.526512829121202e-14, + "mean_abs_mv": 8.113095380698118e-15, + "same_event_prefix_max_abs_mv": 8.526512829121202e-14, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float64/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64/completeness.csv new file mode 100644 index 0000000..38343a0 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64/completeness.csv @@ -0,0 +1,4 @@ +global_neuron_idx,local_index +1197,0 +1381,1 +1511,2 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float64/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float64/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64/generated-code.json new file mode 100644 index 0000000..70b0317 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64/generated-code.json @@ -0,0 +1,127 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_8", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "active": true, + "code_objects": [], + "name": "oracle_seed_injection", + "order": 0, + "type": "NetworkOperation", + "when": "before_thresholds" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float64/independent-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64/independent-output/events.csv new file mode 100644 index 0000000..0b32adf --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64/independent-output/events.csv @@ -0,0 +1,449 @@ +step,neuron_idx +0,1381 +46,1197 +51,1511 +79,1381 +99,1197 +122,1511 +144,1381 +166,1197 +188,1511 +211,1381 +233,1197 +255,1511 +278,1381 +300,1197 +322,1511 +345,1381 +367,1197 +389,1511 +412,1381 +434,1197 +456,1511 +479,1381 +501,1197 +523,1511 +546,1381 +568,1197 +590,1511 +613,1381 +635,1197 +657,1511 +680,1381 +702,1197 +724,1511 +747,1381 +769,1197 +791,1511 +814,1381 +836,1197 +858,1511 +881,1381 +903,1197 +925,1511 +948,1381 +970,1197 +992,1511 +1015,1381 +1037,1197 +1059,1511 +1082,1381 +1104,1197 +1126,1511 +1149,1381 +1171,1197 +1193,1511 +1216,1381 +1238,1197 +1260,1511 +1283,1381 +1305,1197 +1327,1511 +1350,1381 +1372,1197 +1394,1511 +1417,1381 +1439,1197 +1461,1511 +1484,1381 +1506,1197 +1528,1511 +1551,1381 +1573,1197 +1595,1511 +1618,1381 +1640,1197 +1662,1511 +1685,1381 +1707,1197 +1729,1511 +1752,1381 +1774,1197 +1796,1511 +1819,1381 +1841,1197 +1863,1511 +1886,1381 +1908,1197 +1930,1511 +1953,1381 +1975,1197 +1997,1511 +2020,1381 +2042,1197 +2064,1511 +2087,1381 +2109,1197 +2131,1511 +2154,1381 +2176,1197 +2198,1511 +2221,1381 +2243,1197 +2265,1511 +2288,1381 +2310,1197 +2332,1511 +2355,1381 +2377,1197 +2399,1511 +2422,1381 +2444,1197 +2466,1511 +2489,1381 +2511,1197 +2533,1511 +2556,1381 +2578,1197 +2600,1511 +2623,1381 +2645,1197 +2667,1511 +2690,1381 +2712,1197 +2734,1511 +2757,1381 +2779,1197 +2801,1511 +2824,1381 +2846,1197 +2868,1511 +2891,1381 +2913,1197 +2935,1511 +2958,1381 +2980,1197 +3002,1511 +3025,1381 +3047,1197 +3069,1511 +3092,1381 +3114,1197 +3136,1511 +3159,1381 +3181,1197 +3203,1511 +3226,1381 +3248,1197 +3270,1511 +3293,1381 +3315,1197 +3337,1511 +3360,1381 +3382,1197 +3404,1511 +3427,1381 +3449,1197 +3471,1511 +3494,1381 +3516,1197 +3538,1511 +3561,1381 +3583,1197 +3605,1511 +3628,1381 +3650,1197 +3672,1511 +3695,1381 +3717,1197 +3739,1511 +3762,1381 +3784,1197 +3806,1511 +3829,1381 +3851,1197 +3873,1511 +3896,1381 +3918,1197 +3940,1511 +3963,1381 +3985,1197 +4007,1511 +4030,1381 +4052,1197 +4074,1511 +4097,1381 +4119,1197 +4141,1511 +4164,1381 +4186,1197 +4208,1511 +4231,1381 +4253,1197 +4275,1511 +4298,1381 +4320,1197 +4342,1511 +4365,1381 +4387,1197 +4409,1511 +4432,1381 +4454,1197 +4476,1511 +4499,1381 +4521,1197 +4543,1511 +4566,1381 +4588,1197 +4610,1511 +4633,1381 +4655,1197 +4677,1511 +4700,1381 +4722,1197 +4744,1511 +4767,1381 +4789,1197 +4811,1511 +4834,1381 +4856,1197 +4878,1511 +4901,1381 +4923,1197 +4945,1511 +4968,1381 +4990,1197 +5012,1511 +5035,1381 +5057,1197 +5079,1511 +5102,1381 +5124,1197 +5146,1511 +5169,1381 +5191,1197 +5213,1511 +5236,1381 +5258,1197 +5280,1511 +5303,1381 +5325,1197 +5347,1511 +5370,1381 +5392,1197 +5414,1511 +5437,1381 +5459,1197 +5481,1511 +5504,1381 +5526,1197 +5548,1511 +5571,1381 +5593,1197 +5615,1511 +5638,1381 +5660,1197 +5682,1511 +5705,1381 +5727,1197 +5749,1511 +5772,1381 +5794,1197 +5816,1511 +5839,1381 +5861,1197 +5883,1511 +5906,1381 +5928,1197 +5950,1511 +5973,1381 +5995,1197 +6017,1511 +6040,1381 +6062,1197 +6084,1511 +6107,1381 +6129,1197 +6151,1511 +6174,1381 +6196,1197 +6218,1511 +6241,1381 +6263,1197 +6285,1511 +6308,1381 +6330,1197 +6352,1511 +6375,1381 +6397,1197 +6419,1511 +6442,1381 +6464,1197 +6486,1511 +6509,1381 +6531,1197 +6553,1511 +6576,1381 +6598,1197 +6620,1511 +6643,1381 +6665,1197 +6687,1511 +6710,1381 +6732,1197 +6754,1511 +6777,1381 +6799,1197 +6821,1511 +6844,1381 +6866,1197 +6888,1511 +6911,1381 +6933,1197 +6955,1511 +6978,1381 +7000,1197 +7022,1511 +7045,1381 +7067,1197 +7089,1511 +7112,1381 +7134,1197 +7156,1511 +7179,1381 +7201,1197 +7223,1511 +7246,1381 +7268,1197 +7290,1511 +7313,1381 +7335,1197 +7357,1511 +7380,1381 +7402,1197 +7424,1511 +7447,1381 +7469,1197 +7491,1511 +7514,1381 +7536,1197 +7558,1511 +7581,1381 +7603,1197 +7625,1511 +7648,1381 +7670,1197 +7692,1511 +7715,1381 +7737,1197 +7759,1511 +7782,1381 +7804,1197 +7826,1511 +7849,1381 +7871,1197 +7893,1511 +7916,1381 +7938,1197 +7960,1511 +7983,1381 +8005,1197 +8027,1511 +8050,1381 +8072,1197 +8094,1511 +8117,1381 +8139,1197 +8161,1511 +8184,1381 +8206,1197 +8228,1511 +8251,1381 +8273,1197 +8295,1511 +8318,1381 +8340,1197 +8362,1511 +8385,1381 +8407,1197 +8429,1511 +8452,1381 +8474,1197 +8496,1511 +8519,1381 +8541,1197 +8563,1511 +8586,1381 +8608,1197 +8630,1511 +8653,1381 +8675,1197 +8697,1511 +8720,1381 +8742,1197 +8764,1511 +8787,1381 +8809,1197 +8831,1511 +8854,1381 +8876,1197 +8898,1511 +8921,1381 +8943,1197 +8965,1511 +8988,1381 +9010,1197 +9032,1511 +9055,1381 +9077,1197 +9099,1511 +9122,1381 +9144,1197 +9166,1511 +9189,1381 +9211,1197 +9233,1511 +9256,1381 +9278,1197 +9300,1511 +9323,1381 +9345,1197 +9367,1511 +9390,1381 +9412,1197 +9434,1511 +9457,1381 +9479,1197 +9501,1511 +9524,1381 +9546,1197 +9568,1511 +9591,1381 +9613,1197 +9635,1511 +9658,1381 +9680,1197 +9702,1511 +9725,1381 +9747,1197 +9769,1511 +9792,1381 +9814,1197 +9836,1511 +9859,1381 +9881,1197 +9903,1511 +9926,1381 +9948,1197 +9970,1511 +9993,1381 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float64/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64/run-spec.json new file mode 100644 index 0000000..e95601e --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64/run-spec.json @@ -0,0 +1,123 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 1000.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + 1336648, + 1336655, + 1467340, + 1467355, + 1559765, + 1559772 + ], + "external_arrivals": { + "events": 0, + "ordering": "after default_synapses.pre" + }, + "internal_voltage_unit": "volt", + "nodes": [ + 1197, + 1381, + 1511 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float64", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float64", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": 1381 + }, + "steps": 10000, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float64/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64/schedule.json new file mode 100644 index 0000000..82854df --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+---------------------------------+----------------------+-------------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \noracle_seed_injection (NetworkOperation) | -- | 100. us (every step) | before_thresholds | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/trio-float64/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64/seed.json new file mode 100644 index 0000000..37b8750 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/trio-float64/seed.json @@ -0,0 +1,7 @@ +{ + "applied_mv": -44.0, + "injections": 1, + "margin_mv": 1.0, + "requested_global_node": 1381, + "spiked_at_zero": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/actual-weights.json new file mode 100644 index 0000000..14b16bb --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/actual-weights.json @@ -0,0 +1,11 @@ +{ + "edge_id": [ + -1 + ], + "weights_mv": [ + 0.0 + ], + "weights_volt": [ + 0.0 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/brian-output/events.csv new file mode 100644 index 0000000..9ecbb05 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/brian-output/events.csv @@ -0,0 +1,2 @@ +step,neuron_idx +0,-1 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/comparison.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/comparison.json new file mode 100644 index 0000000..a9e3395 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/comparison.json @@ -0,0 +1,11 @@ +{ + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 1.0728836059570312e-06, + "mean_abs_mv": 5.364418029785156e-07, + "same_event_prefix_max_abs_mv": 1.0728836059570312e-06, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/completeness.csv new file mode 100644 index 0000000..f05fab6 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/completeness.csv @@ -0,0 +1,2 @@ +global_neuron_idx,local_index +-1,0 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/external-arrivals.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/external-arrivals.csv new file mode 100644 index 0000000..1d42707 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/external-arrivals.csv @@ -0,0 +1 @@ +tick,neuron_idx,requested_mv diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/generated-code.json new file mode 100644 index 0000000..8a7e49d --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/generated-code.json @@ -0,0 +1,127 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_8", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "active": true, + "code_objects": [], + "name": "oracle_seed_injection", + "order": 0, + "type": "NetworkOperation", + "when": "before_thresholds" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_8", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_8", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_8", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/independent-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/independent-output/events.csv new file mode 100644 index 0000000..9ecbb05 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/independent-output/events.csv @@ -0,0 +1,2 @@ +step,neuron_idx +0,-1 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/run-spec.json new file mode 100644 index 0000000..c607022 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/run-spec.json @@ -0,0 +1,116 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 20.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + -1 + ], + "external_arrivals": { + "events": 0, + "ordering": "after default_synapses.pre" + }, + "internal_voltage_unit": "volt", + "nodes": [ + -1 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float32", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float32", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": -1 + }, + "steps": 200, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/schedule.json new file mode 100644 index 0000000..82854df --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+---------------------------------+----------------------+-------------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \noracle_seed_injection (NetworkOperation) | -- | 100. us (every step) | before_thresholds | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/seed.json new file mode 100644 index 0000000..d7e5e06 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float32/seed.json @@ -0,0 +1,7 @@ +{ + "applied_mv": -43.99999976158142, + "injections": 1, + "margin_mv": 1.0, + "requested_global_node": -1, + "spiked_at_zero": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/actual-weights.json new file mode 100644 index 0000000..14b16bb --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/actual-weights.json @@ -0,0 +1,11 @@ +{ + "edge_id": [ + -1 + ], + "weights_mv": [ + 0.0 + ], + "weights_volt": [ + 0.0 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/brian-output/events.csv new file mode 100644 index 0000000..9ecbb05 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/brian-output/events.csv @@ -0,0 +1,2 @@ +step,neuron_idx +0,-1 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/comparison.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/comparison.json new file mode 100644 index 0000000..9ae07c7 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/comparison.json @@ -0,0 +1,11 @@ +{ + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 7.105427357601002e-15, + "mean_abs_mv": 3.552713678800501e-15, + "same_event_prefix_max_abs_mv": 7.105427357601002e-15, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/completeness.csv new file mode 100644 index 0000000..f05fab6 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/completeness.csv @@ -0,0 +1,2 @@ +global_neuron_idx,local_index +-1,0 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/external-arrivals.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/external-arrivals.csv new file mode 100644 index 0000000..1d42707 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/external-arrivals.csv @@ -0,0 +1 @@ +tick,neuron_idx,requested_mv diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/generated-code.json new file mode 100644 index 0000000..80cfaca --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/generated-code.json @@ -0,0 +1,127 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_4", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "active": true, + "code_objects": [], + "name": "oracle_seed_injection", + "order": 0, + "type": "NetworkOperation", + "when": "before_thresholds" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_4", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_4", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_4", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/independent-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/independent-output/events.csv new file mode 100644 index 0000000..9ecbb05 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/independent-output/events.csv @@ -0,0 +1,2 @@ +step,neuron_idx +0,-1 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/run-spec.json new file mode 100644 index 0000000..9e9954f --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/run-spec.json @@ -0,0 +1,116 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 20.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + -1 + ], + "external_arrivals": { + "events": 0, + "ordering": "after default_synapses.pre" + }, + "internal_voltage_unit": "volt", + "nodes": [ + -1 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float64", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float64", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": -1 + }, + "steps": 200, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/schedule.json new file mode 100644 index 0000000..82854df --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+---------------------------------+----------------------+-------------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \noracle_seed_injection (NetworkOperation) | -- | 100. us (every step) | before_thresholds | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/seed.json new file mode 100644 index 0000000..d555d7c --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-above_threshold-float64/seed.json @@ -0,0 +1,7 @@ +{ + "applied_mv": -44.0, + "injections": 1, + "margin_mv": 1.0, + "requested_global_node": -1, + "spiked_at_zero": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/actual-weights.json new file mode 100644 index 0000000..6b13b96 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/actual-weights.json @@ -0,0 +1,11 @@ +{ + "edge_id": [ + -1 + ], + "weights_mv": [ + 0.2749999761581421 + ], + "weights_volt": [ + 0.0002749999985098839 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/brian-output/events.csv new file mode 100644 index 0000000..ef5e951 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/brian-output/events.csv @@ -0,0 +1,2 @@ +step,neuron_idx +0,-2 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/comparison.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/comparison.json new file mode 100644 index 0000000..dd6790e --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/comparison.json @@ -0,0 +1,11 @@ +{ + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.0001220405101776123, + "mean_abs_mv": 1.6799908344182768e-05, + "same_event_prefix_max_abs_mv": 0.0001220405101776123, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/completeness.csv new file mode 100644 index 0000000..4cf89ed --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/completeness.csv @@ -0,0 +1,3 @@ +global_neuron_idx,local_index +-2,0 +-1,1 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/generated-code.json new file mode 100644 index 0000000..92dd789 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/generated-code.json @@ -0,0 +1,127 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_5", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "active": true, + "code_objects": [], + "name": "oracle_seed_injection", + "order": 0, + "type": "NetworkOperation", + "when": "before_thresholds" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_5", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_6", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_6", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/independent-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/independent-output/events.csv new file mode 100644 index 0000000..ef5e951 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/independent-output/events.csv @@ -0,0 +1,2 @@ +step,neuron_idx +0,-2 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/run-spec.json new file mode 100644 index 0000000..ee9edfa --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/run-spec.json @@ -0,0 +1,117 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 20.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + -1 + ], + "external_arrivals": { + "events": 0, + "ordering": "after default_synapses.pre" + }, + "internal_voltage_unit": "volt", + "nodes": [ + -2, + -1 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float32", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float32", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": -2 + }, + "steps": 200, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/schedule.json new file mode 100644 index 0000000..82854df --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+---------------------------------+----------------------+-------------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \noracle_seed_injection (NetworkOperation) | -- | 100. us (every step) | before_thresholds | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/seed.json new file mode 100644 index 0000000..c8c80fa --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float32/seed.json @@ -0,0 +1,7 @@ +{ + "applied_mv": -43.99999976158142, + "injections": 1, + "margin_mv": 1.0, + "requested_global_node": -2, + "spiked_at_zero": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/actual-weights.json new file mode 100644 index 0000000..bc37d47 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/actual-weights.json @@ -0,0 +1,11 @@ +{ + "edge_id": [ + -1 + ], + "weights_mv": [ + 0.275 + ], + "weights_volt": [ + 0.000275 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/brian-output/events.csv new file mode 100644 index 0000000..ef5e951 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/brian-output/events.csv @@ -0,0 +1,2 @@ +step,neuron_idx +0,-2 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/comparison.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/comparison.json new file mode 100644 index 0000000..cc8585b --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/comparison.json @@ -0,0 +1,11 @@ +{ + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 2.3447910280083306e-13, + "mean_abs_mv": 3.262299068038099e-14, + "same_event_prefix_max_abs_mv": 2.3447910280083306e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/completeness.csv new file mode 100644 index 0000000..4cf89ed --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/completeness.csv @@ -0,0 +1,3 @@ +global_neuron_idx,local_index +-2,0 +-1,1 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/generated-code.json new file mode 100644 index 0000000..163e724 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/generated-code.json @@ -0,0 +1,127 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_2", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "active": true, + "code_objects": [], + "name": "oracle_seed_injection", + "order": 0, + "type": "NetworkOperation", + "when": "before_thresholds" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_2", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_3", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_3", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/independent-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/independent-output/events.csv new file mode 100644 index 0000000..ef5e951 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/independent-output/events.csv @@ -0,0 +1,2 @@ +step,neuron_idx +0,-2 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/run-spec.json new file mode 100644 index 0000000..8c5203e --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/run-spec.json @@ -0,0 +1,117 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 20.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + -1 + ], + "external_arrivals": { + "events": 0, + "ordering": "after default_synapses.pre" + }, + "internal_voltage_unit": "volt", + "nodes": [ + -2, + -1 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float64", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float64", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": -2 + }, + "steps": 200, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/schedule.json new file mode 100644 index 0000000..82854df --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+---------------------------------+----------------------+-------------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \noracle_seed_injection (NetworkOperation) | -- | 100. us (every step) | before_thresholds | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/seed.json new file mode 100644 index 0000000..67dbaa0 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-delay_18-float64/seed.json @@ -0,0 +1,7 @@ +{ + "applied_mv": -44.0, + "injections": 1, + "margin_mv": 1.0, + "requested_global_node": -2, + "spiked_at_zero": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/actual-weights.json new file mode 100644 index 0000000..14b16bb --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/actual-weights.json @@ -0,0 +1,11 @@ +{ + "edge_id": [ + -1 + ], + "weights_mv": [ + 0.0 + ], + "weights_volt": [ + 0.0 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/brian-output/events.csv new file mode 100644 index 0000000..256e1e4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/brian-output/events.csv @@ -0,0 +1 @@ +step,neuron_idx diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/comparison.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/comparison.json new file mode 100644 index 0000000..9f8c75d --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/comparison.json @@ -0,0 +1,11 @@ +{ + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.00012242794036865234, + "mean_abs_mv": 3.6822035908699036e-05, + "same_event_prefix_max_abs_mv": 0.00012242794036865234, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/completeness.csv new file mode 100644 index 0000000..f05fab6 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/completeness.csv @@ -0,0 +1,2 @@ +global_neuron_idx,local_index +-1,0 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/external-arrivals.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/external-arrivals.csv new file mode 100644 index 0000000..1d42707 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/external-arrivals.csv @@ -0,0 +1 @@ +tick,neuron_idx,requested_mv diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/generated-code.json new file mode 100644 index 0000000..a3090f6 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/generated-code.json @@ -0,0 +1,127 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_7", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "active": true, + "code_objects": [], + "name": "oracle_seed_injection", + "order": 0, + "type": "NetworkOperation", + "when": "before_thresholds" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_7", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_7", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_7", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/independent-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/independent-output/events.csv new file mode 100644 index 0000000..256e1e4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/independent-output/events.csv @@ -0,0 +1 @@ +step,neuron_idx diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/run-spec.json new file mode 100644 index 0000000..25e8979 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/run-spec.json @@ -0,0 +1,116 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 20.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 0.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + -1 + ], + "external_arrivals": { + "events": 0, + "ordering": "after default_synapses.pre" + }, + "internal_voltage_unit": "volt", + "nodes": [ + -1 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float32", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float32", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 0.0, + "requested_global_node": -1 + }, + "steps": 200, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/schedule.json new file mode 100644 index 0000000..82854df --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+---------------------------------+----------------------+-------------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \noracle_seed_injection (NetworkOperation) | -- | 100. us (every step) | before_thresholds | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/seed.json new file mode 100644 index 0000000..0672c09 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float32/seed.json @@ -0,0 +1,7 @@ +{ + "applied_mv": -45.00000178813934, + "injections": 1, + "margin_mv": 0.0, + "requested_global_node": -1, + "spiked_at_zero": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/actual-weights.json new file mode 100644 index 0000000..14b16bb --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/actual-weights.json @@ -0,0 +1,11 @@ +{ + "edge_id": [ + -1 + ], + "weights_mv": [ + 0.0 + ], + "weights_volt": [ + 0.0 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/brian-output/events.csv new file mode 100644 index 0000000..256e1e4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/brian-output/events.csv @@ -0,0 +1 @@ +step,neuron_idx diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/comparison.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/comparison.json new file mode 100644 index 0000000..233ba94 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/comparison.json @@ -0,0 +1,11 @@ +{ + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 2.2026824808563106e-13, + "mean_abs_mv": 5.400124791776761e-14, + "same_event_prefix_max_abs_mv": 2.2026824808563106e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/completeness.csv new file mode 100644 index 0000000..f05fab6 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/completeness.csv @@ -0,0 +1,2 @@ +global_neuron_idx,local_index +-1,0 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/external-arrivals.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/external-arrivals.csv new file mode 100644 index 0000000..1d42707 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/external-arrivals.csv @@ -0,0 +1 @@ +tick,neuron_idx,requested_mv diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/generated-code.json new file mode 100644 index 0000000..163e724 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/generated-code.json @@ -0,0 +1,127 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_2", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "active": true, + "code_objects": [], + "name": "oracle_seed_injection", + "order": 0, + "type": "NetworkOperation", + "when": "before_thresholds" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_2", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_3", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_3", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/independent-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/independent-output/events.csv new file mode 100644 index 0000000..256e1e4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/independent-output/events.csv @@ -0,0 +1 @@ +step,neuron_idx diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/run-spec.json new file mode 100644 index 0000000..525e6ff --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/run-spec.json @@ -0,0 +1,116 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 20.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 0.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + -1 + ], + "external_arrivals": { + "events": 0, + "ordering": "after default_synapses.pre" + }, + "internal_voltage_unit": "volt", + "nodes": [ + -1 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float64", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float64", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 0.0, + "requested_global_node": -1 + }, + "steps": 200, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/schedule.json new file mode 100644 index 0000000..82854df --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+---------------------------------+----------------------+-------------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \noracle_seed_injection (NetworkOperation) | -- | 100. us (every step) | before_thresholds | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/seed.json new file mode 100644 index 0000000..8bbb596 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-equal_threshold-float64/seed.json @@ -0,0 +1,7 @@ +{ + "applied_mv": -45.0, + "injections": 1, + "margin_mv": 0.0, + "requested_global_node": -1, + "spiked_at_zero": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/actual-weights.json new file mode 100644 index 0000000..14b16bb --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/actual-weights.json @@ -0,0 +1,11 @@ +{ + "edge_id": [ + -1 + ], + "weights_mv": [ + 0.0 + ], + "weights_volt": [ + 0.0 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/brian-output/events.csv new file mode 100644 index 0000000..256e1e4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/brian-output/events.csv @@ -0,0 +1 @@ +step,neuron_idx diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/comparison.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/comparison.json new file mode 100644 index 0000000..51baee3 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/comparison.json @@ -0,0 +1,11 @@ +{ + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.00011596083641052246, + "mean_abs_mv": 3.622157426434569e-05, + "same_event_prefix_max_abs_mv": 0.00011596083641052246, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/completeness.csv new file mode 100644 index 0000000..f05fab6 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/completeness.csv @@ -0,0 +1,2 @@ +global_neuron_idx,local_index +-1,0 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/external-arrivals.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/external-arrivals.csv new file mode 100644 index 0000000..ce577a4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/external-arrivals.csv @@ -0,0 +1,2 @@ +tick,neuron_idx,requested_mv +0,-1,-1.0 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/generated-code.json new file mode 100644 index 0000000..8924072 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/generated-code.json @@ -0,0 +1,164 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "zz_external_arrivals", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_6", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_6", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _the_period = _array_zz_external_sources__period_bins[0]\n _timebin = _array_defaultclock_timestep[0]\n _n_spikes = 0\n _lastindex_before = _array_zz_external_sources__lastindex[0]\n if _the_period > 0:\n _timebin %= _the_period\n # If there is a periodicity in the SpikeGenerator, we need to reset the\n # lastindex when the period has passed\n if _lastindex_before > 0 and _array_zz_external_sources__timebins[_lastindex_before - 1] >= _timebin:\n _lastindex_before = 0\n _n_spikes = _numpy.searchsorted(_array_zz_external_sources__timebins[_lastindex_before:],\n _timebin, side='right')\n _array_zz_external_sources__lastindex[0] = _lastindex_before + _n_spikes\n _indices = _array_zz_external_sources_neuron_index[_lastindex_before:_lastindex_before+_n_spikes]\n _array_zz_external_sources__spikespace[:_n_spikes] = _indices\n _array_zz_external_sources__spikespace[-1] = _n_spikes\n", + "name": "zz_external_sources_codeobject_2", + "type": "CallableProxyType" + } + ], + "name": "zz_external_sources", + "order": 0, + "type": "SpikeGeneratorGroup", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_5", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "g_post += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "zz_external_arrivals_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g_post += w\n _postsynaptic_idx = _array_zz_external_arrivals__synaptic_post[_idx]\n w = _array_zz_external_arrivals_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "zz_external_arrivals_pre_codeobject_2", + "type": "CallableProxyType" + } + ], + "name": "zz_external_arrivals_pre", + "order": 0, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_5", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/independent-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/independent-output/events.csv new file mode 100644 index 0000000..256e1e4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/independent-output/events.csv @@ -0,0 +1 @@ +step,neuron_idx diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/run-spec.json new file mode 100644 index 0000000..eb59eb5 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/run-spec.json @@ -0,0 +1,120 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 20.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + -1 + ], + "external_arrivals": { + "actual_weights_mv": [ + -1.0 + ], + "events": 1, + "ordering": "after default_synapses.pre", + "pathway_order": 0 + }, + "internal_voltage_unit": "volt", + "nodes": [ + -1 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float32", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float32", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": null + }, + "steps": 200, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/schedule.json new file mode 100644 index 0000000..2ca6fb3 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+-------------------------------------------+----------------------+------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nzz_external_sources (SpikeGeneratorGroup) | zz_external_sources (SpikeGeneratorGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \nzz_external_arrivals_pre (SynapticPathway) | zz_external_arrivals (Synapses) | 100. us (every step) | synapses | 0 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/seed.json new file mode 100644 index 0000000..f164c97 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float32/seed.json @@ -0,0 +1,5 @@ +{ + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": null +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/actual-weights.json new file mode 100644 index 0000000..14b16bb --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/actual-weights.json @@ -0,0 +1,11 @@ +{ + "edge_id": [ + -1 + ], + "weights_mv": [ + 0.0 + ], + "weights_volt": [ + 0.0 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/brian-output/events.csv new file mode 100644 index 0000000..256e1e4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/brian-output/events.csv @@ -0,0 +1 @@ +step,neuron_idx diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/comparison.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/comparison.json new file mode 100644 index 0000000..aa74528 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/comparison.json @@ -0,0 +1,11 @@ +{ + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 2.4158453015843406e-13, + "mean_abs_mv": 7.103867841196099e-14, + "same_event_prefix_max_abs_mv": 2.4158453015843406e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/completeness.csv new file mode 100644 index 0000000..f05fab6 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/completeness.csv @@ -0,0 +1,2 @@ +global_neuron_idx,local_index +-1,0 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/external-arrivals.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/external-arrivals.csv new file mode 100644 index 0000000..ce577a4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/external-arrivals.csv @@ -0,0 +1,2 @@ +tick,neuron_idx,requested_mv +0,-1,-1.0 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/generated-code.json new file mode 100644 index 0000000..f7e50b7 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/generated-code.json @@ -0,0 +1,164 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "zz_external_arrivals", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_2", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_2", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _the_period = _array_zz_external_sources__period_bins[0]\n _timebin = _array_defaultclock_timestep[0]\n _n_spikes = 0\n _lastindex_before = _array_zz_external_sources__lastindex[0]\n if _the_period > 0:\n _timebin %= _the_period\n # If there is a periodicity in the SpikeGenerator, we need to reset the\n # lastindex when the period has passed\n if _lastindex_before > 0 and _array_zz_external_sources__timebins[_lastindex_before - 1] >= _timebin:\n _lastindex_before = 0\n _n_spikes = _numpy.searchsorted(_array_zz_external_sources__timebins[_lastindex_before:],\n _timebin, side='right')\n _array_zz_external_sources__lastindex[0] = _lastindex_before + _n_spikes\n _indices = _array_zz_external_sources_neuron_index[_lastindex_before:_lastindex_before+_n_spikes]\n _array_zz_external_sources__spikespace[:_n_spikes] = _indices\n _array_zz_external_sources__spikespace[-1] = _n_spikes\n", + "name": "zz_external_sources_codeobject_1", + "type": "CallableProxyType" + } + ], + "name": "zz_external_sources", + "order": 0, + "type": "SpikeGeneratorGroup", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_2", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "g_post += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "zz_external_arrivals_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g_post += w\n _postsynaptic_idx = _array_zz_external_arrivals__synaptic_post[_idx]\n w = _array_zz_external_arrivals_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "zz_external_arrivals_pre_codeobject_1", + "type": "CallableProxyType" + } + ], + "name": "zz_external_arrivals_pre", + "order": 0, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_2", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/independent-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/independent-output/events.csv new file mode 100644 index 0000000..256e1e4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/independent-output/events.csv @@ -0,0 +1 @@ +step,neuron_idx diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/run-spec.json new file mode 100644 index 0000000..a21409e --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/run-spec.json @@ -0,0 +1,120 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 20.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + -1 + ], + "external_arrivals": { + "actual_weights_mv": [ + -1.0 + ], + "events": 1, + "ordering": "after default_synapses.pre", + "pathway_order": 0 + }, + "internal_voltage_unit": "volt", + "nodes": [ + -1 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float64", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float64", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": null + }, + "steps": 200, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/schedule.json new file mode 100644 index 0000000..2ca6fb3 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+-------------------------------------------+----------------------+------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nzz_external_sources (SpikeGeneratorGroup) | zz_external_sources (SpikeGeneratorGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \nzz_external_arrivals_pre (SynapticPathway) | zz_external_arrivals (Synapses) | 100. us (every step) | synapses | 0 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/seed.json new file mode 100644 index 0000000..f164c97 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-inhibition-float64/seed.json @@ -0,0 +1,5 @@ +{ + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": null +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/actual-weights.json new file mode 100644 index 0000000..14b16bb --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/actual-weights.json @@ -0,0 +1,11 @@ +{ + "edge_id": [ + -1 + ], + "weights_mv": [ + 0.0 + ], + "weights_volt": [ + 0.0 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/brian-output/events.csv new file mode 100644 index 0000000..5cb39e0 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/brian-output/events.csv @@ -0,0 +1,2 @@ +step,neuron_idx +1,-1 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/comparison.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/comparison.json new file mode 100644 index 0000000..1bdb12a --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/comparison.json @@ -0,0 +1,11 @@ +{ + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.0001220703125, + "mean_abs_mv": 8.416175842285156e-07, + "same_event_prefix_max_abs_mv": 0.0001220703125, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/completeness.csv new file mode 100644 index 0000000..f05fab6 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/completeness.csv @@ -0,0 +1,2 @@ +global_neuron_idx,local_index +-1,0 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/external-arrivals.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/external-arrivals.csv new file mode 100644 index 0000000..399fc7a --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/external-arrivals.csv @@ -0,0 +1,2 @@ +tick,neuron_idx,requested_mv +0,-1,2000.0 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/generated-code.json new file mode 100644 index 0000000..c16007d --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/generated-code.json @@ -0,0 +1,164 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "zz_external_arrivals", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_9", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_9", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _the_period = _array_zz_external_sources__period_bins[0]\n _timebin = _array_defaultclock_timestep[0]\n _n_spikes = 0\n _lastindex_before = _array_zz_external_sources__lastindex[0]\n if _the_period > 0:\n _timebin %= _the_period\n # If there is a periodicity in the SpikeGenerator, we need to reset the\n # lastindex when the period has passed\n if _lastindex_before > 0 and _array_zz_external_sources__timebins[_lastindex_before - 1] >= _timebin:\n _lastindex_before = 0\n _n_spikes = _numpy.searchsorted(_array_zz_external_sources__timebins[_lastindex_before:],\n _timebin, side='right')\n _array_zz_external_sources__lastindex[0] = _lastindex_before + _n_spikes\n _indices = _array_zz_external_sources_neuron_index[_lastindex_before:_lastindex_before+_n_spikes]\n _array_zz_external_sources__spikespace[:_n_spikes] = _indices\n _array_zz_external_sources__spikespace[-1] = _n_spikes\n", + "name": "zz_external_sources_codeobject_4", + "type": "CallableProxyType" + } + ], + "name": "zz_external_sources", + "order": 0, + "type": "SpikeGeneratorGroup", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_9", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "g_post += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "zz_external_arrivals_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g_post += w\n _postsynaptic_idx = _array_zz_external_arrivals__synaptic_post[_idx]\n w = _array_zz_external_arrivals_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "zz_external_arrivals_pre_codeobject_4", + "type": "CallableProxyType" + } + ], + "name": "zz_external_arrivals_pre", + "order": 0, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_9", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/independent-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/independent-output/events.csv new file mode 100644 index 0000000..5cb39e0 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/independent-output/events.csv @@ -0,0 +1,2 @@ +step,neuron_idx +1,-1 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/run-spec.json new file mode 100644 index 0000000..a04fff1 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/run-spec.json @@ -0,0 +1,120 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 20.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + -1 + ], + "external_arrivals": { + "actual_weights_mv": [ + 1999.9998779296875 + ], + "events": 1, + "ordering": "after default_synapses.pre", + "pathway_order": 0 + }, + "internal_voltage_unit": "volt", + "nodes": [ + -1 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float32", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float32", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": null + }, + "steps": 200, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/schedule.json new file mode 100644 index 0000000..2ca6fb3 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+-------------------------------------------+----------------------+------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nzz_external_sources (SpikeGeneratorGroup) | zz_external_sources (SpikeGeneratorGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \nzz_external_arrivals_pre (SynapticPathway) | zz_external_arrivals (Synapses) | 100. us (every step) | synapses | 0 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/seed.json new file mode 100644 index 0000000..f164c97 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float32/seed.json @@ -0,0 +1,5 @@ +{ + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": null +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/actual-weights.json new file mode 100644 index 0000000..14b16bb --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/actual-weights.json @@ -0,0 +1,11 @@ +{ + "edge_id": [ + -1 + ], + "weights_mv": [ + 0.0 + ], + "weights_volt": [ + 0.0 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/brian-output/events.csv new file mode 100644 index 0000000..5cb39e0 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/brian-output/events.csv @@ -0,0 +1,2 @@ +step,neuron_idx +1,-1 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/comparison.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/comparison.json new file mode 100644 index 0000000..9ae07c7 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/comparison.json @@ -0,0 +1,11 @@ +{ + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 7.105427357601002e-15, + "mean_abs_mv": 3.552713678800501e-15, + "same_event_prefix_max_abs_mv": 7.105427357601002e-15, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/completeness.csv new file mode 100644 index 0000000..f05fab6 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/completeness.csv @@ -0,0 +1,2 @@ +global_neuron_idx,local_index +-1,0 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/external-arrivals.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/external-arrivals.csv new file mode 100644 index 0000000..399fc7a --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/external-arrivals.csv @@ -0,0 +1,2 @@ +tick,neuron_idx,requested_mv +0,-1,2000.0 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/generated-code.json new file mode 100644 index 0000000..b6b2149 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/generated-code.json @@ -0,0 +1,164 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "zz_external_arrivals", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_5", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_5", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _the_period = _array_zz_external_sources__period_bins[0]\n _timebin = _array_defaultclock_timestep[0]\n _n_spikes = 0\n _lastindex_before = _array_zz_external_sources__lastindex[0]\n if _the_period > 0:\n _timebin %= _the_period\n # If there is a periodicity in the SpikeGenerator, we need to reset the\n # lastindex when the period has passed\n if _lastindex_before > 0 and _array_zz_external_sources__timebins[_lastindex_before - 1] >= _timebin:\n _lastindex_before = 0\n _n_spikes = _numpy.searchsorted(_array_zz_external_sources__timebins[_lastindex_before:],\n _timebin, side='right')\n _array_zz_external_sources__lastindex[0] = _lastindex_before + _n_spikes\n _indices = _array_zz_external_sources_neuron_index[_lastindex_before:_lastindex_before+_n_spikes]\n _array_zz_external_sources__spikespace[:_n_spikes] = _indices\n _array_zz_external_sources__spikespace[-1] = _n_spikes\n", + "name": "zz_external_sources_codeobject_2", + "type": "CallableProxyType" + } + ], + "name": "zz_external_sources", + "order": 0, + "type": "SpikeGeneratorGroup", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_5", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "g_post += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "zz_external_arrivals_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g_post += w\n _postsynaptic_idx = _array_zz_external_arrivals__synaptic_post[_idx]\n w = _array_zz_external_arrivals_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "zz_external_arrivals_pre_codeobject_2", + "type": "CallableProxyType" + } + ], + "name": "zz_external_arrivals_pre", + "order": 0, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_5", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/independent-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/independent-output/events.csv new file mode 100644 index 0000000..5cb39e0 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/independent-output/events.csv @@ -0,0 +1,2 @@ +step,neuron_idx +1,-1 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/run-spec.json new file mode 100644 index 0000000..ed4c8a9 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/run-spec.json @@ -0,0 +1,120 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 20.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + -1 + ], + "external_arrivals": { + "actual_weights_mv": [ + 2000.0 + ], + "events": 1, + "ordering": "after default_synapses.pre", + "pathway_order": 0 + }, + "internal_voltage_unit": "volt", + "nodes": [ + -1 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float64", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float64", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": null + }, + "steps": 200, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/schedule.json new file mode 100644 index 0000000..2ca6fb3 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+-------------------------------------------+----------------------+------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nzz_external_sources (SpikeGeneratorGroup) | zz_external_sources (SpikeGeneratorGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \nzz_external_arrivals_pre (SynapticPathway) | zz_external_arrivals (Synapses) | 100. us (every step) | synapses | 0 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/seed.json new file mode 100644 index 0000000..f164c97 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-nonzero_g_reset-float64/seed.json @@ -0,0 +1,5 @@ +{ + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": null +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/actual-weights.json new file mode 100644 index 0000000..14b16bb --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/actual-weights.json @@ -0,0 +1,11 @@ +{ + "edge_id": [ + -1 + ], + "weights_mv": [ + 0.0 + ], + "weights_volt": [ + 0.0 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/brian-output/events.csv new file mode 100644 index 0000000..9ecbb05 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/brian-output/events.csv @@ -0,0 +1,2 @@ +step,neuron_idx +0,-1 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/comparison.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/comparison.json new file mode 100644 index 0000000..f4c447d --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/comparison.json @@ -0,0 +1,11 @@ +{ + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.00010353326797485352, + "mean_abs_mv": 2.6278293235009186e-05, + "same_event_prefix_max_abs_mv": 0.00010353326797485352, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/completeness.csv new file mode 100644 index 0000000..f05fab6 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/completeness.csv @@ -0,0 +1,2 @@ +global_neuron_idx,local_index +-1,0 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/external-arrivals.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/external-arrivals.csv new file mode 100644 index 0000000..405bebe --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/external-arrivals.csv @@ -0,0 +1,5 @@ +tick,neuron_idx,requested_mv +0,-1,0.1 +21,-1,0.1 +22,-1,0.1 +23,-1,0.1 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/generated-code.json new file mode 100644 index 0000000..9679389 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/generated-code.json @@ -0,0 +1,172 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "zz_external_arrivals", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_5", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "active": true, + "code_objects": [], + "name": "oracle_seed_injection", + "order": 0, + "type": "NetworkOperation", + "when": "before_thresholds" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_5", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _the_period = _array_zz_external_sources__period_bins[0]\n _timebin = _array_defaultclock_timestep[0]\n _n_spikes = 0\n _lastindex_before = _array_zz_external_sources__lastindex[0]\n if _the_period > 0:\n _timebin %= _the_period\n # If there is a periodicity in the SpikeGenerator, we need to reset the\n # lastindex when the period has passed\n if _lastindex_before > 0 and _array_zz_external_sources__timebins[_lastindex_before - 1] >= _timebin:\n _lastindex_before = 0\n _n_spikes = _numpy.searchsorted(_array_zz_external_sources__timebins[_lastindex_before:],\n _timebin, side='right')\n _array_zz_external_sources__lastindex[0] = _lastindex_before + _n_spikes\n _indices = _array_zz_external_sources_neuron_index[_lastindex_before:_lastindex_before+_n_spikes]\n _array_zz_external_sources__spikespace[:_n_spikes] = _indices\n _array_zz_external_sources__spikespace[-1] = _n_spikes\n", + "name": "zz_external_sources_codeobject_3", + "type": "CallableProxyType" + } + ], + "name": "zz_external_sources", + "order": 0, + "type": "SpikeGeneratorGroup", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_6", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "g_post += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "zz_external_arrivals_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g_post += w\n _postsynaptic_idx = _array_zz_external_arrivals__synaptic_post[_idx]\n w = _array_zz_external_arrivals_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "zz_external_arrivals_pre_codeobject_3", + "type": "CallableProxyType" + } + ], + "name": "zz_external_arrivals_pre", + "order": 0, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_6", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/independent-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/independent-output/events.csv new file mode 100644 index 0000000..9ecbb05 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/independent-output/events.csv @@ -0,0 +1,2 @@ +step,neuron_idx +0,-1 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/run-spec.json new file mode 100644 index 0000000..5967b70 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/run-spec.json @@ -0,0 +1,123 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 20.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + -1 + ], + "external_arrivals": { + "actual_weights_mv": [ + 0.09999999403953552, + 0.09999999403953552, + 0.09999999403953552, + 0.09999999403953552 + ], + "events": 4, + "ordering": "after default_synapses.pre", + "pathway_order": 0 + }, + "internal_voltage_unit": "volt", + "nodes": [ + -1 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float32", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float32", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": -1 + }, + "steps": 200, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/schedule.json new file mode 100644 index 0000000..7f413fa --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+-------------------------------------------+----------------------+-------------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \noracle_seed_injection (NetworkOperation) | -- | 100. us (every step) | before_thresholds | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nzz_external_sources (SpikeGeneratorGroup) | zz_external_sources (SpikeGeneratorGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \nzz_external_arrivals_pre (SynapticPathway) | zz_external_arrivals (Synapses) | 100. us (every step) | synapses | 0 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/seed.json new file mode 100644 index 0000000..d7e5e06 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float32/seed.json @@ -0,0 +1,7 @@ +{ + "applied_mv": -43.99999976158142, + "injections": 1, + "margin_mv": 1.0, + "requested_global_node": -1, + "spiked_at_zero": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/actual-weights.json new file mode 100644 index 0000000..14b16bb --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/actual-weights.json @@ -0,0 +1,11 @@ +{ + "edge_id": [ + -1 + ], + "weights_mv": [ + 0.0 + ], + "weights_volt": [ + 0.0 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/brian-output/events.csv new file mode 100644 index 0000000..9ecbb05 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/brian-output/events.csv @@ -0,0 +1,2 @@ +step,neuron_idx +0,-1 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/comparison.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/comparison.json new file mode 100644 index 0000000..f81fb07 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/comparison.json @@ -0,0 +1,11 @@ +{ + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 1.9184653865522705e-13, + "mean_abs_mv": 4.753580341854136e-14, + "same_event_prefix_max_abs_mv": 1.9184653865522705e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/completeness.csv new file mode 100644 index 0000000..f05fab6 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/completeness.csv @@ -0,0 +1,2 @@ +global_neuron_idx,local_index +-1,0 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/external-arrivals.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/external-arrivals.csv new file mode 100644 index 0000000..405bebe --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/external-arrivals.csv @@ -0,0 +1,5 @@ +tick,neuron_idx,requested_mv +0,-1,0.1 +21,-1,0.1 +22,-1,0.1 +23,-1,0.1 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/generated-code.json new file mode 100644 index 0000000..8d0fc31 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/generated-code.json @@ -0,0 +1,172 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "zz_external_arrivals", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_3", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "active": true, + "code_objects": [], + "name": "oracle_seed_injection", + "order": 0, + "type": "NetworkOperation", + "when": "before_thresholds" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_3", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _the_period = _array_zz_external_sources__period_bins[0]\n _timebin = _array_defaultclock_timestep[0]\n _n_spikes = 0\n _lastindex_before = _array_zz_external_sources__lastindex[0]\n if _the_period > 0:\n _timebin %= _the_period\n # If there is a periodicity in the SpikeGenerator, we need to reset the\n # lastindex when the period has passed\n if _lastindex_before > 0 and _array_zz_external_sources__timebins[_lastindex_before - 1] >= _timebin:\n _lastindex_before = 0\n _n_spikes = _numpy.searchsorted(_array_zz_external_sources__timebins[_lastindex_before:],\n _timebin, side='right')\n _array_zz_external_sources__lastindex[0] = _lastindex_before + _n_spikes\n _indices = _array_zz_external_sources_neuron_index[_lastindex_before:_lastindex_before+_n_spikes]\n _array_zz_external_sources__spikespace[:_n_spikes] = _indices\n _array_zz_external_sources__spikespace[-1] = _n_spikes\n", + "name": "zz_external_sources_codeobject_1", + "type": "CallableProxyType" + } + ], + "name": "zz_external_sources", + "order": 0, + "type": "SpikeGeneratorGroup", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_2", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "g_post += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "zz_external_arrivals_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g_post += w\n _postsynaptic_idx = _array_zz_external_arrivals__synaptic_post[_idx]\n w = _array_zz_external_arrivals_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "zz_external_arrivals_pre_codeobject_1", + "type": "CallableProxyType" + } + ], + "name": "zz_external_arrivals_pre", + "order": 0, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_2", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/independent-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/independent-output/events.csv new file mode 100644 index 0000000..9ecbb05 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/independent-output/events.csv @@ -0,0 +1,2 @@ +step,neuron_idx +0,-1 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/run-spec.json new file mode 100644 index 0000000..424aafd --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/run-spec.json @@ -0,0 +1,123 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 20.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + -1 + ], + "external_arrivals": { + "actual_weights_mv": [ + 0.1, + 0.1, + 0.1, + 0.1 + ], + "events": 4, + "ordering": "after default_synapses.pre", + "pathway_order": 0 + }, + "internal_voltage_unit": "volt", + "nodes": [ + -1 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float64", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float64", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": -1 + }, + "steps": 200, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/schedule.json new file mode 100644 index 0000000..7f413fa --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+-------------------------------------------+----------------------+-------------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \noracle_seed_injection (NetworkOperation) | -- | 100. us (every step) | before_thresholds | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nzz_external_sources (SpikeGeneratorGroup) | zz_external_sources (SpikeGeneratorGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \nzz_external_arrivals_pre (SynapticPathway) | zz_external_arrivals (Synapses) | 100. us (every step) | synapses | 0 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/seed.json new file mode 100644 index 0000000..d555d7c --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-refractory_boundary-float64/seed.json @@ -0,0 +1,7 @@ +{ + "applied_mv": -44.0, + "injections": 1, + "margin_mv": 1.0, + "requested_global_node": -1, + "spiked_at_zero": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/actual-weights.json new file mode 100644 index 0000000..14b16bb --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/actual-weights.json @@ -0,0 +1,11 @@ +{ + "edge_id": [ + -1 + ], + "weights_mv": [ + 0.0 + ], + "weights_volt": [ + 0.0 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/brian-output/events.csv new file mode 100644 index 0000000..256e1e4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/brian-output/events.csv @@ -0,0 +1 @@ +step,neuron_idx diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/comparison.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/comparison.json new file mode 100644 index 0000000..559a911 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/comparison.json @@ -0,0 +1,11 @@ +{ + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.00012701749801635742, + "mean_abs_mv": 3.341285439091735e-05, + "same_event_prefix_max_abs_mv": 0.00012701749801635742, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/completeness.csv new file mode 100644 index 0000000..f05fab6 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/completeness.csv @@ -0,0 +1,2 @@ +global_neuron_idx,local_index +-1,0 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/external-arrivals.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/external-arrivals.csv new file mode 100644 index 0000000..40c5a00 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/external-arrivals.csv @@ -0,0 +1,2 @@ +tick,neuron_idx,requested_mv +0,-1,1.0 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/generated-code.json new file mode 100644 index 0000000..b6b2149 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/generated-code.json @@ -0,0 +1,164 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "zz_external_arrivals", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_5", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_5", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _the_period = _array_zz_external_sources__period_bins[0]\n _timebin = _array_defaultclock_timestep[0]\n _n_spikes = 0\n _lastindex_before = _array_zz_external_sources__lastindex[0]\n if _the_period > 0:\n _timebin %= _the_period\n # If there is a periodicity in the SpikeGenerator, we need to reset the\n # lastindex when the period has passed\n if _lastindex_before > 0 and _array_zz_external_sources__timebins[_lastindex_before - 1] >= _timebin:\n _lastindex_before = 0\n _n_spikes = _numpy.searchsorted(_array_zz_external_sources__timebins[_lastindex_before:],\n _timebin, side='right')\n _array_zz_external_sources__lastindex[0] = _lastindex_before + _n_spikes\n _indices = _array_zz_external_sources_neuron_index[_lastindex_before:_lastindex_before+_n_spikes]\n _array_zz_external_sources__spikespace[:_n_spikes] = _indices\n _array_zz_external_sources__spikespace[-1] = _n_spikes\n", + "name": "zz_external_sources_codeobject_2", + "type": "CallableProxyType" + } + ], + "name": "zz_external_sources", + "order": 0, + "type": "SpikeGeneratorGroup", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_5", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "g_post += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "zz_external_arrivals_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g_post += w\n _postsynaptic_idx = _array_zz_external_arrivals__synaptic_post[_idx]\n w = _array_zz_external_arrivals_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "zz_external_arrivals_pre_codeobject_2", + "type": "CallableProxyType" + } + ], + "name": "zz_external_arrivals_pre", + "order": 0, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_5", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/independent-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/independent-output/events.csv new file mode 100644 index 0000000..256e1e4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/independent-output/events.csv @@ -0,0 +1 @@ +step,neuron_idx diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/run-spec.json new file mode 100644 index 0000000..176709e --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/run-spec.json @@ -0,0 +1,120 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 20.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + -1 + ], + "external_arrivals": { + "actual_weights_mv": [ + 1.0 + ], + "events": 1, + "ordering": "after default_synapses.pre", + "pathway_order": 0 + }, + "internal_voltage_unit": "volt", + "nodes": [ + -1 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float32", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float32", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": null + }, + "steps": 200, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/schedule.json new file mode 100644 index 0000000..2ca6fb3 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+-------------------------------------------+----------------------+------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nzz_external_sources (SpikeGeneratorGroup) | zz_external_sources (SpikeGeneratorGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \nzz_external_arrivals_pre (SynapticPathway) | zz_external_arrivals (Synapses) | 100. us (every step) | synapses | 0 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/seed.json new file mode 100644 index 0000000..f164c97 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float32/seed.json @@ -0,0 +1,5 @@ +{ + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": null +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/actual-weights.json new file mode 100644 index 0000000..14b16bb --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/actual-weights.json @@ -0,0 +1,11 @@ +{ + "edge_id": [ + -1 + ], + "weights_mv": [ + 0.0 + ], + "weights_volt": [ + 0.0 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/brian-output/events.csv new file mode 100644 index 0000000..256e1e4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/brian-output/events.csv @@ -0,0 +1 @@ +step,neuron_idx diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/comparison.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/comparison.json new file mode 100644 index 0000000..a91b042 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/comparison.json @@ -0,0 +1,11 @@ +{ + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 2.3447910280083306e-13, + "mean_abs_mv": 7.853490427423005e-14, + "same_event_prefix_max_abs_mv": 2.3447910280083306e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/completeness.csv new file mode 100644 index 0000000..f05fab6 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/completeness.csv @@ -0,0 +1,2 @@ +global_neuron_idx,local_index +-1,0 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/external-arrivals.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/external-arrivals.csv new file mode 100644 index 0000000..40c5a00 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/external-arrivals.csv @@ -0,0 +1,2 @@ +tick,neuron_idx,requested_mv +0,-1,1.0 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/generated-code.json new file mode 100644 index 0000000..1a7f276 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/generated-code.json @@ -0,0 +1,164 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "zz_external_arrivals", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_1", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_1", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _the_period = _array_zz_external_sources__period_bins[0]\n _timebin = _array_defaultclock_timestep[0]\n _n_spikes = 0\n _lastindex_before = _array_zz_external_sources__lastindex[0]\n if _the_period > 0:\n _timebin %= _the_period\n # If there is a periodicity in the SpikeGenerator, we need to reset the\n # lastindex when the period has passed\n if _lastindex_before > 0 and _array_zz_external_sources__timebins[_lastindex_before - 1] >= _timebin:\n _lastindex_before = 0\n _n_spikes = _numpy.searchsorted(_array_zz_external_sources__timebins[_lastindex_before:],\n _timebin, side='right')\n _array_zz_external_sources__lastindex[0] = _lastindex_before + _n_spikes\n _indices = _array_zz_external_sources_neuron_index[_lastindex_before:_lastindex_before+_n_spikes]\n _array_zz_external_sources__spikespace[:_n_spikes] = _indices\n _array_zz_external_sources__spikespace[-1] = _n_spikes\n", + "name": "zz_external_sources_codeobject", + "type": "CallableProxyType" + } + ], + "name": "zz_external_sources", + "order": 0, + "type": "SpikeGeneratorGroup", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_1", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "g_post += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "zz_external_arrivals_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g_post += w\n _postsynaptic_idx = _array_zz_external_arrivals__synaptic_post[_idx]\n w = _array_zz_external_arrivals_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "zz_external_arrivals_pre_codeobject", + "type": "CallableProxyType" + } + ], + "name": "zz_external_arrivals_pre", + "order": 0, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_1", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/independent-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/independent-output/events.csv new file mode 100644 index 0000000..256e1e4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/independent-output/events.csv @@ -0,0 +1 @@ +step,neuron_idx diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/run-spec.json new file mode 100644 index 0000000..a61837e --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/run-spec.json @@ -0,0 +1,120 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 20.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + -1 + ], + "external_arrivals": { + "actual_weights_mv": [ + 1.0 + ], + "events": 1, + "ordering": "after default_synapses.pre", + "pathway_order": 0 + }, + "internal_voltage_unit": "volt", + "nodes": [ + -1 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float64", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float64", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": null + }, + "steps": 200, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/schedule.json new file mode 100644 index 0000000..2ca6fb3 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+-------------------------------------------+----------------------+------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nzz_external_sources (SpikeGeneratorGroup) | zz_external_sources (SpikeGeneratorGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \nzz_external_arrivals_pre (SynapticPathway) | zz_external_arrivals (Synapses) | 100. us (every step) | synapses | 0 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/seed.json new file mode 100644 index 0000000..f164c97 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-weak_excitation-float64/seed.json @@ -0,0 +1,5 @@ +{ + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": null +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/actual-weights.json new file mode 100644 index 0000000..14b16bb --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/actual-weights.json @@ -0,0 +1,11 @@ +{ + "edge_id": [ + -1 + ], + "weights_mv": [ + 0.0 + ], + "weights_volt": [ + 0.0 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/brian-output/events.csv new file mode 100644 index 0000000..256e1e4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/brian-output/events.csv @@ -0,0 +1 @@ +step,neuron_idx diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/comparison.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/comparison.json new file mode 100644 index 0000000..a9e3395 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/comparison.json @@ -0,0 +1,11 @@ +{ + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 1.0728836059570312e-06, + "mean_abs_mv": 5.364418029785156e-07, + "same_event_prefix_max_abs_mv": 1.0728836059570312e-06, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/completeness.csv new file mode 100644 index 0000000..f05fab6 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/completeness.csv @@ -0,0 +1,2 @@ +global_neuron_idx,local_index +-1,0 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/external-arrivals.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/external-arrivals.csv new file mode 100644 index 0000000..1d42707 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/external-arrivals.csv @@ -0,0 +1 @@ +tick,neuron_idx,requested_mv diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/generated-code.json new file mode 100644 index 0000000..7a5e47b --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/generated-code.json @@ -0,0 +1,119 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject_4", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject_4", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject_4", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject_4", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/independent-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/independent-output/events.csv new file mode 100644 index 0000000..256e1e4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/independent-output/events.csv @@ -0,0 +1 @@ +step,neuron_idx diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/run-spec.json new file mode 100644 index 0000000..1e659f8 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/run-spec.json @@ -0,0 +1,116 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 20.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + -1 + ], + "external_arrivals": { + "events": 0, + "ordering": "after default_synapses.pre" + }, + "internal_voltage_unit": "volt", + "nodes": [ + -1 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float32", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float32", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": null + }, + "steps": 200, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/schedule.json new file mode 100644 index 0000000..cd48c36 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+---------------------------------+----------------------+------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/seed.json new file mode 100644 index 0000000..f164c97 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float32/seed.json @@ -0,0 +1,5 @@ +{ + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": null +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/actual-weights.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/actual-weights.json new file mode 100644 index 0000000..14b16bb --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/actual-weights.json @@ -0,0 +1,11 @@ +{ + "edge_id": [ + -1 + ], + "weights_mv": [ + 0.0 + ], + "weights_volt": [ + 0.0 + ] +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/brian-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/brian-output/events.csv new file mode 100644 index 0000000..256e1e4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/brian-output/events.csv @@ -0,0 +1 @@ +step,neuron_idx diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/comparison.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/comparison.json new file mode 100644 index 0000000..9ae07c7 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/comparison.json @@ -0,0 +1,11 @@ +{ + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 7.105427357601002e-15, + "mean_abs_mv": 3.552713678800501e-15, + "same_event_prefix_max_abs_mv": 7.105427357601002e-15, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/completeness.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/completeness.csv new file mode 100644 index 0000000..f05fab6 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/completeness.csv @@ -0,0 +1,2 @@ +global_neuron_idx,local_index +-1,0 diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/environment.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/environment.json new file mode 100644 index 0000000..a598de4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/environment.json @@ -0,0 +1,102 @@ +{ + "all_package_pins_match": true, + "author_platform": "Windows", + "author_python": "3.10.11", + "binary_identical_author_environment_claimed": false, + "packages": { + "brian2": { + "actual": "2.5.1", + "expected": "2.5.1", + "matches": true + }, + "cython": { + "actual": "0.29.33", + "expected": "0.29.33", + "matches": true + }, + "jinja2": { + "actual": "2.11.3", + "expected": "2.11.3", + "matches": true + }, + "joblib": { + "actual": "1.2.0", + "expected": "1.2.0", + "matches": true + }, + "markupsafe": { + "actual": "1.1.1", + "expected": "1.1.1", + "matches": true + }, + "mpmath": { + "actual": "1.3.0", + "expected": "1.3.0", + "matches": true + }, + "numpy": { + "actual": "1.22.3", + "expected": "1.22.3", + "matches": true + }, + "packaging": { + "actual": "23.1", + "expected": "23.1", + "matches": true + }, + "pandas": { + "actual": "1.4.3", + "expected": "1.4.3", + "matches": true + }, + "pyarrow": { + "actual": "11.0.0", + "expected": "11.0.0", + "matches": true + }, + "pyparsing": { + "actual": "3.0.9", + "expected": "3.0.9", + "matches": true + }, + "python-dateutil": { + "actual": "2.8.2", + "expected": "2.8.2", + "matches": true + }, + "pytz": { + "actual": "2023.3", + "expected": "2023.3", + "matches": true + }, + "scipy": { + "actual": "1.8.1", + "expected": "1.8.1", + "matches": true + }, + "setuptools": { + "actual": "67.8.0", + "expected": "67.8.0", + "matches": true + }, + "six": { + "actual": "1.16.0", + "expected": "1.16.0", + "matches": true + }, + "sympy": { + "actual": "1.12", + "expected": "1.12", + "matches": true + }, + "wheel": { + "actual": "0.38.4", + "expected": "0.38.4", + "matches": true + } + }, + "platform": "Linux-5.15.0-194-generic-x86_64-with-glibc2.35", + "python": "3.10.12", + "python_executable": "/data/digital-drosophila/experiments/phase4ad-author-semantics/environment/.venv/bin/python", + "python_patch_matches": false +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/external-arrivals.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/external-arrivals.csv new file mode 100644 index 0000000..1d42707 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/external-arrivals.csv @@ -0,0 +1 @@ +tick,neuron_idx,requested_mv diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/generated-code.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/generated-code.json new file mode 100644 index 0000000..cf2b019 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/generated-code.json @@ -0,0 +1,119 @@ +[ + { + "active": true, + "code_objects": [], + "name": "default_neurons", + "order": 0, + "type": "NeuronGroup", + "when": "start" + }, + { + "active": true, + "code_objects": [], + "name": "default_synapses", + "order": 0, + "type": "Synapses", + "when": "start" + }, + { + "abstract_code": "not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n_g = g*exp(-dt*int(not_refractory)/tau)\n_v = g*tau*(-exp(dt*int(not_refractory)/t_mbr) + exp(dt*int(not_refractory)/tau))*exp(-dt*int(not_refractory)/t_mbr)*exp(-dt*int(not_refractory)/tau)/(t_mbr - tau) + v*exp(-dt*int(not_refractory)/t_mbr) + v_0 - v_0*exp(-dt*int(not_refractory)/t_mbr)\ng = _g\nv = _v", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n dt = _array_defaultclock_dt[0]\n _lio_1 = (- dt) / tau\n _lio_2 = exp(_lio_1)\n _lio_3 = tau / (t_mbr - tau)\n _lio_4 = dt / t_mbr\n _lio_5 = dt / tau\n _lio_6 = (- dt) / t_mbr\n _lio_7 = v_0 - v_0\n _lio_8 = v_0 - (v_0 * exp(_lio_6))\n _lio_9 = ((_lio_3 * ((- exp(_lio_4)) + exp(_lio_5))) * exp(_lio_6)) * exp(_lio_1)\n _lio_10 = exp(_lio_6)\n # vector code\n _vectorisation_idx = LazyArange(N)\n g = _array_default_neurons_g.copy()\n t = _array_defaultclock_t[0]\n dt = _array_defaultclock_dt[0]\n rfc = _array_default_neurons_rfc\n v = _array_default_neurons_v.copy()\n lastspike = _array_default_neurons_lastspike\n not_refractory = _array_default_neurons_not_refractory.copy()\n not_refractory = timestep(t - lastspike, dt) >= timestep(rfc, dt)\n _g = _numpy.where(not_refractory, _lio_2 * g, g)\n _v = _numpy.where(not_refractory, _lio_8 + ((_lio_9 * g) + (_lio_10 * v)), _lio_7 + v)\n g[not_refractory] = _g[not_refractory]\n v[not_refractory] = _v[not_refractory]\n _array_default_neurons_g[:] = g\n _array_default_neurons_v[:] = v\n _array_default_neurons_not_refractory[:] = not_refractory\n", + "name": "default_neurons_stateupdater_codeobject", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_stateupdater", + "order": 0, + "type": "StateUpdater", + "user_code": "g = -g*int(not_refractory)/tau\nv = (g - v + v_0)*int(not_refractory)/t_mbr", + "when": "groups" + }, + { + "abstract_code": "_cond = (v > v_th) and not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _array_default_neurons__spikespace[-1] = 0\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n numpy_True = _numpy.bool_(True)\n numpy_False = _numpy.bool_(False)\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = LazyArange(N)\n v = _array_default_neurons_v\n not_refractory = _array_default_neurons_not_refractory\n _cond = (v > v_th) & not_refractory\n if _cond is True or _cond is numpy_True:\n _events = _numpy.arange(N)\n elif _cond is False or _cond is numpy_False:\n _events = _numpy.array([])\n else:\n _events, = _cond.nonzero()\n _array_default_neurons__spikespace[-1] = len(_events)\n _array_default_neurons__spikespace[:len(_events)] = _events\n # Set the neuron to refractory\n _array_default_neurons_not_refractory[_events] = False\n _array_default_neurons_lastspike[_events] = _array_defaultclock_t[0]\n", + "name": "default_neurons_spike_thresholder_codeobject", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_thresholder", + "order": 0, + "type": "Thresholder", + "user_code": "_cond = v > v_th", + "when": "thresholds" + }, + { + "abstract_code": "_to_record_i = _source_i\n_to_record_t = _source_t", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _n_events = _array_default_neurons__spikespace[-1]\n if _n_events > 0:\n _events = _array_default_neurons__spikespace[:_n_events]\n # Take subgroups into account\n if _source_start != 0 or _source_stop != _source_N:\n _events = _events[(_events >= _source_start) & (_events < _source_stop)]\n _n_events = len(_events)\n if _n_events > 0:\n _vectorisation_idx = 1\n _curlen = _array_spikemonitor_N[0]\n _newlen = _curlen + _n_events\n _owner.resize(_newlen)\n _array_spikemonitor_N[0] = _newlen\n _vectorisation_idx = _events\n _idx = _events\n _source_i = _array_default_neurons_i[_idx]\n _source_t = _array_defaultclock_t[0]\n _to_record_i = _source_i\n _to_record_t = _source_t\n _dynamic_array_spikemonitor_t[_curlen:_newlen] = _to_record_t\n _dynamic_array_spikemonitor_i[_curlen:_newlen] = _to_record_i\n _array_spikemonitor_count[_events - _source_start] += 1\n", + "name": "spikemonitor_codeobject", + "type": "CallableProxyType" + } + ], + "name": "spikemonitor", + "order": 1, + "type": "SpikeMonitor", + "user_code": "None", + "when": "thresholds" + }, + { + "abstract_code": "g += w\n", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.initialise_queue()\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _owner.push_spikes()\n", + "name": "default_synapses_pre_push_spikes", + "type": "CallableProxyType" + }, + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n _spiking_synapses = _queue.peek()\n if len(_spiking_synapses):\n # scalar code\n # vector code\n _idx = _spiking_synapses\n _vectorisation_idx = _idx\n # Abstract code: g += w\n _postsynaptic_idx = _array_default_synapses__synaptic_post[_idx]\n w = _array_default_synapses_w[_idx]\n not_refractory = _array_default_neurons_not_refractory[_postsynaptic_idx]\n _numpy.add.at(_array_default_neurons_g, _postsynaptic_idx[not_refractory], w[not_refractory])\n # Advance the spike queue\n _queue.advance()\n", + "name": "default_synapses_pre_codeobject", + "type": "CallableProxyType" + } + ], + "name": "default_synapses_pre", + "order": -1, + "type": "SynapticPathway", + "user_code": "None", + "when": "synapses" + }, + { + "abstract_code": "v = v_rst; w = 0; g = 0 * mV", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # scalar code\n _vectorisation_idx = 1\n w = 0\n # vector code\n _idx = _array_default_neurons__spikespace[:_array_default_neurons__spikespace[-1]]\n _vectorisation_idx = _idx\n v = v_rst\n g = 0.0\n _array_default_neurons_g[_idx] = g\n _array_default_neurons_v[_idx] = v\n", + "name": "default_neurons_spike_resetter_codeobject", + "type": "CallableProxyType" + } + ], + "name": "default_neurons_spike_resetter", + "order": 0, + "type": "Resetter", + "user_code": "None", + "when": "resets" + }, + { + "abstract_code": "_to_record_v = _source_v\n_to_record_g = _source_g\n_to_record_lastspike = _source_lastspike\n_to_record_not_refractory = _source_not_refractory", + "active": true, + "code_objects": [ + { + "generated_code": "after_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nbefore_run:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # EMPTY_CODE_BLOCK -- overwrite in child template\nrun:\n import numpy as _numpy\n from brian2.codegen.runtime.numpy_rt.numpy_rt import LazyArange\n # Resize dynamic arrays\n _new_len = len(_dynamic_array_oracle_end_state_t) + 1\n _owner.resize(_new_len)\n # Store values\n _dynamic_array_oracle_end_state_t[-1] = _array_defaultclock_t[0]\n # scalar code\n _vectorisation_idx = 1\n # vector code\n _vectorisation_idx = _array_oracle_end_state__indices\n _idx = _array_oracle_end_state__indices\n _source_not_refractory = _array_default_neurons_not_refractory[_idx]\n _source_g = _array_default_neurons_g[_idx]\n _source_v = _array_default_neurons_v[_idx]\n _source_lastspike = _array_default_neurons_lastspike[_idx]\n _to_record_v = _source_v\n _to_record_g = _source_g\n _to_record_lastspike = _source_lastspike\n _to_record_not_refractory = _source_not_refractory\n _dynamic_array_oracle_end_state_v[-1, :] = _to_record_v\n _dynamic_array_oracle_end_state_g[-1, :] = _to_record_g\n _dynamic_array_oracle_end_state_lastspike[-1, :] = _to_record_lastspike\n _dynamic_array_oracle_end_state_not_refractory[-1, :] = _to_record_not_refractory\n", + "name": "oracle_end_state_codeobject", + "type": "CallableProxyType" + } + ], + "name": "oracle_end_state", + "order": 0, + "type": "StateMonitor", + "user_code": "None", + "when": "end" + } +] diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/independent-output/events.csv b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/independent-output/events.csv new file mode 100644 index 0000000..256e1e4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/independent-output/events.csv @@ -0,0 +1 @@ +step,neuron_idx diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/run-spec.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/run-spec.json new file mode 100644 index 0000000..7fb293c --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/run-spec.json @@ -0,0 +1,116 @@ +{ + "author_commit": "91bdd1e7dcf193f3e7ca5a8933497fcef63b7960", + "author_sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "config": { + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "exact_spike_events_required_for_oracle_validation": true, + "float32_state_max_abs_tolerance_mv": 0.001, + "float64_state_max_abs_tolerance_mv": 1e-08, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "dt_ms": 0.1, + "duration_ms": 20.0, + "experiment": "experiments/phase4ad-author-semantics", + "human_authorization": "\u5141\u8bb8\u72ec\u7acb\u65b0\u6a21\u578b\u5206\u652f\u6d4b\u8bd5\u52a8\u529b\u5b66\u5047\u8bbe", + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "refractory_ms": 2.2, + "reset_potential_mv": -52.0, + "resting_potential_mv": -52.0, + "synaptic_delay_ms": 1.8, + "synaptic_tau_ms": 5.0, + "threshold_mv": -45.0, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "name": "author-semantics-lab-v1", + "no_training_or_candidate": true, + "phase": "4AD", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "root": "/data/digital-drosophila", + "seed_margin_mv": 1.0, + "seed_node": 1381 + }, + "delay_steps": 18, + "dt_ms": 0.1, + "edge_ids": [ + -1 + ], + "external_arrivals": { + "events": 0, + "ordering": "after default_synapses.pre" + }, + "internal_voltage_unit": "volt", + "nodes": [ + -1 + ], + "parameter_checks": { + "membrane_tau_ms": { + "author": 20.0, + "config": 20.0 + }, + "refractory_ms": { + "author": 2.2, + "config": 2.2 + }, + "reset_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "resting_potential_mv": { + "author": -52.0, + "config": -52.0 + }, + "synaptic_delay_ms": { + "author": 1.8, + "config": 1.8 + }, + "synaptic_tau_ms": { + "author": 5.0, + "config": 5.0 + }, + "threshold_mv": { + "author": -45.0, + "config": -45.0 + }, + "w_syn_mv_per_anatomical_synapse": { + "author": 0.275, + "config": 0.275 + } + }, + "precision": "float64", + "preferences": { + "codegen.target": "numpy", + "core.default_float_dtype": "float64", + "legacy.refractory_timing": false + }, + "refractory_steps": 22, + "returned_voltage_unit": "mV", + "seed": { + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": null + }, + "steps": 200, + "weight_rule": "raw_count multiplied by unchanged author w_syn; no sign inference" +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/schedule.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/schedule.json new file mode 100644 index 0000000..cd48c36 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/schedule.json @@ -0,0 +1,11 @@ +{ + "schedule": [ + "start", + "groups", + "thresholds", + "synapses", + "resets", + "end" + ], + "summary": " object | part of | Clock dt | when | order | active\n------------------------------------------------+---------------------------------+----------------------+------------+-------+-------\ndefault_neurons_stateupdater (StateUpdater) | default_neurons (NeuronGroup) | 100. us (every step) | groups | 0 | yes \ndefault_neurons_spike_thresholder (Thresholder) | default_neurons (NeuronGroup) | 100. us (every step) | thresholds | 0 | yes \nspikemonitor (SpikeMonitor) | spikemonitor (SpikeMonitor) | 100. us (every step) | thresholds | 1 | yes \ndefault_synapses_pre (SynapticPathway) | default_synapses (Synapses) | 100. us (every step) | synapses | -1 | yes \ndefault_neurons_spike_resetter (Resetter) | default_neurons (NeuronGroup) | 100. us (every step) | resets | 0 | yes \noracle_end_state (StateMonitor) | oracle_end_state (StateMonitor) | 100. us (every step) | end | 0 | yes " +} diff --git a/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/seed.json b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/seed.json new file mode 100644 index 0000000..f164c97 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/oracle/unit-zero-float64/seed.json @@ -0,0 +1,5 @@ +{ + "injections": 0, + "margin_mv": 1.0, + "requested_global_node": null +} diff --git a/registry/phase4ad-author-semantics/evidence/performance/summary.json b/registry/phase4ad-author-semantics/evidence/performance/summary.json new file mode 100644 index 0000000..c991fed --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/performance/summary.json @@ -0,0 +1,5 @@ +{ + "wall_seconds": 45.55126182100025, + "backend": "CPU NumPy + Brian2", + "not_runtime_benchmark": true +} diff --git a/registry/phase4ad-author-semantics/evidence/protocol/preregistered.json b/registry/phase4ad-author-semantics/evidence/protocol/preregistered.json new file mode 100644 index 0000000..4024fcc --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/protocol/preregistered.json @@ -0,0 +1,175 @@ +{ + "config": { + "name": "author-semantics-lab-v1", + "phase": "4AD", + "root": "/data/digital-drosophila", + "experiment": "experiments/phase4ad-author-semantics", + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "human_authorization": "允许独立新模型分支测试动力学假设", + "dt_ms": 0.1, + "duration_ms": 1000.0, + "seed_margin_mv": 1.0, + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "synaptic_tau_ms": 5.0, + "refractory_ms": 2.2, + "resting_potential_mv": -52.0, + "reset_potential_mv": -52.0, + "threshold_mv": -45.0, + "synaptic_delay_ms": 1.8, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "seed_node": 1381, + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "float64_state_max_abs_tolerance_mv": 1e-08, + "float32_state_max_abs_tolerance_mv": 0.001, + "exact_spike_events_required_for_oracle_validation": true, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "no_training_or_candidate": true + }, + "timestamp_utc": "2026-09-29T23:14:27.848343+00:00", + "source_hashes": { + "PROTOCOL.md": "23e784ca1cbde7546373dbcbedbe2bc23d35083084f120068bf06100f238b09a", + "config.json": "a69e8da5332d8031cbe1663abff25e61ee04e75f5490e8fa44c48690d3d0e219", + "context.py": "561d405ee4a2d3bbc6982c89191523f348d6fae0630dea9cb67ddf03acc6fc7b", + "finalize.py": "97a393b95d100dc5d95b624e4cd0d15511307b8c70e0ebd788b773c143ebfed6", + "interface_audit.py": "1e2b31545f1206fe1c1f4084b4a9ac0f21c74990c52e8fd156e809725fc5fb95", + "math_lab.py": "9663da41d5f623e1d7750e3cad3df880148079968f115bf583b58799fc5fb31f", + "oracle_runner.py": "2f4b073261965cf18a94697caf725c40b2e8db790c2871862201337f40c399e5", + "prepare.py": "49caa9553938f06539ecf282868491f8e1319d8f24220f89ac9e232db2d82e51", + "requirements-oracle.txt": "a69efc6509b85a5cc00a652caa4820c9c9e1406f6b97c6cc741322728c4d51c3", + "run_lab.py": "8746e1971c5a40a738e10f8f574a243c29cefa5a8b9f61a2846557ceffd1289a", + "verify_frozen.py": "fe37a48ce804e6c50f93404bfd3c23a7e54cd49061bbdfb4860315879648c73b" + }, + "input_hashes": [ + { + "path": "experiments/phase4ac-lif-semantics/external-resources/model.py", + "sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "bytes": 11900 + }, + { + "path": "experiments/phase4ac-lif-semantics/external-resources/LICENSE", + "sha256": "3621f6d6476189190e2960fa43f11b275ba4eca848fdac50a1ba2925de6223e8", + "bytes": 1085 + }, + { + "path": "experiments/phase4ac-lif-semantics/external-resources/environment_full.yml", + "sha256": "402fcef4968c99397b0e908b3323ab9e6ef86af5583e46e6427f96f3d1091adf", + "bytes": 3445 + }, + { + "path": "experiments/phase4ac-lif-semantics/audit/selected-real-edges.csv", + "sha256": "9103e9d03fa21058a4f6cd21780c56fed8cdcfca26c34c2a43726e39aed8ec55", + "bytes": 547 + }, + { + "path": "experiments/phase4ac-lif-semantics/audit/selected-metadata.parquet", + "sha256": "c1dde5df5408aeb878d6c422bc1c86ba44c3c5770f986014e594e356412a013d", + "bytes": 34348 + }, + { + "path": "models/male-cns-lif/lif-semantics-audit-v1/math_reference.py", + "sha256": "5166366251f99359b1301f514f5d9ae5f0f041fd3a3f98902386192117f01aea", + "bytes": 3768 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/pair-edges.csv", + "sha256": "05a7c7a5547aaeea4d1522f9cea75463405f0c3cdfbc4d563f111ad51cb80e00", + "bytes": 152 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/pair-events.parquet", + "sha256": "962a440924a9b2a4a3677b8968e63042de0b80ea4e496c213ebcf40d5e530e85", + "bytes": 4157 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/pair-state.npz", + "sha256": "924774344956dd5a530c3d00c8103fe4d1b584837d5e91f05b60094540a78897", + "bytes": 14660 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/trio-edges.csv", + "sha256": "c842c5bce0b11275c0eba9532955026a4b58931c2346e178bfa8a84227289c71", + "bytes": 288 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/trio-events.parquet", + "sha256": "a39d58de867f4f1ce1291e0ece25a52b70a3e04024508f77cb4a29eb4e09fa0e", + "bytes": 7476 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/trio-state.npz", + "sha256": "46c8a495ee1358a6173a2eebebe9ce2d6481b27f10e0c56cf9602c7969cd8702", + "bytes": 18538 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/five-edges.csv", + "sha256": "9103e9d03fa21058a4f6cd21780c56fed8cdcfca26c34c2a43726e39aed8ec55", + "bytes": 547 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/five-events.parquet", + "sha256": "19fef92b32be32ced2ec6b6581c9dac05055e9d550c104dd0d5ec5e33e25e759", + "bytes": 9974 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/five-state.npz", + "sha256": "15095ada05014741f6b6576c2d12d1a8f1ae482ae6f012d5e2be346c796baf4b", + "bytes": 268297 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/feedforward-edges.csv", + "sha256": "add7a3b450e3f3043af602baf8e770e5358c1c024d44bb21a74ef18429c0680e", + "bytes": 228 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/feedforward-events.parquet", + "sha256": "f687cf303d9318404c954e2e699d65d7893ad3f33115c0f9c5ea45b9698ff275", + "bytes": 1716 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/feedforward-state.npz", + "sha256": "6a24c8d2ad476e2250af49172be12de9d43346bc84f043b19d012fa0c53d2fba", + "bytes": 85957 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/no_input-edges.csv", + "sha256": "9103e9d03fa21058a4f6cd21780c56fed8cdcfca26c34c2a43726e39aed8ec55", + "bytes": 547 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/no_input-events.parquet", + "sha256": "071326bc3033505f431e38d716cb8ec681dc192b8389792059bb8a75027a1f10", + "bytes": 1472 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/no_input-state.npz", + "sha256": "a74134da72381d0dbff10bb5143691add6081487dede488a939bb0a4dbf5c20e", + "bytes": 3114 + } + ], + "parent_commit": "5008cd85ca11750f23ce7bc001e8e821763b7501", + "pre_model_execution": true +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/author-motifs.json b/registry/phase4ad-author-semantics/evidence/regression/author-motifs.json new file mode 100644 index 0000000..64c6d59 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/author-motifs.json @@ -0,0 +1,152 @@ +[ + { + "motif": "pair", + "precision": "float64", + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 7.105427357601002e-14, + "mean_abs_mv": 8.832579112549865e-15, + "same_event_prefix_max_abs_mv": 7.105427357601002e-14, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } + }, + { + "motif": "pair", + "precision": "float32", + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 2.41696834564209e-05, + "mean_abs_mv": 2.619914710521698e-06, + "same_event_prefix_max_abs_mv": 2.41696834564209e-05, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } + }, + { + "motif": "trio", + "precision": "float64", + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 8.526512829121202e-14, + "mean_abs_mv": 8.113095380698118e-15, + "same_event_prefix_max_abs_mv": 8.526512829121202e-14, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } + }, + { + "motif": "trio", + "precision": "float32", + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 4.25875186920166e-05, + "mean_abs_mv": 3.7165323893229165e-06, + "same_event_prefix_max_abs_mv": 4.25875186920166e-05, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } + }, + { + "motif": "five", + "precision": "float64", + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 3.836930773104541e-13, + "mean_abs_mv": 3.28896643253529e-14, + "same_event_prefix_max_abs_mv": 3.836930773104541e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } + }, + { + "motif": "five", + "precision": "float32", + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.0002123713493347168, + "mean_abs_mv": 1.7726411819458007e-05, + "same_event_prefix_max_abs_mv": 0.0002123713493347168, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } + }, + { + "motif": "feedforward", + "precision": "float64", + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 3.765876499528531e-13, + "mean_abs_mv": 3.893371799264915e-14, + "same_event_prefix_max_abs_mv": 3.765876499528531e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } + }, + { + "motif": "feedforward", + "precision": "float32", + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.00020179152488708496, + "mean_abs_mv": 1.9821550031807453e-05, + "same_event_prefix_max_abs_mv": 0.00020179152488708496, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } + }, + { + "motif": "no_input", + "precision": "float64", + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 7.105427357601002e-15, + "mean_abs_mv": 3.552713678800501e-15, + "same_event_prefix_max_abs_mv": 7.105427357601002e-15, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } + }, + { + "motif": "no_input", + "precision": "float32", + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 1.0728836059570312e-06, + "mean_abs_mv": 5.364418029785156e-07, + "same_event_prefix_max_abs_mv": 1.0728836059570312e-06, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } + } +] diff --git a/registry/phase4ad-author-semantics/evidence/regression/feedforward-float32-repeat.json b/registry/phase4ad-author-semantics/evidence/regression/feedforward-float32-repeat.json new file mode 100644 index 0000000..e11d460 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/feedforward-float32-repeat.json @@ -0,0 +1,10 @@ +{ + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "weights": true +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/feedforward-float64-repeat.json b/registry/phase4ad-author-semantics/evidence/regression/feedforward-float64-repeat.json new file mode 100644 index 0000000..e11d460 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/feedforward-float64-repeat.json @@ -0,0 +1,10 @@ +{ + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "weights": true +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/feedforward-precision-cross-comparison.json b/registry/phase4ad-author-semantics/evidence/regression/feedforward-precision-cross-comparison.json new file mode 100644 index 0000000..b752437 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/feedforward-precision-cross-comparison.json @@ -0,0 +1,11 @@ +{ + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.0005722045887850413, + "mean_abs_mv": 4.780100484587312e-05, + "same_event_prefix_max_abs_mv": 0.0005722045887850413, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/five-float32-repeat.json b/registry/phase4ad-author-semantics/evidence/regression/five-float32-repeat.json new file mode 100644 index 0000000..e11d460 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/five-float32-repeat.json @@ -0,0 +1,10 @@ +{ + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "weights": true +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/five-float64-repeat.json b/registry/phase4ad-author-semantics/evidence/regression/five-float64-repeat.json new file mode 100644 index 0000000..e11d460 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/five-float64-repeat.json @@ -0,0 +1,10 @@ +{ + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "weights": true +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/five-precision-cross-comparison.json b/registry/phase4ad-author-semantics/evidence/regression/five-precision-cross-comparison.json new file mode 100644 index 0000000..eae593f --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/five-precision-cross-comparison.json @@ -0,0 +1,11 @@ +{ + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.00019546693161487383, + "mean_abs_mv": 1.7966433624798595e-05, + "same_event_prefix_max_abs_mv": 0.00019546693161487383, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/frozen-auditory-100hz.json b/registry/phase4ad-author-semantics/evidence/regression/frozen-auditory-100hz.json new file mode 100644 index 0000000..316392f --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/frozen-auditory-100hz.json @@ -0,0 +1,11 @@ +{ + "trial": "auditory-100hz", + "exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true + }, + "wall_seconds": 4.922076707999622 +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/frozen-auditory-10hz.json b/registry/phase4ad-author-semantics/evidence/regression/frozen-auditory-10hz.json new file mode 100644 index 0000000..2f576ab --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/frozen-auditory-10hz.json @@ -0,0 +1,11 @@ +{ + "trial": "auditory-10hz", + "exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true + }, + "wall_seconds": 2.747663623000335 +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/frozen-components.json b/registry/phase4ad-author-semantics/evidence/regression/frozen-components.json new file mode 100644 index 0000000..7754e99 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/frozen-components.json @@ -0,0 +1,62 @@ +[ + { + "motif": "pair", + "frozen_vs_4AC_exact": { + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "queue": true, + "events": true + } + }, + { + "motif": "trio", + "frozen_vs_4AC_exact": { + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "queue": true, + "events": true + } + }, + { + "motif": "five", + "frozen_vs_4AC_exact": { + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "queue": true, + "events": true + } + }, + { + "motif": "feedforward", + "frozen_vs_4AC_exact": { + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "queue": true, + "events": true + } + }, + { + "motif": "no_input", + "frozen_vs_4AC_exact": { + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "queue": true, + "events": true + } + } +] diff --git a/registry/phase4ad-author-semantics/evidence/regression/frozen-five.json b/registry/phase4ad-author-semantics/evidence/regression/frozen-five.json new file mode 100644 index 0000000..9dd80b9 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/frozen-five.json @@ -0,0 +1,65 @@ +{ + "pass_all": true, + "trials": [ + { + "trial": "auditory-10hz", + "exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true + }, + "wall_seconds": 2.747663623000335 + }, + { + "trial": "auditory-100hz", + "exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true + }, + "wall_seconds": 4.922076707999622 + }, + { + "trial": "olfactory-50hz", + "exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true + }, + "wall_seconds": 4.944787881999673 + }, + { + "trial": "mechanosensory-50hz", + "exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true + }, + "wall_seconds": 4.964256072000353 + }, + { + "trial": "gustatory-50hz", + "exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true + }, + "wall_seconds": 4.95321602399963 + } + ], + "oracle": "frozen deterministic-v2, NOT author Brian2", + "wall_seconds": 82.62074518699978, + "peak_allocated_vram": 285994496, + "gpu": "NVIDIA GeForce RTX 4090", + "comfyui_modified": false +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/frozen-gustatory-50hz.json b/registry/phase4ad-author-semantics/evidence/regression/frozen-gustatory-50hz.json new file mode 100644 index 0000000..d6315b5 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/frozen-gustatory-50hz.json @@ -0,0 +1,11 @@ +{ + "trial": "gustatory-50hz", + "exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true + }, + "wall_seconds": 4.95321602399963 +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/frozen-mechanosensory-50hz.json b/registry/phase4ad-author-semantics/evidence/regression/frozen-mechanosensory-50hz.json new file mode 100644 index 0000000..70dd4cf --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/frozen-mechanosensory-50hz.json @@ -0,0 +1,11 @@ +{ + "trial": "mechanosensory-50hz", + "exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true + }, + "wall_seconds": 4.964256072000353 +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/frozen-olfactory-50hz.json b/registry/phase4ad-author-semantics/evidence/regression/frozen-olfactory-50hz.json new file mode 100644 index 0000000..0c1c7f8 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/frozen-olfactory-50hz.json @@ -0,0 +1,11 @@ +{ + "trial": "olfactory-50hz", + "exact": { + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true + }, + "wall_seconds": 4.944787881999673 +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/no_input-float32-repeat.json b/registry/phase4ad-author-semantics/evidence/regression/no_input-float32-repeat.json new file mode 100644 index 0000000..e11d460 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/no_input-float32-repeat.json @@ -0,0 +1,10 @@ +{ + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "weights": true +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/no_input-float64-repeat.json b/registry/phase4ad-author-semantics/evidence/regression/no_input-float64-repeat.json new file mode 100644 index 0000000..e11d460 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/no_input-float64-repeat.json @@ -0,0 +1,10 @@ +{ + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "weights": true +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/no_input-precision-cross-comparison.json b/registry/phase4ad-author-semantics/evidence/regression/no_input-precision-cross-comparison.json new file mode 100644 index 0000000..8e998ea --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/no_input-precision-cross-comparison.json @@ -0,0 +1,11 @@ +{ + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.0, + "mean_abs_mv": 0.0, + "same_event_prefix_max_abs_mv": 0.0, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/old-integrity-after.json b/registry/phase4ad-author-semantics/evidence/regression/old-integrity-after.json new file mode 100644 index 0000000..48b01b1 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/old-integrity-after.json @@ -0,0 +1,73 @@ +{ + "name": "old_frozen_integrity_after", + "pass": true, + "results": { + "original": { + "pass": true, + "checked": 230239, + "mismatches": [], + "reference_sha256": "6f186112e6102f2f7969de7442fa7ee4432200a3678586cfc4e10c490b31bca4", + "exclusions": [ + ".cache", + ".git", + ".mypy_cache", + ".pytest_cache", + ".venv", + "__pycache__", + "node_modules", + "venv" + ], + "new_stage_additions_allowed": true, + "meaning": "All original listed bytes checked; only newly named stage outputs are additions." + }, + "models/male-cns-lif/apl-pn-scope-audit-v1": { + "pass": true, + "checked": 12, + "mismatches": [], + "manifest_sha256": "9120685eb02dc2bd3b38d42b2ade1f38f6bbc2a1ec269fd4d555cead2d628277", + "checksums_sha256": "55dc418f2d62be04601af33cbd8789578447e6a2289d3a581dc713cbb7466a25" + }, + "experiments/phase4aa-apl-pn-scope": { + "pass": true, + "checked": 68, + "mismatches": [], + "manifest_sha256": "6d75567af2a6c0993d4fc08e272814910c19fa9602811cfacd1ebc4ba76bc737", + "checksums_sha256": "a69b2511689207b0d9ddbe2fabce3be71908f457bb898e3b685a213a796a272a" + }, + "models/male-cns-lif/terminal-scope-diagnostic-v1": { + "pass": true, + "checked": 11, + "mismatches": [], + "manifest_sha256": "5cea0035a95345825b73385c6e3056244c2a614d10a6fa6742487a331d8f0f3e", + "checksums_sha256": "92a03195cb41863027fd0397ad3811248354a5d3f2e91ffa2c297eba62dc2821" + }, + "experiments/phase4ab-terminal-scope": { + "pass": true, + "checked": 199, + "mismatches": [], + "manifest_sha256": "cb3723f9dae29d4889489ae39f40293c927f4f9e532551e2c4d5214bf0a70140", + "checksums_sha256": "d83926a3055d9f9ca471ceba328076d7ceba883f267468750914080733e95e31" + }, + "models/male-cns-lif/lif-semantics-audit-v1": { + "pass": true, + "checked": 7, + "mismatches": [], + "manifest_sha256": "53e53d51bba86ec11a02e920f2c2653db4c138dd9562e8416dd001780635070c", + "checksums_sha256": "15b7b7828492387beed2c885ad9d22af682cff1dc38198c0770ab7175759c69d" + }, + "experiments/phase4ac-lif-semantics": { + "pass": true, + "checked": 57, + "mismatches": [], + "manifest_sha256": "4e7d1606e107fe72f5dad935952705260577edaba6f811d65b4105ce07abd72c", + "checksums_sha256": "81bb3a86454147f1562bc3592438b6a6d0091dbe1d2a777e802882ecf1d0db35" + }, + "registry/feedback-context-review-20260930": { + "pass": true, + "checked": 8, + "mismatches": [], + "manifest_sha256": "8fda8506cae9b5b258fe371c8938a15e613114f4234c969fdf742d1f5133c64b", + "checksums_sha256": "9390c04cf4d0bcd2ed89bb4efd1db01cb2faf7dc4f23e8cb411b2ed782ba083d" + } + } +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/old-integrity-before.json b/registry/phase4ad-author-semantics/evidence/regression/old-integrity-before.json new file mode 100644 index 0000000..f584264 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/old-integrity-before.json @@ -0,0 +1,69 @@ +{ + "original": { + "pass": true, + "checked": 230239, + "mismatches": [], + "reference_sha256": "6f186112e6102f2f7969de7442fa7ee4432200a3678586cfc4e10c490b31bca4", + "exclusions": [ + ".cache", + ".git", + ".mypy_cache", + ".pytest_cache", + ".venv", + "__pycache__", + "node_modules", + "venv" + ], + "new_stage_additions_allowed": true, + "meaning": "All original listed bytes checked; only newly named stage outputs are additions." + }, + "models/male-cns-lif/apl-pn-scope-audit-v1": { + "pass": true, + "checked": 12, + "mismatches": [], + "manifest_sha256": "9120685eb02dc2bd3b38d42b2ade1f38f6bbc2a1ec269fd4d555cead2d628277", + "checksums_sha256": "55dc418f2d62be04601af33cbd8789578447e6a2289d3a581dc713cbb7466a25" + }, + "experiments/phase4aa-apl-pn-scope": { + "pass": true, + "checked": 68, + "mismatches": [], + "manifest_sha256": "6d75567af2a6c0993d4fc08e272814910c19fa9602811cfacd1ebc4ba76bc737", + "checksums_sha256": "a69b2511689207b0d9ddbe2fabce3be71908f457bb898e3b685a213a796a272a" + }, + "models/male-cns-lif/terminal-scope-diagnostic-v1": { + "pass": true, + "checked": 11, + "mismatches": [], + "manifest_sha256": "5cea0035a95345825b73385c6e3056244c2a614d10a6fa6742487a331d8f0f3e", + "checksums_sha256": "92a03195cb41863027fd0397ad3811248354a5d3f2e91ffa2c297eba62dc2821" + }, + "experiments/phase4ab-terminal-scope": { + "pass": true, + "checked": 199, + "mismatches": [], + "manifest_sha256": "cb3723f9dae29d4889489ae39f40293c927f4f9e532551e2c4d5214bf0a70140", + "checksums_sha256": "d83926a3055d9f9ca471ceba328076d7ceba883f267468750914080733e95e31" + }, + "models/male-cns-lif/lif-semantics-audit-v1": { + "pass": true, + "checked": 7, + "mismatches": [], + "manifest_sha256": "53e53d51bba86ec11a02e920f2c2653db4c138dd9562e8416dd001780635070c", + "checksums_sha256": "15b7b7828492387beed2c885ad9d22af682cff1dc38198c0770ab7175759c69d" + }, + "experiments/phase4ac-lif-semantics": { + "pass": true, + "checked": 57, + "mismatches": [], + "manifest_sha256": "4e7d1606e107fe72f5dad935952705260577edaba6f811d65b4105ce07abd72c", + "checksums_sha256": "81bb3a86454147f1562bc3592438b6a6d0091dbe1d2a777e802882ecf1d0db35" + }, + "registry/feedback-context-review-20260930": { + "pass": true, + "checked": 8, + "mismatches": [], + "manifest_sha256": "8fda8506cae9b5b258fe371c8938a15e613114f4234c969fdf742d1f5133c64b", + "checksums_sha256": "9390c04cf4d0bcd2ed89bb4efd1db01cb2faf7dc4f23e8cb411b2ed782ba083d" + } +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/pair-float32-repeat.json b/registry/phase4ad-author-semantics/evidence/regression/pair-float32-repeat.json new file mode 100644 index 0000000..e11d460 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/pair-float32-repeat.json @@ -0,0 +1,10 @@ +{ + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "weights": true +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/pair-float64-repeat.json b/registry/phase4ad-author-semantics/evidence/regression/pair-float64-repeat.json new file mode 100644 index 0000000..e11d460 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/pair-float64-repeat.json @@ -0,0 +1,10 @@ +{ + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "weights": true +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/pair-precision-cross-comparison.json b/registry/phase4ad-author-semantics/evidence/regression/pair-precision-cross-comparison.json new file mode 100644 index 0000000..308a23d --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/pair-precision-cross-comparison.json @@ -0,0 +1,11 @@ +{ + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 3.733467101341148e-05, + "mean_abs_mv": 3.280381464815818e-06, + "same_event_prefix_max_abs_mv": 3.733467101341148e-05, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/preregistration-after.json b/registry/phase4ad-author-semantics/evidence/regression/preregistration-after.json new file mode 100644 index 0000000..8e8f9bb --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/preregistration-after.json @@ -0,0 +1,373 @@ +{ + "initial": { + "name": "preregistration", + "pass": true, + "record": { + "config": { + "name": "author-semantics-lab-v1", + "phase": "4AD", + "root": "/data/digital-drosophila", + "experiment": "experiments/phase4ad-author-semantics", + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "human_authorization": "允许独立新模型分支测试动力学假设", + "dt_ms": 0.1, + "duration_ms": 1000.0, + "seed_margin_mv": 1.0, + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "synaptic_tau_ms": 5.0, + "refractory_ms": 2.2, + "resting_potential_mv": -52.0, + "reset_potential_mv": -52.0, + "threshold_mv": -45.0, + "synaptic_delay_ms": 1.8, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "seed_node": 1381, + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "float64_state_max_abs_tolerance_mv": 1e-08, + "float32_state_max_abs_tolerance_mv": 0.001, + "exact_spike_events_required_for_oracle_validation": true, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "no_training_or_candidate": true + }, + "timestamp_utc": "2026-09-29T23:14:27.848343+00:00", + "source_hashes": { + "PROTOCOL.md": "23e784ca1cbde7546373dbcbedbe2bc23d35083084f120068bf06100f238b09a", + "config.json": "a69e8da5332d8031cbe1663abff25e61ee04e75f5490e8fa44c48690d3d0e219", + "context.py": "561d405ee4a2d3bbc6982c89191523f348d6fae0630dea9cb67ddf03acc6fc7b", + "finalize.py": "97a393b95d100dc5d95b624e4cd0d15511307b8c70e0ebd788b773c143ebfed6", + "interface_audit.py": "1e2b31545f1206fe1c1f4084b4a9ac0f21c74990c52e8fd156e809725fc5fb95", + "math_lab.py": "9663da41d5f623e1d7750e3cad3df880148079968f115bf583b58799fc5fb31f", + "oracle_runner.py": "2f4b073261965cf18a94697caf725c40b2e8db790c2871862201337f40c399e5", + "prepare.py": "49caa9553938f06539ecf282868491f8e1319d8f24220f89ac9e232db2d82e51", + "requirements-oracle.txt": "a69efc6509b85a5cc00a652caa4820c9c9e1406f6b97c6cc741322728c4d51c3", + "run_lab.py": "8746e1971c5a40a738e10f8f574a243c29cefa5a8b9f61a2846557ceffd1289a", + "verify_frozen.py": "fe37a48ce804e6c50f93404bfd3c23a7e54cd49061bbdfb4860315879648c73b" + }, + "input_hashes": [ + { + "path": "experiments/phase4ac-lif-semantics/external-resources/model.py", + "sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "bytes": 11900 + }, + { + "path": "experiments/phase4ac-lif-semantics/external-resources/LICENSE", + "sha256": "3621f6d6476189190e2960fa43f11b275ba4eca848fdac50a1ba2925de6223e8", + "bytes": 1085 + }, + { + "path": "experiments/phase4ac-lif-semantics/external-resources/environment_full.yml", + "sha256": "402fcef4968c99397b0e908b3323ab9e6ef86af5583e46e6427f96f3d1091adf", + "bytes": 3445 + }, + { + "path": "experiments/phase4ac-lif-semantics/audit/selected-real-edges.csv", + "sha256": "9103e9d03fa21058a4f6cd21780c56fed8cdcfca26c34c2a43726e39aed8ec55", + "bytes": 547 + }, + { + "path": "experiments/phase4ac-lif-semantics/audit/selected-metadata.parquet", + "sha256": "c1dde5df5408aeb878d6c422bc1c86ba44c3c5770f986014e594e356412a013d", + "bytes": 34348 + }, + { + "path": "models/male-cns-lif/lif-semantics-audit-v1/math_reference.py", + "sha256": "5166366251f99359b1301f514f5d9ae5f0f041fd3a3f98902386192117f01aea", + "bytes": 3768 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/pair-edges.csv", + "sha256": "05a7c7a5547aaeea4d1522f9cea75463405f0c3cdfbc4d563f111ad51cb80e00", + "bytes": 152 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/pair-events.parquet", + "sha256": "962a440924a9b2a4a3677b8968e63042de0b80ea4e496c213ebcf40d5e530e85", + "bytes": 4157 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/pair-state.npz", + "sha256": "924774344956dd5a530c3d00c8103fe4d1b584837d5e91f05b60094540a78897", + "bytes": 14660 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/trio-edges.csv", + "sha256": "c842c5bce0b11275c0eba9532955026a4b58931c2346e178bfa8a84227289c71", + "bytes": 288 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/trio-events.parquet", + "sha256": "a39d58de867f4f1ce1291e0ece25a52b70a3e04024508f77cb4a29eb4e09fa0e", + "bytes": 7476 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/trio-state.npz", + "sha256": "46c8a495ee1358a6173a2eebebe9ce2d6481b27f10e0c56cf9602c7969cd8702", + "bytes": 18538 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/five-edges.csv", + "sha256": "9103e9d03fa21058a4f6cd21780c56fed8cdcfca26c34c2a43726e39aed8ec55", + "bytes": 547 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/five-events.parquet", + "sha256": "19fef92b32be32ced2ec6b6581c9dac05055e9d550c104dd0d5ec5e33e25e759", + "bytes": 9974 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/five-state.npz", + "sha256": "15095ada05014741f6b6576c2d12d1a8f1ae482ae6f012d5e2be346c796baf4b", + "bytes": 268297 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/feedforward-edges.csv", + "sha256": "add7a3b450e3f3043af602baf8e770e5358c1c024d44bb21a74ef18429c0680e", + "bytes": 228 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/feedforward-events.parquet", + "sha256": "f687cf303d9318404c954e2e699d65d7893ad3f33115c0f9c5ea45b9698ff275", + "bytes": 1716 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/feedforward-state.npz", + "sha256": "6a24c8d2ad476e2250af49172be12de9d43346bc84f043b19d012fa0c53d2fba", + "bytes": 85957 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/no_input-edges.csv", + "sha256": "9103e9d03fa21058a4f6cd21780c56fed8cdcfca26c34c2a43726e39aed8ec55", + "bytes": 547 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/no_input-events.parquet", + "sha256": "071326bc3033505f431e38d716cb8ec681dc192b8389792059bb8a75027a1f10", + "bytes": 1472 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/no_input-state.npz", + "sha256": "a74134da72381d0dbff10bb5143691add6081487dede488a939bb0a4dbf5c20e", + "bytes": 3114 + } + ], + "parent_commit": "5008cd85ca11750f23ce7bc001e8e821763b7501", + "pre_model_execution": true + } + }, + "at_seal": { + "name": "preregistration_at_seal", + "pass": true, + "record": { + "config": { + "name": "author-semantics-lab-v1", + "phase": "4AD", + "root": "/data/digital-drosophila", + "experiment": "experiments/phase4ad-author-semantics", + "model_directory": "models/male-cns-lif/author-semantics-lab-v1", + "prior_experiment": "experiments/phase4ac-lif-semantics", + "prior_model": "models/male-cns-lif/lif-semantics-audit-v1", + "human_authorization": "允许独立新模型分支测试动力学假设", + "dt_ms": 0.1, + "duration_ms": 1000.0, + "seed_margin_mv": 1.0, + "late_start_ms": 500.0, + "model": { + "dt_ms": 0.1, + "membrane_tau_ms": 20.0, + "synaptic_tau_ms": 5.0, + "refractory_ms": 2.2, + "resting_potential_mv": -52.0, + "reset_potential_mv": -52.0, + "threshold_mv": -45.0, + "synaptic_delay_ms": 1.8, + "w_syn_mv_per_anatomical_synapse": 0.275 + }, + "seed_node": 1381, + "motifs": [ + "pair", + "trio", + "five", + "feedforward", + "no_input" + ], + "component_policies": [ + "frozen", + "reset_g_only", + "refractory_gate_only", + "reset_and_refractory" + ], + "author_precisions": [ + "float64", + "float32" + ], + "comparison": { + "float64_state_max_abs_tolerance_mv": 1e-08, + "float32_state_max_abs_tolerance_mv": 0.001, + "exact_spike_events_required_for_oracle_validation": true, + "precision_cross_comparison_may_diverge_but_must_be_reported": true + }, + "no_training_or_candidate": true + }, + "timestamp_utc": "2026-09-29T23:14:27.848343+00:00", + "source_hashes": { + "PROTOCOL.md": "23e784ca1cbde7546373dbcbedbe2bc23d35083084f120068bf06100f238b09a", + "config.json": "a69e8da5332d8031cbe1663abff25e61ee04e75f5490e8fa44c48690d3d0e219", + "context.py": "561d405ee4a2d3bbc6982c89191523f348d6fae0630dea9cb67ddf03acc6fc7b", + "finalize.py": "97a393b95d100dc5d95b624e4cd0d15511307b8c70e0ebd788b773c143ebfed6", + "interface_audit.py": "1e2b31545f1206fe1c1f4084b4a9ac0f21c74990c52e8fd156e809725fc5fb95", + "math_lab.py": "9663da41d5f623e1d7750e3cad3df880148079968f115bf583b58799fc5fb31f", + "oracle_runner.py": "2f4b073261965cf18a94697caf725c40b2e8db790c2871862201337f40c399e5", + "prepare.py": "49caa9553938f06539ecf282868491f8e1319d8f24220f89ac9e232db2d82e51", + "requirements-oracle.txt": "a69efc6509b85a5cc00a652caa4820c9c9e1406f6b97c6cc741322728c4d51c3", + "run_lab.py": "8746e1971c5a40a738e10f8f574a243c29cefa5a8b9f61a2846557ceffd1289a", + "verify_frozen.py": "fe37a48ce804e6c50f93404bfd3c23a7e54cd49061bbdfb4860315879648c73b" + }, + "input_hashes": [ + { + "path": "experiments/phase4ac-lif-semantics/external-resources/model.py", + "sha256": "fc45837d7122c6ce2a7f3f2f23c515992e4b232aadb919efabb72337fac88e4e", + "bytes": 11900 + }, + { + "path": "experiments/phase4ac-lif-semantics/external-resources/LICENSE", + "sha256": "3621f6d6476189190e2960fa43f11b275ba4eca848fdac50a1ba2925de6223e8", + "bytes": 1085 + }, + { + "path": "experiments/phase4ac-lif-semantics/external-resources/environment_full.yml", + "sha256": "402fcef4968c99397b0e908b3323ab9e6ef86af5583e46e6427f96f3d1091adf", + "bytes": 3445 + }, + { + "path": "experiments/phase4ac-lif-semantics/audit/selected-real-edges.csv", + "sha256": "9103e9d03fa21058a4f6cd21780c56fed8cdcfca26c34c2a43726e39aed8ec55", + "bytes": 547 + }, + { + "path": "experiments/phase4ac-lif-semantics/audit/selected-metadata.parquet", + "sha256": "c1dde5df5408aeb878d6c422bc1c86ba44c3c5770f986014e594e356412a013d", + "bytes": 34348 + }, + { + "path": "models/male-cns-lif/lif-semantics-audit-v1/math_reference.py", + "sha256": "5166366251f99359b1301f514f5d9ae5f0f041fd3a3f98902386192117f01aea", + "bytes": 3768 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/pair-edges.csv", + "sha256": "05a7c7a5547aaeea4d1522f9cea75463405f0c3cdfbc4d563f111ad51cb80e00", + "bytes": 152 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/pair-events.parquet", + "sha256": "962a440924a9b2a4a3677b8968e63042de0b80ea4e496c213ebcf40d5e530e85", + "bytes": 4157 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/pair-state.npz", + "sha256": "924774344956dd5a530c3d00c8103fe4d1b584837d5e91f05b60094540a78897", + "bytes": 14660 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/trio-edges.csv", + "sha256": "c842c5bce0b11275c0eba9532955026a4b58931c2346e178bfa8a84227289c71", + "bytes": 288 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/trio-events.parquet", + "sha256": "a39d58de867f4f1ce1291e0ece25a52b70a3e04024508f77cb4a29eb4e09fa0e", + "bytes": 7476 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/trio-state.npz", + "sha256": "46c8a495ee1358a6173a2eebebe9ce2d6481b27f10e0c56cf9602c7969cd8702", + "bytes": 18538 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/five-edges.csv", + "sha256": "9103e9d03fa21058a4f6cd21780c56fed8cdcfca26c34c2a43726e39aed8ec55", + "bytes": 547 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/five-events.parquet", + "sha256": "19fef92b32be32ced2ec6b6581c9dac05055e9d550c104dd0d5ec5e33e25e759", + "bytes": 9974 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/five-state.npz", + "sha256": "15095ada05014741f6b6576c2d12d1a8f1ae482ae6f012d5e2be346c796baf4b", + "bytes": 268297 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/feedforward-edges.csv", + "sha256": "add7a3b450e3f3043af602baf8e770e5358c1c024d44bb21a74ef18429c0680e", + "bytes": 228 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/feedforward-events.parquet", + "sha256": "f687cf303d9318404c954e2e699d65d7893ad3f33115c0f9c5ea45b9698ff275", + "bytes": 1716 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/feedforward-state.npz", + "sha256": "6a24c8d2ad476e2250af49172be12de9d43346bc84f043b19d012fa0c53d2fba", + "bytes": 85957 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/no_input-edges.csv", + "sha256": "9103e9d03fa21058a4f6cd21780c56fed8cdcfca26c34c2a43726e39aed8ec55", + "bytes": 547 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/no_input-events.parquet", + "sha256": "071326bc3033505f431e38d716cb8ec681dc192b8389792059bb8a75027a1f10", + "bytes": 1472 + }, + { + "path": "experiments/phase4ac-lif-semantics/motifs/no_input-state.npz", + "sha256": "a74134da72381d0dbff10bb5143691add6081487dede488a939bb0a4dbf5c20e", + "bytes": 3114 + } + ], + "parent_commit": "5008cd85ca11750f23ce7bc001e8e821763b7501", + "pre_model_execution": true + } + }, + "observed_source_hashes": { + "PROTOCOL.md": "23e784ca1cbde7546373dbcbedbe2bc23d35083084f120068bf06100f238b09a", + "config.json": "a69e8da5332d8031cbe1663abff25e61ee04e75f5490e8fa44c48690d3d0e219", + "context.py": "561d405ee4a2d3bbc6982c89191523f348d6fae0630dea9cb67ddf03acc6fc7b", + "finalize.py": "97a393b95d100dc5d95b624e4cd0d15511307b8c70e0ebd788b773c143ebfed6", + "interface_audit.py": "1e2b31545f1206fe1c1f4084b4a9ac0f21c74990c52e8fd156e809725fc5fb95", + "math_lab.py": "9663da41d5f623e1d7750e3cad3df880148079968f115bf583b58799fc5fb31f", + "oracle_runner.py": "2f4b073261965cf18a94697caf725c40b2e8db790c2871862201337f40c399e5", + "prepare.py": "49caa9553938f06539ecf282868491f8e1319d8f24220f89ac9e232db2d82e51", + "requirements-oracle.txt": "a69efc6509b85a5cc00a652caa4820c9c9e1406f6b97c6cc741322728c4d51c3", + "run_lab.py": "8746e1971c5a40a738e10f8f574a243c29cefa5a8b9f61a2846557ceffd1289a", + "verify_frozen.py": "fe37a48ce804e6c50f93404bfd3c23a7e54cd49061bbdfb4860315879648c73b" + } +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/trio-float32-repeat.json b/registry/phase4ad-author-semantics/evidence/regression/trio-float32-repeat.json new file mode 100644 index 0000000..e11d460 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/trio-float32-repeat.json @@ -0,0 +1,10 @@ +{ + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "weights": true +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/trio-float64-repeat.json b/registry/phase4ad-author-semantics/evidence/regression/trio-float64-repeat.json new file mode 100644 index 0000000..e11d460 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/trio-float64-repeat.json @@ -0,0 +1,10 @@ +{ + "step": true, + "neuron_idx": true, + "counts": true, + "v": true, + "g": true, + "ref": true, + "history": true, + "weights": true +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/trio-precision-cross-comparison.json b/registry/phase4ad-author-semantics/evidence/regression/trio-precision-cross-comparison.json new file mode 100644 index 0000000..daa46e9 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/trio-precision-cross-comparison.json @@ -0,0 +1,11 @@ +{ + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 3.733467101341148e-05, + "mean_abs_mv": 3.6417296913128893e-06, + "same_event_prefix_max_abs_mv": 3.733467101341148e-05, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/unit-above_threshold-float32.json b/registry/phase4ad-author-semantics/evidence/regression/unit-above_threshold-float32.json new file mode 100644 index 0000000..973bf6a --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/unit-above_threshold-float32.json @@ -0,0 +1,19 @@ +{ + "fixture": "above_threshold", + "precision": "float32", + "checks": { + "single_seed": true, + "reset_g": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 1.0728836059570312e-06, + "mean_abs_mv": 5.364418029785156e-07, + "same_event_prefix_max_abs_mv": 1.0728836059570312e-06, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/unit-above_threshold-float64.json b/registry/phase4ad-author-semantics/evidence/regression/unit-above_threshold-float64.json new file mode 100644 index 0000000..37387e2 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/unit-above_threshold-float64.json @@ -0,0 +1,19 @@ +{ + "fixture": "above_threshold", + "precision": "float64", + "checks": { + "single_seed": true, + "reset_g": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 7.105427357601002e-15, + "mean_abs_mv": 3.552713678800501e-15, + "same_event_prefix_max_abs_mv": 7.105427357601002e-15, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/unit-delay_18-float32.json b/registry/phase4ad-author-semantics/evidence/regression/unit-delay_18-float32.json new file mode 100644 index 0000000..13019da --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/unit-delay_18-float32.json @@ -0,0 +1,21 @@ +{ + "fixture": "delay_18", + "precision": "float32", + "checks": { + "one_seed": true, + "zero_before_arrival": true, + "arrival_at_18": true, + "first_voltage_effect_at_19": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.0001220405101776123, + "mean_abs_mv": 1.6799908344182768e-05, + "same_event_prefix_max_abs_mv": 0.0001220405101776123, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/unit-delay_18-float64.json b/registry/phase4ad-author-semantics/evidence/regression/unit-delay_18-float64.json new file mode 100644 index 0000000..de67778 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/unit-delay_18-float64.json @@ -0,0 +1,21 @@ +{ + "fixture": "delay_18", + "precision": "float64", + "checks": { + "one_seed": true, + "zero_before_arrival": true, + "arrival_at_18": true, + "first_voltage_effect_at_19": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 2.3447910280083306e-13, + "mean_abs_mv": 3.262299068038099e-14, + "same_event_prefix_max_abs_mv": 2.3447910280083306e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/unit-equal_threshold-float32.json b/registry/phase4ad-author-semantics/evidence/regression/unit-equal_threshold-float32.json new file mode 100644 index 0000000..a12137d --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/unit-equal_threshold-float32.json @@ -0,0 +1,18 @@ +{ + "fixture": "equal_threshold", + "precision": "float32", + "checks": { + "strict_threshold_no_event": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.00012242794036865234, + "mean_abs_mv": 3.6822035908699036e-05, + "same_event_prefix_max_abs_mv": 0.00012242794036865234, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/unit-equal_threshold-float64.json b/registry/phase4ad-author-semantics/evidence/regression/unit-equal_threshold-float64.json new file mode 100644 index 0000000..36306a4 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/unit-equal_threshold-float64.json @@ -0,0 +1,18 @@ +{ + "fixture": "equal_threshold", + "precision": "float64", + "checks": { + "strict_threshold_no_event": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 2.2026824808563106e-13, + "mean_abs_mv": 5.400124791776761e-14, + "same_event_prefix_max_abs_mv": 2.2026824808563106e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/unit-fixtures.json b/registry/phase4ad-author-semantics/evidence/regression/unit-fixtures.json new file mode 100644 index 0000000..a9d3cec --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/unit-fixtures.json @@ -0,0 +1,322 @@ +[ + { + "fixture": "zero", + "precision": "float64", + "checks": { + "no_events": true, + "g_zero": true, + "rest_stationary": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 7.105427357601002e-15, + "mean_abs_mv": 3.552713678800501e-15, + "same_event_prefix_max_abs_mv": 7.105427357601002e-15, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } + }, + { + "fixture": "weak_excitation", + "precision": "float64", + "checks": { + "no_events": true, + "arrival_at_zero": true, + "integration_next_step": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 2.3447910280083306e-13, + "mean_abs_mv": 7.853490427423005e-14, + "same_event_prefix_max_abs_mv": 2.3447910280083306e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } + }, + { + "fixture": "inhibition", + "precision": "float64", + "checks": { + "no_events": true, + "arrival_at_zero": true, + "integration_next_step": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 2.4158453015843406e-13, + "mean_abs_mv": 7.103867841196099e-14, + "same_event_prefix_max_abs_mv": 2.4158453015843406e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } + }, + { + "fixture": "refractory_boundary", + "precision": "float64", + "checks": { + "one_seed": true, + "reject_through_21": true, + "accept_at_22": true, + "release_at_22": true, + "reset_g_at_zero": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 1.9184653865522705e-13, + "mean_abs_mv": 4.753580341854136e-14, + "same_event_prefix_max_abs_mv": 1.9184653865522705e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } + }, + { + "fixture": "equal_threshold", + "precision": "float64", + "checks": { + "strict_threshold_no_event": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 2.2026824808563106e-13, + "mean_abs_mv": 5.400124791776761e-14, + "same_event_prefix_max_abs_mv": 2.2026824808563106e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } + }, + { + "fixture": "above_threshold", + "precision": "float64", + "checks": { + "single_seed": true, + "reset_g": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 7.105427357601002e-15, + "mean_abs_mv": 3.552713678800501e-15, + "same_event_prefix_max_abs_mv": 7.105427357601002e-15, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } + }, + { + "fixture": "nonzero_g_reset", + "precision": "float64", + "checks": { + "natural_spike_at_1": true, + "nonzero_g_before_spike": true, + "zero_g_after_spike": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 7.105427357601002e-15, + "mean_abs_mv": 3.552713678800501e-15, + "same_event_prefix_max_abs_mv": 7.105427357601002e-15, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } + }, + { + "fixture": "delay_18", + "precision": "float64", + "checks": { + "one_seed": true, + "zero_before_arrival": true, + "arrival_at_18": true, + "first_voltage_effect_at_19": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 2.3447910280083306e-13, + "mean_abs_mv": 3.262299068038099e-14, + "same_event_prefix_max_abs_mv": 2.3447910280083306e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } + }, + { + "fixture": "zero", + "precision": "float32", + "checks": { + "no_events": true, + "g_zero": true, + "rest_stationary": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 1.0728836059570312e-06, + "mean_abs_mv": 5.364418029785156e-07, + "same_event_prefix_max_abs_mv": 1.0728836059570312e-06, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } + }, + { + "fixture": "weak_excitation", + "precision": "float32", + "checks": { + "no_events": true, + "arrival_at_zero": true, + "integration_next_step": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.00012701749801635742, + "mean_abs_mv": 3.341285439091735e-05, + "same_event_prefix_max_abs_mv": 0.00012701749801635742, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } + }, + { + "fixture": "inhibition", + "precision": "float32", + "checks": { + "no_events": true, + "arrival_at_zero": true, + "integration_next_step": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.00011596083641052246, + "mean_abs_mv": 3.622157426434569e-05, + "same_event_prefix_max_abs_mv": 0.00011596083641052246, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } + }, + { + "fixture": "refractory_boundary", + "precision": "float32", + "checks": { + "one_seed": true, + "reject_through_21": true, + "accept_at_22": true, + "release_at_22": true, + "reset_g_at_zero": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.00010353326797485352, + "mean_abs_mv": 2.6278293235009186e-05, + "same_event_prefix_max_abs_mv": 0.00010353326797485352, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } + }, + { + "fixture": "equal_threshold", + "precision": "float32", + "checks": { + "strict_threshold_no_event": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.00012242794036865234, + "mean_abs_mv": 3.6822035908699036e-05, + "same_event_prefix_max_abs_mv": 0.00012242794036865234, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } + }, + { + "fixture": "above_threshold", + "precision": "float32", + "checks": { + "single_seed": true, + "reset_g": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 1.0728836059570312e-06, + "mean_abs_mv": 5.364418029785156e-07, + "same_event_prefix_max_abs_mv": 1.0728836059570312e-06, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } + }, + { + "fixture": "nonzero_g_reset", + "precision": "float32", + "checks": { + "natural_spike_at_1": true, + "nonzero_g_before_spike": true, + "zero_g_after_spike": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.0001220703125, + "mean_abs_mv": 8.416175842285156e-07, + "same_event_prefix_max_abs_mv": 0.0001220703125, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } + }, + { + "fixture": "delay_18", + "precision": "float32", + "checks": { + "one_seed": true, + "zero_before_arrival": true, + "arrival_at_18": true, + "first_voltage_effect_at_19": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.0001220405101776123, + "mean_abs_mv": 1.6799908344182768e-05, + "same_event_prefix_max_abs_mv": 0.0001220405101776123, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } + } +] diff --git a/registry/phase4ad-author-semantics/evidence/regression/unit-inhibition-float32.json b/registry/phase4ad-author-semantics/evidence/regression/unit-inhibition-float32.json new file mode 100644 index 0000000..2c68c94 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/unit-inhibition-float32.json @@ -0,0 +1,20 @@ +{ + "fixture": "inhibition", + "precision": "float32", + "checks": { + "no_events": true, + "arrival_at_zero": true, + "integration_next_step": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.00011596083641052246, + "mean_abs_mv": 3.622157426434569e-05, + "same_event_prefix_max_abs_mv": 0.00011596083641052246, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/unit-inhibition-float64.json b/registry/phase4ad-author-semantics/evidence/regression/unit-inhibition-float64.json new file mode 100644 index 0000000..010b1bd --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/unit-inhibition-float64.json @@ -0,0 +1,20 @@ +{ + "fixture": "inhibition", + "precision": "float64", + "checks": { + "no_events": true, + "arrival_at_zero": true, + "integration_next_step": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 2.4158453015843406e-13, + "mean_abs_mv": 7.103867841196099e-14, + "same_event_prefix_max_abs_mv": 2.4158453015843406e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/unit-nonzero_g_reset-float32.json b/registry/phase4ad-author-semantics/evidence/regression/unit-nonzero_g_reset-float32.json new file mode 100644 index 0000000..1a5f50b --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/unit-nonzero_g_reset-float32.json @@ -0,0 +1,20 @@ +{ + "fixture": "nonzero_g_reset", + "precision": "float32", + "checks": { + "natural_spike_at_1": true, + "nonzero_g_before_spike": true, + "zero_g_after_spike": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.0001220703125, + "mean_abs_mv": 8.416175842285156e-07, + "same_event_prefix_max_abs_mv": 0.0001220703125, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/unit-nonzero_g_reset-float64.json b/registry/phase4ad-author-semantics/evidence/regression/unit-nonzero_g_reset-float64.json new file mode 100644 index 0000000..b52a015 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/unit-nonzero_g_reset-float64.json @@ -0,0 +1,20 @@ +{ + "fixture": "nonzero_g_reset", + "precision": "float64", + "checks": { + "natural_spike_at_1": true, + "nonzero_g_before_spike": true, + "zero_g_after_spike": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 7.105427357601002e-15, + "mean_abs_mv": 3.552713678800501e-15, + "same_event_prefix_max_abs_mv": 7.105427357601002e-15, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/unit-refractory_boundary-float32.json b/registry/phase4ad-author-semantics/evidence/regression/unit-refractory_boundary-float32.json new file mode 100644 index 0000000..09949be --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/unit-refractory_boundary-float32.json @@ -0,0 +1,22 @@ +{ + "fixture": "refractory_boundary", + "precision": "float32", + "checks": { + "one_seed": true, + "reject_through_21": true, + "accept_at_22": true, + "release_at_22": true, + "reset_g_at_zero": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.00010353326797485352, + "mean_abs_mv": 2.6278293235009186e-05, + "same_event_prefix_max_abs_mv": 0.00010353326797485352, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/unit-refractory_boundary-float64.json b/registry/phase4ad-author-semantics/evidence/regression/unit-refractory_boundary-float64.json new file mode 100644 index 0000000..bd623b9 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/unit-refractory_boundary-float64.json @@ -0,0 +1,22 @@ +{ + "fixture": "refractory_boundary", + "precision": "float64", + "checks": { + "one_seed": true, + "reject_through_21": true, + "accept_at_22": true, + "release_at_22": true, + "reset_g_at_zero": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 1.9184653865522705e-13, + "mean_abs_mv": 4.753580341854136e-14, + "same_event_prefix_max_abs_mv": 1.9184653865522705e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/unit-weak_excitation-float32.json b/registry/phase4ad-author-semantics/evidence/regression/unit-weak_excitation-float32.json new file mode 100644 index 0000000..ce9e9f9 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/unit-weak_excitation-float32.json @@ -0,0 +1,20 @@ +{ + "fixture": "weak_excitation", + "precision": "float32", + "checks": { + "no_events": true, + "arrival_at_zero": true, + "integration_next_step": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 0.00012701749801635742, + "mean_abs_mv": 3.341285439091735e-05, + "same_event_prefix_max_abs_mv": 0.00012701749801635742, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/unit-weak_excitation-float64.json b/registry/phase4ad-author-semantics/evidence/regression/unit-weak_excitation-float64.json new file mode 100644 index 0000000..7f76108 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/unit-weak_excitation-float64.json @@ -0,0 +1,20 @@ +{ + "fixture": "weak_excitation", + "precision": "float64", + "checks": { + "no_events": true, + "arrival_at_zero": true, + "integration_next_step": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 2.3447910280083306e-13, + "mean_abs_mv": 7.853490427423005e-14, + "same_event_prefix_max_abs_mv": 2.3447910280083306e-13, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/unit-zero-float32.json b/registry/phase4ad-author-semantics/evidence/regression/unit-zero-float32.json new file mode 100644 index 0000000..0e36196 --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/unit-zero-float32.json @@ -0,0 +1,20 @@ +{ + "fixture": "zero", + "precision": "float32", + "checks": { + "no_events": true, + "g_zero": true, + "rest_stationary": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 1.0728836059570312e-06, + "mean_abs_mv": 5.364418029785156e-07, + "same_event_prefix_max_abs_mv": 1.0728836059570312e-06, + "first_event_divergence_step": null, + "tolerance_mv": 0.001, + "pass_oracle": true + } +} diff --git a/registry/phase4ad-author-semantics/evidence/regression/unit-zero-float64.json b/registry/phase4ad-author-semantics/evidence/regression/unit-zero-float64.json new file mode 100644 index 0000000..342917f --- /dev/null +++ b/registry/phase4ad-author-semantics/evidence/regression/unit-zero-float64.json @@ -0,0 +1,20 @@ +{ + "fixture": "zero", + "precision": "float64", + "checks": { + "no_events": true, + "g_zero": true, + "rest_stationary": true + }, + "comparison": { + "exact_events": true, + "exact_counts": true, + "ref_exact": true, + "max_abs_mv": 7.105427357601002e-15, + "mean_abs_mv": 3.552713678800501e-15, + "same_event_prefix_max_abs_mv": 7.105427357601002e-15, + "first_event_divergence_step": null, + "tolerance_mv": 1e-08, + "pass_oracle": true + } +} diff --git a/registry/phase4ad-author-semantics/seal-verification.json b/registry/phase4ad-author-semantics/seal-verification.json new file mode 100644 index 0000000..0dcdc27 --- /dev/null +++ b/registry/phase4ad-author-semantics/seal-verification.json @@ -0,0 +1,16 @@ +{ + "models/male-cns-lif/author-semantics-lab-v1": { + "pass": true, + "checked": 11, + "mismatches": [], + "manifest_sha256": "07a22bade4892adca3a4585656aa3ecce5219790b0dc8a851a12bfd7248d3769", + "checksums_sha256": "a632c04e62d8072caacfa680e0da7ad785a1d0db604cf5900853fd0b01c70ee7" + }, + "experiments/phase4ad-author-semantics": { + "pass": true, + "checked": 565, + "mismatches": [], + "manifest_sha256": "c939d3977a1883e86108c1e3edd25619118cec61e5c7712ae4dfa2893a73c0ca", + "checksums_sha256": "89ca0f11877dadb901bd2bd5d469d7bd145de980fc6b203b79daeec640a1b72c" + } +} diff --git a/tools/publish_phase4ad.py b/tools/publish_phase4ad.py new file mode 100644 index 0000000..f6f8e11 --- /dev/null +++ b/tools/publish_phase4ad.py @@ -0,0 +1,35 @@ +"""Publish sealed new-branch evidence only; never copy environment or bulk states.""" +import json +from pathlib import Path +import shutil +import sys + +ROOT=Path('/data/digital-drosophila') +MODEL=ROOT/'models/male-cns-lif/author-semantics-lab-v1' +EXP=ROOT/'experiments/phase4ad-author-semantics' +sys.path.insert(0,str(MODEL)) +from context import digest,save,check_prereg +sys.path.insert(0,str(ROOT/'models/male-cns-lif/terminal-scope-diagnostic-v1')) +from diagnostic import manifest_check + +check_prereg() +verification={str(p.relative_to(ROOT)):manifest_check(p,digest) for p in (MODEL,EXP)} +assert all(v['pass'] for v in verification.values()) +registry=ROOT/'registry/phase4ad-author-semantics';registry.mkdir(exist_ok=False) +records=[] +manifest=json.loads((EXP/'manifest.json').read_text()) +paths=[EXP/row['path'] for row in manifest['files']]+[EXP/'manifest.json',EXP/'checksums.sha256'] +for p in paths: + assert '.venv' not in p.parts and '__pycache__' not in p.parts + external=p.parent==EXP/'external-resources' + if p.stat().st_size>4*1024**2:continue + if p.suffix not in ('.json','.csv','.md','.sha256') and not external:continue + dst=registry/'evidence'/p.relative_to(EXP);dst.parent.mkdir(parents=True,exist_ok=True) + with p.open('rb') as src,dst.open('xb') as out:shutil.copyfileobj(src,out) + assert digest(p)==digest(dst) + records.append(dict(source=str(p.relative_to(ROOT)),copy=str(dst.relative_to(registry)),sha256=digest(p),bytes=p.stat().st_size)) +save(registry/'evidence-index.json',records) +save(registry/'seal-verification.json',verification) +target=ROOT/'docs/progress/phase4ad-author-semantics.md' +with (EXP/'REPORT.md').open('rb') as src,target.open('xb') as out:shutil.copyfileobj(src,out) +print('Published',len(records),'small evidence records; no bulk states, datasets or environment copied')