This repo fits pairwise maximum-entropy (Ising) models to Neuropixels recordings of mouse cerebellar Purkinje cells during reaching. The data is the Calame, Becker & Person dataset: 21 sessions, 6 mice, 3 blocks each (baseline, closed-loop stimulation, washout). The goal is one paper on what the Ising model reveals that other methods cannot.
- How to run or add an experiment: PROTOCOL.md. Start one with
bash tools/new_experiment.sh. - Paper-facing results (single source of truth): RESULTS_LOG_FOR_PAPER.md
- Full project handoff (data conventions, cluster gotchas): 09_claude_science_handoff/HANDOFF_CLAUDE_CODE.md
- Shared code: shared/. The original MCH pipeline is in
old_code/energy_over_time_script/.
| ID | Experiment | Status | Owner | Updated | Headline |
|---|---|---|---|---|---|
| E01 | Stationary MCH Ising fits (July 2026, all reaches) · results | complete | claude-science | 2026-10-12 | Ising reproduces P(K) (wins 62/63 blocks); |J| beats 100 rate-preserving shuffles in 63/63. Superseded as primary fits by E08 (exclusions applied). |
| E02 | Arbitration: energy vs firing rate at peak acceleration · results | superseded | claude-science | 2026-10-12 | Early 'energy wins 30/63' result not robust; firing rate is more movement-modulated (B6). See E07. |
| E03 | J coupling vs kinematics timing · results | superseded | claude-science | 2026-10-12 | WITHDRAWN: 'J lags in ~70%' and 'J best indicator' fail against control windows (D table). See E07. |
| E04 | Collective activity P(K) vs J peaks · results | superseded | claude-science | 2026-10-12 | J-peak/collective association (Fisher p=4e-8) reflects independent-model failure; superseded by time-varying-field analysis (E07/E09). |
| E05 | Decision-tree prediction of J-peak blocks · results | archived | claude-science | 2026-10-12 | No write-up of results exists; target (J peak) depends on withdrawn peak definitions. |
| E06 | Synthetic EI network: J changes from correlation alone · results | complete | claude-science | 2026-10-12 | Yes, J jumps during synthetic collective epochs at matched rate (method validation only; A6). |
| E07 | Pre-submission checks and time-varying-field model · results | complete | claude-science | 2026-10-12 | Coupling beyond reach-locked rates in 21/21 sessions; no evidence coupling strengthens during reach; timing claims withdrawn. See RESULTS_LOG A5-A8, B, D. |
| E08 | MCH refit with excluded reaches dropped (current primary fits) · results | complete | claude-science | 2026-10-12 | No material change: J vs July fits median r=0.996, slope 1.00; 63/63 blocks refit. |
| E09 | Exact-ML thermodynamics, H0 validation, operating point H1 · results | analysis | claude-science | 2026-10-12 | H0 validation done (primary dI/N accurate). H1 goes AGAINST premise: p(1-p) falls in 17/21 sessions (p=0.018). Amendments 2-3 need synthetic check. |
| E10 | Operating point: amendment checks and H2-H4 on real data · results | planned | grad-researcher | 2026-10-12 | Planned (design written, awaiting go-ahead). Step 1: synthetic check of amendments 2-3; step 2: H2-H4 on real data (cluster). |
| E12 | Field-term dip vs firing rate as a marker of peak acceleration · results | complete | grad-researcher-3 | 2026-10-12 | Field-term dip locks to peak acceleration (65% vs 14% rest control; 50 ms vs 330 ms for mean rate) but is a population-polarization effect: no detectable advantage of coupling-corrected fields (FT vs FT0, CIs wide) and a model-free polarization index matches it. POOL and rest-control check NOT RUN (sbatch blocked). |
Status values: planned → running → analysis → complete. superseded means the experiment was
replaced by a later one and its claims may be withdrawn. archived means it is kept for reference only.
After changing an experiment.json, regenerate this table with python3 tools/update_status.py.
Each experiment has its own branch and worktree (../ising_wt_eNN). Its design is in NN_*/README.md on that branch. Rows for
experiments not yet merged appear in the status table above when their PR merges.
| Order | Experiment | Branch | Owner | State |
|---|---|---|---|---|
| running | E10 Operating point H2–H4 | exp/10_operating_point_h2_h4 |
Graduate researcher | full cluster run (job 4363115) |
| running | E11 Stimulation κ model | exp/11_stimulation_kappa |
Graduate researcher 2 | full cluster run (jobs 4363060–62) |
| next 1 | E12 Field-term dip vs firing rate (+ decoder, Calame pooled-rate re-run) | exp/12_field_vs_rate_indicator |
unassigned | designed; mostly local |
| next 2 | E14 Bin-size sweep and 1-ms synchrony (Nashef reconciliation) | exp/14_binsize_1ms_synchrony |
unassigned | designed; heavy at 1 ms |
| next 3 | E13 Coupled-GLM benchmark | exp/13_glm_benchmark |
unassigned | designed; light |
When an agent finishes its experiment, it takes the next unassigned row: it sets owner in experiment.json, works in that
worktree, and writes the pre-registration before touching real data.
Not yet scoped: rewriting the stimulation-model figures for the paper; a shared-input simulation; J vs probe distance (partly in E14). Questions for the lab:
- How were the 2022 sessions (DJC000/DJC002) recorded and sorted?
- Was the unit-stability filter applied?
- What do
excludeandqmmean? - Are all mice opsin-positive?
- Does Nashef et al. have a published journal version?
ising_EnergyOverTime/
├── README.md # this tracker
├── PROTOCOL.md # how experiments are run and recorded
├── RESULTS_LOG_FOR_PAPER.md # the single paper-facing results log
├── NN_<experiment>/ # one folder per experiment (see PROTOCOL.md)
├── _template/ # copied by tools/new_experiment.sh
├── tools/ # new_experiment.sh, log_run.sh, update_status.py
├── shared/ # cross-experiment code (src/ package, aggregation scripts)
├── docs/ # older project overview and session-report galleries
└── old_code/ # everything from before the reorganization (original pipeline, notebooks, MATLAB)
Legacy folders (E01–E06) predate this protocol. Their notes/ hold the original analysis notes, and
their per-session outputs live on the cluster under results/ (gitignored).