Faster parallel data fits, name-based measurement lookup, Arbin subschedule/loop support, and clearer model and duplicate errors
Faster, more reliable parallel data fitting
Parallel data fitting has been rebuilt on a dedicated execution engine that drives optimizers, point evaluation, multistart coordination, and progress reporting more efficiently and reliably, with clearer error reporting when a fit fails.Name-based measurement lookup
client.resolve_measurement(cell_specification, cell_instance, measurement) resolves a measurement_id from human-readable names,
walking the spec → instance → measurement hierarchy with server-side
filtering at each level. Scripts no longer need to hand-walk three
list endpoints and repeat name-matching boilerplate just to get an id.
parameterized_model.create_or_get also lands, giving parameterized
models the re-runnable create-or-resolve behaviour the other cell
resources already had.Clearer errors for model failures and duplicates
Two opaque “An unexpected error occurred” cases — a fit whose model setup needs geometry the user didn’t supply, and a custom model with no discretisation recipe — now surface as a clearModelError naming
what failed. Separately, attempting to create a resource that already
exists now returns a 409 CONFLICT (with the existing id) instead of
a 500, so duplicate-creation attempts fail clearly instead of
erroring unexpectedly.Studio
Studio
Improvements
- “Save as template” for an optimization now builds the template server-side, copying an optimization’s saved config directly into the template.
- Completed validation/datafit results no longer sporadically show “Failed to load plot data.” for one of a pair of plots.
- Cycle-ageing experiments driven directly from stored measurement
data (
experiment="from data") now resolve their measurement references correctly, instead of failing later in the run.
Pipeline
Pipeline
Improvements
- A bare element-wise cost (
SSE/MSE/RMSE/MAE/Max) applied to a multi-variable objective now warns when variable lengths mismatch — e.g. a model-axis dQ/dV variable against a data-axis voltage variable — instead of silently broadcasting to a meaningless residual. - All 1-D interpolant calculations now accept a
"pchip"interpolator (monotone cubic), the right choice for sparse, order-of-magnitudeD(sto)tables such as half-cell GITT per-pulse diffusivity.
- The MSMR half-cell logistic value and derivative are now evaluated more robustly, so it can never overflow.
- Model configuration now rebuilds consistently across execution paths, so results agree regardless of how a run was launched.
- A custom model with serialised geometry/mesh now survives multistart runs reliably, fixing cases that previously failed to serialize.
Python API
Python API
Improvements
client.resolve_measurementandparameterized_model.create_or_get(both introduced above), plusModel.configfor inspecting a model’s stored configuration.- Passing a bare pandas/polars DataFrame to a schema
datafield (objectivedata_input,OCPDataInterpolant.data, the Arrhenius calculations’data) is now auto-wrapped correctly on serialization, instead of failing server-side validation with the opaque “Required field ‘data’ missing”.
Protocol Simulator
Protocol Simulator
Improvements
- Arbin protocols now support subschedules, counter loops, and temperature add-ins, so schedules that previously crashed on upload with “Unsupported step type: SubSchedule” now parse and simulate end-to-end.
- BioLogic
.mpssimulation fixes: the loop counter is off by one no longer (EC-Lab’sctrl_repeatdoes not count the first pass, so a loop now runsctrl_repeat + 1times), plus BCD/EIS support and drive-cycle fixes, each reproduced against the reported setting files before fixing. - User-correctable protocol and configuration errors across the Protocol Simulator and pipeline libraries now raise specific, actionable error messages instead of generic failures, so they surface clearly to the user.
Data Processing
Data Processing
Improvements
- The
process-datareader gotchas are now documented: selecting therecordsheet for multi-sheet Neware BTSDA.xlsxfiles, and current-unit handling — alongside the one-callread.time_series_and_stepsentry point.