From 963cf02405a6a827af7a57b86f649a975c332914 Mon Sep 17 00:00:00 2001 From: Chloe Hancock Date: Tue, 31 Mar 2026 15:16:44 +0100 Subject: [PATCH 1/3] Added new section for calibration annual mass balance observations --- notebooks/tutorials/massbalance_calibration.ipynb | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/notebooks/tutorials/massbalance_calibration.ipynb b/notebooks/tutorials/massbalance_calibration.ipynb index aa0501dc..ea42b805 100644 --- a/notebooks/tutorials/massbalance_calibration.ipynb +++ b/notebooks/tutorials/massbalance_calibration.ipynb @@ -621,6 +621,13 @@ "mbdf_in_situ[['ref_mb','mod_mb']].std()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Calibrate with glaciological Annual MB observations" + ] + }, { "cell_type": "markdown", "metadata": { @@ -1363,6 +1370,11 @@ ], "metadata": { "hide_input": false, + "kernelspec": { + "display_name": "oggm_env", + "language": "python", + "name": "python3" + }, "language_info": { "codemirror_mode": { "name": "ipython", @@ -1373,7 +1385,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.3" + "version": "3.11.13" }, "latex_envs": { "LaTeX_envs_menu_present": true, From 5839509ae8592b5c36b8ad7458cfd8c46f7f55d6 Mon Sep 17 00:00:00 2001 From: Chloe Hancock Date: Tue, 31 Mar 2026 16:35:31 +0100 Subject: [PATCH 2/3] stripped output --- notebooks/tutorials/massbalance_calibration.ipynb | 5 ----- 1 file changed, 5 deletions(-) diff --git a/notebooks/tutorials/massbalance_calibration.ipynb b/notebooks/tutorials/massbalance_calibration.ipynb index ea42b805..6cd6d656 100644 --- a/notebooks/tutorials/massbalance_calibration.ipynb +++ b/notebooks/tutorials/massbalance_calibration.ipynb @@ -1370,11 +1370,6 @@ ], "metadata": { "hide_input": false, - "kernelspec": { - "display_name": "oggm_env", - "language": "python", - "name": "python3" - }, "language_info": { "codemirror_mode": { "name": "ipython", From da64ec1ae8aeecbd215c7c4aa11e32600a269b92 Mon Sep 17 00:00:00 2001 From: Chloe Hancock Date: Fri, 10 Apr 2026 11:21:03 +0100 Subject: [PATCH 3/3] Added an introduction to the RMSD calibration and the started to use the method. --- .../tutorials/massbalance_calibration.ipynb | 30 +++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/notebooks/tutorials/massbalance_calibration.ipynb b/notebooks/tutorials/massbalance_calibration.ipynb index 6cd6d656..3500cefb 100644 --- a/notebooks/tutorials/massbalance_calibration.ipynb +++ b/notebooks/tutorials/massbalance_calibration.ipynb @@ -43,7 +43,7 @@ "\n", "from oggm import cfg, utils, workflow, tasks, graphics\n", "from oggm.core import massbalance\n", - "from oggm.core.massbalance import mb_calibration_from_scalar_mb, mb_calibration_from_geodetic_mb, mb_calibration_from_wgms_mb" + "from oggm.core.massbalance import mb_calibration_from_scalar_mb, mb_calibration_from_geodetic_mb, mb_calibration_from_wgms_mb, mb_calibration_to_rmsd" ] }, { @@ -625,7 +625,33 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Calibrate with glaciological Annual MB observations" + "### Calibrating on direct glaciological in-situ MB observations with the RMSD\n", + "\n", + "In the case above, we are calibrating with the in-situ observations using `mb_calibration_from_wgms_mb`, however this calibration technique takes the mean of these observation values. When taking the mean of our dataset, we can lose some statistical detail that could help us improve our calibration.\n", + "\n", + "From our annual MB observations, we have one observation for each year in the observation period. This means that we can calibrate with some new methods and success criteria capturing new data characteristics such as interannual data variability!\n", + "\n", + "A new calibration method has been introduced in the OGGM that requires annual mass balance observations, this is the `mb_calibration_to_rmsd` function. To calibrate, we use the Root Mean Square Deviation, to calculate the squared deviations between each observed value, year by year. \n", + "\n", + "We then minimise the squared deviations as our loss function and calibrate our mass balance parameters using multi-parameter optimisation. This is a difference from the other calibration methods, which calibrate one parameter per optimisation. \n", + "\n", + "Let's see an example use case!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We start by just performing a calibration with just the melt factor mass balance parameter. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "mb_calibration_to_rmsd(gdir_hef, ref_df=mbdf_in_situ['ref_mb'], overwrite_gdir=True)" ] }, {