def test_no_trim(self): ds = create_test_data(0) # Manually add filename - encoding normally added by xr.open_dataset ds.encoding['source'] = 'folder0/BOUT.dmp.0.nc' actual = _trim(ds, guards={}, keep_boundaries={}, nxpe=1, nype=1) xrt.assert_equal(actual, ds)
def test_trim_guards(self): ds = create_test_data(0) # Manually add filename - encoding normally added by xr.open_dataset ds.encoding['source'] = 'folder0/BOUT.dmp.0.nc' actual = _trim(ds, guards={'time': 2}, keep_boundaries={}, nxpe=1, nype=1) selection = {'time': slice(2, -2)} expected = ds.isel(**selection) xrt.assert_equal(expected, actual)
def test_keep_yboundaries(self): ds = create_test_data(0) ds = ds.rename({'dim2': 'y'}) # Manually add filename - encoding normally added by xr.open_dataset ds.encoding['source'] = 'folder0/BOUT.dmp.0.nc' ds['jyseps2_1'] = 8 ds['jyseps1_2'] = 8 actual = _trim(ds, guards={'y': 2}, keep_boundaries={'y': True}, nxpe=1, nype=1) expected = ds # Should be unchanged xrt.assert_equal(expected, actual)
def test_trim_timing_info(self): ds = create_test_data(0) from xbout.load import _BOUT_PER_PROC_VARIABLES # remove a couple of entries from _BOUT_PER_PROC_VARIABLES so we test that _trim # does not fail if not all of them are present _BOUT_PER_PROC_VARIABLES = _BOUT_PER_PROC_VARIABLES[:-2] for v in _BOUT_PER_PROC_VARIABLES: ds[v] = 42.0 ds = _trim(ds, guards={}, keep_boundaries={}, nxpe=1, nype=1) expected = create_test_data(0) xrt.assert_equal(ds, expected)
def test_keep_yboundaries(self): ds = create_test_data(0) ds = ds.rename({"dim2": "y"}) # Manually add filename - encoding normally added by xr.open_dataset ds.encoding["source"] = "folder0/BOUT.dmp.0.nc" ds["jyseps2_1"] = 8 ds["jyseps1_2"] = 8 actual = _trim(ds, guards={"y": 2}, keep_boundaries={"y": True}, nxpe=1, nype=1) expected = ds # Should be unchanged xrt.assert_equal(expected, actual)
def test_keep_yboundaries_doublenull_by_filenum(self, filenum, lower, upper): ds = create_test_data(0) ds = ds.rename({'dim2': 'y'}) # Manually add filename - encoding normally added by xr.open_dataset ds.encoding['source'] = 'folder0/BOUT.dmp.'+str(filenum)+'.nc' ds['jyseps2_1'] = 3 ds['jyseps1_2'] = 11 ds['ny_inner'] = 8 ds['MYSUB'] = 4 actual = _trim(ds, guards={'y': 2}, keep_boundaries={'y': True}, nxpe=1, nype=4) expected = ds # Should be unchanged if not lower: expected = expected.isel(y=slice(2, None, None)) if not upper: expected = expected.isel(y=slice(None, -2, None)) xrt.assert_equal(expected, actual)
def test_keep_yboundaries_doublenull_by_filenum(self, filenum, lower, upper): ds = create_test_data(0) ds = ds.rename({"dim2": "y"}) # Manually add filename - encoding normally added by xr.open_dataset ds.encoding["source"] = "folder0/BOUT.dmp." + str(filenum) + ".nc" ds["jyseps2_1"] = 3 ds["jyseps1_2"] = 11 ds["ny_inner"] = 8 ds["MYSUB"] = 4 actual = _trim(ds, guards={"y": 2}, keep_boundaries={"y": True}, nxpe=1, nype=4) expected = ds # Should be unchanged if not lower: expected = expected.isel(y=slice(2, None, None)) if not upper: expected = expected.isel(y=slice(None, -2, None)) xrt.assert_equal(expected, actual)
def test_trim_ghosts(self): ds = create_test_data(0) actual = _trim(ds, ghosts={'time': 2}) selection = {'time': slice(2, -2)} expected = ds.isel(**selection) xrt.assert_equal(expected, actual)
def test_no_trim(self): ds = create_test_data(0) actual = _trim(ds) xrt.assert_equal(actual, ds)