示例#1
0
 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)
示例#2
0
 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)
示例#3
0
 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)
示例#4
0
 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)
示例#5
0
 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)
示例#6
0
 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()
示例#7
0
 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()
示例#8
0
 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()
示例#9
0
 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()
示例#10
0
 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
示例#11
0
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
示例#12
0
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
示例#13
0
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
示例#14
0
 def test_lookup_target():
     ece2cmorlib.initialize()
     tgt = ece2cmorlib.get_cmor_target("clwvi", "CFday")
     assert tgt is not None
     ece2cmorlib.finalize()
示例#15
0
 def test_lookup_target(self):
     ece2cmorlib_tests.init()
     tgt = ece2cmorlib.get_cmor_target("clwvi", "CFday")
     ok_(tgt != None, "CMOR target successfully created")
     ece2cmorlib.finalize()