diff --git a/CHANGELOG.md b/CHANGELOG.md index 641fdcd6c..f6b1ba93a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## Features +- [#976](https://github.com/pybop-team/PyBOP/pull/976) - Updates experimental procedures and synthetic validation data. - [#973](https://github.com/pybop-team/PyBOP/pull/973) - Adds example scripts for EIS parameterisation. - [#974](https://github.com/pybop-team/PyBOP/pull/974) - Adds voltage components to each grouped model as well as asymmetric and multiphase Butler-Volmer kinetics. - [#969](https://github.com/pybop-team/PyBOP/pull/969) - Updates synthetic data and adds example script for thermal parameterisation. diff --git a/examples/data/LG M50 Synthetic/Full cell/C02/Temperature.parquet b/examples/data/LG M50 Synthetic/Full cell/C02/Temperature.parquet index 0a06211a2..a60631534 100644 Binary files a/examples/data/LG M50 Synthetic/Full cell/C02/Temperature.parquet and b/examples/data/LG M50 Synthetic/Full cell/C02/Temperature.parquet differ diff --git a/examples/data/LG M50 Synthetic/Full cell/C02/Validation cycling.parquet b/examples/data/LG M50 Synthetic/Full cell/C02/Validation cycling.parquet index 269c51a26..1e09f9b5e 100644 Binary files a/examples/data/LG M50 Synthetic/Full cell/C02/Validation cycling.parquet and b/examples/data/LG M50 Synthetic/Full cell/C02/Validation cycling.parquet differ diff --git a/examples/data/LG M50 Synthetic/Full cell/C02/Validation different SOC.parquet b/examples/data/LG M50 Synthetic/Full cell/C02/Validation different SOC.parquet index d6d14724a..d392f860f 100644 Binary files a/examples/data/LG M50 Synthetic/Full cell/C02/Validation different SOC.parquet and b/examples/data/LG M50 Synthetic/Full cell/C02/Validation different SOC.parquet differ diff --git a/examples/data/LG M50 Synthetic/Full cell/C02/Validation pulses.parquet b/examples/data/LG M50 Synthetic/Full cell/C02/Validation pulses.parquet index 470b011f5..112df1158 100644 Binary files a/examples/data/LG M50 Synthetic/Full cell/C02/Validation pulses.parquet and b/examples/data/LG M50 Synthetic/Full cell/C02/Validation pulses.parquet differ diff --git a/examples/data/LG M50 Synthetic/Full cell/C02/metadata.json b/examples/data/LG M50 Synthetic/Full cell/C02/metadata.json index 796021055..a263fb162 100644 --- a/examples/data/LG M50 Synthetic/Full cell/C02/metadata.json +++ b/examples/data/LG M50 Synthetic/Full cell/C02/metadata.json @@ -183,10 +183,10 @@ "Discharge at C/10 until 2.5 V", "Hold at 2.5 V until C/50", "Rest for 2 hours", - "Charge at C/2 for 12 minutes", + "Charge at C/2 for 12 minutes or until 4.2 V", "Rest for 4 hours", - "Charge at 1C for 50 seconds", - "Discharge at 1C for 50 seconds", + "Charge at 1C for 50 seconds or until 4.2 V", + "Discharge at 1C for 50 seconds or until 2.5 V", "Rest for 1 hour" ] }, @@ -213,10 +213,10 @@ 7 ], "Step Descriptions": [ - "Charge at C/2 for 12 minutes", + "Charge at C/2 for 12 minutes or until 4.2 V", "Rest for 4 hours", - "Charge at 1C for 50 seconds", - "Discharge at 1C for 50 seconds", + "Charge at 1C for 50 seconds or until 4.2 V", + "Discharge at 1C for 50 seconds or until 2.5 V", "Rest for 1 hour" ], "Cycles": [ @@ -380,33 +380,33 @@ 27 ], "Description": [ - "Charge at C/10 until 4.18 V", - "Hold at 4.18 V until C/50", + "Charge at C/10 until 4.12 V", + "Hold at 4.12 V until C/50", "Rest for 2 hours", "Discharge at C/10 until 2.6 V", "Rest for 1 hour", - "Charge at C/10 until 4.18 V", - "Hold at 4.18 V until C/20", + "Charge at C/10 until 4.12 V", + "Hold at 4.12 V until C/20", "Rest for 1 hour", "Discharge at C/5 until 2.6 V", "Rest for 1 hour", - "Charge at C/5 until 4.18 V", - "Hold at 4.18 V until C/20", + "Charge at C/5 until 4.12 V", + "Hold at 4.12 V until C/20", "Rest for 1 hour", "Discharge at C/3 until 2.6 V", "Rest for 1 hour", - "Charge at C/3 until 4.18 V", - "Hold at 4.18 V until C/20", + "Charge at C/3 until 4.12 V", + "Hold at 4.12 V until C/20", "Rest for 1 hour", "Discharge at C/2 until 2.6 V", "Rest for 1 hour", - "Charge at C/2 until 4.18 V", - "Hold at 4.18 V until C/20", + "Charge at C/2 until 4.12 V", + "Hold at 4.12 V until C/20", "Rest for 1 hour", "Discharge at 1C until 2.6 V", "Rest for 1 hour", - "Charge at 1C until 4.18 V", - "Hold at 4.18 V until C/20", + "Charge at 1C until 4.12 V", + "Hold at 4.12 V until C/20", "Rest for 1 hour" ] }, @@ -418,8 +418,8 @@ 2 ], "Step Descriptions": [ - "Charge at C/10 until 4.18 V", - "Hold at 4.18 V until C/50", + "Charge at C/10 until 4.12 V", + "Hold at 4.12 V until C/50", "Rest for 2 hours" ], "Cycles": [] @@ -455,28 +455,28 @@ "Step Descriptions": [ "Discharge at C/10 until 2.6 V", "Rest for 1 hour", - "Charge at C/10 until 4.18 V", - "Hold at 4.18 V until C/20", + "Charge at C/10 until 4.12 V", + "Hold at 4.12 V until C/20", "Rest for 1 hour", "Discharge at C/5 until 2.6 V", "Rest for 1 hour", - "Charge at C/5 until 4.18 V", - "Hold at 4.18 V until C/20", + "Charge at C/5 until 4.12 V", + "Hold at 4.12 V until C/20", "Rest for 1 hour", "Discharge at C/3 until 2.6 V", "Rest for 1 hour", - "Charge at C/3 until 4.18 V", - "Hold at 4.18 V until C/20", + "Charge at C/3 until 4.12 V", + "Hold at 4.12 V until C/20", "Rest for 1 hour", "Discharge at C/2 until 2.6 V", "Rest for 1 hour", - "Charge at C/2 until 4.18 V", - "Hold at 4.18 V until C/20", + "Charge at C/2 until 4.12 V", + "Hold at 4.12 V until C/20", "Rest for 1 hour", "Discharge at 1C until 2.6 V", "Rest for 1 hour", - "Charge at 1C until 4.18 V", - "Hold at 4.18 V until C/20", + "Charge at 1C until 4.12 V", + "Hold at 4.12 V until C/20", "Rest for 1 hour" ], "Cycles": [] @@ -536,32 +536,32 @@ 26 ], "Description": [ - "Discharge at C/10 until 4.2 V", + "Charge at C/10 until 4.2 V", "Hold at 4.2 V until C/50", "Rest for 2 hours", - "Discharge at C/5 for 30 minutes", + "Discharge at C/5 for 30 minutes or until 2.5 V", "Rest for 4 hours", - "Charge at C/10 for 100 seconds", + "Charge at C/10 for 100 seconds or until 4.25 V", "Rest for 100 seconds", - "Discharge at C/10 for 100 seconds", + "Discharge at C/10 for 100 seconds or until 2.5 V", "Rest for 100 seconds", - "Charge at C/5 for 100 seconds", + "Charge at C/5 for 100 seconds or until 4.25 V", "Rest for 100 seconds", - "Discharge at C/5 for 100 seconds", + "Discharge at C/5 for 100 seconds or until 2.5 V", "Rest for 100 seconds", - "Charge at C/3 for 100 seconds", + "Charge at C/3 for 100 seconds or until 4.25 V", "Rest for 100 seconds", - "Discharge at C/3 for 100 seconds", + "Discharge at C/3 for 100 seconds or until 2.5 V", "Rest for 100 seconds", - "Charge at C/2 for 100 seconds", + "Charge at C/2 for 100 seconds or until 4.25 V", "Rest for 100 seconds", - "Discharge at C/2 for 100 seconds", + "Discharge at C/2 for 100 seconds or until 2.5 V", "Rest for 100 seconds", - "Charge at 1C for 100 seconds", + "Charge at 1C for 100 seconds or until 4.25 V", "Rest for 100 seconds", - "Discharge at 1C for 100 seconds", + "Discharge at 1C for 100 seconds or until 2.5 V", "Rest for 100 seconds", - "Discharge at C/5 for 30 minutes", + "Discharge at C/5 for 30 minutes or until 2.5 V", "Rest for 4 hours" ] }, @@ -575,10 +575,10 @@ 4 ], "Step Descriptions": [ - "Discharge at C/10 until 4.2 V", + "Charge at C/10 until 4.2 V", "Hold at 4.2 V until C/50", "Rest for 2 hours", - "Discharge at C/5 for 30 minutes", + "Discharge at C/5 for 30 minutes or until 2.5 V", "Rest for 4 hours" ], "Cycles": [] @@ -609,27 +609,27 @@ 26 ], "Step Descriptions": [ - "Charge at C/10 for 100 seconds", + "Charge at C/10 for 100 seconds or until 4.25 V", "Rest for 100 seconds", - "Discharge at C/10 for 100 seconds", + "Discharge at C/10 for 100 seconds or until 2.5 V", "Rest for 100 seconds", - "Charge at C/5 for 100 seconds", + "Charge at C/5 for 100 seconds or until 4.25 V", "Rest for 100 seconds", - "Discharge at C/5 for 100 seconds", + "Discharge at C/5 for 100 seconds or until 2.5 V", "Rest for 100 seconds", - "Charge at C/3 for 100 seconds", + "Charge at C/3 for 100 seconds or until 4.25 V", "Rest for 100 seconds", - "Discharge at C/3 for 100 seconds", + "Discharge at C/3 for 100 seconds or until 2.5 V", "Rest for 100 seconds", - "Charge at C/2 for 100 seconds", + "Charge at C/2 for 100 seconds or until 4.25 V", "Rest for 100 seconds", - "Discharge at C/2 for 100 seconds", + "Discharge at C/2 for 100 seconds or until 2.5 V", "Rest for 100 seconds", - "Charge at 1C for 100 seconds", + "Charge at 1C for 100 seconds or until 4.25 V", "Rest for 100 seconds", - "Discharge at 1C for 100 seconds", + "Discharge at 1C for 100 seconds or until 2.5 V", "Rest for 100 seconds", - "Discharge at C/5 for 30 minutes", + "Discharge at C/5 for 30 minutes or until 2.5 V", "Rest for 4 hours" ], "Cycles": [ @@ -698,27 +698,27 @@ "Discharge at C/10 until 2.5 V", "Hold at 2.5 V until C/50", "Rest for 2 hours", - "Charge at C/2 for 12 minutes", + "Charge at C/2 for 12 minutes or until 4.2 V", "Rest for 30 min", - "Charge at C/10 for 100 seconds", + "Charge at C/10 for 100 seconds or until 4.25 V", "Rest for 100 seconds", - "Discharge at C/10 for 100 seconds", + "Discharge at C/10 for 100 seconds or until 2.5 V", "Rest for 100 seconds", - "Charge at C/5 for 100 seconds", + "Charge at C/5 for 100 seconds or until 4.25 V", "Rest for 100 seconds", - "Discharge at C/5 for 100 seconds", + "Discharge at C/5 for 100 seconds or until 2.5 V", "Rest for 100 seconds", - "Charge at C/3 for 100 seconds", + "Charge at C/3 for 100 seconds or until 4.25 V", "Rest for 100 seconds", - "Discharge at C/3 for 100 seconds", + "Discharge at C/3 for 100 seconds or until 2.5 V", "Rest for 100 seconds", - "Charge at C/2 for 100 seconds", + "Charge at C/2 for 100 seconds or until 4.25 V", "Rest for 100 seconds", - "Discharge at C/2 for 100 seconds", + "Discharge at C/2 for 100 seconds or until 2.5 V", "Rest for 100 seconds", - "Charge at 1C for 100 seconds", + "Charge at 1C for 100 seconds or until 4.25 V", "Rest for 100 seconds", - "Discharge at 1C for 100 seconds", + "Discharge at 1C for 100 seconds or until 2.5 V", "Rest for 100 seconds", "Charge at C/2 until 4.2 V", "Hold at 4.2 V until C/20" @@ -766,27 +766,27 @@ 26 ], "Step Descriptions": [ - "Charge at C/2 for 12 minutes", + "Charge at C/2 for 12 minutes or until 4.2 V", "Rest for 30 min", - "Charge at C/10 for 100 seconds", + "Charge at C/10 for 100 seconds or until 4.25 V", "Rest for 100 seconds", - "Discharge at C/10 for 100 seconds", + "Discharge at C/10 for 100 seconds or until 2.5 V", "Rest for 100 seconds", - "Charge at C/5 for 100 seconds", + "Charge at C/5 for 100 seconds or until 4.25 V", "Rest for 100 seconds", - "Discharge at C/5 for 100 seconds", + "Discharge at C/5 for 100 seconds or until 2.5 V", "Rest for 100 seconds", - "Charge at C/3 for 100 seconds", + "Charge at C/3 for 100 seconds or until 4.25 V", "Rest for 100 seconds", - "Discharge at C/3 for 100 seconds", + "Discharge at C/3 for 100 seconds or until 2.5 V", "Rest for 100 seconds", - "Charge at C/2 for 100 seconds", + "Charge at C/2 for 100 seconds or until 4.25 V", "Rest for 100 seconds", - "Discharge at C/2 for 100 seconds", + "Discharge at C/2 for 100 seconds or until 2.5 V", "Rest for 100 seconds", - "Charge at 1C for 100 seconds", + "Charge at 1C for 100 seconds or until 4.25 V", "Rest for 100 seconds", - "Discharge at 1C for 100 seconds", + "Discharge at 1C for 100 seconds or until 2.5 V", "Rest for 100 seconds", "Charge at C/2 until 4.2 V", "Hold at 4.2 V until C/20" diff --git a/examples/data/LG M50 Synthetic/Full cell/EIS/EIS charge.parquet b/examples/data/LG M50 Synthetic/Full cell/EIS/EIS charge.parquet index 7ecc14987..a579702be 100644 Binary files a/examples/data/LG M50 Synthetic/Full cell/EIS/EIS charge.parquet and b/examples/data/LG M50 Synthetic/Full cell/EIS/EIS charge.parquet differ diff --git a/examples/data/LG M50 Synthetic/Full cell/EIS/metadata.json b/examples/data/LG M50 Synthetic/Full cell/EIS/metadata.json index b4e751942..860ef3b0b 100644 --- a/examples/data/LG M50 Synthetic/Full cell/EIS/metadata.json +++ b/examples/data/LG M50 Synthetic/Full cell/EIS/metadata.json @@ -45,7 +45,7 @@ "Discharge at C/10 until 2.5 V", "Hold at 2.5 V until C/50", "Rest for 2 hours", - "Charge at C/10 for 1 hour", + "Charge at C/10 for 1 hour or until 4.2 V", "Rest for 4 hours", "Potentiostatic EIS with 0.0042 V amplitude" ] @@ -71,7 +71,7 @@ 5 ], "Step Descriptions": [ - "Charge at C/10 for 1 hour", + "Charge at C/10 for 1 hour or until 4.2 V", "Rest for 4 hours", "Potentiostatic EIS with 0.0042 V amplitude" ], diff --git a/examples/scripts/synthetic_data/procedures/EIS charge.json b/examples/scripts/synthetic_data/procedures/EIS charge.json index 86ad4c365..28885dd54 100644 --- a/examples/scripts/synthetic_data/procedures/EIS charge.json +++ b/examples/scripts/synthetic_data/procedures/EIS charge.json @@ -20,7 +20,7 @@ 5 ], "Step Descriptions": [ - "Charge at C/10 for 1 hour", + "Charge at C/10 for 1 hour or until 4.2 V", "Rest for 4 hours", "Potentiostatic EIS with 0.0042 V amplitude" ], diff --git a/examples/scripts/synthetic_data/procedures/Temperature experiment.json b/examples/scripts/synthetic_data/procedures/Temperature experiment.json index 9976eb722..d5ed2b110 100644 --- a/examples/scripts/synthetic_data/procedures/Temperature experiment.json +++ b/examples/scripts/synthetic_data/procedures/Temperature experiment.json @@ -21,10 +21,10 @@ 7 ], "Step Descriptions": [ - "Charge at C/2 for 12 minutes", + "Charge at C/2 for 12 minutes or until 4.2 V", "Rest for 4 hours", - "Charge at 1C for 50 seconds", - "Discharge at 1C for 50 seconds", + "Charge at 1C for 50 seconds or until 4.2 V", + "Discharge at 1C for 50 seconds or until 2.5 V", "Rest for 1 hour" ], "Cycles": [ diff --git a/examples/scripts/synthetic_data/procedures/Validation cycling.json b/examples/scripts/synthetic_data/procedures/Validation cycling.json index 4c74c72ce..753fc399c 100644 --- a/examples/scripts/synthetic_data/procedures/Validation cycling.json +++ b/examples/scripts/synthetic_data/procedures/Validation cycling.json @@ -7,8 +7,8 @@ 2 ], "Step Descriptions": [ - "Charge at C/10 until 4.18 V", - "Hold at 4.18 V until C/50", + "Charge at C/10 until 4.12 V", + "Hold at 4.12 V until C/50", "Rest for 2 hours" ] }, @@ -43,28 +43,28 @@ "Step Descriptions": [ "Discharge at C/10 until 2.6 V", "Rest for 1 hour", - "Charge at C/10 until 4.18 V", - "Hold at 4.18 V until C/20", + "Charge at C/10 until 4.12 V", + "Hold at 4.12 V until C/20", "Rest for 1 hour", "Discharge at C/5 until 2.6 V", "Rest for 1 hour", - "Charge at C/5 until 4.18 V", - "Hold at 4.18 V until C/20", + "Charge at C/5 until 4.12 V", + "Hold at 4.12 V until C/20", "Rest for 1 hour", "Discharge at C/3 until 2.6 V", "Rest for 1 hour", - "Charge at C/3 until 4.18 V", - "Hold at 4.18 V until C/20", + "Charge at C/3 until 4.12 V", + "Hold at 4.12 V until C/20", "Rest for 1 hour", "Discharge at C/2 until 2.6 V", "Rest for 1 hour", - "Charge at C/2 until 4.18 V", - "Hold at 4.18 V until C/20", + "Charge at C/2 until 4.12 V", + "Hold at 4.12 V until C/20", "Rest for 1 hour", "Discharge at 1C until 2.6 V", "Rest for 1 hour", - "Charge at 1C until 4.18 V", - "Hold at 4.18 V until C/20", + "Charge at 1C until 4.12 V", + "Hold at 4.12 V until C/20", "Rest for 1 hour" ] } diff --git a/examples/scripts/synthetic_data/procedures/Validation different SOC.json b/examples/scripts/synthetic_data/procedures/Validation different SOC.json index 00888d160..ff0b4d355 100644 --- a/examples/scripts/synthetic_data/procedures/Validation different SOC.json +++ b/examples/scripts/synthetic_data/procedures/Validation different SOC.json @@ -9,10 +9,10 @@ 4 ], "Step Descriptions": [ - "Discharge at C/10 until 4.2 V", + "Charge at C/10 until 4.2 V", "Hold at 4.2 V until C/50", "Rest for 2 hours", - "Discharge at C/5 for 30 minutes", + "Discharge at C/5 for 30 minutes or until 2.5 V", "Rest for 4 hours" ] }, @@ -42,27 +42,27 @@ 26 ], "Step Descriptions": [ - "Charge at C/10 for 100 seconds", + "Charge at C/10 for 100 seconds or until 4.25 V", "Rest for 100 seconds", - "Discharge at C/10 for 100 seconds", + "Discharge at C/10 for 100 seconds or until 2.5 V", "Rest for 100 seconds", - "Charge at C/5 for 100 seconds", + "Charge at C/5 for 100 seconds or until 4.25 V", "Rest for 100 seconds", - "Discharge at C/5 for 100 seconds", + "Discharge at C/5 for 100 seconds or until 2.5 V", "Rest for 100 seconds", - "Charge at C/3 for 100 seconds", + "Charge at C/3 for 100 seconds or until 4.25 V", "Rest for 100 seconds", - "Discharge at C/3 for 100 seconds", + "Discharge at C/3 for 100 seconds or until 2.5 V", "Rest for 100 seconds", - "Charge at C/2 for 100 seconds", + "Charge at C/2 for 100 seconds or until 4.25 V", "Rest for 100 seconds", - "Discharge at C/2 for 100 seconds", + "Discharge at C/2 for 100 seconds or until 2.5 V", "Rest for 100 seconds", - "Charge at 1C for 100 seconds", + "Charge at 1C for 100 seconds or until 4.25 V", "Rest for 100 seconds", - "Discharge at 1C for 100 seconds", + "Discharge at 1C for 100 seconds or until 2.5 V", "Rest for 100 seconds", - "Discharge at C/5 for 30 minutes", + "Discharge at C/5 for 30 minutes or until 2.5 V", "Rest for 4 hours" ], "Cycles": [ diff --git a/examples/scripts/synthetic_data/procedures/Validation pulses.json b/examples/scripts/synthetic_data/procedures/Validation pulses.json index 9dcc0669a..d465c666c 100644 --- a/examples/scripts/synthetic_data/procedures/Validation pulses.json +++ b/examples/scripts/synthetic_data/procedures/Validation pulses.json @@ -40,27 +40,27 @@ 26 ], "Step Descriptions": [ - "Charge at C/2 for 12 minutes", + "Charge at C/2 for 12 minutes or until 4.2 V", "Rest for 30 min", - "Charge at C/10 for 100 seconds", + "Charge at C/10 for 100 seconds or until 4.25 V", "Rest for 100 seconds", - "Discharge at C/10 for 100 seconds", + "Discharge at C/10 for 100 seconds or until 2.5 V", "Rest for 100 seconds", - "Charge at C/5 for 100 seconds", + "Charge at C/5 for 100 seconds or until 4.25 V", "Rest for 100 seconds", - "Discharge at C/5 for 100 seconds", + "Discharge at C/5 for 100 seconds or until 2.5 V", "Rest for 100 seconds", - "Charge at C/3 for 100 seconds", + "Charge at C/3 for 100 seconds or until 4.25 V", "Rest for 100 seconds", - "Discharge at C/3 for 100 seconds", + "Discharge at C/3 for 100 seconds or until 2.5 V", "Rest for 100 seconds", - "Charge at C/2 for 100 seconds", + "Charge at C/2 for 100 seconds or until 4.25 V", "Rest for 100 seconds", - "Discharge at C/2 for 100 seconds", + "Discharge at C/2 for 100 seconds or until 2.5 V", "Rest for 100 seconds", - "Charge at 1C for 100 seconds", + "Charge at 1C for 100 seconds or until 4.25 V", "Rest for 100 seconds", - "Discharge at 1C for 100 seconds", + "Discharge at 1C for 100 seconds or until 2.5 V", "Rest for 100 seconds", "Charge at C/2 until 4.2 V", "Hold at 4.2 V until C/20" diff --git a/pybop/pybamm/synthetic_utils.py b/pybop/pybamm/synthetic_utils.py index f1e54983d..dcb0481c5 100644 --- a/pybop/pybamm/synthetic_utils.py +++ b/pybop/pybamm/synthetic_utils.py @@ -252,12 +252,7 @@ def _solution_to_dataframe( ] ) pybamm_data["Time [s]"] += start_time - try: - raw_dataframe = pl.LazyFrame(pybamm_data) - except pl.exceptions.ShapeError: - # Account for an error where the Step is one longer than the Solution - pybamm_data["Step"] = pybamm_data["Step"][:-1] - raw_dataframe = pl.LazyFrame(pybamm_data) + raw_dataframe = pl.LazyFrame(pybamm_data) raw_dataframe = _remap_cycle_info(raw_dataframe, step_sequence, event_offset) return raw_dataframe.select( [