from oggm import cfg, workflow, utils, shop
import pandas as pd
import os, glob
import numpy as np
import xarray as xr
import seaborn as sns
import matplotlib.pyplot as plt
border = 80
dfserr = []
for exp in ['elev_bands', 'centerlines']: #
fd = f'CRU/{exp}/qc3/pcp2.5/no_match/RGI62/b_{border:03d}/L5/summary/'
fs = glob.glob(fd+'glacier_statistics*.csv')
assert len(fs) == 18
df = []
for f in fs:
df.append(pd.read_csv(f, index_col=0, low_memory=False))
df = pd.concat(df).sort_index()
plt.figure()
sns.countplot(y="error_task", data=df);
plt.show()
print(df.loc[~df['error_task'].isnull()].rgi_area_km2.sum() / df.rgi_area_km2.sum() * 100)
dfserr.append(df.loc[~df['error_task'].isnull()].sort_values(by='rgi_area_km2', ascending=False)[['rgi_area_km2', 'error_task', 'error_msg']].iloc[:15])
2.438449673256872
3.234742981390701
dfserr[0]
| rgi_area_km2 | error_task | error_msg | |
|---|---|---|---|
| rgi_id | |||
| RGI60-17.15808 | 721.950 | local_t_star | MassBalanceCalibrationError: RGI60-17.15808: m... |
| RGI60-17.15897 | 428.505 | local_t_star | MassBalanceCalibrationError: RGI60-17.15897: m... |
| RGI60-05.10735 | 392.607 | local_t_star | MassBalanceCalibrationError: RGI60-05.10735: m... |
| RGI60-05.10634 | 388.067 | local_t_star | MassBalanceCalibrationError: RGI60-05.10634: m... |
| RGI60-05.10617 | 373.290 | local_t_star | MassBalanceCalibrationError: RGI60-05.10617: m... |
| RGI60-05.10762 | 309.061 | local_t_star | MassBalanceCalibrationError: RGI60-05.10762: m... |
| RGI60-17.15898 | 268.749 | local_t_star | MassBalanceCalibrationError: RGI60-17.15898: m... |
| RGI60-05.10988 | 207.766 | local_t_star | MassBalanceCalibrationError: RGI60-05.10988: m... |
| RGI60-05.10959 | 183.850 | local_t_star | MassBalanceCalibrationError: RGI60-05.10959: m... |
| RGI60-05.11001 | 182.955 | local_t_star | MassBalanceCalibrationError: RGI60-05.11001: m... |
| RGI60-05.10885 | 170.533 | local_t_star | MassBalanceCalibrationError: RGI60-05.10885: m... |
| RGI60-05.10615 | 167.934 | local_t_star | MassBalanceCalibrationError: RGI60-05.10615: m... |
| RGI60-05.10756 | 167.501 | local_t_star | MassBalanceCalibrationError: RGI60-05.10756: m... |
| RGI60-05.10473 | 164.013 | local_t_star | MassBalanceCalibrationError: RGI60-05.10473: m... |
| RGI60-05.10769 | 161.792 | local_t_star | MassBalanceCalibrationError: RGI60-05.10769: m... |
dfserr[1]
| rgi_area_km2 | error_task | error_msg | |
|---|---|---|---|
| rgi_id | |||
| RGI60-17.15804 | 790.282 | mu_star_calibration | MassBalanceCalibrationError: RGI60-17.15804 mu... |
| RGI60-17.15808 | 721.950 | local_t_star | MassBalanceCalibrationError: RGI60-17.15808: m... |
| RGI60-13.54431 | 663.729 | flowline_model_run_historical | RuntimeError: CFL error: required time step sm... |
| RGI60-17.15897 | 428.505 | local_t_star | MassBalanceCalibrationError: RGI60-17.15897: m... |
| RGI60-05.10735 | 392.607 | local_t_star | MassBalanceCalibrationError: RGI60-05.10735: m... |
| RGI60-05.10634 | 388.067 | local_t_star | MassBalanceCalibrationError: RGI60-05.10634: m... |
| RGI60-05.10617 | 373.290 | local_t_star | MassBalanceCalibrationError: RGI60-05.10617: m... |
| RGI60-05.10762 | 309.061 | local_t_star | MassBalanceCalibrationError: RGI60-05.10762: m... |
| RGI60-05.10748 | 289.188 | local_t_star | MassBalanceCalibrationError: RGI60-05.10748: m... |
| RGI60-13.43483 | 282.721 | flowline_model_run_historical | RuntimeError: CFL error: required time step sm... |
| RGI60-17.15898 | 268.749 | local_t_star | MassBalanceCalibrationError: RGI60-17.15898: m... |
| RGI60-01.16377 | 254.841 | flowline_model_run_historical | RuntimeError: CFL error: required time step sm... |
| RGI60-05.10988 | 207.766 | local_t_star | MassBalanceCalibrationError: RGI60-05.10988: m... |
| RGI60-14.04404 | 203.336 | flowline_model_run_historical | RuntimeError: CFL error: required time step sm... |
| RGI60-05.10959 | 183.850 | local_t_star | MassBalanceCalibrationError: RGI60-05.10959: m... |
fd = f'ERA5/elev_bands/qc3/pcp1.6/no_match/RGI62/b_080/L5/summary/glacier_statistics_11.csv'
df = pd.read_csv(fd, index_col=0, low_memory=False)
fd = f'ERA5/elev_bands/qc3/pcp1.6/no_match/RGI62/b_080/L5/summary/historical_run_output_extended_11.nc'
ds = xr.open_dataset(fd)
ds.volume.sum(dim='rgi_id').plot();
check = ds.area.isel(time=0).to_dataframe()[['area']]
check['area_rgi'] = df.rgi_area_km2 * 1e6
check['year_rgi'] = df.rgi_year
check = check.dropna()
check.sum()
area 2.091955e+09 area_rgi 2.091980e+09 year_rgi 7.862529e+06 dtype: float64
check.loc[~ np.isclose(check.area_rgi, check.area)]
| area | area_rgi | year_rgi | |
|---|---|---|---|
| rgi_id | |||
| RGI60-11.00004 | 5.283319e+04 | 53000.0 | 2003 |
| RGI60-11.00028 | 3.803987e+05 | 381000.0 | 2003 |
| RGI60-11.00085 | 4.176507e+04 | 42000.0 | 2003 |
| RGI60-11.00138 | 2.786290e+04 | 28000.0 | 2003 |
| RGI60-11.00174 | 9.278241e+04 | 93000.0 | 2003 |
| ... | ... | ... | ... |
| RGI60-11.03851 | 2.177771e+04 | 22000.0 | 2007 |
| RGI60-11.03858 | 3.782550e+04 | 38000.0 | 2007 |
| RGI60-11.03887 | 1.278531e+06 | 1279000.0 | 2003 |
| RGI60-11.03911 | 2.285273e+04 | 23000.0 | 2009 |
| RGI60-11.03915 | 2.976105e+04 | 30000.0 | 2009 |
125 rows × 3 columns
fd = f'CRU/centerlines/qc3/pcp2.5/no_match/RGI62/b_080/L3/summary/'
fs = glob.glob(fd+'glacier_statistics*.csv')
assert len(fs) == 17
df = []
for f in fs:
df.append(pd.read_csv(f, index_col=0, low_memory=False))
df = pd.concat(df).sort_index()
dfv = df[['inv_volume_km3']].dropna()
df_ref = pd.read_hdf(utils.get_demo_file('rgi62_itmix_df.h5'))
dfv['ref'] = df_ref.loc[dfv.index]['vol_itmix_m3'] * 1e-9
dfv.sum()
inv_volume_km3 105450.670375 ref 105451.334906 dtype: float64
len(dfv)
156368