Skip to content

ImperialCollegeLondon/PyProBE

Repository files navigation

PyProBE

PyProBE (Python Processing for Battery Experiments) is a Python package designed to simplify and accelerate the process of analysing data from battery cyclers.

PyProBE is documented here. Examples are stored in docs/source/examples and are integrated into the documentation here.

Installing PyProBE

Please follow the user installation guide to install PyProBE.

PyProBE Objectives

1. Ease of use

PyProBE breaks down complex battery data into simple, easy to understand objects that can be accessed with a few lines of code using natural language. The procedure shown below:

Procedures and experiments

can be filtered into the experiments that make up the procedure:

cell.procedure['Reference Test'].experiment('Initial Charge')
cell.procedure['Reference Test'].experiment('Discharge Pulses')

And filtered by cycle, step or step type:

cell.procedure['Reference Test'].step(1)
cell.procedure['Reference Test'].experiment('Discharge Pulses').cycle(3).discharge(0)

This makes it easy to quickly access the data you need for analysis. See the filtering data example to see this in action.

See the documentation for a detailed user guide. Start with the following pages to get PyProBE set up with your data:

PyProBE works with numerous cyclers. For guidance on how to export your data to work with PyProBE see the Input Data Guidance.

2. Accelerate battery data exploration

PyProBE has a built-in plotting module for fast and flexible visualisation of battery data. It also includes a graphical user interface (GUI) for exploring data interactively, with almost no code. Run the getting started example locally to try the GUI.

PyProBE Dashboard

PyProBE is fast! Built on Polars dataframes, PyProBE out-performs manual filtering with Pandas and stores data efficiently in Parquet files:

PyProBE performance

3. Encourage data processing aligned with FAIR principles

PyProBE is designed to encourage good practice for storing and processing data PyProBE requires a README file to sit alongside your experimental data which is:

Human readable: Sits alongside your data to allow others to quickly understand your experimental procedure.

Computer readable: Simplifies the PyProBE backend, maximises flexibility to different input data and makes the setup process fast and intuitive for new data.

README file

See the guidance for writing README files for your experiments.

4. Host a library of analysis methods

PyProBE's analysis module contains classes and methods to perform further analysis of battery data. It is designed to maintain compatibility with the PyProBE data format and plotting tools while ensuring functions are simply defined, portable and tested.

The currently implemented analysis methods includes:

  • Summarise pulsing experiments with resistance information from each pulse
  • Summarise cycling experiments with SOH quantification for each cycle
  • Differentiation of any quantity
    • Finite-difference based method
    • Level Evaluation ANalysis method
  • Data smoothing
    • Level-based method
    • Spline fitting
    • Savitzky-Golay filtering
  • Degradation mode analysis
    • Curve fitting to pseudo-OCV, Incremental Capacity Analysis (ICA) or Differential Voltage Analysis (DVA) curves
    • Charge/discharge pseudo-OCV curve averaging for resistance compensation

It is easy to contribute to the analysis module. See the developer guide and contributing guidelines.

Contributing to PyProBE

Contributions to PyProBE are welcome. Please see the contributing guidelines.

Citing PyProBE

TBC

License

PyProBE is fully open source. For more information about its license, see LICENSE.

Contributors

tomjholland
Tom Holland
mohammedasher
Mohammed Asheruddin (Asher)