Cell Test Data Formats

If you are handling data from cell cyclers you will be aware of the different cell test data formats.

The Problem

Every cycler vendor has its own file format, its own column naming, its own unit conventions, and its own ideas about whether discharge current should be positive or negative.

Maccor ships tab-delimited text with thousands separators in the numbers. BioLogic .mpr files are binary. Neware sometimes puts multiple datasets across Excel sheets. Novonix has a [Summary] section before the time series starts. We (Ionworks) have written before about how battery workflows break at the handoffs between tools and teams. Data format fragmentation is one of the earliest handoffs, and one of the most annoying.

If your lab runs two brands of cycler, you already have a harmonization problem. If your data comes from a partner, a supplier, or an acquisition, you have a worse one.

Battery data harmonization is a well-trodden problem and there are several other open-source projects in the space. We built ionworks-data because none of them were quite the shape we needed for ingestion into Ionworks Measure, but if you are evaluating options, the rest of the landscape is worth knowing.

ionworks-data

The library reads a file, detects the format (or accepts a hint), and produces a DataFrame with these columns:

  • Time [s]
  • Current [A]
  • Voltage [V]
  • Step count
  • Cycle count
  • Discharge capacity [A.h]
  • Charge capacity [A.h]
  • Discharge energy [W.h]
  • Charge energy [W.h]

Optional columns for temperature, impedance (Z_Re, Z_Im, frequency), and cycler-provided step or cycle labels are included when the source file has them. Anything the library does not recognize is passed through as-is.

Current is always discharge-positive, charge-negative. Time is always in seconds, starting at zero. Capacity and energy are cumulative and computed from the current and voltage traces if the source file does not already provide them.

That is the whole contract. Read a file, get a table, know what the columns mean.

Install from PyPI:

The source is on GitHub. If you run into a format we do not handle or an edge case that breaks, open an issue on GitHub.

Other Options:

BEEP, the Battery Evaluation and Early Prediction toolkit from Toyota Research Institute, parses Arbin, BioLogic, Maccor, and Neware files into a structured form, with a heavier emphasis on featurization for early-life cycle prediction. It is the project most often cited alongside the Severson et al. dataset.

BattETL, from BattGenie, focuses on Maccor and Arbin and writes into a Postgres schema. The framing is closer to a classical extract-transform-load pipeline than a DataFrame library; it is the right shape if you want a database from the start.

PyProBE, from the Imperial College London battery group, is a Python library for processing and exploring battery data with readers for several cycler formats and built-in analysis methods. It is closer in shape to ionworks-data than the database-flavoured projects, with more emphasis on interactive analysis.

Galvanalyser, from the Howey group at Oxford, is a long-running web-app and database for academic battery test management with parsers for several cycler formats. It targets a research-group workflow rather than a notebook user.

For the standard itself, the Battery Data Format (BDF) from the Battery Data Alliance is the cross-industry effort to converge on a single schema. ionworks-data reads and writes BDF, and most of these projects either export to it or are working towards it.

Transforms

Beyond reading, the library provides transforms for capacity integration, energy calculation, step counting, cycle counting, and current sign normalization. These run automatically during a standard read, but they are also available individually if you want to apply them to data you loaded some other way.

Why we are releasing this

We use ionworks-data as the data ingestion layer for Ionworks Measure, our data management platform. Every file uploaded to Measure runs through this library before it reaches the database. It has been tested against a wide range of real files from real labs, and we fix edge cases as we find them.

Open-sourcing the harmonization layer separately means you do not need an Ionworks account to use it. If all you need is to get your Maccor and BioLogic data into the same format for a Jupyter notebook, this does that.

Read the full ionworks blog post: ionworks-data is open source

We’re a team of battery modeling specialists who have spent the last decade building and refining the simulation tools that battery teams use every day. We built PyBaMM from the ground up, and it’s grown into the world’s most widely-used open-source battery modeling library.

With Ionworks, we’re taking the next step: building the Battery Simulation OS to make models and data more readily available to every team. By streamlining the process of building and running simulations, we help engineers solve complex problems more efficiently.

See also: Cell Measurement Parameters, Cell Measurement Techniques

Leave a Comment