battinfo playground
Build one of the core objects on the left. Most are a specification (the reusable design) plus an instance (a physical thing built to it). Watch it turn into the three forms you work with: the Python that authors it, the canonical record, and the published JSON-LD. It updates as you type, and nothing leaves the page.
The Playground is for building and exploring — a quick sketch, not the full model, with identifiers added when you save. Already have a finished record and just want a pass/fail verdict? Use Validate. New to the model? Read the authoring guide.
Scope: the cell level and below — materials, electrodes, electrolytes, cells, tests, datasets. Module and pack modeling is on the roadmap.
Specification
The reusable design of a cell: format, chemistry, electrodes, and rated properties. Many physical cells can share one spec.
Conventional properties (rated / declared)
Instances
One physical cell built to the spec, with its own label, dates, and measured values. On save it links back to the spec.
Measured properties
Serializations
✓ Looks valid against the schemasfrom battinfo import CellSpec, create_cell_instance
spec = CellSpec(
name="A123 ANR26650M1-B",
manufacturer="A123",
model="ANR26650M1-B",
format="cylindrical",
chemistry="Li-ion",
positive_electrode_basis="LFP",
negative_electrode_basis="graphite",
properties={
"nominal_capacity": {"value": 2.5, "unit": "Ah"},
"nominal_voltage": {"value": 3.3, "unit": "V"},
},
)
spec_record = spec.to_record()
# one physical cell built to the spec
instance = create_cell_instance(
cell_spec_id=spec_record["cell_spec"]["id"],
name="Cell 001",
serial_number="SN-0001",
manufactured_at="2024-06-01",
expires_at="2034-06-01",
measured={
"state_of_health": {"value": 100, "unit": "%"},
},
)Checked in the browser against the canonical schemas. The CLI runs the full check on save.