def test_surf_var(): grib_filter.initialize(grib_filter_test.gg_path, grib_filter_test.sh_path, tmp_path) ece2cmorlib.initialize() tgt = ece2cmorlib.get_cmor_target("clwvi", "CFday") src = cmor_source.ifs_source.read("79.128") tsk = cmor_task.cmor_task(src, tgt) grib_filter.execute([tsk]) filepath = os.path.join(tmp_path, "79.128.1.3") assert os.path.isfile(filepath) assert getattr(tsk, cmor_task.filter_output_key) == [filepath] with open(filepath) as fin: reader = grib_file.create_grib_file(fin) date, time = 0, 0 while reader.read_next(): param = reader.get_field(grib_file.param_key) assert param == 79 newdate = reader.get_field(grib_file.date_key) if date != 0 and newdate != date: assert newdate == date + 1 date = newdate newtime = reader.get_field(grib_file.time_key) assert newtime == (time + 300) % 2400 time = newtime os.remove(filepath)
def test_expr_var(): grib_filter.initialize(grib_filter_test.gg_path, grib_filter_test.sh_path, tmp_path) ece2cmorlib.initialize() tgt = ece2cmorlib.get_cmor_target("sfcWind", "Amon") src = cmor_source.ifs_source.read("214.128", "sqrt(sqr(var165)+sqr(var166))") tsk = cmor_task.cmor_task(src, tgt) grib_filter.execute([tsk]) filepath = os.path.join(tmp_path, "166.128.105_165.128.105.3") assert os.path.isfile(filepath) assert getattr(tsk, cmor_task.filter_output_key) == [filepath] with open(filepath) as fin: reader = grib_file.create_grib_file(fin) date, time = 0, 0 while reader.read_next(): param = reader.get_field(grib_file.param_key) assert param in [165, 166] newdate = reader.get_field(grib_file.date_key) if date != 0 and newdate != date: assert newdate == date + 1 date = newdate newtime = reader.get_field(grib_file.time_key) if newtime != time: assert newtime == (time + 300) % 2400 time = newtime os.remove(filepath)
def test_expr_var(): grib_filter.initialize(grib_filter_test.gg_path, grib_filter_test.sh_path, tmp_path) ece2cmorlib.initialize() tgt = ece2cmorlib.get_cmor_target("sfcWind", "Amon") src = cmor_source.ifs_source.read( "var214=sqrt(sqr(var165)+sqr(var166))") tsk = cmor_task.cmor_task(src, tgt) grib_filter.execute([tsk], 1) filepath = os.path.join(tmp_path, "165.128.105_166.128.105") ok_(os.path.isfile(filepath)) ok_(getattr(tsk, "path"), filepath) with open(filepath) as fin: reader = grib_file.create_grib_file(fin) date, time = 0, 0 while reader.read_next(): param = reader.get_field(grib_file.param_key) ok_(param in [165, 166]) newdate = reader.get_field(grib_file.date_key) if date != 0 and newdate != date: eq_(newdate, date + 1) date = newdate newtime = reader.get_field(grib_file.time_key) if newtime != time: eq_(newtime, (time + 300) % 2400) time = newtime os.remove(filepath)
def test_pressure_var(): grib_filter.initialize(grib_filter_test.gg_path, grib_filter_test.sh_path, tmp_path) ece2cmorlib.initialize() tgt = ece2cmorlib.get_cmor_target("ua", "Amon") src = cmor_source.ifs_source.read("131.128") tsk = cmor_task.cmor_task(src, tgt) grib_filter.execute([tsk], 1) filepath = os.path.join(tmp_path, "131.128.210.6") ok_(os.path.isfile(filepath)) ok_(getattr(tsk, cmor_task.filter_output_key), [filepath]) with open(filepath) as fin: reader = grib_file.create_grib_file(fin) date, time = 0, 0 while reader.read_next(): param = reader.get_field(grib_file.param_key) eq_(param, 131) newdate = reader.get_field(grib_file.date_key) if date != 0 and newdate != date: eq_(newdate, date + 1) date = newdate newtime = reader.get_field(grib_file.time_key) if newtime != time: eq_(newtime, (time + 600) % 2400) time = newtime os.remove(filepath)
def test_surf_var(): grib_filter.initialize(grib_filter_test.gg_path, grib_filter_test.sh_path, tmp_path) ece2cmorlib.initialize() tgt = ece2cmorlib.get_cmor_target("clwvi", "CFday") src = cmor_source.ifs_source.read("79.128") tsk = cmor_task.cmor_task(src, tgt) grib_filter.execute([tsk], 1) filepath = os.path.join(tmp_path, "79.128.1") ok_(os.path.isfile(filepath)) ok_(getattr(tsk, cmor_task.output_path_key), filepath) with open(filepath) as fin: reader = grib_file.create_grib_file(fin) date, time = 0, 0 while reader.read_next(): param = reader.get_field(grib_file.param_key) eq_(param, 79) newdate = reader.get_field(grib_file.date_key) if date != 0 and newdate != date: eq_(newdate, date + 1) date = newdate newtime = reader.get_field(grib_file.time_key) eq_(newtime, (time + 300) % 2400) time = newtime os.remove(filepath)
def test_create_task(): ece2cmorlib.initialize() tgt = ece2cmorlib.get_cmor_target("clwvi", "CFday") src = cmor_source.ifs_source.read("79.128") tsk = cmor_task.cmor_task(src, tgt) ece2cmorlib.add_task(tsk) assert tsk in ece2cmorlib.tasks ece2cmorlib.finalize()
def test_create_task(self): ece2cmorlib_tests.init() tgt = ece2cmorlib.get_cmor_target("clwvi", "CFday") src = cmor_source.ifs_source.read("79.128") tsk = cmor_task.cmor_task(src, tgt) ece2cmorlib.add_task(tsk) ok_(tsk in ece2cmorlib.tasks) ece2cmorlib.finalize()
def test_duplicate_task(): ece2cmorlib.initialize() tgt = ece2cmorlib.get_cmor_target("clwvi", "CFday") src1 = cmor_source.ifs_source.read("49.128") tsk1 = cmor_task.cmor_task(src1, tgt) ece2cmorlib.add_task(tsk1) src2 = cmor_source.ifs_source.read("79.128") tsk2 = cmor_task.cmor_task(src2, tgt) ece2cmorlib.add_task(tsk2) assert len(ece2cmorlib.tasks) == 1 assert tsk2 in ece2cmorlib.tasks ece2cmorlib.finalize()
def test_duplicate_task(self): ece2cmorlib_tests.init() tgt = ece2cmorlib.get_cmor_target("clwvi", "CFday") src1 = cmor_source.ifs_source.read("49.128") tsk1 = cmor_task.cmor_task(src1, tgt) ece2cmorlib.add_task(tsk1) src2 = cmor_source.ifs_source.read("79.128") tsk2 = cmor_task.cmor_task(src2, tgt) ece2cmorlib.add_task(tsk2) eq_(len(ece2cmorlib.tasks), 1) ok_(tsk2 in ece2cmorlib.tasks) ece2cmorlib.finalize()
def test_validate_tasks(): grib_filter.initialize(grib_filter_test.gg_path, grib_filter_test.sh_path, tmp_path) ece2cmorlib.initialize() tgt1 = ece2cmorlib.get_cmor_target("clwvi", "CFday") src1 = cmor_source.ifs_source.read("79.128") tsk1 = cmor_task.cmor_task(src1, tgt1) tgt2 = ece2cmorlib.get_cmor_target("ua", "Amon") src2 = cmor_source.ifs_source.read("131.128") tsk2 = cmor_task.cmor_task(src2, tgt2) valid_tasks, varstasks = grib_filter.validate_tasks([tsk1, tsk2]) assert valid_tasks == [tsk1, tsk2] key1 = (79, 128, grib_file.surface_level_code, 0, cmor_source.ifs_grid.point) key2 = (131, 128, grib_file.pressure_level_Pa_code, 92500, cmor_source.ifs_grid.spec) assert varstasks[key1] == [tsk1] assert varstasks[key2] == [tsk2] ltype, plevs = cmor_target.get_z_axis(tgt2) levs = sorted([float(p) for p in plevs]) levcheck = sorted([k[3] for k in varstasks if k[0] == 131]) assert levs == levcheck
def add_target(variable, table, targetlist, vid=None, priority=None, mip_list=None): global log target = ece2cmorlib.get_cmor_target(variable, table) if target: if vid: target.vid = vid if priority: target.priority = priority if mip_list: target.mip_list = mip_list targetlist.append(target) return True else: log.error("The %s variable does not appear in the CMOR table file %s" % (variable, table)) return False
def add_target(variable, table, targetlist, vid=None, priority=None): global log target = ece2cmorlib.get_cmor_target(variable, table) if (target): if (vid): target.vid = vid if (priority): target.priority = priority targetlist.append(target) return True else: log.error( "The %s variable does not appear in the CMOR table file CMIP6_%s.json" % (variable, table)) return False
def load_targets_f90nml(varlist): global log import f90nml vlist = f90nml.read(varlist) targets = [] for sublist in vlist["varlist"]: freq = sublist["freq"] vars2d = sublist.get("vars2d", []) vars3d = sublist.get("vars3d", []) for v in (vars2d + vars3d): tlist = ece2cmorlib.get_cmor_target(v) tgt = [t for t in tlist if t.frequency == freq] if len(tgt) == 0: log.error( "Could not find cmor targets of variable %s with frequency %s in current set of tables" % (v, freq)) targets.extend(tgt) return targets
def test_lookup_target(): ece2cmorlib.initialize() tgt = ece2cmorlib.get_cmor_target("clwvi", "CFday") assert tgt is not None ece2cmorlib.finalize()
def test_lookup_target(self): ece2cmorlib_tests.init() tgt = ece2cmorlib.get_cmor_target("clwvi", "CFday") ok_(tgt != None, "CMOR target successfully created") ece2cmorlib.finalize()