Before uploading, raw data from your cycler needs to be converted into the Ionworks data format. TheDocumentation Index
Fetch the complete documentation index at: https://docs.ionworks.com/llms.txt
Use this file to discover all available pages before exploring further.
ionworksdata library reads files from
common battery cyclers, auto-detects formats, and normalizes units, timestamps,
and column names.
Supported cyclers
ionworksdata auto-detects the file format when possible and produces a polars
DataFrame with the standard columns.
| Cycler | File types |
|---|---|
| Arbin | .csv, .xlsx, .res |
| BaSyTec | .csv |
| BioLogic | .mpt, .mpr, .txt |
| Maccor | .txt, .csv, .xls, .xlsx |
| Neware | .csv, .xls, .xlsx (multi-sheet supported; automatic Latin-1 fallback for CSVs) |
| Novonix | .csv |
| Repower | .csv |
| Generic CSV | .csv (any CSV with recognized column headers or custom mappings) |
| BDF (Battery Data Format) | .bdf, .bdf.gz, .bdf.parquet, .csv |
Custom column mappings
If your CSV uses non-standard column names, map them to the standard names withextra_column_mappings. The reader skips auto-detection for any column
you explicitly map, so values are used as-is without rescaling.
Battery Data Format (BDF)
ionworksdata can read and write files in the
Battery Data Format (BDF)
defined by the Battery Data Alliance. CSV, gzipped CSV, and parquet variants
are all supported. Files are auto-detected by their header or extension
(.bdf, .bdf.gz, .bdf.parquet).
BDF does not mandate a current sign convention. The reader normalises current
to the Ionworks convention (positive = discharge) on load, so third-party
BDF files that follow the opposite IEC convention are flipped automatically.
The writer emits whatever convention is in the input DataFrame — pass the
data through
transform.set_positive_current_for_discharge first if you
need to guarantee discharge-positive output.EIS and impedance data
| Instrument | File types |
|---|---|
| BioLogic | .mpt, .mpr, .txt (files containing impedance columns) |
| Gamry | .dta (ZCURVE table) |
Frequency [Hz], Z_Re [Ohm],
Z_Im [Ohm], Z_Mod [Ohm], and Z_Phase [deg].
Troubleshooting
Incorrect current sign convention
Problem: When uploading measurement data, you receive an error like:Current sign convention error: positive current appears to be charge, not discharge.Solution: Ionworks expects positive current = discharge and negative current = charge. If your cycler uses the opposite convention, convert the data before uploading:
Ambiguous current sign convention
Problem: When uploading measurement data, you receive an error like:Current sign convention error: the sign convention is ambiguous.This happens when all current values have the same sign, so the validator cannot determine whether positive means charge or discharge. Solution: Use the same transform — it uses voltage-response analysis (fitting an OCV-R equivalent circuit model under both sign conventions) to infer charge vs. discharge direction even when all currents share the same sign:
Time not cumulative
Problem: Time resets to 0 for each cycle. Solution: Track a cumulative time offset:Step count not cumulative
Problem: Step count resets for each cycle. Solution: Track a step count offset across cycles:Missing capacity columns
Problem: Capacity calculation fails. Solution: Ensure you haveTime [s], Current [A], and Voltage [V]
columns before calculating capacity.
Non-UTF-8 CSV files (e.g. Neware)
Problem: Reading a Neware CSV file fails with an encoding error. Solution: The Neware reader automatically falls back to Latin-1 if UTF-8 decoding fails, so no action is needed in most cases:Next steps
Data format
Full reference for recognized columns, units, and sign conventions.
Uploading data
Upload prepared data as cell specs, instances, and measurements.
ionworksdata API reference
Complete reference for
read, write, transform, steps, and load.ionworksdata on GitHub
Report issues or browse the source.