def test_mb_climate(self): hef_file = get_demo_file('Hintereisferner.shp') entity = gpd.GeoDataFrame.from_file(hef_file).iloc[0] gdirs = [] gdir = oggm.GlacierDirectory(entity, base_dir=self.testdir) gis.define_glacier_region(gdir, entity=entity) gdirs.append(gdir) climate.distribute_climate_data(gdirs) with netCDF4.Dataset(get_demo_file('histalp_merged_hef.nc')) as nc_r: ref_h = nc_r.variables['hgt'][1, 1] ref_p = nc_r.variables['prcp'][:, 1, 1] ref_p *= cfg.PARAMS['prcp_scaling_factor'] ref_t = nc_r.variables['temp'][:, 1, 1] ref_t = np.where(ref_t < 0, 0, ref_t) hgts = np.array([ref_h, ref_h, -8000, 8000]) time, temp, prcp = climate.mb_climate_on_height(gdir, hgts) ref_nt = 202*12 self.assertTrue(len(time) == ref_nt) self.assertTrue(temp.shape == (4, ref_nt)) self.assertTrue(prcp.shape == (4, ref_nt)) np.testing.assert_allclose(temp[0, :], ref_t) np.testing.assert_allclose(temp[0, :], temp[1, :]) np.testing.assert_allclose(prcp[0, :], prcp[1, :]) np.testing.assert_allclose(prcp[3, :], ref_p) np.testing.assert_allclose(prcp[2, :], ref_p*0) np.testing.assert_allclose(temp[3, :], ref_p*0) yr = [1802, 1802] time, temp, prcp = climate.mb_climate_on_height(gdir, hgts, year_range=yr) ref_nt = 1*12 self.assertTrue(len(time) == ref_nt) self.assertTrue(temp.shape == (4, ref_nt)) self.assertTrue(prcp.shape == (4, ref_nt)) np.testing.assert_allclose(temp[0, :], ref_t[0:12]) np.testing.assert_allclose(temp[0, :], temp[1, :]) np.testing.assert_allclose(prcp[0, :], prcp[1, :]) np.testing.assert_allclose(prcp[3, :], ref_p[0:12]) np.testing.assert_allclose(prcp[2, :], ref_p[0:12]*0) np.testing.assert_allclose(temp[3, :], ref_p[0:12]*0) yr = [1803, 1804] time, temp, prcp = climate.mb_climate_on_height(gdir, hgts, year_range=yr) ref_nt = 2*12 self.assertTrue(len(time) == ref_nt) self.assertTrue(temp.shape == (4, ref_nt)) self.assertTrue(prcp.shape == (4, ref_nt)) np.testing.assert_allclose(temp[0, :], ref_t[12:36]) np.testing.assert_allclose(temp[0, :], temp[1, :]) np.testing.assert_allclose(prcp[0, :], prcp[1, :]) np.testing.assert_allclose(prcp[3, :], ref_p[12:36]) np.testing.assert_allclose(prcp[2, :], ref_p[12:36]*0) np.testing.assert_allclose(temp[3, :], ref_p[12:36]*0)
def test_mb_climate(self): hef_file = get_demo_file('Hintereisferner.shp') rgidf = gpd.GeoDataFrame.from_file(hef_file) # loop because for some reason indexing wont work gdirs = [] for index, entity in rgidf.iterrows(): gdir = oggm.GlacierDirectory(entity, base_dir=self.testdir) gis.define_glacier_region(gdir, entity=entity) gdirs.append(gdir) climate.distribute_climate_data(gdirs) nc_r = netCDF4.Dataset(get_demo_file('histalp_merged_hef.nc')) ref_h = nc_r.variables['hgt'][1, 1] ref_p = nc_r.variables['prcp'][:, 1, 1] ref_p *= cfg.PARAMS['prcp_scaling_factor'] ref_t = nc_r.variables['temp'][:, 1, 1] ref_t = np.where(ref_t < 0, 0, ref_t) nc_r.close() hgts = np.array([ref_h, ref_h, -8000, 8000]) time, temp, prcp = climate.mb_climate_on_height(gdir, hgts) ref_nt = 202 * 12 self.assertTrue(len(time) == ref_nt) self.assertTrue(temp.shape == (4, ref_nt)) self.assertTrue(prcp.shape == (4, ref_nt)) np.testing.assert_allclose(temp[0, :], ref_t) np.testing.assert_allclose(temp[0, :], temp[1, :]) np.testing.assert_allclose(prcp[0, :], prcp[1, :]) np.testing.assert_allclose(prcp[3, :], ref_p) np.testing.assert_allclose(prcp[2, :], ref_p * 0) np.testing.assert_allclose(temp[3, :], ref_p * 0) yr = [1802, 1802] time, temp, prcp = climate.mb_climate_on_height(gdir, hgts, year_range=yr) ref_nt = 1 * 12 self.assertTrue(len(time) == ref_nt) self.assertTrue(temp.shape == (4, ref_nt)) self.assertTrue(prcp.shape == (4, ref_nt)) np.testing.assert_allclose(temp[0, :], ref_t[0:12]) np.testing.assert_allclose(temp[0, :], temp[1, :]) np.testing.assert_allclose(prcp[0, :], prcp[1, :]) np.testing.assert_allclose(prcp[3, :], ref_p[0:12]) np.testing.assert_allclose(prcp[2, :], ref_p[0:12] * 0) np.testing.assert_allclose(temp[3, :], ref_p[0:12] * 0) yr = [1803, 1804] time, temp, prcp = climate.mb_climate_on_height(gdir, hgts, year_range=yr) ref_nt = 2 * 12 self.assertTrue(len(time) == ref_nt) self.assertTrue(temp.shape == (4, ref_nt)) self.assertTrue(prcp.shape == (4, ref_nt)) np.testing.assert_allclose(temp[0, :], ref_t[12:36]) np.testing.assert_allclose(temp[0, :], temp[1, :]) np.testing.assert_allclose(prcp[0, :], prcp[1, :]) np.testing.assert_allclose(prcp[3, :], ref_p[12:36]) np.testing.assert_allclose(prcp[2, :], ref_p[12:36] * 0) np.testing.assert_allclose(temp[3, :], ref_p[12:36] * 0)