Skip to main content
A plot drawer for measurements, dashboards you can edit yourself, and metadata filters

Plot measurements from the table

The separate comparison page is gone, and so is its 10-measurement limit. Select measurements in any measurement table, click Plot and pick a plot type: time series (with multiple and stacked Y axes), a cycle metric against cycle (optionally relative to a reference cycle), voltage against capacity, dQ/dV and dV/dQ, or an analysis when every selected measurement has the same kind. A plot type the selection can’t support is shown disabled with the reason (“4 of 12 have no cycle data”).The plot opens in a resizable drawer over the table, which stays usable underneath: ticking or unticking rows adds or removes measurements from the plot. Closing the drawer collapses it to an edge tab, and the plot survives a reload. A finished plot can be saved as a project-wide template, which then appears as a plot type, or sent to a dashboard — either for the measurements you picked, or for every measurement matching the table’s current filters, so new matches appear on their own. A dashboard plot draws up to 500 measurements (250 for analysis plots), and the builder says so when a scope is larger.Your measurement selection now persists across pages, filters, tables and reloads within a project, with its actions in the table toolbar. Other paginated tables clear their selection when you change page, so a bulk action only ever applies to rows you can see.

Dashboards you can edit yourself

  • Build a plot without the agent. A dashboard’s New plot offers Build a plot, which starts from the project’s measurement table with its search, filters and tags, then the same plot types and controls as the drawer, with a live preview. Builder plots can be rebuilt in place with Edit plot, and each card shows whether it came from the builder or the agent.
  • Change titles, axis labels and colours from the plot’s Configure drawer, including five palettes (among them colour-blind-safe and sequential). The agent never overwrites your choices; when one of its edits would, the review card lets you keep yours or take its version.
  • See and edit the code behind an agent plot. Edit code (or View code without edit rights) shows the plot’s data plan, transform and parameters with a live preview. Save is only enabled once the edited code has run without errors, and a concurrent edit is refused rather than overwritten.
  • Know what a plot shows. Each plot has an editable one-line description, lists the filters that selected its data, and its record count opens a list of the records it read (up to 500), grouped by cell, each linking to its page.
  • Plot cell design data. Dashboard plots can read electrode and component properties (thickness, porosity, loading, active fraction, and separator, electrolyte and case properties) and chain from a spec’s components to their materials’ datasets.

Filter measurements by any metadata

Measurement tables gain a column for every metadata field on the measurement, its cell instance and its cell specification — anode loading, cathode porosity, cycler, ratings, material properties and more — all hidden until you show them. Numeric fields filter with a range slider over a histogram of the project’s values; text fields filter by value. The columns panel is searchable and grouped, and CSV export writes these values as columns. Column headers are the field’s full path in the specification (for example anode.properties.thickness (um)), the same path a pipeline uses to read it (see Pipeline below).
Improvements
  • Download measurements and analyses as CSV as well as parquet, at full resolution, from a format menu on their download buttons.
  • Move, resize and dock the agent chat. Drag the panel or its launcher anywhere, resize it from any edge, or dock it to the right so the page reflows beside it. Minimized while docked, it becomes an edge tab that shows when a reply is running or has finished.
  • Datasheet fields on cell specifications: charge and discharge temperature limits, maximum pulse current and duration, standard charge and cutoff currents, 1 kHz ACIR, DCIR with its pulse length and SOC, and cycle life. The protocol generator uses the charge currents, pulse limit and temperature limits.
  • Section analyses are versioned. After a measurement is extended or re-exported, its analyses show once, labelled with the time their data runs through, with earlier versions in a menu and as tabs on the analysis page.
  • A raw file can update the measurement it belongs to, extending it when the file continues an existing test rather than creating a duplicate.
  • Raw-data review shows the file beside the measurement it matched, with both spans on one timeline and a different procedure flagged.
  • Process pending files on the Raw Data page queues a project’s waiting files, including ones waiting for their cell.
  • Drive-cycle uploads for simulations are easier. Drop several files at once to fill matching slots by name, use one profile for every slot, and see each file’s points, duration and current range as it is checked. An unreadable file is refused on its own row, and a protocol missing a drive cycle now fails with a message naming it instead of simulating without it.
  • Formation detection handles noisy loggers and narrow voltage windows better.
  • Faster page loads inside a project, and much faster simulation results for long solutions.
