Skip to content

Steady-state analysis and BETSE convergence study - #4

Merged
bshepp merged 2 commits into
mainfrom
multistability-analysis
Sep 29, 2026
Merged

bshepp merged 2 commits into
mainfrom
multistability-analysis

Conversation

@bshepp

@bshepp bshepp commented Sep 28, 2026

Copy link
Copy Markdown
Owner

Summary

Adds the analysis the project's hypothesis calls for, and the first study that uses it.

Stacked on #3. The base is correctness-fixes; retarget to main once #3 is merged.

What is added

  • mneme.analysis.steady_state
    • assess_steady_state() decides whether a relaxing run has settled. A low rate of change alone is not accepted: the distance still to travel is estimated from the fitted relaxation time.
    • count_distinct_states() groups end states against a stated threshold and reports how clean the grouping is.
  • studies/convergence/: configuration generator, runner, analysis script, and results for a BETSE experiment.

Study result

Thirteen runs of one 42-cell tissue: six starting ion concentrations, with and without gap-junction coupling, plus one exact repeat.

Coupling Largest gap at start Largest gap at end Distinct end states
Off 48.83 mV 0.32 mV 1
On 48.05 mV 0.17 mV 1

No multistability was found. Full write-up in studies/convergence/RESULTS.md.

Limits

  • The runs did not meet the settling criterion fixed beforehand. Estimated remaining drift was 0.20 to 0.32 mV against a limit of 0.1 mV. The write-up states this and does not relax the criterion.
  • The configuration has no mechanism expected to produce multistability, so this is a baseline, not a test of the hypothesis.
  • Coupled runs used a coupling 50 times weaker than BETSE's default, which was numerically unstable at this time step.
  • The raw simulation output (about 5,400 CSV files) is not committed. studies/convergence/README.md gives the steps to regenerate it.

Testing

tests/test_steady_state.py: 21 tests against known answers, including exponential relaxations with known time constants and a double-well system with two known stable states.

🤖 Generated with Claude Code

bshepp and others added 2 commits September 27, 2026 13:59
… study

Add mneme.analysis.steady_state for the question the project is meant to
answer: does a system have more than one stable state?

- assess_steady_state decides whether a relaxing run has settled. A low
  rate of change is not accepted on its own: the remaining distance is
  estimated from the fitted relaxation time.
- count_distinct_states groups end states against a stated threshold and
  reports how clean the grouping is.

Tested on exponential relaxations with known time constants and on a
double-well system with two known stable states.

studies/convergence holds the configuration generator, runner and analysis
for a BETSE experiment that starts one tissue from six ion concentrations,
with and without gap-junction coupling.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Thirteen BETSE runs of one 42-cell tissue, from six starting ion
concentrations, with and without gap-junction coupling, plus an exact
repeat. Runs that started up to 48.8 mV apart ended within 0.32 mV of each
other: one stable state, no multistability.

The runs did not meet the settling criterion fixed beforehand (estimated
remaining drift 0.20 to 0.32 mV against a limit of 0.1 mV). The results
say so.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@bshepp
bshepp changed the base branch from correctness-fixes to main September 29, 2026 16:53
@bshepp bshepp closed this Sep 29, 2026
@bshepp bshepp reopened this Sep 29, 2026
@bshepp
bshepp merged commit 090b193 into main Sep 29, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant