Skip to main content
An analysis captures features extracted from a single cell measurement — for example, ECM parameters fitted to an EIS sweep, an LLI/LAM degradation point derived from an RPT, or a DCIR value computed from an HPPC pulse. Each analysis is one row tied to one parent measurement, plus a parquet file holding the extracted values. Use analyses when you want to persist the output of a post-processing step alongside the measurement it came from, so downstream tools (fitting, visualization, reporting) can find it later without re-running the extractor.

When to use an analysis

Reach for an analysis whenever you have derived, tabular results that:
  • Belong to exactly one measurement (the “source of truth” measurement).
  • You want to keep as structured columns rather than as a raw file attachment on a file measurement.
  • May be produced by different extractors over time — analyses are free-form on analysis_type, so you can add new kinds without a schema change.
Typical examples: analysis_type is a free-form string — the backend accepts any non-empty value, so a new extractor never needs a migration or client release. ecm_from_eis, lam_lli_from_rpt, and dcir_from_hppc are the advisory set the Studio UI surfaces by default.

Anatomy of an analysis

Every analysis record carries: The tabular values themselves live in a parquet file stored in the measurement-data bucket alongside the parent measurement. Signed download URLs are minted on demand. Analyses are managed through the Python API client, which exposes them as client.analysis. create() accepts a DataFrame directly — the client serialises it to parquet and uploads it for you.

Creating an analysis

analysis_type is free-form — pass any string, or one of the AnalysisType StrEnum members (ECM_FROM_EIS, LAM_LLI_FROM_RPT, DCIR_FROM_HPPC) for the well-known values.

Listing and fetching analyses

Provide exactly one of measurement_id or project_id. Filter by measurement_id to list the analyses derived from a single measurement, or by project_id to list every analysis across the measurements in a project. Supplying both, or neither, is an error.

Downloading extracted-feature data

The parquet file is not returned inline. get_data() fetches a signed URL and reads the parquet directly, returning a DataFrame in the configured backend:
Use get_download_url() if you’d rather download the raw parquet yourself. The signed URL is valid for 5 minutes:

Updating metadata

update() changes row-level fields only — it does not replace the parquet. Any subset of name, analysis_type, columns, metadata, and notes may be supplied.
To replace the parquet itself, delete the analysis and re-create it.

Deleting an analysis

Removes the row and its parquet file.

Analyses vs. file measurements

Both attach data to a measurement, but they serve different purposes: Reach for an analysis when the output is structured tabular data derived from an existing measurement. Reach for a file measurement when the data is a standalone artifact tied to the cell itself.

Next steps

Measurements

Time series, properties, and file measurement types — the parents of every analysis.

Reading data

List, filter, and retrieve measurements together with their analyses.