Commit History
-
Add per-choice mean RT to dashboard stats table Running
Alexander +1: Claude Opus 4.7 (1M context)Users sometimes need to see the choice-conditional RT pattern (e.g. to spot starting-point bias or asymmetric drift effects); the overall Mean RT washes that out. - New `mean_rt_per_choice(sim_output)` helper in utils.utils that returns {choice_value: mean_rt} for valid (non-deadline-timeout) trials. Returns int keys when integer-valued so DataFrame column names are clean. - app.py builds per-choice columns from the union of observed choices across both models, so the table works even when the two compared models have different choice sets (NaN where a choice is absent). - 6 new tests in tests/test_summary_stats.py (basic two-choice, deadline filtering, one-sided, all-invalid, n-choice, integer-key invariant). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>9721937
-
Render `_s*` model plots at expected variability + per-sample NDT
Alexander +1: Claude Opus 4.7 (1M context)The cartoon and trajectory plots for DDM variants with random across-trial parameters (ddm_sdv, ddm_st, ddm_truncnormt, ddm_rayleight) were showing misleading information: 1. The noiseless "model cartoon" line rendered at slope `v + epsilon` for one random epsilon ~ Normal(0, sv) instead of the deterministic skeleton at slope `v`. Reason: ssm-simulators `no_noise=True` only zeros Brownian noise, not across-trial variability draws. 2. Sample trajectories all started at the input `t` even when each actual per-sample NDT was drawn from a random distribution (Uniform/TruncNorm/ Rayleigh). Reason: simulator metadata records the input `t`, not the per-sample NDT actually drawn from `t_dist`. GUI-side fixes: - `_VARIABILITY_COLLAPSE` overrides each `_s*` model's variability params before the cartoon-only simulator call. - `_EXPECTED_T_POST_SHIFT` post-adjusts `metadata['t']` for distributions whose param=0 collapse != expectation (ddm_rayleight: st * sqrt(pi/2)). - `_…ecf42d4