Python Battery Optimisation and Parameterisation
Project description
PyBOP provides tools for the parameterisation and optimisation of battery models, using both Bayesian and frequentist approaches, with example workflows to assist the user. PyBOP can be used to parameterise various battery models, including the electrochemical and equivalent circuit models available in PyBaMM.
📌 PyBOP v25.10 presents a major restructure of PyBOP's base classes. We move from setting up
a model, problem, cost, then optimiser to defining a simulator, cost, problem, and then optimiser. A pybop.pybamm.Simulator is designed to simulate a
pybamm.BaseModel. Optimisation parameters can be passed through a pybamm.ParameterValues class.
To understand how to update your use of PyBOP, please take a look at the example notebooks and scripts.
💻 Installation
Within your virtual environment, install PyBOP:
pip install pybop
To install the most recent state of PyBOP, install from the develop branch,
pip install git+https://github.com/pybop-team/PyBOP.git@develop
To install a previous version of PyBOP, use the following template and replace the version number:
pip install pybop==v24.3
To check that PyBOP is installed correctly, run one of the examples in the following section. For a development installation, see the Contribution Guide. More installation information is available in our documentation and the extended installation instructions for PyBaMM.
💡 Use Cases
PyBOP has two intended uses:
-
Parameter inference from battery test data.
-
Design optimisation under battery manufacturing/use constraints.
These include a wide variety of optimisation problems that require careful consideration due to the choice of battery model, data availability and/or the choice of design parameters.
Publications
Please take inspiration from the following journal articles which show how PyBOP is being used for research:
- "Physics-based battery model parametrisation from impedance data" by Hallemans et al. (2025) with open-source code and data
- "Transport limitations in single-crystal NCM cathode electrodes" by Jackowska et al. (2025) with open-source code and original data
Jupyter Notebooks
Explore our example notebooks for hands-on demonstrations:
- Getting started with gradient-based optimisation
- Estimating ECM parameters from a HPPC pulse
- Identifying ECM parameters with nonlinear constraints
- Parameter identification for a spatial pouch cell model
- Energy-based electrode design optimisation
Python Scripts
Find additional script-based examples in the examples directory:
- Getting started with SciPy minimize
- Estimating diffusivity from GITT data
- Maximum a Posteriori parameter identification
- Using electrochemical impedance spectroscopy (EIS) data
- Getting started with MCMC samplers
Grouped Models
In addition to the models available in PyBaMM, PyBOP currently hosts some grouped-parameter versions of common battery models which are purpose-built for parameter esimation and can be found under models.
👉 Code of Conduct
PyBOP aims to foster a broad consortium of developers and users, building on and learning from the success of the PyBaMM community. Our values are:
-
Inclusivity and fairness (those who wish to contribute may do so, and their input is appropriately recognised)
-
Interoperability (modularity for maximum impact and inclusivity)
-
User-friendliness (putting user requirements first via user-assistance & workflows)
📃 License
PyBOP is released under the BSD 3-Clause License.
🌟 Contributing
We would like to thank all contributors to PyBOP. Contributions are welcome! See CONTRIBUTING.md for ways to get started.
The original PyBOP developers were supported by research funding from the Faraday Institution, UK Research and Innovation, and Horizon Europe IntelLiGent Consortium.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pybop-25.11.tar.gz.
File metadata
- Download URL: pybop-25.11.tar.gz
- Upload date:
- Size: 109.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c6acb0858a82d5a8858d8fa0da6516598ad42def460083d5aa1f225034222804
|
|
| MD5 |
57f4f7b6f6e566a9707e95a54cac3f64
|
|
| BLAKE2b-256 |
3aa62344549d7dc39d34118e58b7f380e629bce5e27b6e5d99b7fc75b0d7cdb1
|
Provenance
The following attestation bundles were made for pybop-25.11.tar.gz:
Publisher:
release_action.yaml on pybop-team/PyBOP
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pybop-25.11.tar.gz -
Subject digest:
c6acb0858a82d5a8858d8fa0da6516598ad42def460083d5aa1f225034222804 - Sigstore transparency entry: 724937284
- Sigstore integration time:
-
Permalink:
pybop-team/PyBOP@4628a65fe766c92669949cb2fcdf0cdfccd02fa1 -
Branch / Tag:
refs/tags/v25.11 - Owner: https://github.com/pybop-team
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release_action.yaml@4628a65fe766c92669949cb2fcdf0cdfccd02fa1 -
Trigger Event:
release
-
Statement type:
File details
Details for the file pybop-25.11-py3-none-any.whl.
File metadata
- Download URL: pybop-25.11-py3-none-any.whl
- Upload date:
- Size: 145.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b6806cf458c2459f856975bbd9cb923b790817be3ef6b1fd6293c2e937aea039
|
|
| MD5 |
ddfa8494474ff03b89a2c8628d0cb6f4
|
|
| BLAKE2b-256 |
7a45a497f62b3e58dc10167ed546b2d24fbe1b656c9321e6727c2cd1c5a7a479
|
Provenance
The following attestation bundles were made for pybop-25.11-py3-none-any.whl:
Publisher:
release_action.yaml on pybop-team/PyBOP
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pybop-25.11-py3-none-any.whl -
Subject digest:
b6806cf458c2459f856975bbd9cb923b790817be3ef6b1fd6293c2e937aea039 - Sigstore transparency entry: 724937287
- Sigstore integration time:
-
Permalink:
pybop-team/PyBOP@4628a65fe766c92669949cb2fcdf0cdfccd02fa1 -
Branch / Tag:
refs/tags/v25.11 - Owner: https://github.com/pybop-team
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release_action.yaml@4628a65fe766c92669949cb2fcdf0cdfccd02fa1 -
Trigger Event:
release
-
Statement type: