Skip to content

Commit 0a55c30

Browse files
Merge pull request #697 from pybop-team/25.3
Release v25.3
2 parents 24c54d9 + d2bbbd2 commit 0a55c30

File tree

135 files changed

+13851
-1847
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

135 files changed

+13851
-1847
lines changed

.gitattributes

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
11
# Auto detect text files and perform LF normalization
22
* text=auto
3+
4+
# Hide the diff for this file unless prompted
5+
uv.lock linguist-generated=true

.github/release_workflow.md

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,29 +7,32 @@ This document outlines the release workflow for publishing to PyPI and TestPyPI
77
To create a new release, follow these steps:
88

99
1. **Prepare the Release:**
10-
- Create a new branch for the release (i.e. `v24.XX`) from `develop`.
11-
- Increment the following;
10+
- Create a new branch for the release (i.e. `24.XX`) from `develop`.
11+
- Increment the following:
1212
- The version number in the `pyproject.toml` and `CITATION.cff` files following CalVer versioning.
13-
- The`CHANGELOG.md` version with the changes for the new version.
14-
- Add a new entry for the documentation site version switcher located at `docs/_static/switcher.json`
13+
- The `CHANGELOG.md` version with the changes for the new version.
14+
- Add a new entry for the documentation site version switcher located at `docs/_static/switcher.json`.
1515
- Open a PR to the `main` branch. Once the PR is merged, proceed to the next step.
1616

17-
2. **Tag the Release:**
18-
- Create a new Git tag for the release. For a full release, use a tag like `v24.2`. For a release candidate, use a tag like `v24.2rc.1`.
19-
- Push the tag to the remote repository: `git push origin <tag_name>`.
20-
21-
3. **Create a GitHub Release:**
22-
- Go to the "Releases" section of on GitHub.
23-
- Click "Draft a new release."
24-
- Enter the tag you created in the "Tag version" field.
17+
2. **Create a GitHub Release:**
18+
- Go to the "Releases" section on GitHub.
19+
- Click "Draft a new release".
20+
- Select the `main` branch as the release target.
21+
- Create a release tag:
22+
- For a full release, use the following CalVer format: `vYY.M` (i.e. `v24.3`).
23+
- For a release candidate, use: `vYY.Mrc.X` (i.e. `v24.3rc.1`).
24+
- Note: GitHub provides the option to create this tag on publish if you start typing a new tag
2525
- Fill in the release title and description. Add any major changes and link to the `CHANGELOG.md` for a list of total changes.
2626
- If it's a pre-release (release candidate), check the "This is a pre-release" checkbox.
2727
- Click "Publish release" to create the release.
2828

29-
4. **Monitor the Workflow:**
30-
- Go to the "Actions" tab of your repository to monitor the workflow's progress.
29+
3. **Monitor the Workflow:**
30+
- Go to the "Actions" tab of the repository and monitor the workflow's progress.
3131
- The workflow will build the distribution packages and then publish them to PyPI or TestPyPI, depending on whether the release is a full release or a pre-release.
3232

33-
5. **Verify the Release:**
33+
4. **Verify the Release:**
3434
- Check PyPI or TestPyPI to ensure that your package is available and has been updated to the new version.
35-
- Test installing the package using `pip` to ensure everything works as expected.
35+
- Test installing the package using `pip` to ensure everything works as expected (run an example as confirmation).
36+
37+
5. **Merge Main into Develop**
38+
- Finally, open a PR from `main` to `develop` to synchronise the release changes. This ensures `develop` is always ahead of `main`, reducing the work required for future releases.

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,12 @@ ipython_config.py
202202
# install all needed dependencies.
203203
#Pipfile.lock
204204

205+
# UV
206+
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
207+
# This is especially recommended for binary packages to ensure reproducibility, and is more
208+
# commonly ignored for libraries.
209+
# uv.lock
210+
205211
# poetry
206212
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
207213
# This is especially recommended for binary packages to ensure reproducibility, and is more

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ ci:
44

55
repos:
66
- repo: https://github.com/astral-sh/ruff-pre-commit
7-
rev: "v0.9.4"
7+
rev: "v0.11.2"
88
hooks:
99
- id: ruff
1010
args: [--fix, --show-fixes]

