{ "cells": [ { "cell_type": "markdown", "id": "788c3024-21e9-4e42-9575-f70eb6c5c12c", "metadata": {}, "source": [ "# 6 - Create supplementary data tables as xlsx files\n", "\n", "- creates **supplementary data table 3** about current and past volume changes (+ some regional characteristics from RGI6, such as regional glacier surface slope)\n", "- creates **supplementary data table 1** with steady-state regional glacier mass and response timescale estimates with uncertainties ...\n", "- tables are saved as .xlsx files for the manuscript and then some minor formatting adjustments were manually done\n" ] }, { "cell_type": "code", "execution_count": 1, "id": "56663cda-83e7-462b-a1cd-f02119c36f10", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "\n", "import xarray as xr\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 2, "id": "6f8f4361-219c-4b1f-b6e3-b0c84cb5f3b4", "metadata": {}, "outputs": [], "source": [ "DATE = 'Feb12_2024'\n", "pd_lowess_ch = pd.read_csv(f'../data/lowess_fit_rel_2020_101yr_avg_steady_state_{DATE}.csv', index_col=0)\n", "\n", "fill_option = 'repeat_last_101yrs' \n", "fit_to_median = False\n", "path_merged_runs_scaled_extend = f'../data/GMIP3_reg_glacier_model_data/glacierMIP3_{DATE}_models_all_rgi_regions_sum_scaled_extended_{fill_option}.nc'\n", "\n", "ds_reg_models = xr.open_dataset(path_merged_runs_scaled_extend)\n", "from help_functions import pal_models, model_order, d_reg_num_name, model_order_anonymous, compute_steady_state_yr\n", "hue_order_anonymous = []\n", "\n", "pal_models_l = []\n", "hue_order = []\n", "for m, p in zip(model_order, pal_models):\n", " if (m!='OGGM-VAS') and (m!='OGGM_v153'):\n", " hue_order.append(m)\n", "ds_reg_models = ds_reg_models.sel(model_author = hue_order)\n" ] }, { "cell_type": "code", "execution_count": 3, "id": "f6bf60ee-9c9b-4d77-b15f-21f63b47d96f", "metadata": {}, "outputs": [], "source": [ "df_reg_models_count_models = ds_reg_models.volume_m3.isel(simulation_year=0).to_dataframe()" ] }, { "cell_type": "code", "execution_count": 4, "id": "d9093e69-97f8-4f2a-8a4b-afc7ddf3a809", "metadata": {}, "outputs": [], "source": [ "df_reg_models_count_models = (df_reg_models_count_models.reset_index().dropna().groupby('rgi_reg').count()/80)['model_author']\n", "reg_w_only_glob_models = df_reg_models_count_models.loc[df_reg_models_count_models.values == 4].index\n", "reg_w_5_models = df_reg_models_count_models.loc[df_reg_models_count_models.values == 5].index\n", "reg_w_6_models = df_reg_models_count_models.loc[df_reg_models_count_models.values == 6].index\n" ] }, { "cell_type": "code", "execution_count": 5, "id": "a947f4e3-f6a2-4067-9bef-995976c68bab", "metadata": {}, "outputs": [], "source": [ "df = pd.read_csv(f'../data/3_shift_summary_region_characteristics{DATE}.csv', index_col=[0])\n" ] }, { "cell_type": "code", "execution_count": 6, "id": "3f6b5d55-3616-4fb1-80a0-a93c3815c195", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "All 1.000000\n", "01 0.118157\n", "02 0.005783\n", "03 0.180746\n", "04 0.052456\n", "05 0.097531\n", "06 0.023233\n", "07 0.047753\n", "08 0.001727\n", "09 0.094295\n", "10 0.000794\n", "11 0.000617\n", "12 0.000312\n", "13 0.020151\n", "14 0.018075\n", "15 0.004773\n", "16 0.000500\n", "17 0.031767\n", "18 0.000382\n", "19 0.300945\n", "Name: regional_volume_m3_2020_via_5yravg, dtype: float64" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "\n", "perc_rel_2020_glob_models = 100*df.loc[reg_w_only_glob_models].sum()['regional_volume_m3_2020_via_5yravg'] /df.loc['All','regional_volume_m3_2020_via_5yravg']\n", "perc_rel_2020_5_models = 100*df.loc[reg_w_5_models].sum()['regional_volume_m3_2020_via_5yravg'] /df.loc['All','regional_volume_m3_2020_via_5yravg']\n", "perc_rel_2020_6_models = 100*df.loc[reg_w_6_models].sum()['regional_volume_m3_2020_via_5yravg'] /df.loc['All','regional_volume_m3_2020_via_5yravg']\n", "\n", "\n", "plt.bar(4, perc_rel_2020_glob_models)\n", "reg_w_only_glob_models_str = f'{len(reg_w_only_glob_models)} regions:\\n'\n", "for r in reg_w_only_glob_models:\n", " reg_w_only_glob_models_str += f'RGI{r}\\n'\n", "plt.annotate(reg_w_only_glob_models_str, (3.8, perc_rel_2020_glob_models*0.5),\n", " verticalalignment = 'top')\n", "plt.text(4, perc_rel_2020_glob_models*0.95,f'{perc_rel_2020_glob_models.round(1)}%', horizontalalignment='center')\n", "\n", "\n", "\n", "plt.bar(5, perc_rel_2020_5_models)\n", "reg_w_5_models_str = f'{len(reg_w_5_models)} regions:\\n'\n", "for r in reg_w_5_models:\n", " reg_w_5_models_str += f'RGI{r}\\n'\n", "plt.annotate(reg_w_5_models_str, xytext=(4.8, perc_rel_2020_glob_models*0.5),\n", " xy=(5, perc_rel_2020_5_models),\n", " arrowprops={'arrowstyle' :'->'},\n", " verticalalignment = 'top')\n", "plt.text(5.1, perc_rel_2020_5_models*1.1,f'{perc_rel_2020_5_models.round(1)}%')\n", "\n", "plt.bar(6, perc_rel_2020_6_models)\n", "reg_w_6_models_str = f'{len(reg_w_6_models)} regions:\\n'\n", "for r in reg_w_6_models:\n", " reg_w_6_models_str += f'RGI{r}\\n'\n", "plt.annotate(reg_w_6_models_str, xytext=(5.8, perc_rel_2020_glob_models*0.5),\n", " xy=(6, perc_rel_2020_6_models),\n", " arrowprops={'arrowstyle' :'->'},\n", " verticalalignment = 'top')\n", "plt.text(6, perc_rel_2020_6_models*0.65,f'{perc_rel_2020_6_models.round(1)}%', horizontalalignment='center')\n", "\n", "plt.xticks([4,5,6])\n", "plt.xlabel('Glacier Models')\n", "plt.ylabel('Modelled glacier volume (% rel. to global ice in 2020)')\n", "\n", "df['regional_volume_m3_2020_via_5yravg']/df.loc['All','regional_volume_m3_2020_via_5yravg']" ] }, { "cell_type": "code", "execution_count": 7, "id": "f9511ce5-3361-45f5-ad9e-099aceeac261", "metadata": {}, "outputs": [], "source": [ "from oggm import utils\n", "\n", "df_rgi6g = pd.read_hdf(utils.file_downloader('https://cluster.klima.uni-bremen.de/~oggm/rgi/rgi62_stats.h5'))\n", "df_rgi6g = df_rgi6g.loc[df_rgi6g.Connect != 2]\n", "for rgi_reg in df_rgi6g.O1Region.unique():\n", " rgidf = df_rgi6g.loc[df_rgi6g.O1Region == rgi_reg]\n", " df.loc[rgi_reg, 'RGI v6.0 area (km²)'] = rgidf['Area'].sum()\n", "df.loc['All', 'RGI v6.0 area (km²)'] = df_rgi6g['Area'].sum()" ] }, { "cell_type": "code", "execution_count": 8, "id": "d188cd3b-b0b8-4933-82f6-85514b7e52f1", "metadata": {}, "outputs": [], "source": [ "rgi_regs_5000 = ['01', '03', '04', '05', '06','07', '09', '17','19']\n", "df['Simulation time'] = str(2000)\n", "df.loc['All', 'Simulation time'] = ''\n", "for r in rgi_regs_5000:\n", " df.loc[r,'Simulation time'] = str(5000)" ] }, { "cell_type": "code", "execution_count": 9, "id": "a7577e5f-2249-4f6d-9e36-a5f422a63632", "metadata": {}, "outputs": [], "source": [ "rgi_reg_fig_dict = {'All':'Global',\n", " '01':'Alaska (01)',\n", " '02':'W Canada & US (02)',\n", " '03':'Arctic Canada N (03)',\n", " '04':'Arctic Canada S (04)',\n", " '05':'Greenland Periphery (05)',\n", " '06':'Iceland (06)',\n", " '07':'Svalbard (07)',\n", " '08':'Scandinavia (08)',\n", " '09':'Russian Arctic (09)',\n", " '10':'North Asia (10)',\n", " '11':'Central Europe (11)',\n", " '12':'Caucasus & Middle East (12)',\n", " '13':'Central Asia (13)',\n", " '14':'South Asia W (14)', # West\n", " '15':'South Asia E (15)', # East\n", " '16':'Low Latitudes (16)',\n", " '17':'Southern Andes (17)',\n", " '18':'New Zealand (18)',\n", " '19':'Sub- & Antarctic Islands (19)'\n", " }\n" ] }, { "cell_type": "code", "execution_count": 10, "id": "c92104ad-6486-4878-beb5-fb7671013705", "metadata": {}, "outputs": [], "source": [ "cols_s4 = ['Simulation time', 'rgi_year_weighted_median','RGI v6.0 area (km²)','regional_volume_m3_itmix',\n", " 'regional_volume_m3_2020_via_5yravg', '20yr_regional_dvol_dt_2000_2019_vs_2000_vol_%',\n", " 'slope_weighted_area_avg']\n", "df_s4 = df[cols_s4].copy()\n", "df_s4.loc[:, 'slope_weighted_area_avg'] = df_s4['slope_weighted_area_avg'].round(1) # do not show NaN\n", "# let's also compute for all glaciers\n", "# df_s4.loc['All', 'slope_weighted_area_avg'] = '' # do not show NaN\n", "df_s4.loc[:,'RGI v6.0 area (km²)'] = df_s4['RGI v6.0 area (km²)'].values.round(0).astype(int)\n", "df_s4.loc[:,'rgi_year_weighted_median'] = df_s4['rgi_year_weighted_median'].values.round(0).astype(int)\n", "df_s4.loc[:,'regional_mass_gt_itmix'] = (df_s4['regional_volume_m3_itmix']*900 *1e-12).round(0).astype(int) # kg/m3 , kg -> Gt\n", "df_s4.loc[:,'regional_mass_gt_2020_via_5yravg'] = (df_s4['regional_volume_m3_2020_via_5yravg']*900 *1e-12).round(0).astype(int) # km3\n", "df_s4.loc[:,'20yr_regional_dvol_dt_2000_2019_vs_2000_vol_%'] = df_s4['20yr_regional_dvol_dt_2000_2019_vs_2000_vol_%'].round(1)\n", "rename_cols = {'rgi_year_weighted_median': r'Year$^a$ (glacier-area weighted median)',\n", " 'RGI v6.0 area (km²)':r'Glacier area$^a$ (km²)',\n", " 'slope_weighted_area_avg':r'Glacier surface slope$^a$ (glacier-area weighted average, °)',\n", " 'regional_mass_gt_itmix':r'Glacier mass$^a$ (Gt)',\n", " 'regional_mass_gt_2020_via_5yravg': r'Glacier mass in 2020$^b$ (Gt)',\n", " '20yr_regional_dvol_dt_2000_2019_vs_2000_vol_%': r'2000-2019 observed glacier mass loss$^b$ (rel. to 2000, %)',\n", " 'Simulation time':'Simulation time (years)'}\n", "df_s4 = df_s4.rename(columns=rename_cols)\n", "# Transpose the DataFrame\n", "df_s4 = df_s4.T\n", "for r in rgi_reg_fig_dict.keys():\n", " df_s4 = df_s4.rename(columns = {r:rgi_reg_fig_dict[r]})\n", "\n", "# Splitting long column names into multiple rows\n", "f = df_s4.index.str.replace('_','')\n", "df_s4.index = f # df_s4.index.str.split('_').map(tuple)\n", "df_s4 = df_s4.T" ] }, { "cell_type": "code", "execution_count": 11, "id": "a72fc44d-5c66-496d-a772-08260c0a171d", "metadata": {}, "outputs": [], "source": [ "df_s4_nice = df_s4.drop(columns=['regionalvolumem3itmix',\n", " 'regionalvolumem32020via5yravg']).sort_values(by=r'Glacier mass in 2020$^b$ (Gt)',\n", " ascending = False)" ] }, { "cell_type": "code", "execution_count": 12, "id": "39788e40-c81d-4137-898b-0f065f3086a9", "metadata": {}, "outputs": [], "source": [ "# make int columns\n", "df_s4_nice[['Year$^a$ (glacier-area weighted median)',\n", " 'Glacier area$^a$ (km²)']] = df_s4_nice[['Year$^a$ (glacier-area weighted median)',\n", " 'Glacier area$^a$ (km²)']].astype(int)" ] }, { "cell_type": "code", "execution_count": 13, "id": "2231c0bd-98b5-429c-b2d4-8f108ea0a7a9", "metadata": {}, "outputs": [], "source": [ "# resort the columns\n", "df_s4_nice = df_s4_nice[list(rename_cols.values())]" ] }, { "cell_type": "code", "execution_count": 14, "id": "6029f19a-b768-42a1-93bb-ef4e75471559", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Year$^a$ (glacier-area weighted median)Glacier area$^a$ (km²)Glacier surface slope$^a$ (glacier-area weighted average, °)Glacier mass$^a$ (Gt)Glacier mass in 2020$^b$ (Gt)2000-2019 observed glacier mass loss$^b$ (rel. to 2000, %)Simulation time (years)
Global200070573911.41423411374913.9
Sub- & Antarctic Islands (19)19861328673.641820413771.15000
Arctic Canada N (03)19991051119.625498248512.55000
Alaska (01)20108672513.917081162468.05000
Greenland Periphery (05)20018971710.314123134105.35000
Russian Arctic (09)20015159211.913176129651.75000
Arctic Canada S (04)20014088811.5775072127.25000
Svalbard (07)2008339598.8672365663.35000
Southern Andes (17)20002942914.9480643689.15000
Iceland (06)2000110606.7339331945.85000
Central Asia (13)20074930319.5294427716.82000
South Asia W (14)20013356822.3257924853.72000
W Canada & US (02)20041452418.394279516.82000
South Asia E (15)20021473421.179065618.22000
Scandinavia (08)2002294911.926923712.92000
North Asia (10)2011241018.412210919.62000
Central Europe (11)2003209220.91158529.72000
Low Latitudes (16)2000234125.3896922.32000
New Zealand (18)1978116225.6665320.82000
Caucasus & Middle East (12)2001130724.2574325.02000
\n", "
" ], "text/plain": [ " Year$^a$ (glacier-area weighted median) \\\n", "Global 2000 \n", "Sub- & Antarctic Islands (19) 1986 \n", "Arctic Canada N (03) 1999 \n", "Alaska (01) 2010 \n", "Greenland Periphery (05) 2001 \n", "Russian Arctic (09) 2001 \n", "Arctic Canada S (04) 2001 \n", "Svalbard (07) 2008 \n", "Southern Andes (17) 2000 \n", "Iceland (06) 2000 \n", "Central Asia (13) 2007 \n", "South Asia W (14) 2001 \n", "W Canada & US (02) 2004 \n", "South Asia E (15) 2002 \n", "Scandinavia (08) 2002 \n", "North Asia (10) 2011 \n", "Central Europe (11) 2003 \n", "Low Latitudes (16) 2000 \n", "New Zealand (18) 1978 \n", "Caucasus & Middle East (12) 2001 \n", "\n", " Glacier area$^a$ (km²) \\\n", "Global 705739 \n", "Sub- & Antarctic Islands (19) 132867 \n", "Arctic Canada N (03) 105111 \n", "Alaska (01) 86725 \n", "Greenland Periphery (05) 89717 \n", "Russian Arctic (09) 51592 \n", "Arctic Canada S (04) 40888 \n", "Svalbard (07) 33959 \n", "Southern Andes (17) 29429 \n", "Iceland (06) 11060 \n", "Central Asia (13) 49303 \n", "South Asia W (14) 33568 \n", "W Canada & US (02) 14524 \n", "South Asia E (15) 14734 \n", "Scandinavia (08) 2949 \n", "North Asia (10) 2410 \n", "Central Europe (11) 2092 \n", "Low Latitudes (16) 2341 \n", "New Zealand (18) 1162 \n", "Caucasus & Middle East (12) 1307 \n", "\n", " Glacier surface slope$^a$ (glacier-area weighted average, °) \\\n", "Global 11.4 \n", "Sub- & Antarctic Islands (19) 3.6 \n", "Arctic Canada N (03) 9.6 \n", "Alaska (01) 13.9 \n", "Greenland Periphery (05) 10.3 \n", "Russian Arctic (09) 11.9 \n", "Arctic Canada S (04) 11.5 \n", "Svalbard (07) 8.8 \n", "Southern Andes (17) 14.9 \n", "Iceland (06) 6.7 \n", "Central Asia (13) 19.5 \n", "South Asia W (14) 22.3 \n", "W Canada & US (02) 18.3 \n", "South Asia E (15) 21.1 \n", "Scandinavia (08) 11.9 \n", "North Asia (10) 18.4 \n", "Central Europe (11) 20.9 \n", "Low Latitudes (16) 25.3 \n", "New Zealand (18) 25.6 \n", "Caucasus & Middle East (12) 24.2 \n", "\n", " Glacier mass$^a$ (Gt) \\\n", "Global 142341 \n", "Sub- & Antarctic Islands (19) 41820 \n", "Arctic Canada N (03) 25498 \n", "Alaska (01) 17081 \n", "Greenland Periphery (05) 14123 \n", "Russian Arctic (09) 13176 \n", "Arctic Canada S (04) 7750 \n", "Svalbard (07) 6723 \n", "Southern Andes (17) 4806 \n", "Iceland (06) 3393 \n", "Central Asia (13) 2944 \n", "South Asia W (14) 2579 \n", "W Canada & US (02) 942 \n", "South Asia E (15) 790 \n", "Scandinavia (08) 269 \n", "North Asia (10) 122 \n", "Central Europe (11) 115 \n", "Low Latitudes (16) 89 \n", "New Zealand (18) 66 \n", "Caucasus & Middle East (12) 57 \n", "\n", " Glacier mass in 2020$^b$ (Gt) \\\n", "Global 137491 \n", "Sub- & Antarctic Islands (19) 41377 \n", "Arctic Canada N (03) 24851 \n", "Alaska (01) 16246 \n", "Greenland Periphery (05) 13410 \n", "Russian Arctic (09) 12965 \n", "Arctic Canada S (04) 7212 \n", "Svalbard (07) 6566 \n", "Southern Andes (17) 4368 \n", "Iceland (06) 3194 \n", "Central Asia (13) 2771 \n", "South Asia W (14) 2485 \n", "W Canada & US (02) 795 \n", "South Asia E (15) 656 \n", "Scandinavia (08) 237 \n", "North Asia (10) 109 \n", "Central Europe (11) 85 \n", "Low Latitudes (16) 69 \n", "New Zealand (18) 53 \n", "Caucasus & Middle East (12) 43 \n", "\n", " 2000-2019 observed glacier mass loss$^b$ (rel. to 2000, %) \\\n", "Global 3.9 \n", "Sub- & Antarctic Islands (19) 1.1 \n", "Arctic Canada N (03) 2.5 \n", "Alaska (01) 8.0 \n", "Greenland Periphery (05) 5.3 \n", "Russian Arctic (09) 1.7 \n", "Arctic Canada S (04) 7.2 \n", "Svalbard (07) 3.3 \n", "Southern Andes (17) 9.1 \n", "Iceland (06) 5.8 \n", "Central Asia (13) 6.8 \n", "South Asia W (14) 3.7 \n", "W Canada & US (02) 16.8 \n", "South Asia E (15) 18.2 \n", "Scandinavia (08) 12.9 \n", "North Asia (10) 19.6 \n", "Central Europe (11) 29.7 \n", "Low Latitudes (16) 22.3 \n", "New Zealand (18) 20.8 \n", "Caucasus & Middle East (12) 25.0 \n", "\n", " Simulation time (years) \n", "Global \n", "Sub- & Antarctic Islands (19) 5000 \n", "Arctic Canada N (03) 5000 \n", "Alaska (01) 5000 \n", "Greenland Periphery (05) 5000 \n", "Russian Arctic (09) 5000 \n", "Arctic Canada S (04) 5000 \n", "Svalbard (07) 5000 \n", "Southern Andes (17) 5000 \n", "Iceland (06) 5000 \n", "Central Asia (13) 2000 \n", "South Asia W (14) 2000 \n", "W Canada & US (02) 2000 \n", "South Asia E (15) 2000 \n", "Scandinavia (08) 2000 \n", "North Asia (10) 2000 \n", "Central Europe (11) 2000 \n", "Low Latitudes (16) 2000 \n", "New Zealand (18) 2000 \n", "Caucasus & Middle East (12) 2000 " ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_s4_nice" ] }, { "cell_type": "code", "execution_count": 15, "id": "c452d3b4-4e40-4f04-99bb-66d35b0742d6", "metadata": {}, "outputs": [], "source": [ "df_s4_nice.to_excel('figures/supplements/suppl_table_S3.xlsx')" ] }, { "cell_type": "code", "execution_count": 16, "id": "a9a9d9a0-0c73-4d5d-b2f4-803aa2651379", "metadata": {}, "outputs": [], "source": [ "# for the csv table we also add a RGI region column\n", "df_s4_nice_csv = df_s4_nice.copy()\n", "df_s4_nice_csv['rgi_reg'] = [str(s[-3:-1]) for s in df_s4_nice_csv.index.values]\n", "df_s4_nice_csv.loc[df_s4_nice_csv['rgi_reg']=='ba', 'rgi_reg'] = 'global'\n", "df_s4_nice_csv.to_csv('../data/table_S3.csv')" ] }, { "cell_type": "code", "execution_count": null, "id": "abe1496c-99c1-4d53-877d-37c337f72671", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "a9314e1d-3db6-4c8c-9a1e-7b9be9747bcf", "metadata": {}, "source": [ "### Steady-states estimates with uncertainties ... " ] }, { "cell_type": "code", "execution_count": 17, "id": "ac4dd824-9cc8-489b-905a-d67a07f333c6", "metadata": {}, "outputs": [], "source": [ "sim_year = 5000\n", "\n", "qs = [0.17,0.5,0.83]\n", "\n", "pd_fit_quantiles = pd_lowess_ch\n", "pd_fit_quantiles.index = pd_fit_quantiles.temp_ch.round(2)\n", "\n", "for j,rgi_reg in enumerate(pd_fit_quantiles.region.unique()):\n", " for q in [0.17, 0.83]: \n", " q = str(q)\n", " # just make sure to remove unphysical \"up and downs\"\n", " pd_fit_quantiles.loc[pd_fit_quantiles.region == rgi_reg, q] = np.minimum.accumulate(pd_fit_quantiles.loc[pd_fit_quantiles.region == rgi_reg][q].values)\n", "\n", "pd_steady_state = pd.DataFrame(index = pd_fit_quantiles.region.unique())\n", "for temp in [1.2, 1.5, 2.0, 2.7, 3.0, 4.0, 5.0]:\n", " for j,rgi_reg in enumerate(pd_fit_quantiles.region.unique()):\n", " s = pd_fit_quantiles.loc[pd_fit_quantiles.region == rgi_reg]\n", " s_t= s.loc[temp]\n", " v = f'{s_t[\"0.5\"].round(1)} [{s_t[\"0.17\"].round(0).astype(int)}–{s_t[\"0.83\"].round(0).astype(int)}]' \n", " pd_steady_state.loc[rgi_reg,f'{temp}°C steady state mass (% rel. to 2020)'] = v\n", "\n", "for j,rgi_reg in enumerate(pd_fit_quantiles.region.unique()):\n", " s = pd_fit_quantiles.loc[pd_fit_quantiles.region == rgi_reg]\n", " temp_s = ((s.loc[1.5][\"0.5\"] - s.loc[3.0][\"0.5\"])/1.5).round(1) \n", " pd_steady_state.loc[rgi_reg, r'Sensitivity of steady-state glacier mass to ΔT (% °C $^{-1}$, ΔT=1.5–3.0°C'] = temp_s \n", " #temperature _sensitivity steady _state volume (% / °C)'] = temp_s\n", "# Transpose the DataFrame\n", "pd_steady_state = pd_steady_state.T\n", "# Splitting long column names into multiple rows\n", "f = pd_steady_state.index.str.replace('_','')\n", "pd_steady_state.index = f#pd_steady_state.index.str.split('_').map(tuple)\n", "pd_steady_state = pd_steady_state.T\n", "\n" ] }, { "cell_type": "code", "execution_count": 18, "id": "55d8d715-3a96-4f98-a46d-1b989845b4c8", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
1.2°C steady state mass (% rel. to 2020)1.5°C steady state mass (% rel. to 2020)2.0°C steady state mass (% rel. to 2020)2.7°C steady state mass (% rel. to 2020)3.0°C steady state mass (% rel. to 2020)4.0°C steady state mass (% rel. to 2020)5.0°C steady state mass (% rel. to 2020)Sensitivity of steady-state glacier mass to ΔT (% °C $^{-1}$, ΔT=1.5–3.0°C
0162.6 [49–70]58.7 [42–69]41.6 [31–66]30.6 [21–56]29.3 [18–53]20.0 [10–44]12.7 [5–35]19.6
0225.9 [7–57]19.4 [6–39]6.5 [1–21]1.6 [1–8]1.2 [0–6]0.4 [0–2]0.2 [0–1]12.1
0367.5 [33–101]65.1 [30–96]53.1 [29–82]31.2 [17–63]28.9 [17–63]17.8 [5–53]7.2 [1–26]24.1
0414.8 [6–17]12.7 [4–17]5.1 [2–10]1.2 [0–4]0.6 [0–4]0.1 [0–2]0.0 [0–1]8.1
0541.8 [28–58]36.8 [25–56]32.3 [21–47]14.2 [7–30]10.8 [4–27]4.5 [1–13]2.3 [1–7]17.3
0639.4 [27–61]35.3 [20–60]23.4 [9–51]3.9 [1–18]2.9 [0–17]1.1 [0–8]0.3 [0–3]21.6
0753.8 [39–75]40.6 [27–66]17.8 [4–49]5.6 [0–37]4.7 [0–30]2.4 [0–21]1.3 [0–17]23.9
0834.5 [15–76]18.2 [7–49]0.4 [0–17]0.0 [0–0]0.0 [0–0]0.0 [0–0]0.0 [0–0]12.1
0935.4 [20–54]24.8 [11–43]11.9 [1–28]0.6 [0–14]0.0 [0–10]0.0 [0–6]0.0 [0–5]16.6
1044.2 [28–54]30.5 [21–42]13.9 [9–21]7.2 [5–11]5.8 [4–9]2.3 [2–4]0.8 [0–2]16.4
1143.8 [39–48]35.0 [25–44]13.8 [9–21]7.0 [5–10]4.9 [3–7]1.2 [1–2]0.5 [0–1]20.1
1277.3 [65–85]55.3 [44–82]40.7 [28–57]18.4 [13–32]13.5 [10–24]5.1 [4–13]2.5 [1–9]27.8
1387.7 [68–97]65.5 [46–82]42.7 [27–66]23.3 [14–52]20.1 [11–48]8.5 [4–30]4.4 [2–21]30.2
1494.5 [70–100]82.9 [49–90]61.8 [33–76]40.8 [21–64]32.2 [16–60]19.6 [9–46]13.1 [6–38]33.8
1551.4 [37–82]37.5 [26–66]25.6 [15–44]15.7 [9–38]11.8 [7–32]7.3 [3–21]4.5 [2–15]17.1
1676.7 [63–108]53.7 [38–87]31.5 [22–53]13.5 [10–29]9.3 [7–19]3.6 [2–7]1.9 [1–4]29.7
1761.2 [43–79]55.3 [39–75]49.6 [27–71]36.1 [19–61]32.2 [16–55]21.4 [9–43]14.5 [6–32]15.4
1884.5 [61–98]76.4 [55–94]65.9 [45–86]38.9 [23–54]32.8 [20–48]17.7 [8–24]11.8 [4–16]29.1
1964.3 [48–121]56.3 [41–112]43.7 [30–96]33.4 [19–76]30.5 [15–69]22.6 [9–46]17.3 [6–32]17.2
All60.9 [45–85]52.9 [36–80]36.5 [24–57]24.4 [18–46]22.6 [15–40]14.4 [7–26]9.1 [4–18]20.2
\n", "
" ], "text/plain": [ " 1.2°C steady state mass (% rel. to 2020) \\\n", "01 62.6 [49–70] \n", "02 25.9 [7–57] \n", "03 67.5 [33–101] \n", "04 14.8 [6–17] \n", "05 41.8 [28–58] \n", "06 39.4 [27–61] \n", "07 53.8 [39–75] \n", "08 34.5 [15–76] \n", "09 35.4 [20–54] \n", "10 44.2 [28–54] \n", "11 43.8 [39–48] \n", "12 77.3 [65–85] \n", "13 87.7 [68–97] \n", "14 94.5 [70–100] \n", "15 51.4 [37–82] \n", "16 76.7 [63–108] \n", "17 61.2 [43–79] \n", "18 84.5 [61–98] \n", "19 64.3 [48–121] \n", "All 60.9 [45–85] \n", "\n", " 1.5°C steady state mass (% rel. to 2020) \\\n", "01 58.7 [42–69] \n", "02 19.4 [6–39] \n", "03 65.1 [30–96] \n", "04 12.7 [4–17] \n", "05 36.8 [25–56] \n", "06 35.3 [20–60] \n", "07 40.6 [27–66] \n", "08 18.2 [7–49] \n", "09 24.8 [11–43] \n", "10 30.5 [21–42] \n", "11 35.0 [25–44] \n", "12 55.3 [44–82] \n", "13 65.5 [46–82] \n", "14 82.9 [49–90] \n", "15 37.5 [26–66] \n", "16 53.7 [38–87] \n", "17 55.3 [39–75] \n", "18 76.4 [55–94] \n", "19 56.3 [41–112] \n", "All 52.9 [36–80] \n", "\n", " 2.0°C steady state mass (% rel. to 2020) \\\n", "01 41.6 [31–66] \n", "02 6.5 [1–21] \n", "03 53.1 [29–82] \n", "04 5.1 [2–10] \n", "05 32.3 [21–47] \n", "06 23.4 [9–51] \n", "07 17.8 [4–49] \n", "08 0.4 [0–17] \n", "09 11.9 [1–28] \n", "10 13.9 [9–21] \n", "11 13.8 [9–21] \n", "12 40.7 [28–57] \n", "13 42.7 [27–66] \n", "14 61.8 [33–76] \n", "15 25.6 [15–44] \n", "16 31.5 [22–53] \n", "17 49.6 [27–71] \n", "18 65.9 [45–86] \n", "19 43.7 [30–96] \n", "All 36.5 [24–57] \n", "\n", " 2.7°C steady state mass (% rel. to 2020) \\\n", "01 30.6 [21–56] \n", "02 1.6 [1–8] \n", "03 31.2 [17–63] \n", "04 1.2 [0–4] \n", "05 14.2 [7–30] \n", "06 3.9 [1–18] \n", "07 5.6 [0–37] \n", "08 0.0 [0–0] \n", "09 0.6 [0–14] \n", "10 7.2 [5–11] \n", "11 7.0 [5–10] \n", "12 18.4 [13–32] \n", "13 23.3 [14–52] \n", "14 40.8 [21–64] \n", "15 15.7 [9–38] \n", "16 13.5 [10–29] \n", "17 36.1 [19–61] \n", "18 38.9 [23–54] \n", "19 33.4 [19–76] \n", "All 24.4 [18–46] \n", "\n", " 3.0°C steady state mass (% rel. to 2020) \\\n", "01 29.3 [18–53] \n", "02 1.2 [0–6] \n", "03 28.9 [17–63] \n", "04 0.6 [0–4] \n", "05 10.8 [4–27] \n", "06 2.9 [0–17] \n", "07 4.7 [0–30] \n", "08 0.0 [0–0] \n", "09 0.0 [0–10] \n", "10 5.8 [4–9] \n", "11 4.9 [3–7] \n", "12 13.5 [10–24] \n", "13 20.1 [11–48] \n", "14 32.2 [16–60] \n", "15 11.8 [7–32] \n", "16 9.3 [7–19] \n", "17 32.2 [16–55] \n", "18 32.8 [20–48] \n", "19 30.5 [15–69] \n", "All 22.6 [15–40] \n", "\n", " 4.0°C steady state mass (% rel. to 2020) \\\n", "01 20.0 [10–44] \n", "02 0.4 [0–2] \n", "03 17.8 [5–53] \n", "04 0.1 [0–2] \n", "05 4.5 [1–13] \n", "06 1.1 [0–8] \n", "07 2.4 [0–21] \n", "08 0.0 [0–0] \n", "09 0.0 [0–6] \n", "10 2.3 [2–4] \n", "11 1.2 [1–2] \n", "12 5.1 [4–13] \n", "13 8.5 [4–30] \n", "14 19.6 [9–46] \n", "15 7.3 [3–21] \n", "16 3.6 [2–7] \n", "17 21.4 [9–43] \n", "18 17.7 [8–24] \n", "19 22.6 [9–46] \n", "All 14.4 [7–26] \n", "\n", " 5.0°C steady state mass (% rel. to 2020) \\\n", "01 12.7 [5–35] \n", "02 0.2 [0–1] \n", "03 7.2 [1–26] \n", "04 0.0 [0–1] \n", "05 2.3 [1–7] \n", "06 0.3 [0–3] \n", "07 1.3 [0–17] \n", "08 0.0 [0–0] \n", "09 0.0 [0–5] \n", "10 0.8 [0–2] \n", "11 0.5 [0–1] \n", "12 2.5 [1–9] \n", "13 4.4 [2–21] \n", "14 13.1 [6–38] \n", "15 4.5 [2–15] \n", "16 1.9 [1–4] \n", "17 14.5 [6–32] \n", "18 11.8 [4–16] \n", "19 17.3 [6–32] \n", "All 9.1 [4–18] \n", "\n", " Sensitivity of steady-state glacier mass to ΔT (% °C $^{-1}$, ΔT=1.5–3.0°C \n", "01 19.6 \n", "02 12.1 \n", "03 24.1 \n", "04 8.1 \n", "05 17.3 \n", "06 21.6 \n", "07 23.9 \n", "08 12.1 \n", "09 16.6 \n", "10 16.4 \n", "11 20.1 \n", "12 27.8 \n", "13 30.2 \n", "14 33.8 \n", "15 17.1 \n", "16 29.7 \n", "17 15.4 \n", "18 29.1 \n", "19 17.2 \n", "All 20.2 " ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd_steady_state" ] }, { "cell_type": "code", "execution_count": 19, "id": "7f6e6b6f-fb5d-4d2b-b2af-7b48b8976395", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.17 55.260334\n", "0.83 14.613485\n", "Name: 1.2, dtype: object" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "100-pd_fit_quantiles.loc[pd_fit_quantiles.region=='All'].loc[1.2][['0.17','0.83']]" ] }, { "cell_type": "code", "execution_count": 20, "id": "792b941d-167b-48f6-b688-4578025e7008", "metadata": {}, "outputs": [], "source": [ "df['gt_2020_via_5yravg'] = df['regional_volume_m3_2020_via_5yravg']*900/ (1e9*1e3)\n", "df['1e3_gt_2020_via_5yravg'] = df['regional_volume_m3_2020_via_5yravg']*900/ (1e9*1e3)/1e3\n" ] }, { "cell_type": "code", "execution_count": null, "id": "e6584cde-f8bf-46e8-90d2-0e2cf387667f", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "dcdc387b-a1ea-461c-9186-8a748b42c554", "metadata": {}, "source": [ "**Get the uncertainties for the sensitivities...**" ] }, { "cell_type": "code", "execution_count": 21, "id": "de0f8df5-19bf-426f-af90-0017095b9971", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "01: temp. range 1.5-3.0°C: 20[13.08–20.63], single values: [11.78 18.91 22.78 13.69]\n", "02: temp. range 1.5-3.0°C: 12[3.64–15.89], single values: [24.61 3.4 3.68 14.35 13.67]\n", "03: temp. range 1.5-3.0°C: 24[18.44–23.37], single values: [22.94 23.02 21.35 12.26]\n", "04: temp. range 1.5-3.0°C: 8[4.15–10.07], single values: [ 4.77 10.72 9.77 2.83]\n", "05: temp. range 1.5-3.0°C: 17[12.5–21.89], single values: [23.16 21.29 12.58 12.33]\n", "06: temp. range 1.5-3.0°C: 22[13.5–25.8], single values: [13.38 28.81 19.23 25.88 22.23 9.18]\n", "07: temp. range 1.5-3.0°C: 24[21.19–24.08], single values: [19.35 22.92 24.4 22.06]\n", "08: temp. range 1.5-3.0°C: 12[7.89–15.29], single values: [ 7.92 14.5 13.07 19.75 7.69]\n", "09: temp. range 1.5-3.0°C: 17[15.39–21.01], single values: [12.91 26.44 18.15 18.45]\n", "10: temp. range 1.5-3.0°C: 16[11.56–19.77], single values: [22.99 11.83 10.08 19.21 14.92]\n", "11: temp. range 1.5-3.0°C: 20[15.09–20.44], single values: [15. 20.07 22.03 20.45 19.73 12.8 ]\n", "12: temp. range 1.5-3.0°C: 28[23.41–27.09], single values: [26.13 26.95 23.99 24.88 20.12]\n", "13: temp. range 1.5-3.0°C: 30[22.41–32.45], single values: [22.4 32.49 36.43 19.07 25.32 23.01]\n", "14: temp. range 1.5-3.0°C: 34[19.87–35.62], single values: [19.87 35.91 35.65 16.25 23.69 20.13]\n", "15: temp. range 1.5-3.0°C: 17[13.83–21.47], single values: [24.3 13.83 14.23 20.31 21.49 12.15]\n", "16: temp. range 1.5-3.0°C: 30[21.07–37.33], single values: [46.36 29.57 35.73 18.98 21.44]\n", "17: temp. range 1.5-3.0°C: 15[12.69–16.48], single values: [12.49 12.79 12.99 18.74]\n", "18: temp. range 1.5-3.0°C: 29[26.67–29.43], single values: [31.28 28.55 27.68 27.48 22.05]\n", "19: temp. range 1.5-3.0°C: 17[13.95–25.11], single values: [13.56 28.55 23.5 14.14]\n", "All: temp. range 1.5-3.0°C: 20[15.53–24.21], single values: [16.28 27.57 22.63 13.92]\n" ] } ], "source": [ "pd_steady_state_table = pd.DataFrame(index = pd_fit_quantiles.region.unique())\n", "for temp in [1.2, 1.5, 2.0, 2.7, 3.0, 4.0, 5.0]:\n", " for j,rgi_reg in enumerate(pd_fit_quantiles.region.unique()):\n", " s = pd_fit_quantiles.loc[pd_fit_quantiles.region == rgi_reg]\n", " s_t= s.loc[temp]\n", " \n", " #num_digits = 1\n", " med = \"{}\".format((100-s_t[\"0.5\"]).round(0).astype(int))\n", " high = \"{}\".format((100-s_t[\"0.17\"]).round(0).astype(int))\n", " low = \"{}\".format((100-s_t[\"0.83\"]).round(0).astype(int))\n", " #med = \"{: >{}}\".format((100-s_t[\"0.5\"]).round(0).astype(int), num_digits)#.rjust(2)\n", " #high = \"{: >{}}\".format((100-s_t[\"0.17\"]).round(0).astype(int),num_digits)#.rjust(2) # losses -> invert percentiles\n", " #low = \"{: >{}}\".format((100-s_t[\"0.83\"]).round(0).astype(int),num_digits)#.rjust(3)\n", " \n", " # Adjust the width to be num_digits if a number is present, otherwise use a space\n", " #num_digits = 2\n", " #med = f'{med: >{num_digits}}' if med else f'{\"\": >{num_digits}}'\n", " #low = f'{low: >{num_digits}}' if low else f'{\"\": >{num_digits}}'\n", " #num_digits = 3\n", " #high = f'{high: >{num_digits}}' if high else f'{\"\": >{num_digits}}'\n", " v = f'{med} [{low}–{high}]' \n", " \n", " # we are not interested in 50%-range ...\n", " # {s_t[\"0.25\"].round(0).astype(int)}, {s_t[\"0.75\"].round(0).astype(int)},\n", " pd_steady_state_table.loc[rgi_reg,f'{temp}°C'] = v ### mass loss ... \n", "\n", "\n", " #v_loss = f'{med} [{low}, {high}]' \n", " #pd_steady_state_table.loc[rgi_reg,f'{temp}°C'] = v_loss # (% rel. to 2020)\n", "\n", "## now get the individual per-glacier model fits ...\n", "per_glac_path = '../data/lowess_fit_rel_2020_101yr_avg_steady_state_Feb12_2024_per_glac_model.csv'\n", "# old path...per_glac_model_lowess_fits_scripts/fitted_per_model_lowess_best_frac_shift_years_rel_2020_101yr_avg_period_lowess_added_current12deg_5000_Feb12_2024_ipcc_ar6.csv'\n", "pd_per_glac_model_fit = pd.read_csv(per_glac_path)\n", "\n", "for j,rgi_reg in enumerate(pd_fit_quantiles.region.unique()):\n", " s = pd_fit_quantiles.loc[pd_fit_quantiles.region == rgi_reg]\n", " _m = ((s.loc[1.5][\"0.5\"] - s.loc[3.0][\"0.5\"])/1.5)\n", " temp_s = _m.round(0).astype(int) \n", " _m = np.array([_m])\n", " # estimates from per-glacier-model fits \n", " _temp = 1.5\n", " pd_per_glac_model_fit_reg = pd_per_glac_model_fit.loc[pd_per_glac_model_fit.region == rgi_reg]\n", " pd_3_0 = pd_per_glac_model_fit_reg.loc[pd_per_glac_model_fit_reg.temp_ch.round(4)==_temp+1.5]\n", " pd_3_0 = pd_3_0.set_index('model_author')\n", " pd_1_5 = pd_per_glac_model_fit_reg.loc[pd_per_glac_model_fit_reg.temp_ch.round(4)==_temp]\n", " pd_1_5 = pd_1_5.set_index('model_author')\n", " _vals = ((pd_1_5['0.5'] - pd_3_0['0.5'])/1.5).values # % volume changes per 1°C change\n", " # append median from overall fit as well, and compute out of that a distribution to get the %-iles\n", " _l,_u = pd.Series(np.concatenate([_vals,_m])).quantile([0.17,0.83]).values\n", " #print(_vals, _m)\n", " print(f'{rgi_reg}: temp. range {_temp}-{_temp+1.5}°C: {temp_s}[{_l.round(2)}–{_u.round(2)}], single values: {_vals.round(2)}')\n", " _l = _l.round(0).astype(int)\n", " _u = _u.round(0).astype(int)\n", " # we want to have it in per 0.1°C\n", " pd_steady_state_table.loc[rgi_reg, 'Sensitivity to ΔT (ΔT=1.5–3.0°C)'] = f'{temp_s/10} [{_l/10}–{_u/10}]' \n", " #temperature _sensitivity steady _state volume (% / °C)'] = temp_s\n", "# Transpose the DataFrame\n", "pd_steady_state_table = pd_steady_state_table.T\n", "# Splitting long column names into multiple rows\n", "f = pd_steady_state_table.index.str.replace('_','')\n", "pd_steady_state_table.index = f#pd_steady_state.index.str.split('_').map(tuple)\n", "pd_steady_state_table = pd_steady_state_table.T\n", "\n", "\n", "pd_steady_state_table = pd_steady_state_table[:22].loc[['All', '01', '02', '03', '04', '05', '06',\n", " '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18','19']].copy()" ] }, { "cell_type": "markdown", "id": "feaee7bd-8d70-41d4-8986-1b9b3ea94e86", "metadata": {}, "source": [ "**Now, create the table with all the data**" ] }, { "cell_type": "code", "execution_count": 22, "id": "40d2d061-593a-4ae8-83ff-ea57eced3f05", "metadata": {}, "outputs": [], "source": [ "d_reg_num_name['19'] = 'Sub- & Antarctic Islands'" ] }, { "cell_type": "code", "execution_count": 23, "id": "92485991-9b31-4507-af0d-403bc8f66d53", "metadata": {}, "outputs": [], "source": [ "for r in pd_steady_state_table.index[1:]:\n", " pd_steady_state_table.loc[r, 'Region'] = d_reg_num_name[r] # we will not add the RGI reg id here\n", "pd_steady_state_table.loc['All', 'Region'] = 'Global'\n", "assert df.iloc[-1]['region'] == '19'\n", "df.index = pd_steady_state_table.index.values\n", "#arr = pd_lowess_ch.loc[pd_steady_state_table.index, 'resp_time_-80%_1_5_deg'].values\n", "#result = np.where(np.isnan(arr), np.nan, np.round(arr,0).astype(int))\n", "#result_str = np.where(np.isnan(result), 'nan', result.astype(str))\n", "#pd_steady_state_table['Response time scale (years)'] = result_str\n", "\n", "pd_steady_state_table['Mass 2020 (Gt)'] = df.loc[pd_steady_state_table.index,'gt_2020_via_5yravg'].values.round(0).astype(int)#.astype(str)\n", "pd_steady_state_table = pd_steady_state_table.set_index('Region')" ] }, { "cell_type": "code", "execution_count": 24, "id": "fbf4dd8e-5b4b-4f36-b683-50f3e7017cff", "metadata": {}, "outputs": [], "source": [ "_resp_time = pd.read_csv('../data/resp_time_shifted_for_deltaT_rgi_reg_roll_volume_21yravg.csv', index_col=[0])\n", "perc = 80\n", "d_temp = 0.2\n", "temp = 1.5 \n", "list_regs = ['All', \n", " '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19',\n", "'Global_mm_1.00',\n", "'Global_mm_0.85', 'Global_mm_var'] #'Global_mm_var_l' <- we do not use anymore a lowess fit for the ratio vs total volume estimeate... \n", "list_regs_names=['Global', 'Alaska', 'W Canada & US', 'Arctic Canada N',\n", " 'Arctic Canada S', 'Greenland Periphery', 'Iceland',\n", " 'Svalbard & Jan Mayen', 'Scandinavia', 'Russian Arctic',\n", " 'North Asia', 'Central Europe', 'Caucasus & Middle East',\n", " 'Central Asia', 'South Asia W', 'South Asia E',\n", " 'Low Latitudes', 'Southern Andes', 'New Zealand',\n", " 'Sub- & Antarctic Islands', 'Global_mm_1.00',\n", " 'Global_mm_0.85', 'Global_mm_var']\n", "\n", "list_regs_dict = {}\n", "for r,n in zip(list_regs,list_regs_names):\n", " list_regs_dict[r] = n\n", "for j,rgi_reg in enumerate(_resp_time.rgi_reg.unique()):\n", " _resp_time_r = _resp_time.loc[_resp_time.rgi_reg==rgi_reg]\n", " #color = cmap(scaler.transform(np.array(temp).reshape(-1,1))).squeeze()\n", " _resp_time_r_temp = _resp_time_r.loc[(_resp_time_r.temp_ch_ipcc>=temp-d_temp) & (_resp_time_r.temp_ch_ipcc<=temp+d_temp)]\n", " _resp_time_r_temp_sel = _resp_time_r_temp[[f'resp_time_-{perc}%']].quantile([0.17,0.5,0.83]).astype(int)\n", " if rgi_reg != 'All':\n", " _r = rgi_reg[-2:]\n", " else:\n", " _r = rgi_reg\n", " pd_steady_state_table.loc[list_regs_dict[_r], 'Response timescale (years)'] = f'{_resp_time_r_temp_sel.loc[0.5].values.squeeze()} [{_resp_time_r_temp_sel.loc[0.17].values.squeeze()}–{_resp_time_r_temp_sel.loc[0.83].values.squeeze()}]'\n", " \n", "\n", "# Define a function to format the rows\n", "def format_row(response):\n", " # Extract the response numbers\n", " main_value, range_values = response.split(' [')\n", " lower_value, upper_value = range_values[:-1].split(', ')\n", " \n", " # Format the components\n", " #region_formatted = f'{region:<40}'\n", " main_value_formatted = f'{main_value:>4}'\n", " lower_value_formatted = f'{lower_value:>3}'\n", " upper_value_formatted = f'{upper_value:>4}'\n", " \n", " return f'{main_value_formatted} [{lower_value_formatted}–{upper_value_formatted}]'\n", "\n", "## TRIED to do that, but didn't work well, instead am doing it manually...\n", "# Apply the formatting\n", "#formatted_data = [format_row(row['Response timescale (years)']) for _,row in pd_steady_state_table.iloc[5:].reset_index().iterrows()]\n", "\n", "#for _,row in pd_steady_state_table.reset_index().iterrows(): #.iloc[5:]\n", "# pd_steady_state_table.loc[row.Region, 'Response timescale (years)'] = format_row(row['Response timescale (years)'])\n", "\n", "# Create a new DataFrame with the formatted strings\n", "#ormatted_df = pd.DataFrame({'Formatted Response': formatted_data})\n", "\n", "# Print the new DataFrame\n", "#print(formatted_df)" ] }, { "cell_type": "code", "execution_count": 25, "id": "ed6731cd-d64e-487d-a7aa-fc37fad8b2c6", "metadata": {}, "outputs": [], "source": [ "pd_steady_state_table['unit'] = '%' ### need to say that in the caption ... (rel. to 2020)\n", "pd_steady_state_table['unit2'] = '% per 0.1°C'\n", "\n", "pd_steady_state_table.loc['Global_mm_0.85'] = np.NaN\n", "pd_steady_state_table.loc['Global_mm_0.85','Mass 2020 (Gt)'] = pd_steady_state_table.loc['Global','Mass 2020 (Gt)'].astype(int)\n", "\n", "pd_steady_state_table.loc['Global_mm_1.00'] = np.NaN\n", "pd_steady_state_table.loc['Global_mm_1.00','Mass 2020 (Gt)'] = pd_steady_state_table.loc['Global','Mass 2020 (Gt)'].astype(int)\n", "\n", "pd_steady_state_table.loc['Global_mm_var'] = np.NaN\n", "pd_steady_state_table.loc['Global_mm_var','Mass 2020 (Gt)'] = pd_steady_state_table.loc['Global','Mass 2020 (Gt)'].astype(int)\n", "pd_steady_state_table.loc['Global_mm_var_l'] = np.NaN\n", "pd_steady_state_table.loc['Global_mm_var_l','Mass 2020 (Gt)'] = pd_steady_state_table.loc['Global','Mass 2020 (Gt)'].astype(int)\n", "pd_steady_state_table['Mass 2020 (Gt)'] = pd_steady_state_table['Mass 2020 (Gt)'].astype(int)\n", "pd_steady_state_table = pd_steady_state_table.sort_values(by='Mass 2020 (Gt)', ascending=False)\n", "\n", "pd_steady_state_table.loc['Global_mm_0.85','unit'] = 'mm SLE'\n", "pd_steady_state_table.loc['Global_mm_0.85','unit2'] = 'mm SLE per 0.1°C'\n", "pd_steady_state_table.loc['Global_mm_1.00','unit'] = 'mm SLE'\n", "pd_steady_state_table.loc['Global_mm_1.00','unit2'] = 'mm SLE per 0.1°C'\n", "pd_steady_state_table.loc['Global_mm_var','unit'] = 'mm SLE'\n", "pd_steady_state_table.loc['Global_mm_var','unit2'] = 'mm SLE per 0.1°C'\n", "\n", "pd_steady_state_table.loc['Global_mm_var_l','unit'] = 'mm SLE'\n", "pd_steady_state_table.loc['Global_mm_var_l','unit2'] = 'mm SLE per 0.1°C'" ] }, { "cell_type": "markdown", "id": "654f1cd4-db92-46fd-9369-3cdb38aa1869", "metadata": {}, "source": [ "$\\Delta M_{asl} = M_{2020}\\cdot ratio_{M,2020} - M_{ss}\\cdot ratio_{M,ss}$\n", "\n", "\n", "$SLE(mm) = 1000\\cdot \\frac{\\Delta M_{asl}}{\\rho_{ocean}}\\cdot A_{ocean}$" ] }, { "cell_type": "code", "execution_count": 26, "id": "f200bf51-e113-40bc-a4d9-e349cbb04c27", "metadata": {}, "outputs": [], "source": [ "m3_to_gt = 900 * 1e-12# m3 -> Gt\n", "\n", "import json\n", "\n", "# Open and read the JSON file\n", "### fit done in 5_conversion_to_SLR...ipynb using OGGM data ...\n", "# this relations shipt is only available at the OGGM cluster under \n", "# https://cluster.klima.uni-bremen.de/~lschuster/GlacierMIP3/0_pre_post_processing/_intermediate_data/linear_fit_above_sea_level_fraction_vs_global_glacier_mass_gt_variables.json\n", "# it just includes this data:\n", "#data= {'slope_unfilled': -7.622083219875667e-07,\n", "# 'intercept_unfilled': 0.9540695779131954}\n", "with open('../0_pre_post_processing/_intermediate_data/linear_fit_above_sea_level_fraction_vs_global_glacier_mass_gt_variables.json', 'r') as json_file:\n", " data = json.load(json_file)\n", "\n", "# Extract variables\n", "slope_unfilled_m3 = data['slope_unfilled'] * m3_to_gt # because it is a slope of a fraction/Mass Gt need to multiply by m3_to_gt\n", "intercept_unfilled = data['intercept_unfilled'] # this is just the fraction, no conversion necessary\n", "np.testing.assert_allclose(data['slope_unfilled'], -7.622083219875667e-07, rtol=1e-5)\n", "np.testing.assert_allclose(data['intercept_unfilled'], 0.9540695779131954, rtol=1e-5) ### that means the fraction/ratio is maximum 0.95" ] }, { "cell_type": "code", "execution_count": 27, "id": "a51c17e3-085f-474f-90f9-30da624bd36a", "metadata": {}, "outputs": [], "source": [ "\n", "def convert_rel_ice_2020_mm_slr(perc, frac = 0.85):\n", " pd_vol_glob_2020_m3 = df['regional_volume_m3_2020_via_5yravg']['All']\n", " #need to compute the volume at steady-state \n", " vol_ss = perc/100 * pd_vol_glob_2020_m3\n", "\n", " ### fit done in 5_conversion_to_SLR..... using OGGM data ...\n", " if frac=='variable':\n", " ratio = slope_unfilled_m3*vol_ss + intercept_unfilled \n", " if ratio <0.7:\n", " ratio = 0.7\n", " vol_asl_ss = vol_ss*ratio\n", " print(ratio)\n", " \n", " ratio = slope_unfilled_m3*pd_vol_glob_2020_m3 + intercept_unfilled \n", " if ratio <0.7:\n", " ratio = 0.7\n", " pd_vol_asl_glob_2020_m3 = pd_vol_glob_2020_m3*ratio\n", " print(ratio)\n", " else:\n", " ratio = frac\n", " pd_vol_asl_glob_2020_m3 = pd_vol_glob_2020_m3*ratio\n", " vol_asl_ss = vol_ss*ratio\n", " \n", " # then compute volume difference in m3\n", " # we use the grounded ice formulation from Farinotti et al... \n", " vol_asl_diff = pd_vol_asl_glob_2020_m3 - vol_asl_ss\n", " \n", " # convert m3 into sea-level equivalent \n", " A_ocean = 3.625 * 10**8 * 1e6 #km2 -> m2 -> 1e6\n", " m_slr = (vol_asl_diff/A_ocean) *900/1028 # rhoice/rho_ocean\n", " mm_slr = m_slr * 1000\n", " \n", " return mm_slr.squeeze()" ] }, { "cell_type": "markdown", "id": "38b7a325-02a8-4de3-9e52-7b927debd95f", "metadata": {}, "source": [ "**if ratio increases when we have less remaining ice volume, then the resulting glacier volume is lower than when assuming a constant ratio!!!**" ] }, { "cell_type": "code", "execution_count": 28, "id": "2ccc3237-7e03-4ae8-a4ef-41b6bba5f2d1", "metadata": {}, "outputs": [], "source": [ "assert convert_rel_ice_2020_mm_slr(50, frac = 0.85) < convert_rel_ice_2020_mm_slr(50, frac = 1)\n", "assert convert_rel_ice_2020_mm_slr(50, frac = 0.85) > convert_rel_ice_2020_mm_slr(50, frac = 0.8)" ] }, { "cell_type": "markdown", "id": "f8d8f4fc-daea-44d2-a719-8cd19166e888", "metadata": {}, "source": [ "**ratio at 1.2°C (61% remaining) vs ratio at 4°C (86% lost)**" ] }, { "cell_type": "code", "execution_count": 29, "id": "415daa9b-b633-4de5-92c8-b31b084aa3a8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.8901436709697832\n", "0.8492730091535033\n" ] }, { "data": { "text/plain": [ "113" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "convert_rel_ice_2020_mm_slr(61, frac='variable').round(0).astype(int) " ] }, { "cell_type": "code", "execution_count": 30, "id": "f3c5d8a0-19cf-44f7-a475-d56ecbdfcebd", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.9393980582868384\n", "0.8492730091535033\n" ] }, { "data": { "text/plain": [ "265" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ " convert_rel_ice_2020_mm_slr(14, frac='variable').round(0).astype(int) " ] }, { "cell_type": "code", "execution_count": 31, "id": "0c36008a-d966-4bc8-9c31-3d3b83c96b73", "metadata": {}, "outputs": [], "source": [ "frac =1\n", "for temp in [1.2, 1.5, 2.0, 2.7, 3.0, 4.0, 5.0]:\n", "\n", " _s = pd_fit_quantiles.loc[temp]\n", " perc_med = _s.loc[_s.region=='All']['0.5'].values\n", " perc_low = _s.loc[_s.region=='All']['0.17'].values\n", " perc_high = _s.loc[_s.region=='All']['0.83'].values\n", "\n", " mm_med = convert_rel_ice_2020_mm_slr(perc_med, frac=frac)\n", " mm_med_r = mm_med.round(0).astype(int) \n", " mm_high = convert_rel_ice_2020_mm_slr(perc_low, frac=frac) # high --> low\n", " mm_high_r = mm_high.round(0).astype(int)\n", " mm_low = convert_rel_ice_2020_mm_slr(perc_high, frac=frac).round(0).astype(int) \n", " mm_low_r = mm_low.round(0).astype(int)\n", " \n", " pd_steady_state_table.loc['Global_mm_1.00', f'{temp}°C'] = f'{mm_med_r} [{mm_low_r}–{mm_high_r}]'\n", "\n", " if temp == 1.5:\n", " mm_med_15 = mm_med\n", " #mm_high_15 = mm_high\n", " #mm_low_15 = mm_low\n", " elif temp == 3.0:\n", " mm_med_30 = mm_med\n", " #mm_high_30 = mm_high\n", " #mm_low_30 = mm_low\n", "\n", "mm_sens_med = ((mm_med_30 - mm_med_15)/1.5).round(0).astype(int)\n", "\n", "# compute quantile from per-glacier model fits \n", "# here we only have frac = 1\n", "_vals1 = (convert_rel_ice_2020_mm_slr(pd_3_0['0.5'], frac=1) - convert_rel_ice_2020_mm_slr(pd_1_5['0.5'], frac=1)).values/1.5\n", "sens_1_83 = np.quantile(np.concatenate([_vals1, np.array([mm_sens_med])]), 0.83)\n", "sens_1_17 = np.quantile(np.concatenate([_vals1, np.array([mm_sens_med])]), 0.17)\n", "\n", "mm_sens_83 = np.max([sens_1_83,sens_1_17]).round(0).astype(int)\n", "mm_sens_17 = np.min([sens_1_83,sens_1_17,]).round(0).astype(int)\n", "#mm_sens_high = ((mm_high_30 - mm_high_15)/1.5).round(0).astype(int)\n", "#mm_sens_low = ((mm_low_30 - mm_low_15)/1.5).round(0).astype(int)\n", "## mm per 0.1°C\n", "pd_steady_state_table.loc['Global_mm_1.00', 'Sensitivity to ΔT (ΔT=1.5–3.0°C)'] = f'{mm_sens_med/10} [{mm_sens_17/10}–{mm_sens_83/10}]'" ] }, { "cell_type": "code", "execution_count": 32, "id": "50d38617-82a4-46e2-8d46-a73ff52b9216", "metadata": {}, "outputs": [], "source": [ "#pd_steady_state_table" ] }, { "cell_type": "code", "execution_count": 33, "id": "48ee3016-295d-4374-ac3c-4c0d2368705e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0.89029792]\n", "0.8492730091535033\n", "[0.89861303]\n", "0.8492730091535033\n", "[0.91577288]\n", "0.8492730091535033\n", "[0.92851221]\n", "0.8492730091535033\n", "[0.93039826]\n", "0.8492730091535033\n", "[0.93893673]\n", "0.8492730091535033\n", "[0.94455727]\n", "0.8492730091535033\n" ] } ], "source": [ "rgi_reg = 'All'\n", "_temp = 1.5\n", "pd_per_glac_model_fit_reg = pd_per_glac_model_fit.loc[pd_per_glac_model_fit.region == rgi_reg]\n", "pd_3_0 = pd_per_glac_model_fit_reg.loc[pd_per_glac_model_fit_reg.temp_ch.round(4)==_temp+1.5]\n", "pd_3_0 = pd_3_0.set_index('model_author')\n", "pd_1_5 = pd_per_glac_model_fit_reg.loc[pd_per_glac_model_fit_reg.temp_ch.round(4)==_temp]\n", "pd_1_5 = pd_1_5.set_index('model_author')\n", "\n", "frac =0.85\n", "for temp in [1.2, 1.5, 2.0, 2.7, 3.0, 4.0, 5.0]:\n", "\n", " _s = pd_fit_quantiles.loc[temp]\n", " perc_med = _s.loc[_s.region=='All']['0.5'].values\n", " perc_low = _s.loc[_s.region=='All']['0.17'].values\n", " perc_high = _s.loc[_s.region=='All']['0.83'].values\n", "\n", " mm_med = convert_rel_ice_2020_mm_slr(perc_med, frac=frac)\n", " mm_med_r = mm_med.round(1)#.astype(int) \n", " mm_high = convert_rel_ice_2020_mm_slr(perc_low, frac=frac) # high --> low\n", " mm_high_r = mm_high.round(1)#.astype(int)\n", " mm_low = convert_rel_ice_2020_mm_slr(perc_high, frac=frac).round(1)#.astype(int) \n", " mm_low_r = mm_low.round(1)#.astype(int)\n", " \n", " pd_steady_state_table.loc['Global_mm_0.85', f'{temp}°C'] = f'{mm_med_r} [{mm_low_r}–{mm_high_r}]'\n", "\n", " if temp == 1.5:\n", " mm_med_15 = mm_med\n", " #mm_high_15 = mm_high\n", " #mm_low_15 = mm_low\n", " elif temp == 3.0:\n", " mm_med_30 = mm_med\n", " #mm_high_30 = mm_high\n", " #mm_low_30 = mm_low\n", "\n", "mm_sens_med = ((mm_med_30 - mm_med_15)/15).round(1)#.astype(int)\n", "\n", "# compute quantile from per-glacier model fits \n", "_vals1 = (convert_rel_ice_2020_mm_slr(pd_3_0['0.5'], frac=1) - convert_rel_ice_2020_mm_slr(pd_1_5['0.5'], frac=1)).values/15\n", "sens_1_83 = np.quantile(np.concatenate([_vals1, np.array([mm_sens_med])]), 0.83)\n", "sens_1_17 = np.quantile(np.concatenate([_vals1, np.array([mm_sens_med])]), 0.17)\n", "\n", "_vals08 = (convert_rel_ice_2020_mm_slr(pd_3_0['0.5'], frac=0.8) - convert_rel_ice_2020_mm_slr(pd_1_5['0.5'], frac=0.8)).values/15\n", "sens_08_83 = np.quantile(np.concatenate([_vals08, np.array([mm_sens_med])]), 0.83)\n", "sens_08_17 = np.quantile(np.concatenate([_vals08, np.array([mm_sens_med])]), 0.17)\n", "mm_sens_83 = np.max([sens_1_83,sens_1_17, sens_08_83, sens_08_17]).round(1)#.astype(int)\n", "mm_sens_17 = np.min([sens_1_83,sens_1_17, sens_08_83, sens_08_17]).round(1)#.astype(int)\n", "#mm_sens_high = ((mm_high_30 - mm_high_15)/1.5).round(0).astype(int)\n", "#mm_sens_low = ((mm_low_30 - mm_low_15)/1.5).round(0).astype(int)\n", "pd_steady_state_table.loc['Global_mm_0.85', 'Sensitivity to ΔT (ΔT=1.5–3.0°C)'] = f'{mm_sens_med} [{mm_sens_17}–{mm_sens_83}]'\n", "\n", "\n", "frac = 'variable'\n", "for temp in [1.2, 1.5, 2.0, 2.7, 3.0, 4.0, 5.0]:\n", "\n", " _s = pd_fit_quantiles.loc[temp]\n", " perc_med = _s.loc[_s.region=='All']['0.5'].values\n", " perc_low = _s.loc[_s.region=='All']['0.17'].values\n", " perc_high = _s.loc[_s.region=='All']['0.83'].values\n", "\n", " \n", " mm_med = convert_rel_ice_2020_mm_slr(perc_med, frac=frac)\n", " mm_med_r = mm_med.round(0).astype(int) \n", " mm_high = convert_rel_ice_2020_mm_slr(perc_low, frac=1) # high --> low\n", " mm_high_r = mm_high.round(0).astype(int)\n", " mm_low = convert_rel_ice_2020_mm_slr(perc_high, frac=0.8).round(1) #0).astype(int) \n", " mm_low_r = mm_low.round(0).astype(int)\n", " \n", " pd_steady_state_table.loc['Global_mm_var', f'{temp}°C'] = f'{mm_med_r} [{mm_low_r}–{mm_high_r}]'\n", "\n", " if temp == 1.5:\n", " mm_med_15 = mm_med\n", " #mm_high_15 = mm_high\n", " #mm_low_15 = mm_low\n", " elif temp == 3.0:\n", " mm_med_30 = mm_med\n", " #mm_high_30 = mm_high\n", " #mm_low_30 = mm_low\n", "\n", "mm_sens_med = ((mm_med_30 - mm_med_15)/15).round(1)#.astype(int)\n", "#mm_sens_high = ((mm_high_30 - mm_high_15)/1.5).round(0).astype(int)\n", "#mm_sens_low = ((mm_low_30 - mm_low_15)/1.5).round(0).astype(int)\n", "\n", "pd_steady_state_table.loc['Global_mm_var', 'Sensitivity to ΔT (ΔT=1.5–3.0°C)'] = f'{mm_sens_med} [{mm_sens_17}–{mm_sens_83}]'\n" ] }, { "cell_type": "code", "execution_count": 34, "id": "c6740c6f-db0f-4b37-8506-7b4703034b01", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
1.2°C1.5°C2.0°C2.7°C3.0°C4.0°C5.0°CSensitivity to ΔT (ΔT=1.5–3.0°C)Mass 2020 (Gt)Response timescale (years)unitunit2
Region
Global39 [15–55]47 [20–64]63 [43–76]76 [54–82]77 [60–85]86 [74–93]91 [82–96]2.0 [1.6–2.4]137491463 [216–805]%% per 0.1°C
Global_mm_0.85122.8 [45.8–173.3]147.7 [62.5–201.3]199.0 [135.7–236.9]237.1 [169.4–256.4]242.8 [189.3–266.4]268.3 [231.2–290.4]285.1 [256.9–299.6]6.3 [4.6–8.9]137491NaNmm SLEmm SLE per 0.1°C
Global_mm_var113 [43–204]138 [59–237]190 [128–279]230 [159–302]236 [178–313]263 [218–342]282 [242–352]6.5 [4.6–8.9]137491NaNmm SLEmm SLE per 0.1°C
Global_mm_1.00144 [54–204]174 [74–237]234 [160–279]279 [199–302]286 [223–313]316 [272–342]335 [302–352]7.5 [5.7–8.9]137491NaNmm SLEmm SLE per 0.1°C
Global_mm_var_lNaNNaNNaNNaNNaNNaNNaNNaN137491NaNmm SLEmm SLE per 0.1°C
Sub- & Antarctic Islands36 [-21–52]44 [-12–59]56 [4–70]67 [24–81]70 [31–85]77 [54–91]83 [68–94]1.7 [1.4–2.5]41377828 [224–1322]%% per 0.1°C
Arctic Canada N33 [-1–67]35 [4–70]47 [18–71]69 [37–83]71 [37–83]82 [47–95]93 [74–99]2.4 [1.8–2.3]24851644 [356–735]%% per 0.1°C
Alaska37 [30–51]41 [31–58]58 [34–69]69 [44–79]71 [47–82]80 [56–90]87 [65–95]2.0 [1.3–2.1]16246104 [74–173]%% per 0.1°C
Greenland Periphery58 [42–72]63 [44–75]68 [53–79]86 [70–93]89 [73–96]95 [87–99]98 [93–99]1.7 [1.3–2.2]13410373 [260–656]%% per 0.1°C
Russian Arctic65 [46–80]75 [57–89]88 [72–99]99 [86–100]100 [90–100]100 [94–100]100 [95–100]1.7 [1.5–2.1]12965445 [321–902]%% per 0.1°C
Arctic Canada S85 [83–94]87 [83–96]95 [90–98]99 [96–100]99 [96–100]100 [98–100]100 [99–100]0.8 [0.4–1.0]7212241 [190–573]%% per 0.1°C
Svalbard & Jan Mayen46 [25–61]59 [34–73]82 [51–96]94 [63–100]95 [70–100]98 [79–100]99 [83–100]2.4 [2.1–2.4]6566318 [208–629]%% per 0.1°C
Southern Andes39 [21–57]45 [25–61]50 [29–73]64 [39–81]68 [45–84]79 [57–91]86 [68–94]1.5 [1.3–1.6]436886 [61–111]%% per 0.1°C
Iceland61 [39–73]65 [40–80]77 [49–91]96 [82–99]97 [83–100]99 [92–100]100 [97–100]2.2 [1.4–2.6]3194316 [207–640]%% per 0.1°C
Central Asia12 [3–32]35 [18–54]57 [34–73]77 [48–86]80 [52–89]91 [70–96]96 [79–98]3.0 [2.2–3.2]2771103 [72–138]%% per 0.1°C
South Asia W5 [0–30]17 [10–51]38 [24–67]59 [36–79]68 [40–84]80 [54–91]87 [62–94]3.4 [2.0–3.6]2485139 [100–175]%% per 0.1°C
W Canada & US74 [43–93]81 [61–94]93 [79–99]98 [92–99]99 [94–100]100 [98–100]100 [99–100]1.2 [0.4–1.6]79557 [44–109]%% per 0.1°C
South Asia E49 [18–63]63 [34–74]74 [56–85]84 [62–91]88 [68–93]93 [79–97]96 [85–98]1.7 [1.4–2.1]65647 [32–72]%% per 0.1°C
Scandinavia66 [24–85]82 [51–93]100 [83–100]100 [100–100]100 [100–100]100 [100–100]100 [100–100]1.2 [0.8–1.5]237166 [102–235]%% per 0.1°C
North Asia56 [46–72]70 [58–79]86 [79–91]93 [89–95]94 [91–96]98 [96–98]99 [98–100]1.6 [1.2–2.0]10947 [38–114]%% per 0.1°C
Central Europe56 [52–61]65 [56–75]86 [79–91]93 [90–95]95 [93–97]99 [98–99]100 [99–100]2.0 [1.5–2.0]8542 [29–64]%% per 0.1°C
Low Latitudes23 [-8–37]46 [13–62]68 [47–78]87 [71–90]91 [81–93]96 [93–98]98 [96–99]3.0 [2.1–3.7]6923 [14–30]%% per 0.1°C
New Zealand15 [2–39]24 [6–45]34 [14–55]61 [46–77]67 [52–80]82 [76–92]88 [84–96]2.9 [2.7–2.9]5336 [28–45]%% per 0.1°C
Caucasus & Middle East23 [15–35]45 [18–56]59 [43–72]82 [68–87]87 [76–90]95 [87–96]98 [91–99]2.8 [2.3–2.7]4330 [26–56]%% per 0.1°C
\n", "
" ], "text/plain": [ " 1.2°C 1.5°C \\\n", "Region \n", "Global 39 [15–55] 47 [20–64] \n", "Global_mm_0.85 122.8 [45.8–173.3] 147.7 [62.5–201.3] \n", "Global_mm_var 113 [43–204] 138 [59–237] \n", "Global_mm_1.00 144 [54–204] 174 [74–237] \n", "Global_mm_var_l NaN NaN \n", "Sub- & Antarctic Islands 36 [-21–52] 44 [-12–59] \n", "Arctic Canada N 33 [-1–67] 35 [4–70] \n", "Alaska 37 [30–51] 41 [31–58] \n", "Greenland Periphery 58 [42–72] 63 [44–75] \n", "Russian Arctic 65 [46–80] 75 [57–89] \n", "Arctic Canada S 85 [83–94] 87 [83–96] \n", "Svalbard & Jan Mayen 46 [25–61] 59 [34–73] \n", "Southern Andes 39 [21–57] 45 [25–61] \n", "Iceland 61 [39–73] 65 [40–80] \n", "Central Asia 12 [3–32] 35 [18–54] \n", "South Asia W 5 [0–30] 17 [10–51] \n", "W Canada & US 74 [43–93] 81 [61–94] \n", "South Asia E 49 [18–63] 63 [34–74] \n", "Scandinavia 66 [24–85] 82 [51–93] \n", "North Asia 56 [46–72] 70 [58–79] \n", "Central Europe 56 [52–61] 65 [56–75] \n", "Low Latitudes 23 [-8–37] 46 [13–62] \n", "New Zealand 15 [2–39] 24 [6–45] \n", "Caucasus & Middle East 23 [15–35] 45 [18–56] \n", "\n", " 2.0°C 2.7°C \\\n", "Region \n", "Global 63 [43–76] 76 [54–82] \n", "Global_mm_0.85 199.0 [135.7–236.9] 237.1 [169.4–256.4] \n", "Global_mm_var 190 [128–279] 230 [159–302] \n", "Global_mm_1.00 234 [160–279] 279 [199–302] \n", "Global_mm_var_l NaN NaN \n", "Sub- & Antarctic Islands 56 [4–70] 67 [24–81] \n", "Arctic Canada N 47 [18–71] 69 [37–83] \n", "Alaska 58 [34–69] 69 [44–79] \n", "Greenland Periphery 68 [53–79] 86 [70–93] \n", "Russian Arctic 88 [72–99] 99 [86–100] \n", "Arctic Canada S 95 [90–98] 99 [96–100] \n", "Svalbard & Jan Mayen 82 [51–96] 94 [63–100] \n", "Southern Andes 50 [29–73] 64 [39–81] \n", "Iceland 77 [49–91] 96 [82–99] \n", "Central Asia 57 [34–73] 77 [48–86] \n", "South Asia W 38 [24–67] 59 [36–79] \n", "W Canada & US 93 [79–99] 98 [92–99] \n", "South Asia E 74 [56–85] 84 [62–91] \n", "Scandinavia 100 [83–100] 100 [100–100] \n", "North Asia 86 [79–91] 93 [89–95] \n", "Central Europe 86 [79–91] 93 [90–95] \n", "Low Latitudes 68 [47–78] 87 [71–90] \n", "New Zealand 34 [14–55] 61 [46–77] \n", "Caucasus & Middle East 59 [43–72] 82 [68–87] \n", "\n", " 3.0°C 4.0°C \\\n", "Region \n", "Global 77 [60–85] 86 [74–93] \n", "Global_mm_0.85 242.8 [189.3–266.4] 268.3 [231.2–290.4] \n", "Global_mm_var 236 [178–313] 263 [218–342] \n", "Global_mm_1.00 286 [223–313] 316 [272–342] \n", "Global_mm_var_l NaN NaN \n", "Sub- & Antarctic Islands 70 [31–85] 77 [54–91] \n", "Arctic Canada N 71 [37–83] 82 [47–95] \n", "Alaska 71 [47–82] 80 [56–90] \n", "Greenland Periphery 89 [73–96] 95 [87–99] \n", "Russian Arctic 100 [90–100] 100 [94–100] \n", "Arctic Canada S 99 [96–100] 100 [98–100] \n", "Svalbard & Jan Mayen 95 [70–100] 98 [79–100] \n", "Southern Andes 68 [45–84] 79 [57–91] \n", "Iceland 97 [83–100] 99 [92–100] \n", "Central Asia 80 [52–89] 91 [70–96] \n", "South Asia W 68 [40–84] 80 [54–91] \n", "W Canada & US 99 [94–100] 100 [98–100] \n", "South Asia E 88 [68–93] 93 [79–97] \n", "Scandinavia 100 [100–100] 100 [100–100] \n", "North Asia 94 [91–96] 98 [96–98] \n", "Central Europe 95 [93–97] 99 [98–99] \n", "Low Latitudes 91 [81–93] 96 [93–98] \n", "New Zealand 67 [52–80] 82 [76–92] \n", "Caucasus & Middle East 87 [76–90] 95 [87–96] \n", "\n", " 5.0°C \\\n", "Region \n", "Global 91 [82–96] \n", "Global_mm_0.85 285.1 [256.9–299.6] \n", "Global_mm_var 282 [242–352] \n", "Global_mm_1.00 335 [302–352] \n", "Global_mm_var_l NaN \n", "Sub- & Antarctic Islands 83 [68–94] \n", "Arctic Canada N 93 [74–99] \n", "Alaska 87 [65–95] \n", "Greenland Periphery 98 [93–99] \n", "Russian Arctic 100 [95–100] \n", "Arctic Canada S 100 [99–100] \n", "Svalbard & Jan Mayen 99 [83–100] \n", "Southern Andes 86 [68–94] \n", "Iceland 100 [97–100] \n", "Central Asia 96 [79–98] \n", "South Asia W 87 [62–94] \n", "W Canada & US 100 [99–100] \n", "South Asia E 96 [85–98] \n", "Scandinavia 100 [100–100] \n", "North Asia 99 [98–100] \n", "Central Europe 100 [99–100] \n", "Low Latitudes 98 [96–99] \n", "New Zealand 88 [84–96] \n", "Caucasus & Middle East 98 [91–99] \n", "\n", " Sensitivity to ΔT (ΔT=1.5–3.0°C) Mass 2020 (Gt) \\\n", "Region \n", "Global 2.0 [1.6–2.4] 137491 \n", "Global_mm_0.85 6.3 [4.6–8.9] 137491 \n", "Global_mm_var 6.5 [4.6–8.9] 137491 \n", "Global_mm_1.00 7.5 [5.7–8.9] 137491 \n", "Global_mm_var_l NaN 137491 \n", "Sub- & Antarctic Islands 1.7 [1.4–2.5] 41377 \n", "Arctic Canada N 2.4 [1.8–2.3] 24851 \n", "Alaska 2.0 [1.3–2.1] 16246 \n", "Greenland Periphery 1.7 [1.3–2.2] 13410 \n", "Russian Arctic 1.7 [1.5–2.1] 12965 \n", "Arctic Canada S 0.8 [0.4–1.0] 7212 \n", "Svalbard & Jan Mayen 2.4 [2.1–2.4] 6566 \n", "Southern Andes 1.5 [1.3–1.6] 4368 \n", "Iceland 2.2 [1.4–2.6] 3194 \n", "Central Asia 3.0 [2.2–3.2] 2771 \n", "South Asia W 3.4 [2.0–3.6] 2485 \n", "W Canada & US 1.2 [0.4–1.6] 795 \n", "South Asia E 1.7 [1.4–2.1] 656 \n", "Scandinavia 1.2 [0.8–1.5] 237 \n", "North Asia 1.6 [1.2–2.0] 109 \n", "Central Europe 2.0 [1.5–2.0] 85 \n", "Low Latitudes 3.0 [2.1–3.7] 69 \n", "New Zealand 2.9 [2.7–2.9] 53 \n", "Caucasus & Middle East 2.8 [2.3–2.7] 43 \n", "\n", " Response timescale (years) unit unit2 \n", "Region \n", "Global 463 [216–805] % % per 0.1°C \n", "Global_mm_0.85 NaN mm SLE mm SLE per 0.1°C \n", "Global_mm_var NaN mm SLE mm SLE per 0.1°C \n", "Global_mm_1.00 NaN mm SLE mm SLE per 0.1°C \n", "Global_mm_var_l NaN mm SLE mm SLE per 0.1°C \n", "Sub- & Antarctic Islands 828 [224–1322] % % per 0.1°C \n", "Arctic Canada N 644 [356–735] % % per 0.1°C \n", "Alaska 104 [74–173] % % per 0.1°C \n", "Greenland Periphery 373 [260–656] % % per 0.1°C \n", "Russian Arctic 445 [321–902] % % per 0.1°C \n", "Arctic Canada S 241 [190–573] % % per 0.1°C \n", "Svalbard & Jan Mayen 318 [208–629] % % per 0.1°C \n", "Southern Andes 86 [61–111] % % per 0.1°C \n", "Iceland 316 [207–640] % % per 0.1°C \n", "Central Asia 103 [72–138] % % per 0.1°C \n", "South Asia W 139 [100–175] % % per 0.1°C \n", "W Canada & US 57 [44–109] % % per 0.1°C \n", "South Asia E 47 [32–72] % % per 0.1°C \n", "Scandinavia 166 [102–235] % % per 0.1°C \n", "North Asia 47 [38–114] % % per 0.1°C \n", "Central Europe 42 [29–64] % % per 0.1°C \n", "Low Latitudes 23 [14–30] % % per 0.1°C \n", "New Zealand 36 [28–45] % % per 0.1°C \n", "Caucasus & Middle East 30 [26–56] % % per 0.1°C " ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd_steady_state_table" ] }, { "cell_type": "code", "execution_count": 36, "id": "47291ec6-5552-4cfa-aca9-77a2103a2a7b", "metadata": {}, "outputs": [], "source": [ "pd_steady_state_table_sel = pd_steady_state_table[['Mass 2020 (Gt)','unit', '1.2°C', '1.5°C', '2.0°C', '2.7°C', '3.0°C',\n", " '4.0°C', 'unit2', 'Sensitivity to ΔT (ΔT=1.5–3.0°C)']]\n", " \n", "# Create a MultiIndex for the columns\n", "g1 = 'Committed glacier mass loss at ΔT (rel. to 2020)'\n", "g2 = 'Sensitivity to ΔT (rel. to 2020)'\n", "columns = pd.MultiIndex.from_tuples([\n", " ('Mass 2020', '(Gt)'),\n", " (g1, 'unit'),\n", " (g1, '1.2°C'),\n", " (g1, '1.5°C'),\n", " (g1, '2.0°C'),\n", " (g1, '2.7°C'),\n", " (g1, '3.0°C'),\n", " (g1, '4.0°C'),\n", " (g2, 'unit'),\n", " (g2, '1.5–3.0°C')\n", "])\n", "pd_steady_state_table_sel.columns = columns\n", "# Add spaces between columns of different groups\n", "#pd_steady_state_table_sel.columns = pd.MultiIndex.from_tuples([\n", "# (f'{col[0]} ', f'{col[1]}') for col in pd_steady_state_table_sel.columns\n", "#])\n", "#empty_col = pd.DataFrame(columns=[''])\n", "#pd_steady_state_table_sel = pd.concat([pd_steady_state_table_sel.iloc[:, :2], empty_col, pd_steady_state_table_sel.iloc[:, 2:]], axis=1, ignore_index=True)\n" ] }, { "cell_type": "code", "execution_count": 37, "id": "e40fa2fb-cdec-424c-a98c-1a5eb6015d20", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Mass 2020Committed glacier mass loss at ΔT (rel. to 2020)Sensitivity to ΔT (rel. to 2020)
(Gt)unit1.2°C1.5°C2.0°C2.7°C3.0°C4.0°Cunit1.5–3.0°C
Region
Global137491%39 [15–55]47 [20–64]63 [43–76]76 [54–82]77 [60–85]86 [74–93]% per 0.1°C2.0 [1.6–2.4]
Global_mm_0.85137491mm SLE122.8 [45.8–173.3]147.7 [62.5–201.3]199.0 [135.7–236.9]237.1 [169.4–256.4]242.8 [189.3–266.4]268.3 [231.2–290.4]mm SLE per 0.1°C6.3 [4.6–8.9]
Global_mm_var137491mm SLE113 [43–204]138 [59–237]190 [128–279]230 [159–302]236 [178–313]263 [218–342]mm SLE per 0.1°C6.5 [4.6–8.9]
Global_mm_1.00137491mm SLE144 [54–204]174 [74–237]234 [160–279]279 [199–302]286 [223–313]316 [272–342]mm SLE per 0.1°C7.5 [5.7–8.9]
Global_mm_var_l137491mm SLENaNNaNNaNNaNNaNNaNmm SLE per 0.1°CNaN
Sub- & Antarctic Islands41377%36 [-21–52]44 [-12–59]56 [4–70]67 [24–81]70 [31–85]77 [54–91]% per 0.1°C1.7 [1.4–2.5]
Arctic Canada N24851%33 [-1–67]35 [4–70]47 [18–71]69 [37–83]71 [37–83]82 [47–95]% per 0.1°C2.4 [1.8–2.3]
Alaska16246%37 [30–51]41 [31–58]58 [34–69]69 [44–79]71 [47–82]80 [56–90]% per 0.1°C2.0 [1.3–2.1]
Greenland Periphery13410%58 [42–72]63 [44–75]68 [53–79]86 [70–93]89 [73–96]95 [87–99]% per 0.1°C1.7 [1.3–2.2]
Russian Arctic12965%65 [46–80]75 [57–89]88 [72–99]99 [86–100]100 [90–100]100 [94–100]% per 0.1°C1.7 [1.5–2.1]
Arctic Canada S7212%85 [83–94]87 [83–96]95 [90–98]99 [96–100]99 [96–100]100 [98–100]% per 0.1°C0.8 [0.4–1.0]
Svalbard & Jan Mayen6566%46 [25–61]59 [34–73]82 [51–96]94 [63–100]95 [70–100]98 [79–100]% per 0.1°C2.4 [2.1–2.4]
Southern Andes4368%39 [21–57]45 [25–61]50 [29–73]64 [39–81]68 [45–84]79 [57–91]% per 0.1°C1.5 [1.3–1.6]
Iceland3194%61 [39–73]65 [40–80]77 [49–91]96 [82–99]97 [83–100]99 [92–100]% per 0.1°C2.2 [1.4–2.6]
Central Asia2771%12 [3–32]35 [18–54]57 [34–73]77 [48–86]80 [52–89]91 [70–96]% per 0.1°C3.0 [2.2–3.2]
South Asia W2485%5 [0–30]17 [10–51]38 [24–67]59 [36–79]68 [40–84]80 [54–91]% per 0.1°C3.4 [2.0–3.6]
W Canada & US795%74 [43–93]81 [61–94]93 [79–99]98 [92–99]99 [94–100]100 [98–100]% per 0.1°C1.2 [0.4–1.6]
South Asia E656%49 [18–63]63 [34–74]74 [56–85]84 [62–91]88 [68–93]93 [79–97]% per 0.1°C1.7 [1.4–2.1]
Scandinavia237%66 [24–85]82 [51–93]100 [83–100]100 [100–100]100 [100–100]100 [100–100]% per 0.1°C1.2 [0.8–1.5]
North Asia109%56 [46–72]70 [58–79]86 [79–91]93 [89–95]94 [91–96]98 [96–98]% per 0.1°C1.6 [1.2–2.0]
Central Europe85%56 [52–61]65 [56–75]86 [79–91]93 [90–95]95 [93–97]99 [98–99]% per 0.1°C2.0 [1.5–2.0]
Low Latitudes69%23 [-8–37]46 [13–62]68 [47–78]87 [71–90]91 [81–93]96 [93–98]% per 0.1°C3.0 [2.1–3.7]
New Zealand53%15 [2–39]24 [6–45]34 [14–55]61 [46–77]67 [52–80]82 [76–92]% per 0.1°C2.9 [2.7–2.9]
Caucasus & Middle East43%23 [15–35]45 [18–56]59 [43–72]82 [68–87]87 [76–90]95 [87–96]% per 0.1°C2.8 [2.3–2.7]
\n", "
" ], "text/plain": [ " Mass 2020 \\\n", " (Gt) \n", "Region \n", "Global 137491 \n", "Global_mm_0.85 137491 \n", "Global_mm_var 137491 \n", "Global_mm_1.00 137491 \n", "Global_mm_var_l 137491 \n", "Sub- & Antarctic Islands 41377 \n", "Arctic Canada N 24851 \n", "Alaska 16246 \n", "Greenland Periphery 13410 \n", "Russian Arctic 12965 \n", "Arctic Canada S 7212 \n", "Svalbard & Jan Mayen 6566 \n", "Southern Andes 4368 \n", "Iceland 3194 \n", "Central Asia 2771 \n", "South Asia W 2485 \n", "W Canada & US 795 \n", "South Asia E 656 \n", "Scandinavia 237 \n", "North Asia 109 \n", "Central Europe 85 \n", "Low Latitudes 69 \n", "New Zealand 53 \n", "Caucasus & Middle East 43 \n", "\n", " Committed glacier mass loss at ΔT (rel. to 2020) \\\n", " unit \n", "Region \n", "Global % \n", "Global_mm_0.85 mm SLE \n", "Global_mm_var mm SLE \n", "Global_mm_1.00 mm SLE \n", "Global_mm_var_l mm SLE \n", "Sub- & Antarctic Islands % \n", "Arctic Canada N % \n", "Alaska % \n", "Greenland Periphery % \n", "Russian Arctic % \n", "Arctic Canada S % \n", "Svalbard & Jan Mayen % \n", "Southern Andes % \n", "Iceland % \n", "Central Asia % \n", "South Asia W % \n", "W Canada & US % \n", "South Asia E % \n", "Scandinavia % \n", "North Asia % \n", "Central Europe % \n", "Low Latitudes % \n", "New Zealand % \n", "Caucasus & Middle East % \n", "\n", " \\\n", " 1.2°C 1.5°C \n", "Region \n", "Global 39 [15–55] 47 [20–64] \n", "Global_mm_0.85 122.8 [45.8–173.3] 147.7 [62.5–201.3] \n", "Global_mm_var 113 [43–204] 138 [59–237] \n", "Global_mm_1.00 144 [54–204] 174 [74–237] \n", "Global_mm_var_l NaN NaN \n", "Sub- & Antarctic Islands 36 [-21–52] 44 [-12–59] \n", "Arctic Canada N 33 [-1–67] 35 [4–70] \n", "Alaska 37 [30–51] 41 [31–58] \n", "Greenland Periphery 58 [42–72] 63 [44–75] \n", "Russian Arctic 65 [46–80] 75 [57–89] \n", "Arctic Canada S 85 [83–94] 87 [83–96] \n", "Svalbard & Jan Mayen 46 [25–61] 59 [34–73] \n", "Southern Andes 39 [21–57] 45 [25–61] \n", "Iceland 61 [39–73] 65 [40–80] \n", "Central Asia 12 [3–32] 35 [18–54] \n", "South Asia W 5 [0–30] 17 [10–51] \n", "W Canada & US 74 [43–93] 81 [61–94] \n", "South Asia E 49 [18–63] 63 [34–74] \n", "Scandinavia 66 [24–85] 82 [51–93] \n", "North Asia 56 [46–72] 70 [58–79] \n", "Central Europe 56 [52–61] 65 [56–75] \n", "Low Latitudes 23 [-8–37] 46 [13–62] \n", "New Zealand 15 [2–39] 24 [6–45] \n", "Caucasus & Middle East 23 [15–35] 45 [18–56] \n", "\n", " \\\n", " 2.0°C 2.7°C \n", "Region \n", "Global 63 [43–76] 76 [54–82] \n", "Global_mm_0.85 199.0 [135.7–236.9] 237.1 [169.4–256.4] \n", "Global_mm_var 190 [128–279] 230 [159–302] \n", "Global_mm_1.00 234 [160–279] 279 [199–302] \n", "Global_mm_var_l NaN NaN \n", "Sub- & Antarctic Islands 56 [4–70] 67 [24–81] \n", "Arctic Canada N 47 [18–71] 69 [37–83] \n", "Alaska 58 [34–69] 69 [44–79] \n", "Greenland Periphery 68 [53–79] 86 [70–93] \n", "Russian Arctic 88 [72–99] 99 [86–100] \n", "Arctic Canada S 95 [90–98] 99 [96–100] \n", "Svalbard & Jan Mayen 82 [51–96] 94 [63–100] \n", "Southern Andes 50 [29–73] 64 [39–81] \n", "Iceland 77 [49–91] 96 [82–99] \n", "Central Asia 57 [34–73] 77 [48–86] \n", "South Asia W 38 [24–67] 59 [36–79] \n", "W Canada & US 93 [79–99] 98 [92–99] \n", "South Asia E 74 [56–85] 84 [62–91] \n", "Scandinavia 100 [83–100] 100 [100–100] \n", "North Asia 86 [79–91] 93 [89–95] \n", "Central Europe 86 [79–91] 93 [90–95] \n", "Low Latitudes 68 [47–78] 87 [71–90] \n", "New Zealand 34 [14–55] 61 [46–77] \n", "Caucasus & Middle East 59 [43–72] 82 [68–87] \n", "\n", " \\\n", " 3.0°C 4.0°C \n", "Region \n", "Global 77 [60–85] 86 [74–93] \n", "Global_mm_0.85 242.8 [189.3–266.4] 268.3 [231.2–290.4] \n", "Global_mm_var 236 [178–313] 263 [218–342] \n", "Global_mm_1.00 286 [223–313] 316 [272–342] \n", "Global_mm_var_l NaN NaN \n", "Sub- & Antarctic Islands 70 [31–85] 77 [54–91] \n", "Arctic Canada N 71 [37–83] 82 [47–95] \n", "Alaska 71 [47–82] 80 [56–90] \n", "Greenland Periphery 89 [73–96] 95 [87–99] \n", "Russian Arctic 100 [90–100] 100 [94–100] \n", "Arctic Canada S 99 [96–100] 100 [98–100] \n", "Svalbard & Jan Mayen 95 [70–100] 98 [79–100] \n", "Southern Andes 68 [45–84] 79 [57–91] \n", "Iceland 97 [83–100] 99 [92–100] \n", "Central Asia 80 [52–89] 91 [70–96] \n", "South Asia W 68 [40–84] 80 [54–91] \n", "W Canada & US 99 [94–100] 100 [98–100] \n", "South Asia E 88 [68–93] 93 [79–97] \n", "Scandinavia 100 [100–100] 100 [100–100] \n", "North Asia 94 [91–96] 98 [96–98] \n", "Central Europe 95 [93–97] 99 [98–99] \n", "Low Latitudes 91 [81–93] 96 [93–98] \n", "New Zealand 67 [52–80] 82 [76–92] \n", "Caucasus & Middle East 87 [76–90] 95 [87–96] \n", "\n", " Sensitivity to ΔT (rel. to 2020) \n", " unit 1.5–3.0°C \n", "Region \n", "Global % per 0.1°C 2.0 [1.6–2.4] \n", "Global_mm_0.85 mm SLE per 0.1°C 6.3 [4.6–8.9] \n", "Global_mm_var mm SLE per 0.1°C 6.5 [4.6–8.9] \n", "Global_mm_1.00 mm SLE per 0.1°C 7.5 [5.7–8.9] \n", "Global_mm_var_l mm SLE per 0.1°C NaN \n", "Sub- & Antarctic Islands % per 0.1°C 1.7 [1.4–2.5] \n", "Arctic Canada N % per 0.1°C 2.4 [1.8–2.3] \n", "Alaska % per 0.1°C 2.0 [1.3–2.1] \n", "Greenland Periphery % per 0.1°C 1.7 [1.3–2.2] \n", "Russian Arctic % per 0.1°C 1.7 [1.5–2.1] \n", "Arctic Canada S % per 0.1°C 0.8 [0.4–1.0] \n", "Svalbard & Jan Mayen % per 0.1°C 2.4 [2.1–2.4] \n", "Southern Andes % per 0.1°C 1.5 [1.3–1.6] \n", "Iceland % per 0.1°C 2.2 [1.4–2.6] \n", "Central Asia % per 0.1°C 3.0 [2.2–3.2] \n", "South Asia W % per 0.1°C 3.4 [2.0–3.6] \n", "W Canada & US % per 0.1°C 1.2 [0.4–1.6] \n", "South Asia E % per 0.1°C 1.7 [1.4–2.1] \n", "Scandinavia % per 0.1°C 1.2 [0.8–1.5] \n", "North Asia % per 0.1°C 1.6 [1.2–2.0] \n", "Central Europe % per 0.1°C 2.0 [1.5–2.0] \n", "Low Latitudes % per 0.1°C 3.0 [2.1–3.7] \n", "New Zealand % per 0.1°C 2.9 [2.7–2.9] \n", "Caucasus & Middle East % per 0.1°C 2.8 [2.3–2.7] " ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd_steady_state_table_sel" ] }, { "cell_type": "code", "execution_count": 38, "id": "f9fa01a9-eb3b-47ce-b876-2d32ce8c0a93", "metadata": {}, "outputs": [], "source": [ "pd_steady_state_table_sel_nicer = pd_steady_state_table_sel.copy()" ] }, { "cell_type": "code", "execution_count": 39, "id": "dc8635aa-965b-49d2-91c6-4234bf417350", "metadata": {}, "outputs": [], "source": [ "pd_steady_state_table_sel_nicer= pd_steady_state_table_sel_nicer.drop(['Global_mm_0.85','Global_mm_1.00','Global_mm_var_l'])" ] }, { "cell_type": "code", "execution_count": 40, "id": "f550a50c-9a75-4a38-8abe-ef474a6025fe", "metadata": {}, "outputs": [], "source": [ "pd_steady_state_table_sel_nicer = pd_steady_state_table_sel_nicer.loc[['Global_mm_var', 'Global', 'Sub- & Antarctic Islands',\n", " 'Arctic Canada N', 'Alaska', 'Greenland Periphery', 'Russian Arctic',\n", " 'Arctic Canada S', 'Svalbard & Jan Mayen', 'Southern Andes', 'Iceland',\n", " 'Central Asia', 'South Asia W', 'W Canada & US', 'South Asia E',\n", " 'Scandinavia', 'North Asia', 'Central Europe', 'Low Latitudes',\n", " 'New Zealand', 'Caucasus & Middle East']]" ] }, { "cell_type": "code", "execution_count": 41, "id": "36e149a3-a65a-4383-a977-5d0cf7338ed7", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_2256501/1296202953.py:4: FutureWarning: Setting an item of incompatible dtype is deprecated and will raise in a future error of pandas. Value '' has dtype incompatible with int64, please explicitly cast to a compatible dtype first.\n", " pd_steady_state_table_sel_nicer.loc['', ('Mass 2020', '(Gt)')] = ''\n" ] } ], "source": [ "pd_steady_state_table_sel_nicer = pd_steady_state_table_sel_nicer.rename(index={'Global':''})\n", "pd_steady_state_table_sel_nicer = pd_steady_state_table_sel_nicer.rename(index={'Global_mm_var':'Global'})\n", "\n", "pd_steady_state_table_sel_nicer.loc['', ('Mass 2020', '(Gt)')] = ''" ] }, { "cell_type": "code", "execution_count": 42, "id": "8e337a1f-0980-49ea-85f0-f5dc2fd67d4c", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Mass 2020Committed glacier mass loss at ΔT (rel. to 2020)Sensitivity to ΔT (rel. to 2020)
(Gt)unit1.2°C1.5°C2.0°C2.7°C3.0°C4.0°Cunit1.5–3.0°C
Region
Global137491mm SLE113 [43–204]138 [59–237]190 [128–279]230 [159–302]236 [178–313]263 [218–342]mm SLE per 0.1°C6.5 [4.6–8.9]
%39 [15–55]47 [20–64]63 [43–76]76 [54–82]77 [60–85]86 [74–93]% per 0.1°C2.0 [1.6–2.4]
Sub- & Antarctic Islands41377%36 [-21–52]44 [-12–59]56 [4–70]67 [24–81]70 [31–85]77 [54–91]% per 0.1°C1.7 [1.4–2.5]
Arctic Canada N24851%33 [-1–67]35 [4–70]47 [18–71]69 [37–83]71 [37–83]82 [47–95]% per 0.1°C2.4 [1.8–2.3]
Alaska16246%37 [30–51]41 [31–58]58 [34–69]69 [44–79]71 [47–82]80 [56–90]% per 0.1°C2.0 [1.3–2.1]
Greenland Periphery13410%58 [42–72]63 [44–75]68 [53–79]86 [70–93]89 [73–96]95 [87–99]% per 0.1°C1.7 [1.3–2.2]
Russian Arctic12965%65 [46–80]75 [57–89]88 [72–99]99 [86–100]100 [90–100]100 [94–100]% per 0.1°C1.7 [1.5–2.1]
Arctic Canada S7212%85 [83–94]87 [83–96]95 [90–98]99 [96–100]99 [96–100]100 [98–100]% per 0.1°C0.8 [0.4–1.0]
Svalbard & Jan Mayen6566%46 [25–61]59 [34–73]82 [51–96]94 [63–100]95 [70–100]98 [79–100]% per 0.1°C2.4 [2.1–2.4]
Southern Andes4368%39 [21–57]45 [25–61]50 [29–73]64 [39–81]68 [45–84]79 [57–91]% per 0.1°C1.5 [1.3–1.6]
Iceland3194%61 [39–73]65 [40–80]77 [49–91]96 [82–99]97 [83–100]99 [92–100]% per 0.1°C2.2 [1.4–2.6]
Central Asia2771%12 [3–32]35 [18–54]57 [34–73]77 [48–86]80 [52–89]91 [70–96]% per 0.1°C3.0 [2.2–3.2]
South Asia W2485%5 [0–30]17 [10–51]38 [24–67]59 [36–79]68 [40–84]80 [54–91]% per 0.1°C3.4 [2.0–3.6]
W Canada & US795%74 [43–93]81 [61–94]93 [79–99]98 [92–99]99 [94–100]100 [98–100]% per 0.1°C1.2 [0.4–1.6]
South Asia E656%49 [18–63]63 [34–74]74 [56–85]84 [62–91]88 [68–93]93 [79–97]% per 0.1°C1.7 [1.4–2.1]
Scandinavia237%66 [24–85]82 [51–93]100 [83–100]100 [100–100]100 [100–100]100 [100–100]% per 0.1°C1.2 [0.8–1.5]
North Asia109%56 [46–72]70 [58–79]86 [79–91]93 [89–95]94 [91–96]98 [96–98]% per 0.1°C1.6 [1.2–2.0]
Central Europe85%56 [52–61]65 [56–75]86 [79–91]93 [90–95]95 [93–97]99 [98–99]% per 0.1°C2.0 [1.5–2.0]
Low Latitudes69%23 [-8–37]46 [13–62]68 [47–78]87 [71–90]91 [81–93]96 [93–98]% per 0.1°C3.0 [2.1–3.7]
New Zealand53%15 [2–39]24 [6–45]34 [14–55]61 [46–77]67 [52–80]82 [76–92]% per 0.1°C2.9 [2.7–2.9]
Caucasus & Middle East43%23 [15–35]45 [18–56]59 [43–72]82 [68–87]87 [76–90]95 [87–96]% per 0.1°C2.8 [2.3–2.7]
\n", "
" ], "text/plain": [ " Mass 2020 \\\n", " (Gt) \n", "Region \n", "Global 137491 \n", " \n", "Sub- & Antarctic Islands 41377 \n", "Arctic Canada N 24851 \n", "Alaska 16246 \n", "Greenland Periphery 13410 \n", "Russian Arctic 12965 \n", "Arctic Canada S 7212 \n", "Svalbard & Jan Mayen 6566 \n", "Southern Andes 4368 \n", "Iceland 3194 \n", "Central Asia 2771 \n", "South Asia W 2485 \n", "W Canada & US 795 \n", "South Asia E 656 \n", "Scandinavia 237 \n", "North Asia 109 \n", "Central Europe 85 \n", "Low Latitudes 69 \n", "New Zealand 53 \n", "Caucasus & Middle East 43 \n", "\n", " Committed glacier mass loss at ΔT (rel. to 2020) \\\n", " unit \n", "Region \n", "Global mm SLE \n", " % \n", "Sub- & Antarctic Islands % \n", "Arctic Canada N % \n", "Alaska % \n", "Greenland Periphery % \n", "Russian Arctic % \n", "Arctic Canada S % \n", "Svalbard & Jan Mayen % \n", "Southern Andes % \n", "Iceland % \n", "Central Asia % \n", "South Asia W % \n", "W Canada & US % \n", "South Asia E % \n", "Scandinavia % \n", "North Asia % \n", "Central Europe % \n", "Low Latitudes % \n", "New Zealand % \n", "Caucasus & Middle East % \n", "\n", " \\\n", " 1.2°C 1.5°C 2.0°C \n", "Region \n", "Global 113 [43–204] 138 [59–237] 190 [128–279] \n", " 39 [15–55] 47 [20–64] 63 [43–76] \n", "Sub- & Antarctic Islands 36 [-21–52] 44 [-12–59] 56 [4–70] \n", "Arctic Canada N 33 [-1–67] 35 [4–70] 47 [18–71] \n", "Alaska 37 [30–51] 41 [31–58] 58 [34–69] \n", "Greenland Periphery 58 [42–72] 63 [44–75] 68 [53–79] \n", "Russian Arctic 65 [46–80] 75 [57–89] 88 [72–99] \n", "Arctic Canada S 85 [83–94] 87 [83–96] 95 [90–98] \n", "Svalbard & Jan Mayen 46 [25–61] 59 [34–73] 82 [51–96] \n", "Southern Andes 39 [21–57] 45 [25–61] 50 [29–73] \n", "Iceland 61 [39–73] 65 [40–80] 77 [49–91] \n", "Central Asia 12 [3–32] 35 [18–54] 57 [34–73] \n", "South Asia W 5 [0–30] 17 [10–51] 38 [24–67] \n", "W Canada & US 74 [43–93] 81 [61–94] 93 [79–99] \n", "South Asia E 49 [18–63] 63 [34–74] 74 [56–85] \n", "Scandinavia 66 [24–85] 82 [51–93] 100 [83–100] \n", "North Asia 56 [46–72] 70 [58–79] 86 [79–91] \n", "Central Europe 56 [52–61] 65 [56–75] 86 [79–91] \n", "Low Latitudes 23 [-8–37] 46 [13–62] 68 [47–78] \n", "New Zealand 15 [2–39] 24 [6–45] 34 [14–55] \n", "Caucasus & Middle East 23 [15–35] 45 [18–56] 59 [43–72] \n", "\n", " \\\n", " 2.7°C 3.0°C 4.0°C \n", "Region \n", "Global 230 [159–302] 236 [178–313] 263 [218–342] \n", " 76 [54–82] 77 [60–85] 86 [74–93] \n", "Sub- & Antarctic Islands 67 [24–81] 70 [31–85] 77 [54–91] \n", "Arctic Canada N 69 [37–83] 71 [37–83] 82 [47–95] \n", "Alaska 69 [44–79] 71 [47–82] 80 [56–90] \n", "Greenland Periphery 86 [70–93] 89 [73–96] 95 [87–99] \n", "Russian Arctic 99 [86–100] 100 [90–100] 100 [94–100] \n", "Arctic Canada S 99 [96–100] 99 [96–100] 100 [98–100] \n", "Svalbard & Jan Mayen 94 [63–100] 95 [70–100] 98 [79–100] \n", "Southern Andes 64 [39–81] 68 [45–84] 79 [57–91] \n", "Iceland 96 [82–99] 97 [83–100] 99 [92–100] \n", "Central Asia 77 [48–86] 80 [52–89] 91 [70–96] \n", "South Asia W 59 [36–79] 68 [40–84] 80 [54–91] \n", "W Canada & US 98 [92–99] 99 [94–100] 100 [98–100] \n", "South Asia E 84 [62–91] 88 [68–93] 93 [79–97] \n", "Scandinavia 100 [100–100] 100 [100–100] 100 [100–100] \n", "North Asia 93 [89–95] 94 [91–96] 98 [96–98] \n", "Central Europe 93 [90–95] 95 [93–97] 99 [98–99] \n", "Low Latitudes 87 [71–90] 91 [81–93] 96 [93–98] \n", "New Zealand 61 [46–77] 67 [52–80] 82 [76–92] \n", "Caucasus & Middle East 82 [68–87] 87 [76–90] 95 [87–96] \n", "\n", " Sensitivity to ΔT (rel. to 2020) \n", " unit 1.5–3.0°C \n", "Region \n", "Global mm SLE per 0.1°C 6.5 [4.6–8.9] \n", " % per 0.1°C 2.0 [1.6–2.4] \n", "Sub- & Antarctic Islands % per 0.1°C 1.7 [1.4–2.5] \n", "Arctic Canada N % per 0.1°C 2.4 [1.8–2.3] \n", "Alaska % per 0.1°C 2.0 [1.3–2.1] \n", "Greenland Periphery % per 0.1°C 1.7 [1.3–2.2] \n", "Russian Arctic % per 0.1°C 1.7 [1.5–2.1] \n", "Arctic Canada S % per 0.1°C 0.8 [0.4–1.0] \n", "Svalbard & Jan Mayen % per 0.1°C 2.4 [2.1–2.4] \n", "Southern Andes % per 0.1°C 1.5 [1.3–1.6] \n", "Iceland % per 0.1°C 2.2 [1.4–2.6] \n", "Central Asia % per 0.1°C 3.0 [2.2–3.2] \n", "South Asia W % per 0.1°C 3.4 [2.0–3.6] \n", "W Canada & US % per 0.1°C 1.2 [0.4–1.6] \n", "South Asia E % per 0.1°C 1.7 [1.4–2.1] \n", "Scandinavia % per 0.1°C 1.2 [0.8–1.5] \n", "North Asia % per 0.1°C 1.6 [1.2–2.0] \n", "Central Europe % per 0.1°C 2.0 [1.5–2.0] \n", "Low Latitudes % per 0.1°C 3.0 [2.1–3.7] \n", "New Zealand % per 0.1°C 2.9 [2.7–2.9] \n", "Caucasus & Middle East % per 0.1°C 2.8 [2.3–2.7] " ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd_steady_state_table_sel_nicer" ] }, { "cell_type": "code", "execution_count": null, "id": "d603655e-ef50-4c2f-9834-53ceb767ee60", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 43, "id": "9d649e5d-5ce2-4fef-95e3-7978c766c0eb", "metadata": {}, "outputs": [], "source": [ "pd_steady_state_table_sel_nicer = pd_steady_state_table_sel_nicer.rename(index={'Global':'', '': 'Global'})\n", "#pd_steady_state_table_sel_nicer = pd_steady_state_table_sel_nicer.rename(index={'':'Global'})\n", "pd_steady_state_table_sel_nicer.loc['Global', ('Mass 2020', '(Gt)')] = pd_steady_state_table_sel_nicer.loc['', ('Mass 2020', '(Gt)')]\n", "pd_steady_state_table_sel_nicer.loc['', ('Mass 2020', '(Gt)')] = ''" ] }, { "cell_type": "code", "execution_count": 44, "id": "0e905282-b1cc-4c91-a3e1-7a9f701508ed", "metadata": {}, "outputs": [], "source": [ "reg_ls = ['', 'Global', 'Sub- & Antarctic Islands',\n", " 'Arctic Canada N', 'Alaska', 'Greenland Periphery', 'Russian Arctic',\n", " 'Arctic Canada S', 'Svalbard & Jan Mayen', 'Southern Andes', 'Iceland',\n", " 'Central Asia', 'South Asia W', 'W Canada & US', 'South Asia E',\n", " 'Scandinavia', 'North Asia', 'Central Europe', 'Low Latitudes',\n", " 'New Zealand', 'Caucasus & Middle East'][::-1]" ] }, { "cell_type": "code", "execution_count": 45, "id": "9d0407e1-47bc-4a17-8515-576e10f8b74a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Mass 2020Committed glacier mass loss at ΔT (rel. to 2020)Sensitivity to ΔT (rel. to 2020)
(Gt)unit1.2°C1.5°C2.0°C2.7°C3.0°C4.0°Cunit1.5–3.0°C
Region
Caucasus & Middle East43%23 [15–35]45 [18–56]59 [43–72]82 [68–87]87 [76–90]95 [87–96]% per 0.1°C2.8 [2.3–2.7]
New Zealand53%15 [2–39]24 [6–45]34 [14–55]61 [46–77]67 [52–80]82 [76–92]% per 0.1°C2.9 [2.7–2.9]
Low Latitudes69%23 [-8–37]46 [13–62]68 [47–78]87 [71–90]91 [81–93]96 [93–98]% per 0.1°C3.0 [2.1–3.7]
Central Europe85%56 [52–61]65 [56–75]86 [79–91]93 [90–95]95 [93–97]99 [98–99]% per 0.1°C2.0 [1.5–2.0]
North Asia109%56 [46–72]70 [58–79]86 [79–91]93 [89–95]94 [91–96]98 [96–98]% per 0.1°C1.6 [1.2–2.0]
Scandinavia237%66 [24–85]82 [51–93]100 [83–100]100 [100–100]100 [100–100]100 [100–100]% per 0.1°C1.2 [0.8–1.5]
South Asia E656%49 [18–63]63 [34–74]74 [56–85]84 [62–91]88 [68–93]93 [79–97]% per 0.1°C1.7 [1.4–2.1]
W Canada & US795%74 [43–93]81 [61–94]93 [79–99]98 [92–99]99 [94–100]100 [98–100]% per 0.1°C1.2 [0.4–1.6]
South Asia W2485%5 [0–30]17 [10–51]38 [24–67]59 [36–79]68 [40–84]80 [54–91]% per 0.1°C3.4 [2.0–3.6]
Central Asia2771%12 [3–32]35 [18–54]57 [34–73]77 [48–86]80 [52–89]91 [70–96]% per 0.1°C3.0 [2.2–3.2]
Iceland3194%61 [39–73]65 [40–80]77 [49–91]96 [82–99]97 [83–100]99 [92–100]% per 0.1°C2.2 [1.4–2.6]
Southern Andes4368%39 [21–57]45 [25–61]50 [29–73]64 [39–81]68 [45–84]79 [57–91]% per 0.1°C1.5 [1.3–1.6]
Svalbard & Jan Mayen6566%46 [25–61]59 [34–73]82 [51–96]94 [63–100]95 [70–100]98 [79–100]% per 0.1°C2.4 [2.1–2.4]
Arctic Canada S7212%85 [83–94]87 [83–96]95 [90–98]99 [96–100]99 [96–100]100 [98–100]% per 0.1°C0.8 [0.4–1.0]
Russian Arctic12965%65 [46–80]75 [57–89]88 [72–99]99 [86–100]100 [90–100]100 [94–100]% per 0.1°C1.7 [1.5–2.1]
Greenland Periphery13410%58 [42–72]63 [44–75]68 [53–79]86 [70–93]89 [73–96]95 [87–99]% per 0.1°C1.7 [1.3–2.2]
Alaska16246%37 [30–51]41 [31–58]58 [34–69]69 [44–79]71 [47–82]80 [56–90]% per 0.1°C2.0 [1.3–2.1]
Arctic Canada N24851%33 [-1–67]35 [4–70]47 [18–71]69 [37–83]71 [37–83]82 [47–95]% per 0.1°C2.4 [1.8–2.3]
Sub- & Antarctic Islands41377%36 [-21–52]44 [-12–59]56 [4–70]67 [24–81]70 [31–85]77 [54–91]% per 0.1°C1.7 [1.4–2.5]
Global137491%39 [15–55]47 [20–64]63 [43–76]76 [54–82]77 [60–85]86 [74–93]% per 0.1°C2.0 [1.6–2.4]
mm SLE113 [43–204]138 [59–237]190 [128–279]230 [159–302]236 [178–313]263 [218–342]mm SLE per 0.1°C6.5 [4.6–8.9]
\n", "
" ], "text/plain": [ " Mass 2020 \\\n", " (Gt) \n", "Region \n", "Caucasus & Middle East 43 \n", "New Zealand 53 \n", "Low Latitudes 69 \n", "Central Europe 85 \n", "North Asia 109 \n", "Scandinavia 237 \n", "South Asia E 656 \n", "W Canada & US 795 \n", "South Asia W 2485 \n", "Central Asia 2771 \n", "Iceland 3194 \n", "Southern Andes 4368 \n", "Svalbard & Jan Mayen 6566 \n", "Arctic Canada S 7212 \n", "Russian Arctic 12965 \n", "Greenland Periphery 13410 \n", "Alaska 16246 \n", "Arctic Canada N 24851 \n", "Sub- & Antarctic Islands 41377 \n", "Global 137491 \n", " \n", "\n", " Committed glacier mass loss at ΔT (rel. to 2020) \\\n", " unit \n", "Region \n", "Caucasus & Middle East % \n", "New Zealand % \n", "Low Latitudes % \n", "Central Europe % \n", "North Asia % \n", "Scandinavia % \n", "South Asia E % \n", "W Canada & US % \n", "South Asia W % \n", "Central Asia % \n", "Iceland % \n", "Southern Andes % \n", "Svalbard & Jan Mayen % \n", "Arctic Canada S % \n", "Russian Arctic % \n", "Greenland Periphery % \n", "Alaska % \n", "Arctic Canada N % \n", "Sub- & Antarctic Islands % \n", "Global % \n", " mm SLE \n", "\n", " \\\n", " 1.2°C 1.5°C 2.0°C \n", "Region \n", "Caucasus & Middle East 23 [15–35] 45 [18–56] 59 [43–72] \n", "New Zealand 15 [2–39] 24 [6–45] 34 [14–55] \n", "Low Latitudes 23 [-8–37] 46 [13–62] 68 [47–78] \n", "Central Europe 56 [52–61] 65 [56–75] 86 [79–91] \n", "North Asia 56 [46–72] 70 [58–79] 86 [79–91] \n", "Scandinavia 66 [24–85] 82 [51–93] 100 [83–100] \n", "South Asia E 49 [18–63] 63 [34–74] 74 [56–85] \n", "W Canada & US 74 [43–93] 81 [61–94] 93 [79–99] \n", "South Asia W 5 [0–30] 17 [10–51] 38 [24–67] \n", "Central Asia 12 [3–32] 35 [18–54] 57 [34–73] \n", "Iceland 61 [39–73] 65 [40–80] 77 [49–91] \n", "Southern Andes 39 [21–57] 45 [25–61] 50 [29–73] \n", "Svalbard & Jan Mayen 46 [25–61] 59 [34–73] 82 [51–96] \n", "Arctic Canada S 85 [83–94] 87 [83–96] 95 [90–98] \n", "Russian Arctic 65 [46–80] 75 [57–89] 88 [72–99] \n", "Greenland Periphery 58 [42–72] 63 [44–75] 68 [53–79] \n", "Alaska 37 [30–51] 41 [31–58] 58 [34–69] \n", "Arctic Canada N 33 [-1–67] 35 [4–70] 47 [18–71] \n", "Sub- & Antarctic Islands 36 [-21–52] 44 [-12–59] 56 [4–70] \n", "Global 39 [15–55] 47 [20–64] 63 [43–76] \n", " 113 [43–204] 138 [59–237] 190 [128–279] \n", "\n", " \\\n", " 2.7°C 3.0°C 4.0°C \n", "Region \n", "Caucasus & Middle East 82 [68–87] 87 [76–90] 95 [87–96] \n", "New Zealand 61 [46–77] 67 [52–80] 82 [76–92] \n", "Low Latitudes 87 [71–90] 91 [81–93] 96 [93–98] \n", "Central Europe 93 [90–95] 95 [93–97] 99 [98–99] \n", "North Asia 93 [89–95] 94 [91–96] 98 [96–98] \n", "Scandinavia 100 [100–100] 100 [100–100] 100 [100–100] \n", "South Asia E 84 [62–91] 88 [68–93] 93 [79–97] \n", "W Canada & US 98 [92–99] 99 [94–100] 100 [98–100] \n", "South Asia W 59 [36–79] 68 [40–84] 80 [54–91] \n", "Central Asia 77 [48–86] 80 [52–89] 91 [70–96] \n", "Iceland 96 [82–99] 97 [83–100] 99 [92–100] \n", "Southern Andes 64 [39–81] 68 [45–84] 79 [57–91] \n", "Svalbard & Jan Mayen 94 [63–100] 95 [70–100] 98 [79–100] \n", "Arctic Canada S 99 [96–100] 99 [96–100] 100 [98–100] \n", "Russian Arctic 99 [86–100] 100 [90–100] 100 [94–100] \n", "Greenland Periphery 86 [70–93] 89 [73–96] 95 [87–99] \n", "Alaska 69 [44–79] 71 [47–82] 80 [56–90] \n", "Arctic Canada N 69 [37–83] 71 [37–83] 82 [47–95] \n", "Sub- & Antarctic Islands 67 [24–81] 70 [31–85] 77 [54–91] \n", "Global 76 [54–82] 77 [60–85] 86 [74–93] \n", " 230 [159–302] 236 [178–313] 263 [218–342] \n", "\n", " Sensitivity to ΔT (rel. to 2020) \n", " unit 1.5–3.0°C \n", "Region \n", "Caucasus & Middle East % per 0.1°C 2.8 [2.3–2.7] \n", "New Zealand % per 0.1°C 2.9 [2.7–2.9] \n", "Low Latitudes % per 0.1°C 3.0 [2.1–3.7] \n", "Central Europe % per 0.1°C 2.0 [1.5–2.0] \n", "North Asia % per 0.1°C 1.6 [1.2–2.0] \n", "Scandinavia % per 0.1°C 1.2 [0.8–1.5] \n", "South Asia E % per 0.1°C 1.7 [1.4–2.1] \n", "W Canada & US % per 0.1°C 1.2 [0.4–1.6] \n", "South Asia W % per 0.1°C 3.4 [2.0–3.6] \n", "Central Asia % per 0.1°C 3.0 [2.2–3.2] \n", "Iceland % per 0.1°C 2.2 [1.4–2.6] \n", "Southern Andes % per 0.1°C 1.5 [1.3–1.6] \n", "Svalbard & Jan Mayen % per 0.1°C 2.4 [2.1–2.4] \n", "Arctic Canada S % per 0.1°C 0.8 [0.4–1.0] \n", "Russian Arctic % per 0.1°C 1.7 [1.5–2.1] \n", "Greenland Periphery % per 0.1°C 1.7 [1.3–2.2] \n", "Alaska % per 0.1°C 2.0 [1.3–2.1] \n", "Arctic Canada N % per 0.1°C 2.4 [1.8–2.3] \n", "Sub- & Antarctic Islands % per 0.1°C 1.7 [1.4–2.5] \n", "Global % per 0.1°C 2.0 [1.6–2.4] \n", " mm SLE per 0.1°C 6.5 [4.6–8.9] " ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd_steady_state_table_sel_nicer.loc[reg_ls]" ] }, { "cell_type": "code", "execution_count": null, "id": "2bb8778a-58fd-400c-9279-ddd588266ed4", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "24b3c4cc-f65f-4a2b-9da2-59194688b544", "metadata": {}, "source": [ "### Chosen table variant for supplements:" ] }, { "cell_type": "code", "execution_count": 90, "id": "0ab80ee3-3153-4539-97fb-f746419322b2", "metadata": {}, "outputs": [], "source": [ "pd_steady_state_table.loc[pd_steady_state_table['Response timescale (years)'].isna(),'Response timescale (years)'] = ''" ] }, { "cell_type": "code", "execution_count": 91, "id": "7728547e-cf53-48a9-a545-f2ce494a4e25", "metadata": {}, "outputs": [], "source": [ "pd_steady_state_table_sel = pd_steady_state_table[['Mass 2020 (Gt)','unit', '1.2°C', '1.5°C', '2.0°C', '2.7°C', '3.0°C',\n", " '4.0°C', 'unit2', 'Sensitivity to ΔT (ΔT=1.5–3.0°C)']]\n", " \n", "# Create a MultiIndex for the columns\n", "g1 = 'Committed glacier mass loss at ΔT (rel. to 2020)'\n", "g2 = 'Sensitivity to ΔT (rel. to 2020)'\n", "columns = pd.MultiIndex.from_tuples([\n", " ('Mass 2020', '(Gt)'),\n", " (g1, 'unit'),\n", " (g1, '1.2°C'),\n", " (g1, '1.5°C'),\n", " (g1, '2.0°C'),\n", " (g1, '2.7°C'),\n", " (g1, '3.0°C'),\n", " (g1, '4.0°C'),\n", " (g2, 'unit'),\n", " (g2, '1.5–3.0°C')\n", "])" ] }, { "cell_type": "code", "execution_count": 46, "id": "fdb84311-6143-48cb-b6db-d380a40ef2e6", "metadata": {}, "outputs": [], "source": [ "pd_steady_state_table_sel_reg = pd_steady_state_table[['Mass 2020 (Gt)', '1.2°C', '1.5°C', '2.0°C', '2.7°C', '3.0°C',\n", " '4.0°C', 'Sensitivity to ΔT (ΔT=1.5–3.0°C)','Response timescale (years)']].copy()\n", " \n", "# Create a MultiIndex for the columns\n", "g1 = 'Committed glacier mass loss at ΔT (% rel. to 2020)'\n", "g2 = r'Sensitivity (% per 0.1°C rel. to 2020)'\n", "g3 = 'Response timescale (years)'\n", "columns = pd.MultiIndex.from_tuples([\n", " ('Mass 2020', '(Gt)'),\n", " (g1, '1.2°C'),\n", " (g1, '1.5°C'),\n", " (g1, '2.0°C'),\n", " (g1, '2.7°C'),\n", " (g1, '3.0°C'),\n", " (g1, '4.0°C'),\n", " (g2, '1.5–3.0°C'),\n", " (g3, r'1.5±0.2°C')\n", "])\n", "pd_steady_state_table_sel_reg.columns = columns\n", "# Add spaces between columns of different groups\n", "#pd_steady_state_table_sel.columns = pd.MultiIndex.from_tuples([\n", "# (f'{col[0]} ', f'{col[1]}') for col in pd_steady_state_table_sel.columns\n", "#])\n", "#empty_col = pd.DataFrame(columns=[''])\n", "#pd_steady_state_table_sel = pd.concat([pd_steady_state_table_sel.iloc[:, :2], empty_col, pd_steady_state_table_sel.iloc[:, 2:]], axis=1, ignore_index=True)\n", "pd_steady_state_table_sel_reg= pd_steady_state_table_sel_reg.drop(['Global_mm_0.85','Global_mm_1.00',\n", " 'Global_mm_var',\n", " 'Global_mm_var_l'])\n", "#pd_steady_state_table_sel_nicer = pd_steady_state_table_sel_nicer.rename(index={'Globally':''})\n", "#pd_steady_state_table_sel_nicer = pd_steady_state_table_sel_nicer.rename(index={'Globally_mm_var':'Globally'})\n", "#pd_steady_state_table_sel_reg.loc['', ('Mass 2020', '(Gt)')] = ''\n", "\n", "order = ['Global', 'Sub- & Antarctic Islands',\n", " 'Arctic Canada N', 'Alaska', 'Greenland Periphery', 'Russian Arctic',\n", " 'Arctic Canada S', 'Svalbard & Jan Mayen', 'Southern Andes', 'Iceland',\n", " 'Central Asia', 'South Asia W', 'W Canada & US', 'South Asia E',\n", " 'Scandinavia', 'North Asia', 'Central Europe', 'Low Latitudes',\n", " 'New Zealand', 'Caucasus & Middle East']\n", "\n", "pd_steady_state_table_sel_reg = pd_steady_state_table_sel_reg.loc[order]" ] }, { "cell_type": "code", "execution_count": 47, "id": "818ef04b-b56f-4b66-a212-5aee4d580c37", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Mass 2020Committed glacier mass loss at ΔT (% rel. to 2020)Sensitivity (% per 0.1°C rel. to 2020)Response timescale (years)
(Gt)1.2°C1.5°C2.0°C2.7°C3.0°C4.0°C1.5–3.0°C1.5±0.2°C
Region
Global13749139 [15–55]47 [20–64]63 [43–76]76 [54–82]77 [60–85]86 [74–93]2.0 [1.6–2.4]463 [216–805]
Sub- & Antarctic Islands4137736 [-21–52]44 [-12–59]56 [4–70]67 [24–81]70 [31–85]77 [54–91]1.7 [1.4–2.5]828 [224–1322]
Arctic Canada N2485133 [-1–67]35 [4–70]47 [18–71]69 [37–83]71 [37–83]82 [47–95]2.4 [1.8–2.3]644 [356–735]
Alaska1624637 [30–51]41 [31–58]58 [34–69]69 [44–79]71 [47–82]80 [56–90]2.0 [1.3–2.1]104 [74–173]
Greenland Periphery1341058 [42–72]63 [44–75]68 [53–79]86 [70–93]89 [73–96]95 [87–99]1.7 [1.3–2.2]373 [260–656]
Russian Arctic1296565 [46–80]75 [57–89]88 [72–99]99 [86–100]100 [90–100]100 [94–100]1.7 [1.5–2.1]445 [321–902]
Arctic Canada S721285 [83–94]87 [83–96]95 [90–98]99 [96–100]99 [96–100]100 [98–100]0.8 [0.4–1.0]241 [190–573]
Svalbard & Jan Mayen656646 [25–61]59 [34–73]82 [51–96]94 [63–100]95 [70–100]98 [79–100]2.4 [2.1–2.4]318 [208–629]
Southern Andes436839 [21–57]45 [25–61]50 [29–73]64 [39–81]68 [45–84]79 [57–91]1.5 [1.3–1.6]86 [61–111]
Iceland319461 [39–73]65 [40–80]77 [49–91]96 [82–99]97 [83–100]99 [92–100]2.2 [1.4–2.6]316 [207–640]
Central Asia277112 [3–32]35 [18–54]57 [34–73]77 [48–86]80 [52–89]91 [70–96]3.0 [2.2–3.2]103 [72–138]
South Asia W24855 [0–30]17 [10–51]38 [24–67]59 [36–79]68 [40–84]80 [54–91]3.4 [2.0–3.6]139 [100–175]
W Canada & US79574 [43–93]81 [61–94]93 [79–99]98 [92–99]99 [94–100]100 [98–100]1.2 [0.4–1.6]57 [44–109]
South Asia E65649 [18–63]63 [34–74]74 [56–85]84 [62–91]88 [68–93]93 [79–97]1.7 [1.4–2.1]47 [32–72]
Scandinavia23766 [24–85]82 [51–93]100 [83–100]100 [100–100]100 [100–100]100 [100–100]1.2 [0.8–1.5]166 [102–235]
North Asia10956 [46–72]70 [58–79]86 [79–91]93 [89–95]94 [91–96]98 [96–98]1.6 [1.2–2.0]47 [38–114]
Central Europe8556 [52–61]65 [56–75]86 [79–91]93 [90–95]95 [93–97]99 [98–99]2.0 [1.5–2.0]42 [29–64]
Low Latitudes6923 [-8–37]46 [13–62]68 [47–78]87 [71–90]91 [81–93]96 [93–98]3.0 [2.1–3.7]23 [14–30]
New Zealand5315 [2–39]24 [6–45]34 [14–55]61 [46–77]67 [52–80]82 [76–92]2.9 [2.7–2.9]36 [28–45]
Caucasus & Middle East4323 [15–35]45 [18–56]59 [43–72]82 [68–87]87 [76–90]95 [87–96]2.8 [2.3–2.7]30 [26–56]
\n", "
" ], "text/plain": [ " Mass 2020 \\\n", " (Gt) \n", "Region \n", "Global 137491 \n", "Sub- & Antarctic Islands 41377 \n", "Arctic Canada N 24851 \n", "Alaska 16246 \n", "Greenland Periphery 13410 \n", "Russian Arctic 12965 \n", "Arctic Canada S 7212 \n", "Svalbard & Jan Mayen 6566 \n", "Southern Andes 4368 \n", "Iceland 3194 \n", "Central Asia 2771 \n", "South Asia W 2485 \n", "W Canada & US 795 \n", "South Asia E 656 \n", "Scandinavia 237 \n", "North Asia 109 \n", "Central Europe 85 \n", "Low Latitudes 69 \n", "New Zealand 53 \n", "Caucasus & Middle East 43 \n", "\n", " Committed glacier mass loss at ΔT (% rel. to 2020) \\\n", " 1.2°C \n", "Region \n", "Global 39 [15–55] \n", "Sub- & Antarctic Islands 36 [-21–52] \n", "Arctic Canada N 33 [-1–67] \n", "Alaska 37 [30–51] \n", "Greenland Periphery 58 [42–72] \n", "Russian Arctic 65 [46–80] \n", "Arctic Canada S 85 [83–94] \n", "Svalbard & Jan Mayen 46 [25–61] \n", "Southern Andes 39 [21–57] \n", "Iceland 61 [39–73] \n", "Central Asia 12 [3–32] \n", "South Asia W 5 [0–30] \n", "W Canada & US 74 [43–93] \n", "South Asia E 49 [18–63] \n", "Scandinavia 66 [24–85] \n", "North Asia 56 [46–72] \n", "Central Europe 56 [52–61] \n", "Low Latitudes 23 [-8–37] \n", "New Zealand 15 [2–39] \n", "Caucasus & Middle East 23 [15–35] \n", "\n", " \\\n", " 1.5°C 2.0°C 2.7°C \n", "Region \n", "Global 47 [20–64] 63 [43–76] 76 [54–82] \n", "Sub- & Antarctic Islands 44 [-12–59] 56 [4–70] 67 [24–81] \n", "Arctic Canada N 35 [4–70] 47 [18–71] 69 [37–83] \n", "Alaska 41 [31–58] 58 [34–69] 69 [44–79] \n", "Greenland Periphery 63 [44–75] 68 [53–79] 86 [70–93] \n", "Russian Arctic 75 [57–89] 88 [72–99] 99 [86–100] \n", "Arctic Canada S 87 [83–96] 95 [90–98] 99 [96–100] \n", "Svalbard & Jan Mayen 59 [34–73] 82 [51–96] 94 [63–100] \n", "Southern Andes 45 [25–61] 50 [29–73] 64 [39–81] \n", "Iceland 65 [40–80] 77 [49–91] 96 [82–99] \n", "Central Asia 35 [18–54] 57 [34–73] 77 [48–86] \n", "South Asia W 17 [10–51] 38 [24–67] 59 [36–79] \n", "W Canada & US 81 [61–94] 93 [79–99] 98 [92–99] \n", "South Asia E 63 [34–74] 74 [56–85] 84 [62–91] \n", "Scandinavia 82 [51–93] 100 [83–100] 100 [100–100] \n", "North Asia 70 [58–79] 86 [79–91] 93 [89–95] \n", "Central Europe 65 [56–75] 86 [79–91] 93 [90–95] \n", "Low Latitudes 46 [13–62] 68 [47–78] 87 [71–90] \n", "New Zealand 24 [6–45] 34 [14–55] 61 [46–77] \n", "Caucasus & Middle East 45 [18–56] 59 [43–72] 82 [68–87] \n", "\n", " \\\n", " 3.0°C 4.0°C \n", "Region \n", "Global 77 [60–85] 86 [74–93] \n", "Sub- & Antarctic Islands 70 [31–85] 77 [54–91] \n", "Arctic Canada N 71 [37–83] 82 [47–95] \n", "Alaska 71 [47–82] 80 [56–90] \n", "Greenland Periphery 89 [73–96] 95 [87–99] \n", "Russian Arctic 100 [90–100] 100 [94–100] \n", "Arctic Canada S 99 [96–100] 100 [98–100] \n", "Svalbard & Jan Mayen 95 [70–100] 98 [79–100] \n", "Southern Andes 68 [45–84] 79 [57–91] \n", "Iceland 97 [83–100] 99 [92–100] \n", "Central Asia 80 [52–89] 91 [70–96] \n", "South Asia W 68 [40–84] 80 [54–91] \n", "W Canada & US 99 [94–100] 100 [98–100] \n", "South Asia E 88 [68–93] 93 [79–97] \n", "Scandinavia 100 [100–100] 100 [100–100] \n", "North Asia 94 [91–96] 98 [96–98] \n", "Central Europe 95 [93–97] 99 [98–99] \n", "Low Latitudes 91 [81–93] 96 [93–98] \n", "New Zealand 67 [52–80] 82 [76–92] \n", "Caucasus & Middle East 87 [76–90] 95 [87–96] \n", "\n", " Sensitivity (% per 0.1°C rel. to 2020) \\\n", " 1.5–3.0°C \n", "Region \n", "Global 2.0 [1.6–2.4] \n", "Sub- & Antarctic Islands 1.7 [1.4–2.5] \n", "Arctic Canada N 2.4 [1.8–2.3] \n", "Alaska 2.0 [1.3–2.1] \n", "Greenland Periphery 1.7 [1.3–2.2] \n", "Russian Arctic 1.7 [1.5–2.1] \n", "Arctic Canada S 0.8 [0.4–1.0] \n", "Svalbard & Jan Mayen 2.4 [2.1–2.4] \n", "Southern Andes 1.5 [1.3–1.6] \n", "Iceland 2.2 [1.4–2.6] \n", "Central Asia 3.0 [2.2–3.2] \n", "South Asia W 3.4 [2.0–3.6] \n", "W Canada & US 1.2 [0.4–1.6] \n", "South Asia E 1.7 [1.4–2.1] \n", "Scandinavia 1.2 [0.8–1.5] \n", "North Asia 1.6 [1.2–2.0] \n", "Central Europe 2.0 [1.5–2.0] \n", "Low Latitudes 3.0 [2.1–3.7] \n", "New Zealand 2.9 [2.7–2.9] \n", "Caucasus & Middle East 2.8 [2.3–2.7] \n", "\n", " Response timescale (years) \n", " 1.5±0.2°C \n", "Region \n", "Global 463 [216–805] \n", "Sub- & Antarctic Islands 828 [224–1322] \n", "Arctic Canada N 644 [356–735] \n", "Alaska 104 [74–173] \n", "Greenland Periphery 373 [260–656] \n", "Russian Arctic 445 [321–902] \n", "Arctic Canada S 241 [190–573] \n", "Svalbard & Jan Mayen 318 [208–629] \n", "Southern Andes 86 [61–111] \n", "Iceland 316 [207–640] \n", "Central Asia 103 [72–138] \n", "South Asia W 139 [100–175] \n", "W Canada & US 57 [44–109] \n", "South Asia E 47 [32–72] \n", "Scandinavia 166 [102–235] \n", "North Asia 47 [38–114] \n", "Central Europe 42 [29–64] \n", "Low Latitudes 23 [14–30] \n", "New Zealand 36 [28–45] \n", "Caucasus & Middle East 30 [26–56] " ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd_steady_state_table_sel_reg" ] }, { "cell_type": "code", "execution_count": 48, "id": "b9c2d3b8-a653-4d38-be8c-6a8ab2811508", "metadata": {}, "outputs": [], "source": [ "# Function to extract the first integer from the string\n", "def extract_first_integer(s):\n", " return int(s.split()[0])\n", "\n", "import matplotlib\n", "from matplotlib.colors import LinearSegmentedColormap, rgb2hex\n", "\n", "\n", "# Function to color cells based on value using a colormap\n", "#def color_cells(val, cmap):\n", "# norm_val = (val - df.min().min()) / (df.max().max() - df.min().min()) # Normalize value to range 0-1\n", "# color = cmap(norm_val) # Get color from colormap\n", "# hex_color = rgb2hex(color) # Convert color to hex\n", "# return f'background-color: {hex_color}'\n", "\n", "# Define the colormap\n", "cmap = plt.get_cmap('YlOrRd')\n", "\n", "# Function to assign colors based on 20% value steps using colormap\n", "def assign_color(val):\n", " steps = [0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2]\n", " colors = [rgb2hex(cmap(step, alpha = 0.5)) for step in steps]\n", " bins = [0, 20, 40, 60, 80, 100]\n", " for i in range(len(bins) - 1):\n", " if bins[i] < val <= bins[i+1]:\n", " return f'background-color: {colors[i]}'\n", " return f'background-color: {colors[-1]}'\n", "\n", "# Function to apply color based on the extracted number\n", "def color_cells(val):\n", " num = extract_first_integer(val)\n", " return assign_color(num)\n", "\n", "\n", "\n", "# Define the colormap: green to yellow to red\n", "#cmap = LinearSegmentedColormap.from_list('green_yellow_red', ['green', 'yellow', 'red'])\n", "\n", "# Applying the function to the DataFrame\n", "#styled_df = pd_steady_state_table_sel_reg.style.applymap(lambda x: color_cells(x, cmap))\n", "\n", "# To display the styled DataFrame in a Jupyter notebook or similar environment\n", "#styled_df" ] }, { "cell_type": "code", "execution_count": 49, "id": "736d315c-8770-4110-af45-9e0015fb06d3", "metadata": {}, "outputs": [], "source": [ "pd_steady_state_table_sel_reg[pd_steady_state_table_sel_reg.columns[0]] = pd_steady_state_table_sel_reg[pd_steady_state_table_sel_reg.columns[0]].astype(int)" ] }, { "cell_type": "code", "execution_count": 50, "id": "ac9e1ff6-c869-4851-9785-81fb8f784402", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_2256501/65618881.py:8: FutureWarning: DataFrame.applymap has been deprecated. Use DataFrame.map instead.\n", " df_integers = pd_steady_state_table_sel_reg[cols_coloring].applymap(extract_first_integer)\n" ] } ], "source": [ "cols_coloring = [(g1, '1.2°C'),\n", " (g1, '1.5°C'),\n", " (g1, '2.0°C'),\n", " (g1, '2.7°C'),\n", " (g1, '3.0°C'),\n", " (g1, '4.0°C')]\n", "# Extract integers for coloring\n", "df_integers = pd_steady_state_table_sel_reg[cols_coloring].applymap(extract_first_integer)\n", "df_min, df_max = 0, 100 # df_integers.min().min(), df_integers.max().max()\n" ] }, { "cell_type": "code", "execution_count": null, "id": "bc17affc-4bfe-4531-aba6-a8256bae2b09", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 51, "id": "4849a08d-5fef-4dc3-93be-aef3cfc98b1a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 Mass 2020Committed glacier mass loss at ΔT (% rel. to 2020)Sensitivity (% per 0.1°C rel. to 2020)Response timescale (years)
 (Gt)1.2°C1.5°C2.0°C2.7°C3.0°C4.0°C1.5–3.0°C1.5±0.2°C
Region         
Arctic Canada S721285 [83–94]87 [83–96]95 [90–98]99 [96–100]99 [96–100]100 [98–100]0.8 [0.4–1.0]241 [190–573]
W Canada & US79574 [43–93]81 [61–94]93 [79–99]98 [92–99]99 [94–100]100 [98–100]1.2 [0.4–1.6]57 [44–109]
Scandinavia23766 [24–85]82 [51–93]100 [83–100]100 [100–100]100 [100–100]100 [100–100]1.2 [0.8–1.5]166 [102–235]
Russian Arctic1296565 [46–80]75 [57–89]88 [72–99]99 [86–100]100 [90–100]100 [94–100]1.7 [1.5–2.1]445 [321–902]
Iceland319461 [39–73]65 [40–80]77 [49–91]96 [82–99]97 [83–100]99 [92–100]2.2 [1.4–2.6]316 [207–640]
Greenland Periphery1341058 [42–72]63 [44–75]68 [53–79]86 [70–93]89 [73–96]95 [87–99]1.7 [1.3–2.2]373 [260–656]
Central Europe8556 [52–61]65 [56–75]86 [79–91]93 [90–95]95 [93–97]99 [98–99]2.0 [1.5–2.0]42 [29–64]
North Asia10956 [46–72]70 [58–79]86 [79–91]93 [89–95]94 [91–96]98 [96–98]1.6 [1.2–2.0]47 [38–114]
South Asia E65649 [18–63]63 [34–74]74 [56–85]84 [62–91]88 [68–93]93 [79–97]1.7 [1.4–2.1]47 [32–72]
Svalbard & Jan Mayen656646 [25–61]59 [34–73]82 [51–96]94 [63–100]95 [70–100]98 [79–100]2.4 [2.1–2.4]318 [208–629]
Southern Andes436839 [21–57]45 [25–61]50 [29–73]64 [39–81]68 [45–84]79 [57–91]1.5 [1.3–1.6]86 [61–111]
Alaska1624637 [30–51]41 [31–58]58 [34–69]69 [44–79]71 [47–82]80 [56–90]2.0 [1.3–2.1]104 [74–173]
Sub- & Antarctic Islands4137736 [-21–52]44 [-12–59]56 [4–70]67 [24–81]70 [31–85]77 [54–91]1.7 [1.4–2.5]828 [224–1322]
Arctic Canada N2485133 [-1–67]35 [4–70]47 [18–71]69 [37–83]71 [37–83]82 [47–95]2.4 [1.8–2.3]644 [356–735]
Low Latitudes6923 [-8–37]46 [13–62]68 [47–78]87 [71–90]91 [81–93]96 [93–98]3.0 [2.1–3.7]23 [14–30]
Caucasus & Middle East4323 [15–35]45 [18–56]59 [43–72]82 [68–87]87 [76–90]95 [87–96]2.8 [2.3–2.7]30 [26–56]
New Zealand5315 [2–39]24 [6–45]34 [14–55]61 [46–77]67 [52–80]82 [76–92]2.9 [2.7–2.9]36 [28–45]
Central Asia277112 [3–32]35 [18–54]57 [34–73]77 [48–86]80 [52–89]91 [70–96]3.0 [2.2–3.2]103 [72–138]
South Asia W24855 [0–30]17 [10–51]38 [24–67]59 [36–79]68 [40–84]80 [54–91]3.4 [2.0–3.6]139 [100–175]
Global13749139 [15–55]47 [20–64]63 [43–76]76 [54–82]77 [60–85]86 [74–93]2.0 [1.6–2.4]463 [216–805]
\n" ], "text/plain": [ "" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "order_reg = list(df_integers.sort_values(by=[(g1,'1.2°C')], ascending = False).index)\n", "# want to have 'Global' at the end ...\n", "order_reg.remove('Global') # Remove 'Global' from its current position\n", "order_reg.append('Global') # Append 'Global' to the end of the list\n", "\n", "# Apply the coloring function using the extracted integers, but keep original text\n", "styled_df = pd_steady_state_table_sel_reg.loc[order_reg].style.apply(lambda col: col.apply(color_cells), subset=cols_coloring)\n", "# Display the DataFrame with styles applied\n", "styled_df\n" ] }, { "cell_type": "code", "execution_count": 52, "id": "3e3c719f-5323-4f6c-8e4b-289da3e6973c", "metadata": {}, "outputs": [], "source": [ "styled_df.to_excel('figures/supplements/suppl_table_S1a.xlsx')" ] }, { "cell_type": "code", "execution_count": 89, "id": "c0176f64-a053-4ca3-b651-5f6d9e681f2b", "metadata": {}, "outputs": [], "source": [ "for rgi_reg in d_reg_num_name:\n", " region = d_reg_num_name[rgi_reg]\n", " pd_steady_state_table_sel_reg.loc[region, 'rgi_reg'] = rgi_reg\n", "pd_steady_state_table_sel_reg.loc['Global', 'rgi_reg'] = 'global'\n", "pd_steady_state_table_sel_reg.to_csv('../data/table_S1a.csv')" ] }, { "cell_type": "code", "execution_count": 99, "id": "364d927e-b55f-4b0b-bcbb-23d3275f7655", "metadata": {}, "outputs": [], "source": [ "# also extract the data in a different format for people who directly want to use it, this data is the same as Table S1a, but just without uncertainties... \n", "pd_steady_state_table_sel_reg_fig3_data = pd.DataFrame(index=pd_steady_state_table_sel_reg.index)\n", "for delta_T in ['1.2°C', '1.5°C', '2.0°C', '2.7°C', '3.0°C', '4.0°C']: \n", " for reg in pd_steady_state_table_sel_reg.index:\n", " _val = pd_steady_state_table_sel_reg['Committed glacier mass loss at ΔT (% rel. to 2020)'][delta_T].loc[reg]\n", " _only_median = int(_val.split('[')[0])\n", " pd_steady_state_table_sel_reg_fig3_data.loc[reg,delta_T] = _only_median\n", "pd_steady_state_table_sel_reg_fig3_data = pd_steady_state_table_sel_reg_fig3_data.rename({'Sub- & Antarctic Islands':'Subantarctic & Antarctic Islands'})\n", "pd_steady_state_table_sel_reg_fig3_data = pd_steady_state_table_sel_reg_fig3_data.rename({'Svalbard & Jan Mayen':'Svalbard'})\n", "pd_steady_state_table_sel_reg_fig3_data = pd_steady_state_table_sel_reg_fig3_data.astype(int)\n", "pd_steady_state_table_sel_reg_fig3_data.to_csv('../data/zekollari_schuster_et_al_2025_fig_3_committed_glacier_mass_loss.csv')" ] }, { "cell_type": "code", "execution_count": null, "id": "636b6ee2-c7eb-4bbd-8d4d-4b01b1a2980f", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "f5a66ca2-1012-4cc9-a407-87e3b1c4fa67", "metadata": {}, "source": [ "### table 1b:" ] }, { "cell_type": "code", "execution_count": 100, "id": "71088544-2ee8-40ef-97e2-f59299120aaf", "metadata": {}, "outputs": [], "source": [ "pd_steady_state_table_sel_reg = pd_steady_state_table[['Mass 2020 (Gt)', '1.2°C', '1.5°C', '2.0°C', '2.7°C', '3.0°C',\n", " '4.0°C', 'Sensitivity to ΔT (ΔT=1.5–3.0°C)']].copy()\n", " \n", "# Create a MultiIndex for the columns\n", "g1 = 'Committed glacier mass loss at ΔT (mm SLE rel. to 2020)'\n", "g2 = r'Sensitivity (mm SLE per 0.1°C rel. to 2020)'\n", "columns = pd.MultiIndex.from_tuples([\n", " ('', ''),\n", " (g1, '1.2°C'),\n", " (g1, '1.5°C'),\n", " (g1, '2.0°C'),\n", " (g1, '2.7°C'),\n", " (g1, '3.0°C'),\n", " (g1, '4.0°C'),\n", " (g2, '1.5–3.0°C'),\n", "])\n", "\n", "pd_steady_state_table_sel_reg.columns = columns\n", "# Add spaces between columns of different groups\n", "#pd_steady_state_table_sel.columns = pd.MultiIndex.from_tuples([\n", "# (f'{col[0]} ', f'{col[1]}') for col in pd_steady_state_table_sel.columns\n", "#])\n", "#empty_col = pd.DataFrame(columns=[''])\n", "#pd_steady_state_table_sel = pd.concat([pd_steady_state_table_sel.iloc[:, :2], empty_col, pd_steady_state_table_sel.iloc[:, 2:]], axis=1, ignore_index=True)\n", "pd_steady_state_table_sel_reg= pd_steady_state_table_sel_reg.loc[['Global_mm_var','Global_mm_1.00']]\n", "pd_steady_state_table_sel_reg = pd_steady_state_table_sel_reg.rename(index={'Global_mm_var':'Global (below sea-level correction applied)'})\n", "pd_steady_state_table_sel_reg = pd_steady_state_table_sel_reg.rename(index={'Global_mm_1.00': 'Global (no below sea-level correction applied)'})\n", "pd_steady_state_table_sel_reg[('', '')] = ''\n", "#pd_steady_state_table_sel_reg.loc['', ('below-sea', 'level correction')] = 'No'\n", "\n", "#pd_steady_state_table_sel_reg = pd_steady_state_table_sel_reg.rename(columns={pd.MultiIndex.from_tuples([('Mass 2020', '(Gt)')]): pd.MultiIndex.from_tuples([('below-sea', 'level correction')])})" ] }, { "cell_type": "code", "execution_count": 101, "id": "4ded6fee-e027-47e6-b739-396451896c48", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Committed glacier mass loss at ΔT (mm SLE rel. to 2020)Sensitivity (mm SLE per 0.1°C rel. to 2020)
1.2°C1.5°C2.0°C2.7°C3.0°C4.0°C1.5–3.0°C
Region
Global (below sea-level correction applied)113 [43–204]138 [59–237]190 [128–279]230 [159–302]236 [178–313]263 [218–342]6.5 [4.6–8.9]
Global (no below sea-level correction applied)144 [54–204]174 [74–237]234 [160–279]279 [199–302]286 [223–313]316 [272–342]7.5 [5.7–8.9]
\n", "
" ], "text/plain": [ " \\\n", " \n", "Region \n", "Global (below sea-level correction applied) \n", "Global (no below sea-level correction applied) \n", "\n", " Committed glacier mass loss at ΔT (mm SLE rel. to 2020) \\\n", " 1.2°C \n", "Region \n", "Global (below sea-level correction applied) 113 [43–204] \n", "Global (no below sea-level correction applied) 144 [54–204] \n", "\n", " \\\n", " 1.5°C 2.0°C \n", "Region \n", "Global (below sea-level correction applied) 138 [59–237] 190 [128–279] \n", "Global (no below sea-level correction applied) 174 [74–237] 234 [160–279] \n", "\n", " \\\n", " 2.7°C 3.0°C \n", "Region \n", "Global (below sea-level correction applied) 230 [159–302] 236 [178–313] \n", "Global (no below sea-level correction applied) 279 [199–302] 286 [223–313] \n", "\n", " \\\n", " 4.0°C \n", "Region \n", "Global (below sea-level correction applied) 263 [218–342] \n", "Global (no below sea-level correction applied) 316 [272–342] \n", "\n", " Sensitivity (mm SLE per 0.1°C rel. to 2020) \n", " 1.5–3.0°C \n", "Region \n", "Global (below sea-level correction applied) 6.5 [4.6–8.9] \n", "Global (no below sea-level correction applied) 7.5 [5.7–8.9] " ] }, "execution_count": 101, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd_steady_state_table_sel_reg" ] }, { "cell_type": "code", "execution_count": 102, "id": "8882770c-082d-4e98-8770-a137970acab8", "metadata": {}, "outputs": [], "source": [ "pd_steady_state_table_sel_reg.to_excel('figures/supplements/suppl_table_Sb.xlsx')\n", "pd_steady_state_table_sel_reg.to_csv('../data/table_S1b.csv')" ] }, { "cell_type": "code", "execution_count": null, "id": "629ff978-0f4c-4451-afaf-21503cb285d8", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 60, "id": "d871161c-833b-490c-8f76-ae9ae9a8d988", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'SLE (mm, only including above sea)')" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import oggm\n", "df_itmix = pd.read_hdf(oggm.utils.get_demo_file('rgi62_itmix_df.h5'))\n", "# quation as well as the percentage difference:\n", "\n", "def vol_tot_to_below_sl(vol_tot):\n", "\n", " ratio = slope_unfilled_m3*vol_tot + intercept_unfilled \n", " if ratio <0.7:\n", " ratio = 0.7\n", " vol_bsl = vol_tot - vol_tot*ratio\n", " return vol_bsl \n", "\n", "def compute_slr_jan(v_tot,v_bsl):\n", " \"\"\"After Farinotti 2019\"\"\"\n", " rho = 900\n", " rho_oc = 1028\n", " A_oc = 362.5 * 1e9\n", " return (v_tot-v_bsl)* rho / (A_oc * rho_oc)\n", "\n", "def compute_slr2_jan(v_tot, v_bsl):\n", " \"\"\"slr2\"\"\"\n", " rho = 900\n", " rho_w = 1000\n", " A_oc = 362.5 * 1e9\n", " return (v_tot * (rho / rho_w) - v_bsl) / A_oc\n", "total_slr = compute_slr_jan(df_itmix['vol_itmix_m3'].sum(), df_itmix['vol_bsl_itmix_m3'].sum())\n", "total_slr2 = compute_slr2_jan(df_itmix['vol_itmix_m3'].sum(), df_itmix['vol_bsl_itmix_m3'].sum())\n", "\n", "\n", "fractions = np.arange(0,1.05,0.05)\n", "for f in fractions:\n", " vol_tot = df_itmix['vol_itmix_m3'].sum() * f\n", " total_slr_via_ratio = compute_slr_jan(vol_tot, vol_tot_to_below_sl(vol_tot))\n", " plt.plot(vol_tot, total_slr_via_ratio,'.', color='blue')\n", " \n", " total_slr_via_ratio_2 = compute_slr2_jan(vol_tot, vol_tot_to_below_sl(vol_tot))\n", " plt.plot(vol_tot, total_slr_via_ratio_2,'.', color='orange')\n", "plt.xlabel('Total glacier volume')\n", "\n", "plt.ylabel('SLE (mm, only including above sea)')" ] }, { "cell_type": "code", "execution_count": null, "id": "948bba2b-3a6b-403d-b1e5-6549433b0b9b", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "7693b0b1-bd0b-4d60-8f05-16655d35fcd7", "metadata": {}, "source": [ "$\\Delta M_{asl} = M_{2020}\\cdot ratio_{M,2020} - M_{ss}\\cdot ratio_{M,ss}$\n", "\n", "\n", "$SLE(mm) = 1000\\cdot \\frac{\\Delta M_{asl}}{\\rho_{ocean}}\\cdot A_{ocean}$" ] }, { "cell_type": "markdown", "id": "3e1bac68-3249-4da7-ba91-d69fd9f158ba", "metadata": {}, "source": [ "better approach from Jan: \n", "\n", "$\\Delta M_{bsl} = M_{2020}\\cdot(1-ratio_{M,2020}) - M_{ss}\\cdot(1-ratio_{M,ss})$\n", "\n", "\n", "$SLE(mm) = 1000\\cdot (\\frac{\\Delta M_{tot}}{\\rho_{water}} - \\frac{\\Delta M_{bsl}}{\\rho_{ice}})\\cdot A_{ocean}$" ] }, { "cell_type": "code", "execution_count": 61, "id": "77ef574b-8050-4e23-859c-e79c2e243fa7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(323.93477635978985, 326.3760936564503, 322.98430151297447)" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "total_slr, total_slr2, total_slr_via_ratio" ] }, { "cell_type": "code", "execution_count": null, "id": "4460deeb-4c5c-4a09-a32d-1ee67d4be930", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python [conda env:oggm_gmip3_working]", "language": "python", "name": "conda-env-oggm_gmip3_working-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.14" } }, "nbformat": 4, "nbformat_minor": 5 }