def test_all_attrs(self): file_ = 'prw_Amon_GFDL-ESM4_historical_r1i1p1f1_gr1_195001-201412.nc' d = cmip6.CMIP6_DRSFilename(file_) self.assertEqual(d.variable_id, 'prw') self.assertEqual(d.table_id, 'Amon') self.assertEqual(d.source_id, 'GFDL-ESM4') self.assertEqual(d.experiment_id, 'historical') self.assertEqual(d.variant_label, 'r1i1p1f1') self.assertEqual(d.grid_label, 'gr1') self.assertEqual(d.start_date, dl.Date(1950,1)) self.assertEqual(d.end_date, dl.Date(2014,12)) self.assertEqual(d.date_range, dl.DateRange('195001-201412'))
def test_path_examples(self): dir_ = "CMIP6/CMIP/E3SM-Project/E3SM-1-1/hist-bgc/r1i1p1f1/Omon/so/gr/v20191112" file_ = "so_Omon_E3SM-1-1_hist-bgc_r1i1p1f1_gr_197501-197912.nc" d = cmip6.CMIP6_DRSPath(os.path.join(dir_, file_)) self.assertEqual(d.activity_id, 'CMIP') self.assertEqual(d.institution_id, 'E3SM-Project') self.assertEqual(d.source_id, 'E3SM-1-1') self.assertEqual(d.experiment_id, 'hist-bgc') self.assertEqual(d.variant_label, 'r1i1p1f1') self.assertEqual(d.table_id, 'Omon') self.assertEqual(d.variable_id, 'so') self.assertEqual(d.grid_label, 'gr') self.assertEqual(d.version_date, dl.Date('2019-11-12')) self.assertEqual(d.frequency, cmip6.CMIP6DateFrequency('mon')) self.assertEqual(d.start_date, dl.Date(1975, 1)) self.assertEqual(d.end_date, dl.Date(1979, 12))
def test_ts_parse(self): dm = _DummyGfdlppDataManager() dir_ = 'atmos_cmip/ts/daily/5yr' file_ = 'atmos_cmip.20100101-20141231.rsdscsdiff.nc' ds = dm.parse_relative_path(dir_, file_) self.assertEqual(ds.component, 'atmos_cmip') self.assertEqual(ds.date_freq, dt.DateFrequency('day')) self.assertEqual(ds.chunk_freq, dt.DateFrequency(5, 'yr')) self.assertEqual(ds.start_date, dt.Date(2010, 1, 1)) self.assertEqual(ds.end_date, dt.Date(2014, 12, 31)) self.assertEqual(ds.name_in_model, 'rsdscsdiff') self.assertEqual( ds._remote_data, '/pp/atmos_cmip/ts/daily/5yr/atmos_cmip.20100101-20141231.rsdscsdiff.nc' ) self.assertEqual(ds.date_range, dt.DateRange('20100101-20141231'))
def test_from_struct(self): FooEnum = basic.MDTFEnum('FooEnum', 'X Y Z') @util.mdtf_dataclass class Dummy(object): a: FooEnum = None b: dt.Date = None c: dt.DateFrequency = None dummy = Dummy(a="X", b="2010", c="6hr") self.assertEqual(dummy.a, FooEnum.X) self.assertEqual(dummy.b, dt.Date(2010)) self.assertEqual(dummy.c, dt.DateFrequency(6, 'hr'))