Skip to content

Commit 24c54d9

Browse files
authored
Merge pull request #654 from pybop-team/25.1
Release v25.1
2 parents e46015e + a29db68 commit 24c54d9

File tree

154 files changed

+4285
-2625
lines changed

Some content is hidden

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

154 files changed

+4285
-2625
lines changed

.all-contributorsrc

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,24 @@
141141
"test",
142142
"code"
143143
]
144+
},
145+
{
146+
"login": "noelhallemans",
147+
"name": "Noël Hallemans",
148+
"avatar_url": "https://avatars.githubusercontent.com/u/90609505?v=4",
149+
"profile": "https://eng.ox.ac.uk/people/noel-hallemans/",
150+
"contributions": [
151+
"example"
152+
]
153+
},
154+
{
155+
"login": "pipliggins",
156+
"name": "Pip Liggins",
157+
"avatar_url": "https://avatars.githubusercontent.com/u/55396775?v=4",
158+
"profile": "https://github.com/pipliggins",
159+
"contributions": [
160+
"code"
161+
]
144162
}
145163
],
146164
"contributorsPerLine": 7,

.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.8.3"
7+
rev: "v0.9.4"
88
hooks:
99
- id: ruff
1010
args: [--fix, --show-fixes]

CHANGELOG.md

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

99
## Breaking Changes
1010