Fixes
  • Projects that have run simulations can be deleted. Deleting one failed with “Invalid reference”.
  • ECM fits and validations with a start or end step work on stored measurements. They were rejected for a missing step column.
  • Study validation with an open-ended step range no longer drops steps past the first 10,000. A step range on a measurement without step data is now an error.
  • A rolled cycler file that starts a few seconds before the stored data ends is appended instead of being held for review.
  • Cancelling a job, simulation, optimization or pipeline you can only view is now refused with a permissions error before anything is stopped.
  • Icons and chips in table cells are vertically centred in every table.
Improvements
  • DirectEntry can keep part of a pipeline. DirectEntry(pipeline_id=..., keep=[...]) takes only the named parameters from a completed pipeline, for example a half-cell fit’s kinetics without its coin-cell geometry.
  • DirectEntry can read a cell specification. DirectEntry(cell_spec_id=..., mapping={...}) maps each parameter to a path in the spec (e.g. "anode.properties.thickness", "ratings.capacity") and converts each value to the unit in the parameter’s name, including offset units such as °C to K. provenance records where each value came from.
  • SimplePipeline is deprecated in favour of Pipeline, which takes the same elements. It will be removed no earlier than November 2026; a migration guide is in the docs.
Fixes
  • A log-scale fit parameter reached through a chain of parameter links is no longer rejected as unused when the links are set out of order.
  • CycleAgeing metrics read the right cycle when the solver skips an infeasible experiment cycle. Later cycles were shifted by one, reading the wrong values or failing the fit.
  • Post-fit validation retries an objective whose worker was lost, instead of dropping it from summary_stats and validation_results.
  • Least-squares fits with an objective initialized from "Initial voltage [V]" or "Initial SOC [%]" no longer stop at their starting point when a fitted parameter also changes the initial state.
  • Creating a parameterized model no longer fails when a custom model has a lithiation or delithiation parameter without its counterpart.
Improvements
  • client.simulation.protocol() and protocol_batch() accept protocol_id to run a saved protocol, and protocol_batch() accepts conditions, an explicit list of runs each with its own parameters.
  • client.simulation.get_statuses(simulation_ids) returns many statuses in one call.
  • client.simulation.delete() and client.parameterized_model.delete(), so a project holding either can be cleaned up and deleted from the SDK.
  • client.cell_measurement.time_series(..., row_range=(start, stop)) downloads only that window of rows.
  • Simulation configs are checked for unknown keys. A misspelt or misplaced key raises a ValueError naming it, where it was previously ignored.
  • A pipeline data fit reports its best cost in fit.cost.
  • client.simple_pipeline is deprecated. Each method warns and names its client.pipeline equivalent.
  • POST /cell_measurements/export accepts format="csv", and GET /analyses/{id}/csv downloads an analysis as CSV.
  • Analyses created without columns have them filled in from the uploaded file.
Improvements
  • DataLoader.from_db with first_step / last_step downloads only the rows those steps cover instead of the whole time series — a small fraction of the data for one cycle of a long test.
Improvements
  • BioLogic |Q| limits are supported, so a partial-discharge drive cycle stops at the charge it should. Limits relative to an earlier sequence’s charge warn instead of being guessed.
  • A BioLogic protocol whose drive-cycle table doesn’t match its step asks for the profile file instead of failing to load.
  • BT-Test protocols export C-rate step ends.
Fixes
  • Current limits in C-rate mode in BioLogic EC-Lab and BT-Test protocols are read as C-rates. A C/20 taper had been read as a current in mA or A.
Improvements
  • run-simulations covers running a saved protocol by protocol_id, explicit run lists with conditions, get_statuses() and delete().
  • manage-cells covers downloading part of a time series with row_range; manage-projects covers deleting parameterized models.
  • run-pipelines and discover-api mark client.simple_pipeline as deprecated.
Fixes
  • manage-projects and discover-api show client.study methods with the resource ids first and project_id last, matching the SDK.