Cell Specifications

Cell specifications sit at the top of the Ionworks data hierarchy:

  1. Cell Specification — defines a cell type (manufacturer, chemistry, form factor, electrode properties, etc.)

  2. Cell Instance — a specific physical cell linked to a specification (see Cell Instances)

  3. Cell Measurement — time-series data recorded from testing an instance (see Cell Measurements)

Every instance and measurement traces back to a specification, so creating one is usually the first step in any workflow.

Creating a specification

Pass a dictionary of properties to client.cell_spec.create():

cell_spec = client.cell_spec.create(
    {
        "name": "NCM622/Graphite Coin Cell",
        "form_factor": "R2032",
        "manufacturer": "Custom Cells",
        "ratings": {
            "capacity": {"value": 0.002, "unit": "A.h"},
            "voltage_min": {"value": 2.5, "unit": "V"},
            "voltage_max": {"value": 4.2, "unit": "V"},
        },
        "cathode": {
            "properties": {"loading": {"value": 12.3, "unit": "mg/cm**2"}},
            "material": {"name": "NCM622", "manufacturer": "BASF"},
        },
        "anode": {
            "properties": {"loading": {"value": 6.5, "unit": "mg/cm**2"}},
            "material": {"name": "Graphite", "manufacturer": "Customcells"},
        },
    }
)
print(cell_spec.id)

If you are running a script that may be executed more than once, create_or_get() returns the existing specification when one with the same name already exists instead of raising a 409 Conflict error:

cell_spec = client.cell_spec.create_or_get(
    {
        "name": "NCM622/Graphite Coin Cell",
        # ...
    }
)

Listing specifications

specs = client.cell_spec.list()
for spec in specs:
    print(f"{spec.name} — {spec.form_factor}")

Retrieving a specification

Fetch by ID:

spec = client.cell_spec.get(spec_id)

Updating a specification

update() merges the provided fields into the existing specification:

updated = client.cell_spec.update(
    spec_id, {"ratings": {"capacity": {"value": 0.0025, "unit": "A.h"}}}
)

Deleting a specification

client.cell_spec.delete(spec_id)

Note

Deleting a specification also removes all linked instances and measurements.

Next steps

With a specification in place, create physical cell records in Cell Instances.