CHANGELOG.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,29 @@
88

99
## Breaking Changes
1010

11+
# [v25.3](https://github.com/pybop-team/PyBOP/tree/v25.3) - 2025-03-28
12+
13+
## Features
14+
15+
- [#649](https://github.com/pybop-team/PyBOP/pull/649) - Adds verbose outputs to Pints-based optimisers
16+
- [#659](https://github.com/pybop-team/PyBOP/pull/659) - Enables user-defined weightings of the error measures.
17+
- [#674](https://github.com/pybop-team/PyBOP/issues/674) - Adds the reason for stopping to the `OptimisationResult`.
18+
- [#663](https://github.com/pybop-team/PyBOP/pull/663) - Adds DFN fitting examples alongside synthetic data generation methods.
19+
20+
## Optimisations
21+
22+
- [#676](https://github.com/pybop-team/PyBOP/pull/676) - Update the format of the problem sensitivities to a dict.
23+
- [#681](https://github.com/pybop-team/PyBOP/pull/681) - Update the spatial variable defaults of the `GroupedSPMe` model.
24+
- [#692](https://github.com/pybop-team/PyBOP/pull/692) - Improvements/fixes for `BaseSampler` and `BasePintsSampler` classes, adds `ChainProcessor` classes w/ clearer structure.
25+
26+
## Bug Fixes
27+
28+
- [#678](https://github.com/pybop-team/PyBOP/pull/678) - Fixed bug where model wasn't plotted for observer classes with `pybop.plot.quick()`.
29+
30+
## Breaking Changes
31+
32+
- [#684](https://github.com/pybop-team/PyBOP/pull/684) - Updates `plot.quick` to `plot.problem` for clarity.
33+
- [#661](https://github.com/pybop-team/PyBOP/pull/661) - Adds `pybop.CostInterface` which aligns the optimisers and samplers with a unified `call_cost` in which transformations and sign inversions are applied. Also includes bug fixes for transformations and gradient calculations.
1134

1235
# [v25.1](https://github.com/pybop-team/PyBOP/tree/v25.1) - 2025-02-03
1336

CITATION.cff

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,5 @@ keywords:
3131
journal: "arXiv"
3232
date-released: 2024-12-20
3333
doi: 10.48550/arXiv.2412.15859
34-
version: "25.1" # Update this alongside new releases
34+
version: "25.3" # Update this alongside new releases
3535
repository-code: 'https://www.github.com/pybop-team/pybop'

README.md

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,25 @@
11
<div align="center">
22

3-
<img src="https://raw.githubusercontent.com/pybop-team/PyBOP/develop/assets/logo/PyBOP_logo_flat.png" alt="logo.svg" width="700" />
3+
<img src="https://raw.githubusercontent.com/pybop-team/PyBOP/develop/assets/logo/PyBOP_logo_flat.png" alt="logo.svg" width="600" />
44

55
# Python Battery Optimisation and Parameterisation
66

77

88
[![Scheduled](https://github.com/pybop-team/PyBOP/actions/workflows/scheduled_tests.yaml/badge.svg)](https://github.com/pybop-team/PyBOP/actions/workflows/scheduled_tests.yaml)
99
[![Contributors](https://img.shields.io/github/contributors/pybop-team/PyBOP)](https://github.com/pybop-team/PyBOP/graphs/contributors)
10-
[![Last Commit](https://img.shields.io/github/last-commit/pybop-team/PyBOP/develop?color=purple)](https://github.com/pybop-team/PyBOP/commits/develop)
1110
[![Python Versions from PEP 621 TOML](https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fraw.githubusercontent.com%2Fpybop-team%2FPyBOP%2Fdevelop%2Fpyproject.toml&label=Python)](https://pypi.org/project/pybop/)
12-
[![Forks](https://img.shields.io/github/forks/pybop-team/PyBOP?style=flat)](https://github.com/pybop-team/PyBOP/network/members)
13-
[![Stars](https://img.shields.io/github/stars/pybop-team/PyBOP?style=flat&color=gold)](https://github.com/pybop-team/PyBOP/stargazers)
1411
[![Codecov](https://codecov.io/gh/pybop-team/PyBOP/branch/develop/graph/badge.svg)](https://codecov.io/gh/pybop-team/PyBOP)
15-
[![Open Issues](https://img.shields.io/github/issues/pybop-team/PyBOP)](https://github.com/pybop-team/PyBOP/issues/)
1612
[![License](https://img.shields.io/github/license/pybop-team/PyBOP?color=blue)](https://github.com/pybop-team/PyBOP/blob/develop/LICENSE)
1713
[![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/pybop-team/PyBOP/blob/develop/)
1814
[![nbviewer](https://raw.githubusercontent.com/jupyter/design/master/logos/Badges/nbviewer_badge.svg)](https://nbviewer.org/github/pybop-team/PyBOP/tree/develop/examples/notebooks/)
1915
[![Static Badge](https://img.shields.io/badge/https%3A%2F%2Fpybop-team.github.io%2Fpybop-bench%2F?label=Benchmarks)](https://pybop-team.github.io/pybop-bench/)
2016
[![Releases](https://img.shields.io/github/v/release/pybop-team/PyBOP?color=gold)](https://github.com/pybop-team/PyBOP/releases)
2117

18+
[<ins>Main Branch Examples</ins>](https://github.com/pybop-team/PyBOP/tree/main/examples) [<ins>Develop Branch Examples</ins>](https://github.com/pybop-team/PyBOP/tree/develop/examples)
19+
2220
</div>
2321

24-
PyBOP provides a complete set of tools for parameterisation and optimisation of battery models, using both Bayesian and frequentist approaches, with [example workflows](https://github.com/pybop-team/PyBOP/tree/develop/examples/notebooks) to assist the user. PyBOP can be used to parameterise various battery models, including electrochemical and equivalent circuit models available in [PyBaMM](https://pybamm.org/). PyBOP prioritises clear and informative diagnostics for the user, while also allowing for advanced probabilistic methods.
22+
PyBOP provides a complete set of tools for parameterisation and optimisation of battery models, using both Bayesian and frequentist approaches, with [example workflows](https://github.com/pybop-team/PyBOP/tree/main/examples/) to assist the user. PyBOP can be used to parameterise various battery models, including electrochemical and equivalent circuit models available in [PyBaMM](https://pybamm.org/). PyBOP prioritises clear and informative diagnostics for the user, while also allowing for advanced probabilistic methods.
2523

2624
The diagram below shows the conceptual framework of PyBOP. This package is currently under development, so users can expect the API to evolve with future releases.
2725

docs/_static/switcher.json

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,16 @@
44
"url": "https://pybop-docs.readthedocs.io/en/latest/"
55
},
66
{
7-
"name": "v25.1 (stable)",
8-
"version": "v25.1",
9-
"url": "https://pybop-docs.readthedocs.io/en/v25.1/",
7+
"name": "v25.3 (stable)",
8+
"version": "v25.3",
9+
"url": "https://pybop-docs.readthedocs.io/en/v25.3/",
1010
"preferred": true
1111
},
12+
{
13+
"name": "v25.1",
14+
"version": "v25.1",
15+
"url": "https://pybop-docs.readthedocs.io/en/v25.1/"
16+
},
1217
{
1318
"name": "v24.12",
1419
"version": "v24.12",

examples/data/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
## Data directory
2+
This directory contains both the experimental and synthetic data used in the examples.

examples/data/synthetic/README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Data description
2+
The data files in this directory have the following metadata
3+
4+
`{model}_charge_discharge_{soc}.csv`
5+
- Time, current, terminal voltage, and open-circuit voltage data for a Chen2020 parameters at the corresponding SOC. 0.5mV of noise is applied to both voltage signals.
6+
- See `discharge_charge_data_gen.py` for reference
7+
8+
`{model}_pulse_{soc}.csv`
9+
- Time, current, terminal voltage, and open-circuit voltage data for a Chen2020 parameters at the corresponding SOC. 0.5mV of noise is applied to both voltage signals.
10+
- See `pulse_data_gen.py` for reference

0 commit comments

Comments
 (0)