Skip to main content

An implementation of the Battery Parameter eXchange (BPX) format in Pydantic.

Project description

🔋 BPX

tests codecov

An implementation of the Battery Parameter eXchange (BPX) format in Pydantic. BPX, an outcome of the Faraday Institution Multi-scale Modelling project, is an open standard for physics-based Li-ion battery models that has been developed to reduce costs and time-to-market through a common definition of physics-based battery models that can be used widely across industry. To find out more, visit the BPX website.

This repository features a Pydantic-based parser for JSON files in the BPX format, which validates your file against the schema.

To support the new open standard, About:Energy have supplied two parameter sets for an NMC and LFP cell. The BPX files and associated examples and information can be found on the A:E BPX Parameterisation repository.

To see how to use BPX with PyBaMM, check out the BPX example notebook.

🚀 Installation

The BPX package can be installed using pip

pip install bpx

or conda

conda install -c conda-forge bpx

BPX is available on GNU/Linux, MacOS and Windows. We strongly recommend to install PyBaMM within a python virtual environment, in order not to alter any distribution python files.

💻 Usage

To create a BPX object from a JSON file, you can use the parse_bpx_file function

import bpx

filename = 'path/to/my/file.json'
my_params = bpx.parse_bpx_file(filename)

my_params will now be of type BPX, which acts like a python dataclass with the same attributes as the BPX format. To obtain example files, see the examples folder, or the A:E BPX Parameterisation repository.

Attributes of the class can be printed out using the standard Python dot notation, for example, you can print out the reference temperature of the cell using

print('Reference temperature of cell:', my_params.parameterisation.cell.reference_temperature)

Alternatively, you can export the BPX object as a dictionary and use the string names (aliases) of the parameters from the standard

my_params_dict = my_params.model_dump(by_alias=True)
print('Reference temperature of cell:', my_params_dict["Parameterisation"]["Cell"]["Reference temperature [K]"])

The entire BPX object can be pretty-printed using the devtools package

from devtools import pprint
pprint(my_params)

You can convert any Function objects in BPX to regular callable Python functions, for example:

positive_electrode_diffusivity = my_params.parameterisation.positive_electrode.diffusivity.to_python_function()
diff_at_one = positive_electrode_diffusivity(1.0)
print('positive electrode diffusivity at x = 1.0:', diff_at_one)

If you want to output the complete JSON schema in order to build a custom tool yourself, you can do so:

print(bpx.BPX.schema_json(indent=2))

According to the pydantic docs, the generated schemas are compliant with the specifications: JSON Schema Core, JSON Schema Validation and OpenAPI.

📖 Documentation

API documentation for the bpx package can be built locally using Sphinx. To build the documentation first clone the repository, install the bpx package, and then run the following command:

sphinx-build docs docs/_build/html  

This will generate a number of html files in the docs/_build/html directory. To view the documentation, open the file docs/_build/html/index.html in a web browser, e.g. by running

open docs/_build/html/index.html

📫 Get in touch

If you have any questions please get in touch via email bpx@faraday.ac.uk.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bpx-1.1.0.tar.gz (74.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bpx-1.1.0-py3-none-any.whl (17.7 kB view details)

Uploaded Python 3

File details

Details for the file bpx-1.1.0.tar.gz.

File metadata

  • Download URL: bpx-1.1.0.tar.gz
  • Upload date:
  • Size: 74.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for bpx-1.1.0.tar.gz
Algorithm Hash digest
SHA256 5ac3ca84bee5541d22c449d5fd3c30f2a45016ae5e6f678955deff40ed2410a9
MD5 c6e28564947c2509fd180d26b24625b2
BLAKE2b-256 ccb4cdbe99b2fc9b1411f65017f4a3bfa19d0ad75099554060aa404260d4141f

See more details on using hashes here.

Provenance

The following attestation bundles were made for bpx-1.1.0.tar.gz:

Publisher: publish_pypi.yml on FaradayInstitution/BPX

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bpx-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: bpx-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 17.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for bpx-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1d938f4965ae5e91749b7f75ebabbd3738e8aa41fc402a042cdb240a3ed766fb
MD5 a71186237c232a274c587a080489ac28
BLAKE2b-256 cd12d44c11ece43c754b12de4ff8662b99bb86421b4dd1e18d0ac165b29bc154

See more details on using hashes here.

Provenance

The following attestation bundles were made for bpx-1.1.0-py3-none-any.whl:

Publisher: publish_pypi.yml on FaradayInstitution/BPX

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page