11+
12+
# [v25.1](https://github.com/pybop-team/PyBOP/tree/v25.1) - 2025-02-03
13+
14+
## Features
15+
16+
- [#636](https://github.com/pybop-team/PyBOP/pull/636) - Adds `pybop.IRPropPlus` optimiser with corresponding tests.
17+
- [#635](https://github.com/pybop-team/PyBOP/pull/635) - Adds support for multi-proposal evaluation of list-like objects to `BaseCost` classes.
18+
- [#635](https://github.com/pybop-team/PyBOP/pull/635) - Adds global parameter sensitivity analysis with method `BaseCost.sensitivity_analysis`. This is computation is added to `OptimisationResult` if optimiser arg `compute_sensitivities` is `True`. An additional arg is added to select the number of samples for analysis: `n_sensitivity_samples`.
19+
- [#630] (https://github.com/pybop-team/PyBOP/pull/632) - Fisher Information Matrix added to `BaseLikelihood` class.
20+
- [#619](https://github.com/pybop-team/PyBOP/pull/619) - Adds `pybop.SimulatingAnnealing` optimiser with corresponding tests.
21+
- [#565](https://github.com/pybop-team/PyBOP/pull/627) - DigiBatt added as funding partner.
22+
23+
## Optimisations
24+
25+
- [#638](https://github.com/pybop-team/PyBOP/pull/638) - Allows the problem class to accept any domain name.
26+
- [#618](https://github.com/pybop-team/PyBOP/pull/618) - Adds Mean Absolute Error (MAE) and Mean Squared Error (MSE) costs.
27+
- [#601](https://github.com/pybop-team/PyBOP/pull/601) - Deprecates `MultiOptimisationResult` by merging with `OptimisationResult`.
28+
- [#600](https://github.com/pybop-team/PyBOP/pull/600) - Removes repetitious functionality within the cost classes.
29+
30+
## Bug Fixes
31+
32+
- [#602](https://github.com/pybop-team/PyBOP/pull/602) - Aligns the standard quick plot of `MultiFittingProblem` outputs.
33+
34+
## Breaking Changes
35+
36+
- [#656](https://github.com/pybop-team/PyBOP/pull/656) - Completes `ParameterSet` changes from #593 and aligns the simulation options in `model.predict` with the model properties such as the solver.
37+
- [#593](https://github.com/pybop-team/PyBOP/pull/593) - Enables `ParameterSet` to systematically return a `pybamm.ParameterValues` object within the model class.
38+
1139
# [v24.12](https://github.com/pybop-team/PyBOP/tree/v24.12) - 2024-12-21
1240

1341
## Features

CITATION.cff

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,35 @@
11
cff-version: 1.2.0
2-
title: 'Python Battery Optimisation and Parameterisation (PyBOP)'
2+
title: 'PyBOP: A Python package for battery model optimisation and parameterisation'
33
message: >-
4-
If you use this software, please cite it using the
5-
metadata from this file.
6-
type: software
4+
If you use this software, please cite the article below.
75
authors:
86
- given-names: Brady
97
family-names: Planden
8+
orcid: "https://orcid.org/0000-0002-1082-9125"
109
- given-names: Nicola
1110
family-names: Courtier
11+
orcid: "https://orcid.org/0000-0002-5714-1096"
12+
- given-names: Martin
13+
family-names: Robinson
14+
orcid: "https://orcid.org/0000-0002-1572-6782"
15+
- given-names: Agriya
16+
family-names: Khetarpal
17+
orcid: "https://orcid.org/0000-0002-1112-1786"
18+
- given-names: Ferran
19+
family-names: Brosa Planella
20+
orcid: "https://orcid.org/0000-0001-6363-2812"
1221
- given-names: David
1322
family-names: Howey
14-
version: "24.12" # Update this when you release a new version
23+
orcid: "https://orcid.org/0000-0002-0620-3955"
24+
25+
keywords:
26+
- "python"
27+
- "battery models"
28+
- "parameter inference"
29+
- "optimization"
30+
31+
journal: "arXiv"
32+
date-released: 2024-12-20
33+
doi: 10.48550/arXiv.2412.15859
34+
version: "25.1" # Update this alongside new releases
1535
repository-code: 'https://www.github.com/pybop-team/pybop'

README.md

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -74,30 +74,32 @@ Explore our [example notebooks](https://github.com/pybop-team/PyBOP/blob/develop
7474

7575
Find additional script-based examples in the [examples directory](https://github.com/pybop-team/PyBOP/blob/develop/examples/scripts/):
7676

77-
- [UKF parameter identification (SPM)](https://github.com/pybop-team/PyBOP/blob/develop/examples/scripts/comparison_examples/spm_UKF.py)
78-
- [BPX format parameter import/export](https://github.com/pybop-team/PyBOP/blob/develop/examples/scripts/getting_started/BPX_spm.py)
79-
- [Electrochemical Impendence Spectroscopy (EIS) parameter identification](https://github.com/pybop-team/PyBOP/blob/develop/examples/scripts/battery_parameterisation/eis_fitting.py)
80-
- [Maximum a Posteriori parameter identification (SPM)](https://github.com/pybop-team/PyBOP/blob/develop/examples/scripts/getting_started/BPX_spm.py)
81-
- [Gradient-based parameter identification (SPM)](https://github.com/pybop-team/PyBOP/blob/develop/examples/scripts/comparison_examples/spm_AdamW.py)
77+
- [UKF parameter identification (SPM)](https://github.com/pybop-team/PyBOP/blob/develop/examples/scripts/comparison_examples/unscented_kalman_filter.py)
78+
- [BPX format parameter import/export](https://github.com/pybop-team/PyBOP/blob/develop/examples/scripts/getting_started/simple_BPX.py)
79+
- [Electrochemical Impendence Spectroscopy (EIS) parameter identification](https://github.com/pybop-team/PyBOP/blob/develop/examples/scripts/battery_parameterisation/simple_eis.py)
80+
- [Maximum a Posteriori parameter identification (SPM)](https://github.com/pybop-team/PyBOP/blob/develop/examples/scripts/comparison_examples/maximum_a_posteriori.py)
81+
- [Gradient-based parameter identification (SPM)](https://github.com/pybop-team/PyBOP/blob/develop/examples/scripts/comparison_examples/adamw.py)
8282

8383

8484
### Supported Methods
8585
The table below lists the currently supported [models](https://github.com/pybop-team/PyBOP/tree/develop/pybop/models), [optimisers](https://github.com/pybop-team/PyBOP/tree/develop/pybop/optimisers), and [cost functions](https://github.com/pybop-team/PyBOP/tree/develop/pybop/costs) in PyBOP.
8686

8787
<p align="center">
8888

89-
| Battery Models | Optimization Algorithms | Cost Functions |
90-
|-----------------------------------------------|----------------------------------------------------------|------------------------------------------|
91-
| Single Particle Model (SPM) | Covariance Matrix Adaptation Evolution Strategy (CMA-ES) | Sum of Squared Errors (SSE) <tr></tr> |
92-
| Single Particle Model with Electrolyte (SPMe) | Particle Swarm Optimization (PSO) | Root Mean Squared Error (RMSE) <tr></tr> |
93-
| Doyle-Fuller-Newman (DFN) | Exponential Natural Evolution Strategy (xNES) | Minkowski <tr></tr> |
94-
| Many Particle Model (MPM) | Separable Natural Evolution Strategy (sNES) | Sum of Power <tr></tr> |
95-
| Multi-Species Multi-Reaction (MSMR) | Adaptive Moment Estimation with Weight Decay (AdamW) | Gaussian Log Likelihood <tr></tr> |
96-
| Weppner-Huggins | Improved Resilient Backpropagation (iRProp-) | Log Posterior <tr></tr> |
97-
| Equivalent Circuit Models (ECM) | SciPy Minimize & Differential Evolution | Unscented Kalman Filter (UKF) <tr></tr> |
98-
| Grouped-parameter SPMe (GroupedSPMe) | Cuckoo Search | Gravimetric Energy Density <tr></tr> |
99-
| | Gradient Descent | Volumetric Energy Density<tr></tr> |
100-
| | Nelder-Mead | <tr></tr> |
89+
| Battery Models | Cost Functions | Optimization Algorithms |
90+
|-----------------------------------------------|------------------------------------|--------------------------------------------------------------------|
91+
| Single Particle Model (SPM) | Sum of Squared Error (SSE) | Covariance Matrix Adaptation Evolution Strategy (CMA-ES) <tr></tr> |
92+
| Single Particle Model with Electrolyte (SPMe) | Root Mean Squared Error (RMSE) | Particle Swarm Optimization (PSO) <tr></tr> |
93+
| Doyle-Fuller-Newman (DFN) | Mean Squared Error (MSE) | Exponential Natural Evolution Strategy (xNES) <tr></tr> |
94+
| Many Particle Model (MPM) | Mean Absolute Error (MAE) | Separable Natural Evolution Strategy (sNES) <tr></tr> |
95+
| Multi-Species Multi-Reaction (MSMR) | Minkowski | Weight Decayed Adaptive Moment Estimation (AdamW) <tr></tr> |
96+
| Weppner-Huggins | Sum of Power | Improved Resilient Backpropagation (iRProp-) <tr></tr> |
97+
| Equivalent Circuit Models (ECM) | Gaussian Log Likelihood | SciPy Minimize & Differential Evolution <tr></tr> |
98+
| Grouped-parameter SPMe (GroupedSPMe) | Log Posterior | Cuckoo Search <tr></tr> |
99+
| | Gravimetric Energy / Power Density | Simulated Annealing <tr></tr> |
100+
| | Volumetric Energy / Power Density | Random Search <tr></tr> |
101+
| | | Gradient Descent <tr></tr> |
102+
| | | Nelder Mead <tr></tr> |
101103

102104
</p>
103105

@@ -141,6 +143,10 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
141143
<td align="center" valign="top" width="14.28%"><a href="https://github.com/MarkBlyth"><img src="https://avatars.githubusercontent.com/u/20501619?v=4?s=100" width="100px;" alt="MarkBlyth"/><br /><sub><b>MarkBlyth</b></sub></a><br /><a href="https://github.com/pybop-team/PyBOP/commits?author=MarkBlyth" title="Code">💻</a></td>
142144
<td align="center" valign="top" width="14.28%"><a href="https://github.com/f-g-r-i-m-m"><img src="https://avatars.githubusercontent.com/u/137511310?v=4?s=100" width="100px;" alt="f-g-r-i-m-m"/><br /><sub><b>f-g-r-i-m-m</b></sub></a><br /><a href="#example-f-g-r-i-m-m" title="Examples">💡</a></td>
143145
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Dibyendu-IITKGP"><img src="https://avatars.githubusercontent.com/u/32595915?v=4?s=100" width="100px;" alt="Dibyendu-IITKGP"/><br /><sub><b>Dibyendu-IITKGP</b></sub></a><br /><a href="#example-Dibyendu-IITKGP" title="Examples">💡</a> <a href="https://github.com/pybop-team/PyBOP/commits?author=Dibyendu-IITKGP" title="Tests">⚠️</a> <a href="https://github.com/pybop-team/PyBOP/commits?author=Dibyendu-IITKGP" title="Code">💻</a></td>
146+
<td align="center" valign="top" width="14.28%"><a href="https://eng.ox.ac.uk/people/noel-hallemans/"><img src="https://avatars.githubusercontent.com/u/90609505?v=4?s=100" width="100px;" alt="Noël Hallemans"/><br /><sub><b>Noël Hallemans</b></sub></a><br /><a href="#example-noelhallemans" title="Examples">💡</a></td>
147+
</tr>
148+
<tr>
149+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/pipliggins"><img src="https://avatars.githubusercontent.com/u/55396775?v=4?s=100" width="100px;" alt="Pip Liggins"/><br /><sub><b>Pip Liggins</b></sub></a><br /><a href="https://github.com/pybop-team/PyBOP/commits?author=pipliggins" title="Code">💻</a></td>
144150
</tr>
145151
</tbody>
146152
</table>

assets/PyBOP-high-level.svg

Lines changed: 497 additions & 797 deletions
Loading

benchmarks/benchmark_model.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def setup(self, model, parameter_set):
2323
set_random_seed()
2424

2525
# Create model instance
26-
self.model = model(parameter_set=pybop.ParameterSet.pybamm(parameter_set))
26+
self.model = model(parameter_set=pybop.ParameterSet(parameter_set))
2727

2828
# Define fitting parameters
2929
parameters = pybop.Parameters(

benchmarks/benchmark_optim_construction.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ def setup(self, model, parameter_set, optimiser):
2525
set_random_seed()
2626

2727
# Create model instance
28-
model_instance = model(parameter_set=pybop.ParameterSet.pybamm(parameter_set))
28+
model_instance = model(parameter_set=pybop.ParameterSet(parameter_set))
2929

3030
# Define fitting parameters
3131
parameters = pybop.Parameters(

benchmarks/benchmark_parameterisation.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def setup(self, model, parameter_set, optimiser):
3535
set_random_seed()
3636

3737
# Create model instance
38-
params = pybop.ParameterSet.pybamm(parameter_set)
38+
params = pybop.ParameterSet(parameter_set)
3939
params.update(
4040
{
4141
"Negative electrode active material volume fraction": 0.63,

benchmarks/benchmark_track_parameterisation.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def setup(self, model, parameter_set, optimiser):
3535
set_random_seed()
3636

3737
# Create model instance
38-
params = pybop.ParameterSet.pybamm(parameter_set)
38+
params = pybop.ParameterSet(parameter_set)
3939
params.update(
4040
{
4141
"Negative electrode active material volume fraction": 0.63,

0 commit comments

Comments
 (0)