Exemplo n.º 1
0
def multi_call_test():
    cmor.setup(inpath='Tables',netcdf_file_action=cmor.CMOR_REPLACE)

    cmor.dataset_json("Test/test_python_jamie_2.json")
    table='CMIP6_Amon.json'
    cmor.load_table(table)
    axes = [ {'table_entry': 'time',
              'units': 'days since 2000-01-01 00:00:00',
              },
             {'table_entry': 'latitude',
              'units': 'degrees_north',
              'coord_vals': [0],
              'cell_bounds': [-1, 1]},             
             {'table_entry': 'longitude',
              'units': 'degrees_east',
              'coord_vals': [90],
              'cell_bounds': [89, 91]},
             ]
              
    axis_ids = list()
    for axis in axes:
        axis_id = cmor.axis(**axis)
        axis_ids.append(axis_id)
    varid = cmor.variable('ts', 'K', axis_ids)
    cmor.write(varid, [275], time_vals = [15], time_bnds = [ [0,30] ])
    print 'First write worked as expected'
    try:
        cmor.write(varid, [275], time_vals = [15], time_bnds = [ [0], [30] ])
        raise Exception,"We shouldn't be getting in here"
    except:
        print 'Second write that should have failed did fail, good!'
        pass
    cmor.close(varid)
    print 'Success'
Exemplo n.º 2
0
    def test_yr(self):
        table = 'Tables/CMIP6_Eyr.json'
        cmor.load_table(table)
        axes = [
            {'table_entry': 'time',
             'units': 'days since 2000-01-01 00:00:00',
             'coord_vals': np.array([182.5, 547.5]),
             'cell_bounds': [[0, 365], [365, 730]]},
            {'table_entry': 'latitude',
             'units': 'degrees_north',
             'coord_vals': [0],
             'cell_bounds': [-1, 1]},
            {'table_entry': 'longitude',
             'units': 'degrees_east',
             'coord_vals': [90],
             'cell_bounds': [89, 91]}
        ]

        axis_ids = list()
        for axis in axes:
            axis_id = cmor.axis(**axis)
            axis_ids.append(axis_id)
        varid = cmor.variable('baresoilFrac', '%', axis_ids)
        cmor.write(varid, [40, 60])
        self.path = cmor.close(varid, file_name=True)

        self.assertEqual(os.path.basename(self.path),
                         'baresoilFrac_Eyr_PCMDI-test-1-0_piControl-withism_'
                         'r11i1p1f1_gr_2000-2001.nc')
Exemplo n.º 3
0
    def test_mon(self):
        table = 'Tables/CMIP6_Amon.json'
        cmor.load_table(table)
        axes = [
            {'table_entry': 'time',
             'units': 'days since 2000-01-01 00:00:00',
             'coord_vals': np.array([15, 45]),
             'cell_bounds': [[0, 30], [30, 60]]},
            {'table_entry': 'latitude',
             'units': 'degrees_north',
             'coord_vals': [0],
             'cell_bounds': [-1, 1]},
            {'table_entry': 'longitude',
             'units': 'degrees_east',
             'coord_vals': [90],
             'cell_bounds': [89, 91]}
        ]

        axis_ids = list()
        for axis in axes:
            axis_id = cmor.axis(**axis)
            axis_ids.append(axis_id)
        varid = cmor.variable('ts', 'K', axis_ids)
        cmor.write(varid, [273, 274])
        self.path = cmor.close(varid, file_name=True)

        self.assertEqual(os.path.basename(self.path),
                         'ts_Amon_PCMDI-test-1-0_piControl-withism_'
                         'r11i1p1f1_gr_200001-200002.nc')
Exemplo n.º 4
0
    def test_monclim_rounding_end_time(self):
        """
        60 days since 2000-01-01 is 2000-03-01 00:00:00 and so this test makes
        sure that an end date at the start of the month is displayed as the
        previous month.
        """
        table = 'Tables/CMIP6_Oclim.json'
        cmor.load_table(table)
        axes = [
            {'table_entry': 'time2',
             'units': 'days since 2000-01-01 00:00:00',
             'coord_vals': np.array([15, 45]),
             'cell_bounds': [[0, 31], [31, 60]]},
            {'table_entry': 'latitude',
             'units': 'degrees_north',
             'coord_vals': [0],
             'cell_bounds': [-1, 1]},
            {'table_entry': 'longitude',
             'units': 'degrees_east',
             'coord_vals': [90],
             'cell_bounds': [89, 91]}
        ]

        axis_ids = list()
        for axis in axes:
            axis_id = cmor.axis(**axis)
            axis_ids.append(axis_id)
        varid = cmor.variable('difmxybo2d', 'm4 s-1', axis_ids)
        cmor.write(varid, [273, 274])
        self.path = cmor.close(varid, file_name=True)

        self.assertEqual(os.path.basename(self.path),
                         'difmxybo_Oclim_PCMDI-test-1-0_piControl-withism_'
                         'r11i1p1f1_gr_200001-200002-clim.nc')
Exemplo n.º 5
0
    def test_fx(self):
        table = 'Tables/CMIP6_fx.json'
        cmor.load_table(table)
        axes = [
            {'table_entry': 'latitude',
             'units': 'degrees_north',
             'coord_vals': [0],
             'cell_bounds': [-1, 1]},
            {'table_entry': 'longitude',
             'units': 'degrees_east',
             'coord_vals': [90],
             'cell_bounds': [89, 91]}
        ]

        axis_ids = list()
        for axis in axes:
            axis_id = cmor.axis(**axis)
            axis_ids.append(axis_id)
        varid = cmor.variable('orog', 'm', axis_ids)
        cmor.write(varid, [273, 274])
        self.path = cmor.close(varid, file_name=True)

        self.assertEqual(os.path.basename(self.path),
                         'orog_fx_PCMDI-test-1-0_piControl-withism_'
                         'r11i1p1f1_gr.nc')
Exemplo n.º 6
0
    def test_hour_rounds_minutes(self):
        table = 'Tables/CMIP6_E1hr.json'
        cmor.load_table(table)
        axes = [
            {'table_entry': 'time1',
             'units': 'minutes since 2000-01-01 00:00:00',
             'coord_vals': np.array([12.6, 37.4])},
            {'table_entry': 'latitude',
             'units': 'degrees_north',
             'coord_vals': [0],
             'cell_bounds': [-1, 1]},
            {'table_entry': 'longitude',
             'units': 'degrees_east',
             'coord_vals': [90],
             'cell_bounds': [89, 91]}
        ]

        axis_ids = list()
        for axis in axes:
            axis_id = cmor.axis(**axis)
            axis_ids.append(axis_id)
        varid = cmor.variable('psl', 'Pa', axis_ids)
        cmor.write(varid, [99300, 100000])
        self.path = cmor.close(varid, file_name=True)

        self.assertEqual(os.path.basename(self.path),
                         'psl_E1hr_PCMDI-test-1-0_piControl-withism_'
                         'r11i1p1f1_gr_200001010013-200001010037.nc')
Exemplo n.º 7
0
    def test_subhr_rounds_seconds(self):
        table = 'Tables/CMIP6_Esubhr.json'
        cmor.load_table(table)
        axes = [
            {'table_entry': 'time1',
             'units': 'seconds since 2000-01-01 00:00:00',
             'coord_vals': np.array([750.4, 2250.6])},
            {'table_entry': 'latitude',
             'units': 'degrees_north',
             'coord_vals': [0],
             'cell_bounds': [-1, 1]},
            {'table_entry': 'longitude',
             'units': 'degrees_east',
             'coord_vals': [90],
             'cell_bounds': [89, 91]}
        ]

        axis_ids = list()
        for axis in axes:
            axis_id = cmor.axis(**axis)
            axis_ids.append(axis_id)
        varid = cmor.variable('pr', 'kg m-2 s-1', axis_ids)
        cmor.write(varid, [0.000005, 0.000006])
        self.path = cmor.close(varid, file_name=True)

        self.assertEqual(os.path.basename(self.path),
                         'pr_Esubhr_PCMDI-test-1-0_piControl-withism_'
                         'r11i1p1f1_gr_20000101001230-20000101003731.nc')
Exemplo n.º 8
0
    def test_hour_rounds_midnight(self):
        table = 'Tables/CMIP6_6hrLev.json'
        cmor.load_table(table)
        axes = [
            {'table_entry': 'time1',
             'units': 'hours since 2000-01-01 00:00:00',
             'coord_vals': np.array([23.99999, 30]),
             'cell_bounds': [[20.99999, 27], [27, 33]]},
            {'table_entry': 'latitude',
             'units': 'degrees_north',
             'coord_vals': [0],
             'cell_bounds': [-1, 1]},
            {'table_entry': 'longitude',
             'units': 'degrees_east',
             'coord_vals': [90],
             'cell_bounds': [89, 91]}
        ]

        axis_ids = list()
        for axis in axes:
            axis_id = cmor.axis(**axis)
            axis_ids.append(axis_id)
        varid = cmor.variable('ps', 'Pa', axis_ids)
        cmor.write(varid, [99300, 100000])
        self.path = cmor.close(varid, file_name=True)

        self.assertEqual(os.path.basename(self.path),
                         'ps_6hrLev_PCMDI-test-1-0_piControl-withism_'
                         'r11i1p1f1_gr_200001020000-200001020600.nc')
Exemplo n.º 9
0
    def test_day_rounds(self):
        table = 'Tables/CMIP6_Eday.json'
        cmor.load_table(table)
        axes = [
            {'table_entry': 'time',
             'units': 'days since 1960-01-01 00:00:00',
             'coord_vals': np.array([0.9999999, 1.9999999]),
             'cell_bounds': [[0.9999999 - 0.5, 0.9999999 + 0.5],
                             [0.9999999 + 0.5, 0.9999999 + 1.5]]},
            {'table_entry': 'latitude',
             'units': 'degrees_north',
             'coord_vals': [0],
             'cell_bounds': [-1, 1]},
            {'table_entry': 'longitude',
             'units': 'degrees_east',
             'coord_vals': [90],
             'cell_bounds': [89, 91]}
        ]

        axis_ids = list()
        for axis in axes:
            axis_id = cmor.axis(**axis)
            axis_ids.append(axis_id)
        varid = cmor.variable('ts', 'K', axis_ids)
        cmor.write(varid, [303, 305])
        self.path = cmor.close(varid, file_name=True)

        self.assertEqual(os.path.basename(self.path),
                         'ts_Eday_PCMDI-test-1-0_piControl-withism_'
                         'r11i1p1f1_gr_19600102-19600103.nc')
Exemplo n.º 10
0
    def test_1hrclimmon(self):
        table = 'Tables/CMIP6_E1hrClimMon.json'
        cmor.load_table(table)
        axes = [
            {'table_entry': 'time3',
             'units': 'minutes since 2000-01-01 00:00:00',
             'coord_vals': np.array([12.5, 37.5]),
             'cell_bounds': [[0., 25.], [25., 50.]]},
            {'table_entry': 'latitude',
             'units': 'degrees_north',
             'coord_vals': [0],
             'cell_bounds': [-1, 1]},
            {'table_entry': 'longitude',
             'units': 'degrees_east',
             'coord_vals': [90],
             'cell_bounds': [89, 91]}
        ]

        axis_ids = list()
        for axis in axes:
            axis_id = cmor.axis(**axis)
            axis_ids.append(axis_id)
        varid = cmor.variable('rlut', 'W m-2', axis_ids, positive='up')
        cmor.write(varid, [186, 190])
        self.path = cmor.close(varid, file_name=True)

        self.assertEqual(os.path.basename(self.path),
                         'rlut_E1hrClimMon_PCMDI-test-1-0_piControl-withism_'
                         'r11i1p1f1_gr_200001010000-200001010050-clim.nc')
    def testCMIP6(self):
        cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE, logfile=self.tmpfile)
        cmor.dataset_json("Test/common_user_input_hier.json")

        cmor.load_table("CMIP6_Omon.json")
        itime = cmor.axis(table_entry="time", units='months since 2010', coord_vals=numpy.array(
            [0, 1, 2, 3, 4.]), cell_bounds=numpy.array([0, 1, 2, 3, 4, 5.]))
        ivar = cmor.variable(
            table_entry="masso",
            axis_ids=[itime],
            units='kg')

        data = numpy.random.random(5)
        for i in range(0, 5):
            # ,time_vals=numpy.array([i,]),time_bnds=numpy.array([i,i+1]))
            cmor.write(ivar, data[i:i])
        self.delete_files += [cmor.close(ivar, True)]
        cmor.close()

        f = cdms2.open(cmor.get_final_filename() , 'r')
        self.assertEqual(f.coder, "Denis Nadeau")
        self.assertEqual(f.hierarchical_attr_setting, "information")
        self.assertEqual(f.creator, "PCMDI")
        self.assertEqual(f.model, "Ocean Model")
        self.assertEqual(f.country, "USA")
        f.close()
    def testCMIP6(self):
        # -------------------------------------------
        # Try to call cmor with a bad institution_ID
        # -------------------------------------------
        cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE, logfile=self.tmpfile)
        cmor.dataset_json("Test/CMOR_input_example.json")

        # ------------------------------------------
        # load Omon table and create masso variable
        # ------------------------------------------
        cmor.load_table("CMIP6_Omon.json")
        itime = cmor.axis(table_entry="time", units='months since 2010',
                            coord_vals=numpy.array([0, 1, 2, 3, 4.]),
                            cell_bounds=numpy.array([0, 1, 2, 3, 4, 5.]))
        ivar = cmor.variable(
            table_entry="masso",
            axis_ids=[itime],
            units='kg')

        data = numpy.random.random(5)
        for i in range(0, 5):
            cmor.write(ivar, data[i:i])
        self.delete_files += [cmor.close(ivar, True)]
        filen = cmor.close()
        f = cdms2.open(cmor.get_final_filename(), "r")
        a = f.getglobal("tracking_id").split('/')[0]
        self.assertNotIn("hdl:21.14100/", a)
    def testCMIP6(self):
        try:
            # -------------------------------------------
            # Try to call cmor with a bad institution_ID
            # -------------------------------------------
            cmor.setup(
                inpath='Tables',
                netcdf_file_action=cmor.CMOR_REPLACE)

            cmor.dataset_json("Test/test_python_CMIP6_CV_badgridlabel.json")

            # ------------------------------------------
            # load Omon table and create masso variable
            # ------------------------------------------
            cmor.load_table("CMIP6_Omon.json")
            itime = cmor.axis(table_entry="time", units='months since 2010',
                              coord_vals=numpy.array([0, 1, 2, 3, 4.]),
                              cell_bounds=numpy.array([0, 1, 2, 3, 4, 5.]))
            ivar = cmor.variable(table_entry="masso", axis_ids=[itime], units='kg')

            data = numpy.random.random(5)
            for i in range(0, 5):
                cmor.write(ivar, data[i:i])
        except:
            os.dup2(self.newstdout, 1)
            os.dup2(self.newstderr, 2)
            testOK = self.getAssertTest()

            sys.stdout = os.fdopen(self.newstdout, 'w', 0)
            sys.stderr = os.fdopen(self.newstderr, 'w', 0)
            # ------------------------------------------
            # Check error after signal handler is back
            # ------------------------------------------
            self.assertIn("\"gs1n\"", testOK)
Exemplo n.º 14
0
def path_test():
    cmor.setup(inpath='Test',netcdf_file_action=cmor.CMOR_REPLACE)

    cmor.dataset('mytest2010030812', 'ukmo', 'HadCM3', '360_day',
                 institute_id="PCMDI",
                 model_id='HadCM3',forcing='co2')
    
    table='CMIP5_Amon_YYYYMMDDHH'
    cmor.load_table(table)
    axes = [ {'table_entry': 'time',
              'units': 'days since 2000-01-01 00:00:00',
              'coord_vals': [15],
              'cell_bounds': [0, 30]
              },
             {'table_entry': 'latitude',
              'units': 'degrees_north',
              'coord_vals': [0],
              'cell_bounds': [-1, 1]},             
             {'table_entry': 'longitude',
              'units': 'degrees_east',
              'coord_vals': [90],
              'cell_bounds': [89, 91]},
             ]
              
    axis_ids = list()
    for axis in axes:
        axis_id = cmor.axis(**axis)
        axis_ids.append(axis_id)
    varid = cmor.variable('ts', 'K', axis_ids)
    cmor.write(varid, [273])
    path=cmor.close(varid, file_name=True)

    print "Saved file: ",path
Exemplo n.º 15
0
def test_mode(mode):
    cmor.setup(inpath="Tables", netcdf_file_action=mode)
    cmor.dataset(
        "pre-industrial control",
        "ukmo",
        "HadCM3",
        "360_day",
        institute_id="ukmo",
        model_id="HadCM3",
        forcing="TO",
        contact="Derek Jeter",
        history="some global history",
        parent_experiment_id="lgm",
        parent_experiment_rip="r1i1p1",
        branch_time=0,
    )

    table = "CMIP5_fx"
    cmor.load_table(table)
    axes = [
        {"table_entry": "latitude", "units": "degrees_north", "coord_vals": [0], "cell_bounds": [-1, 1]},
        {"table_entry": "longitude", "units": "degrees_east", "coord_vals": [90], "cell_bounds": [89, 91]},
    ]
    values = numpy.array([5000], numpy.float32)
    axis_ids = list()

    for axis in axes:
        axis_id = cmor.axis(**axis)
        axis_ids.append(axis_id)
    for var, units in (("deptho", "m"),):
        varid = cmor.variable(var, units, axis_ids, history="variable history")
        cmor.write(varid, values)
    fnm = cmor.close(varid, file_name=True)
    cmor.close()
    return fnm
Exemplo n.º 16
0
def main():

    cmor.setup(inpath='Tables',
               netcdf_file_action = cmor.CMOR_REPLACE)
    cmor.dataset('pre-industrial control', 'mohc', 'HadGEM2: source',
                 '360_day',
                 institute_id = 'ukmo',
                 model_id = 'HadGEM2',
                 history = 'some global history',
                 forcing = 'N/A',
                 parent_experiment_id = 'N/A',
                 parent_experiment_rip = 'N/A',
                 branch_time = 0.,
                 contact = 'bob')
 
    table = 'CMIP5_6hrLev'
    cmor.load_table(table)
    axes = [ {'table_entry': 'time1',
              'units': 'days since 2000-01-01 00:00:00',
              },
             {'table_entry': 'latitude',
              'units': 'degrees_north',
              'coord_vals': [0],
              'cell_bounds': [-1, 1]},             
             {'table_entry': 'longitude',
              'units': 'degrees_east',
              'coord_vals': [90],
              'cell_bounds': [89, 91]},
             {'table_entry': 'hybrid_height',
              'coord_vals': [0, 1],
              'cell_bounds': [[0., 0.5], [0.5, 1.]],
              'units': 'm',
              },
             ]

    values = numpy.array([1.2,1.2], numpy.float32)
    numpy.reshape(values, (2,1,1,1))
    axis_ids = list()
    for axis in axes:
        axis_id = cmor.axis(**axis)
        axis_ids.append(axis_id)

    print 'cmor.axis calls complete'

    cmor.zfactor(axis_ids[3], 'b', '', axis_ids[3:4], 'd', [0., 0.5], [[0., 0.25], [0.25, 1.]])
    cmor.zfactor(axis_ids[3], 'orog', 'm', axis_ids[1:3], 'd', [[0.]]) 
    print 'cmor.zfactor calls complete'
    varid = cmor.variable('ua',
                          'm s-1',
                          axis_ids,
                          missing_value = -99
                          )

    print 'cmor.variable call complete'
    
    cmor.write(varid, values, time_vals = [6.0])

    print 'cmor.write call complete'

    cmor.close()
    def testCMIP6(self):
        # -------------------------------------------
        # Try to call cmor with a bad institution_ID
        # -------------------------------------------
        cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE, logfile=self.tmpfile)
        cmor.dataset_json("Test/CMOR_input_example.json")

        # ------------------------------------------
        # load Omon table and create masso variable
        # ------------------------------------------
        cmor.load_table("CMIP6_Omon.json")
        itime = cmor.axis(table_entry="time", units='months since 2000',
                            coord_vals=numpy.array([0, 1, 2, 3, 4.]),
                            cell_bounds=numpy.array([0, 1, 2, 3, 4, 5.]))
        ivar = cmor.variable(
            table_entry="masso",
            axis_ids=[itime],
            units='kg')

        data = numpy.random.random(5)
        for i in range(0, 5):
            cmor.write(ivar, data[i:i])
        self.delete_files += [cmor.close(ivar, True)]
        cmor.close()

        f = cdms2.open(cmor.get_final_filename(), "r")
        a = f.getglobal("further_info_url")
        self.assertEqual(
                "https://furtherinfo.es-doc.org/CMIP6.PCMDI.PCMDI-test-1-0.piControl-withism.none.r3i1p1f1",
            a)
    def TestCase(self):
        try:
            # -------------------------------------------
            # Try to call cmor with a bad institution_ID
            # -------------------------------------------
            cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
            cmor.dataset_json("Test/test_python_CMIP6_CV_badsourcetypeCHEMAER.json")

            # ------------------------------------------
            # load Omon table and create masso variable
            # ------------------------------------------
            cmor.load_table("CMIP6_Omon.json")
            itime = cmor.axis(table_entry="time", units='months since 2010',
                              coord_vals=numpy.array([0, 1, 2, 3, 4.]),
                              cell_bounds=numpy.array([0, 1, 2, 3, 4, 5.]))
            ivar = cmor.variable(table_entry="masso", axis_ids=[itime], units='kg')

            data = numpy.random.random(5)
            for i in range(0, 5):
                cmor.write(ivar, data[i:i])
        except:
            raise
        os.dup2(self.newstdout, 1)
        os.dup2(self.newstderr, 2)
        sys.stdout = os.fdopen(self.newstdout, 'w', 0)
        sys.stderr = os.fdopen(self.newstderr, 'w', 0)
Exemplo n.º 19
0
def main():
    
    missing = -99.
    cmor.setup(inpath='Tables',
               netcdf_file_action = cmor.CMOR_REPLACE)
    cmor.dataset_json("Test/test_python_jamie_3.json")

    table = 'CMIP6_Amon.json'
    cmor.load_table(table)
    axes = [ {'table_entry': 'time',
              'units': 'days since 2000-01-01 00:00:00',
              },
             {'table_entry': 'latitude',
              'units': 'degrees_north',
              'coord_vals': [0],
              'cell_bounds': [-1, 1]},             
             {'table_entry': 'longitude',
              'units': 'degrees_east',
              'coord_vals': [90],
              'cell_bounds': [89, 91]},
             ]

    values = numpy.array([missing], numpy.float32)
    myma = numpy.ma.masked_values(values, missing)
    axis_ids = list()
    for axis in axes:
        axis_id = cmor.axis(**axis)
        axis_ids.append(axis_id)
    varid = cmor.variable('ts', 'K', axis_ids, missing_value = myma.fill_value)

    cmor.write(varid, myma, time_vals = [15], time_bnds = [ [0,30] ])

    cmor.close(varid)
Exemplo n.º 20
0
def path_test():
    cmor.setup(inpath='Test',netcdf_file_action=cmor.CMOR_REPLACE)

    cmor.dataset_json("Test/test_python_YYYMMDDHH_exp_fmt.json")
    
    table='Tables/CMIP6_Amon.json'
    cmor.load_table(table)
    axes = [ {'table_entry': 'time',
              'units': 'days since 2000-01-01 00:00:00',
              'coord_vals': [15],
              'cell_bounds': [0, 30]
              },
             {'table_entry': 'latitude',
              'units': 'degrees_north',
              'coord_vals': [0],
              'cell_bounds': [-1, 1]},             
             {'table_entry': 'longitude',
              'units': 'degrees_east',
              'coord_vals': [90],
              'cell_bounds': [89, 91]},
             ]
              
    axis_ids = list()
    for axis in axes:
        axis_id = cmor.axis(**axis)
        axis_ids.append(axis_id)
    varid = cmor.variable('ts', 'K', axis_ids)
    cmor.write(varid, [273])
    path=cmor.close(varid, file_name=True)

    print "Saved file: ",path
    def testCMIP6(self):
        try:
            # -------------------------------------------
            # Try to call cmor with a bad institution_ID
            # -------------------------------------------
            global testOK
            cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE, logfile=self.tmpfile)
            cmor.dataset_json("Test/CMOR_input_example.json")
            cmor.set_cur_dataset_attribute("source_id", "invalid")

            # ------------------------------------------
            # load Omon table and create masso variable
            # ------------------------------------------
            cmor.load_table("CMIP6_Omon.json")
            itime = cmor.axis(table_entry="time", units='months since 2010',
                              coord_vals=numpy.array([0, 1, 2, 3, 4.]),
                              cell_bounds=numpy.array([0, 1, 2, 3, 4, 5.]))
            ivar = cmor.variable(
                table_entry="masso",
                axis_ids=[itime],
                units='kg')

            data = numpy.random.random(5)
            for i in range(0, 5):
                cmor.write(ivar, data[i:i])
            cmor.close()
        except BaseException:
            pass
        self.assertCV("invalid")
Exemplo n.º 22
0
def test():
    cmor.setup(inpath='Tables',netcdf_file_action=cmor.CMOR_REPLACE)

    cmor.dataset_json("Test/test_python_obs4MIPs.json")

    table='CMIP6_Amon.json'

    cmor.load_table(table)

    axes = [ {'table_entry': 'time',
              'units': 'days since 2000-01-01 00:00:00',
              },
             {'table_entry': 'latitude',
              'units': 'degrees_north',
              'coord_vals': [0],
              'cell_bounds': [-1, 1]},             
             {'table_entry': 'longitude',
              'units': 'degrees_east',
              'coord_vals': [90],
              'cell_bounds': [89, 91]},
             ]
              
    axis_ids = list()
    for axis in axes:
        axis_id = cmor.axis(**axis)
        axis_ids.append(axis_id)

    varid = cmor.variable('ts', 'K', axis_ids)

    cmor.write(varid, [275], time_vals = [15], time_bnds = [ [0,30] ])

    cmor.close(varid)
    def testCMIP6(self):

        try:
            # -------------------------------------------
            # Try to call cmor with a bad institution_ID
            # -------------------------------------------
            global testOK
            cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
            cmor.dataset_json("Test/test_python_CMIP6_CV_trackingNoprefix.json")

            # ------------------------------------------
            # load Omon table and create masso variable
            # ------------------------------------------
            cmor.load_table("CMIP6_Omon.json")
            itime = cmor.axis(table_entry="time", units='months since 2010',
                              coord_vals=numpy.array([0, 1, 2, 3, 4.]),
                              cell_bounds=numpy.array([0, 1, 2, 3, 4, 5.]))
            ivar = cmor.variable(table_entry="masso", axis_ids=[itime], units='kg')

            data = numpy.random.random(5)
            for i in range(0, 5):
                cmor.write(ivar, data[i:i])
            filen = cmor.close()
            os.dup2(self.newstdout, 1)
            os.dup2(self.newstderr, 2)
            sys.stdout = os.fdopen(self.newstdout, 'w', 0)
            sys.stderr = os.fdopen(self.newstderr, 'w', 0)
            f = cdms2.open(cmor.get_final_filename(), "r")
            a = f.getglobal("tracking_id").split('/')[0]
            self.assertNotIn("hdl:21.14100/", a)
        except:
            raise
Exemplo n.º 24
0
    def testCMIP6(self):

        # -------------------------------------------
        # Try to call cmor with a bad institution_ID
        # -------------------------------------------
        try:
            cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE, logfile=self.tmpfile)
            cmor.dataset_json("Test/CMOR_input_example.json")
            cmor.set_cur_dataset_attribute("grid_label", "gr-0")

            # ------------------------------------------
            # load Omon table and create masso variable
            # ------------------------------------------
            cmor.load_table("CMIP6_Omon.json")
            itime = cmor.axis(table_entry="time", units='months since 2010',
                              coord_vals=numpy.array([0, 1, 2, 3, 4.]),
                              cell_bounds=numpy.array([0, 1, 2, 3, 4, 5.]))
            ivar = cmor.variable(
                table_entry="masso",
                axis_ids=[itime],
                units='kg')

            data = numpy.random.random(5)
            for i in range(0, 5):
                cmor.write(ivar, data[i:i])
            self.delete_files += [cmor.close(ivar, True)]
            cmor.close()
        except BaseException:
            pass
        # ------------------------------------------
        # Check error after signal handler is back
        # ------------------------------------------
        self.assertCV("\"gr-0\"")
    def testCMIP6(self):
        try:
            # -------------------------------------------
            # Try to call cmor with a bad institution_ID
            # -------------------------------------------
            cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE, logfile=self.tmpfile)
            cmor.dataset_json(
                "Test/test_python_CMIP6_CV_badsourcetypeCHEMAER.json")

            # ------------------------------------------
            # load Omon table and create masso variable
            # ------------------------------------------
            cmor.load_table("CMIP6_Omon.json")
            itime = cmor.axis(table_entry="time", units='months since 2010',
                              coord_vals=numpy.array([0, 1, 2, 3, 4.]),
                              cell_bounds=numpy.array([0, 1, 2, 3, 4, 5.]))
            ivar = cmor.variable(
                table_entry="masso",
                axis_ids=[itime],
                units='kg')

            data = numpy.random.random(5)
            for i in range(0, 5):
                cmor.write(ivar, data[i:i])
            self.delete_files += [cmor.close(ivar, True)]
            cmor.close()
        except BaseException:
            pass

        self.assertCV("invalid source")
    def testCMIP6(self):
        try:
            # -------------------------------------------
            # Try to call cmor with a bad institution_ID
            # -------------------------------------------
            global testOK
            cmor.setup(inpath="Tables", netcdf_file_action=cmor.CMOR_REPLACE)
            cmor.dataset_json("Test/test_python_CMIP6_CV_furtherinfourl.json")

            # ------------------------------------------
            # load Omon table and create masso variable
            # ------------------------------------------
            cmor.load_table("CMIP6_Omon.json")
            itime = cmor.axis(
                table_entry="time",
                units="months since 2010",
                coord_vals=numpy.array([0, 1, 2, 3, 4.0]),
                cell_bounds=numpy.array([0, 1, 2, 3, 4, 5.0]),
            )
            ivar = cmor.variable(table_entry="masso", axis_ids=[itime], units="kg")

            data = numpy.random.random(5)
            for i in range(0, 5):
                cmor.write(ivar, data[i:i])
            cmor.close()
        except:
            raise

        os.dup2(self.newstdout, 1)
        os.dup2(self.newstderr, 2)
        sys.stdout = os.fdopen(self.newstdout, "w", 0)
        sys.stderr = os.fdopen(self.newstderr, "w", 0)
        f = cdms2.open(cmor.get_final_filename(), "r")
        a = f.getglobal("further_info_url")
        self.assertEqual("http://furtherinfo.es-doc.org/CMIP6.NCC.MIROC-ESM.piControl-withism.none.r1i1p1f1", a)
Exemplo n.º 27
0
def cmor_define_and_write(values, axes):
    table = 'CMIP5_cfSites'
    cmor.load_table(table)

    axis_ids = list()
    for axis in axes:
        axis_id = cmor.axis(**axis)
        axis_ids.append(axis_id)

    igrid = cmor.grid([axis_ids[1]], [0.], [0.])
    cmor.zfactor(axis_ids[2], 'b', axis_ids = [axis_ids[2]],
                 zfactor_values = range(2),
                 zfactor_bounds = [[x-0.5, x+0.5] for x in range(2)])

    cmor.zfactor(axis_ids[2], 'orog', 'm', axis_ids = [igrid],
                 zfactor_values = [0])

    ids_for_var = [axis_ids[0], igrid, axis_ids[2]]
    varid = cmor.variable('tnhus',
                          's-1',
                          ids_for_var,
                          history = 'variable history',
                          missing_value = -99,
                          )

    for time in [x * 1800./ 86400 for x in range(48)]:
        time += 1./3600./24.
        tr = cdtime.reltime(time,axes[0]["units"])
        print "Writing: %.03f" % time,"|",tr.tocomp(cdtime.Calendar360),"|",tr.tocomp()
        cmor.write(varid, values, time_vals = [time])
    return varid
Exemplo n.º 28
0
def cmor_define_and_write(values, axes):
    table = 'CMIP6_cfSites.json'
    cmor.load_table(table)

    axis_ids = list()
    for axis in axes:
        axis_id = cmor.axis(**axis)
        axis_ids.append(axis_id)

    igrid = cmor.grid([axis_ids[1]], [0.], [0.])
    cmor.zfactor(axis_ids[2], 'b', axis_ids = [axis_ids[2]],
                 zfactor_values = range(2),
                 zfactor_bounds = [[x-0.5, x+0.5] for x in range(2)])

    cmor.zfactor(axis_ids[2], 'orog', 'm', axis_ids = [igrid],
                 zfactor_values = [0])

    ids_for_var = [axis_ids[0], igrid, axis_ids[2]]
    varid = cmor.variable('tnhus',
                          's-1',
                          ids_for_var,
                          history = 'variable history',
                          missing_value = -99,
                          )

    for time in [x * 1800./ 86400 for x in range(48)]:
        cmor.write(varid, values, time_vals = [time])
    return varid
Exemplo n.º 29
0
def cmor_define_and_write(values, axes):
    table = 'CMIP5_day'
    cmor.load_table(table)

    axis_ids = list()
    for axis in axes:
        axis_ids.append(cmor.axis(**axis))

    varid = cmor.variable('rlut',
                          'W m-2',
                          axis_ids,
                          history='variable history',
                          missing_value=-99,
                          positive='up'
                          )

    for time in (15, 16, 17):
        cmor.write(
            varid,
            values,
            time_vals=[time],
            time_bnds=[
                time -
                0.45,
                time +
                0.45])
Exemplo n.º 30
0
    def testCMIP6(self):
        try:

            cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE)
            cmor.dataset_json("Test/CMOR_input_example.json")
            cmor.set_cur_dataset_attribute("experiment_id", "piControlbad")

            cmor.load_table("CMIP6_Omon.json")
            itime = cmor.axis(table_entry="time", units='months since 2010', coord_vals=numpy.array(
                [0, 1, 2, 3, 4.]), cell_bounds=numpy.array([0, 1, 2, 3, 4, 5.]))
            ivar = cmor.variable(
                table_entry="masso",
                axis_ids=[itime],
                units='kg')

            data = numpy.random.random(5)
            for i in range(0, 5):
                # ,time_vals=numpy.array([i,]),time_bnds=numpy.array([i,i+1]))
                cmor.write(ivar, data[i:i])
            cmor.close()
        except BaseException:
            os.dup2(self.newstdout, 1)
            os.dup2(self.newstderr, 2)
            sys.stdout = os.fdopen(self.newstdout, 'w', 0)
            sys.stderr = os.fdopen(self.newstderr, 'w', 0)
            testOK = self.getAssertTest()
            self.assertIn('piControlbad', testOK)
Exemplo n.º 31
0
def write_data(varid, data, timeval, timebnds, index, **kwargs):
    """
    clisccp = FISCCP1_COSP with plev7c, and tau
    """
    cmor.write(varid,
               data['FISCCP1_COSP'][index, :],
               time_vals=timeval,
               time_bnds=timebnds)
Exemplo n.º 32
0
def write_data(varid, data, timeval, timebnds, index, **kwargs):
    """
    mmrbc = bc_a1 + bc_a4 + bc_c1 + bc_c4
    """
    outdata = data['bc_a1'][index, :] + data['bc_a4'][index, :] + \
              data['bc_c1'][index, :] + data['bc_c4'][index, :]

    cmor.write(varid, outdata, time_vals=timeval, time_bnds=timebnds)
Exemplo n.º 33
0
def write_data(varid, data, timeval, timebnds, index, **kwargs):
    """
    drybc = bc_a1DDF + bc_c1DDF + bc_a4DDF + bc_c4DDF
    """
    outdata = data['bc_a1DDF'][index, :] + data['bc_c1DDF'][index, :] + \
              data['bc_a4DDF'][index, :] + data['bc_c4DDF'][index, :]

    cmor.write(varid, outdata, time_vals=timeval, time_bnds=timebnds)
Exemplo n.º 34
0
def write_data(varid, data, timeval, timebnds, index, **kwargs):
    """
    tauv = -TAUY
    """
    cmor.write(varid,
               -1 * data[RAW_VARIABLES[0]][index, :],
               time_vals=timeval,
               time_bnds=timebnds)
Exemplo n.º 35
0
def write_data(varid, data, timeval, timebnds, index, **kwargs):
    """
    tran = QSOIL + QVEGT
    """
    outdata = data['QVEGT'][index, :] + data['QSOIL'][index, :]
    if kwargs.get('simple'):
        return outdata
    cmor.write(varid, outdata, time_vals=timeval, time_bnds=timebnds)
Exemplo n.º 36
0
def write_data(varid, data, timeval, timebnds, index, **kwargs):
    """
    so4_a1 = so4_a1
    """
    cmor.write(varid,
               data['so4_a1'][index, :],
               time_vals=timeval,
               time_bnds=timebnds)
Exemplo n.º 37
0
def write_data(varid, data, timeval, timebnds, index, **kwargs):
    """
    rsuscs = FSDSC - FSNSC
    """
    outdata = data['FSDSC'][index, :] - data['FSNSC'][index, :]
    if kwargs.get('simple'):
        return outdata
    cmor.write(varid, outdata, time_vals=timeval, time_bnds=timebnds)
Exemplo n.º 38
0
def write_data(varid, data, timeval, timebnds, index, **kwargs):
    """
    rsus = FSDS - FSNS
    """
    outdata = data['FSDS'][index, :].values - data['FSNS'][index, :].values
    if kwargs.get('simple'):
        return outdata
    cmor.write(varid, outdata, time_vals=timeval, time_bnds=timebnds)
Exemplo n.º 39
0
def write_data(varid, data, timeval, timebnds, index, **kwargs):
    """
    va = V
    """
    cmor.write(varid,
               data['V'][index, :],
               time_vals=timeval,
               time_bnds=timebnds)
Exemplo n.º 40
0
def write_data(varid, data, timeval, timebnds, index, **kwargs):
    """
    drydust = dst_a1DDF + dst_a3DDF + dst_c1DDF + dst_c3DDF
    """
    outdata = data['dst_a1DDF'][index, :] + data['dst_a3DDF'][index, :] + \
              data['dst_c1DDF'][index, :] + data['dst_c3DDF'][index, :]

    cmor.write(varid, outdata, time_vals=timeval, time_bnds=timebnds)
Exemplo n.º 41
0
def write_data(varid, data, timeval, timebnds, index, **kwargs):
    """
    lai = LAISHA + LAISUN
    """
    outdata = data['LAISHA'][index, :] + data['LAISUN'][index, :]
    if kwargs.get('simple'):
        return outdata
    cmor.write(varid, outdata, time_vals=timeval, time_bnds=timebnds)
Exemplo n.º 42
0
def define_write_var(axis_ids, entry, unit, values):
    varid = cmor.variable(entry, unit, axis_ids, missing_value=-99)

    print 'cmor.variable call complete'

    cmor.write(varid, values, time_vals=[15.0], time_bnds=[0., 30.0])

    print 'cmor.write call complete'
Exemplo n.º 43
0
def write_data(varid, data, timeval, timebnds, index, **kwargs):
    """
    prsn = (PRECSC  + PRECSL) * 1000.0
    """
    outdata = (data['PRECSC'][index, :] + data['PRECSL'][index, :]) * 1000.0
    if kwargs.get('simple'):
        return outdata
    cmor.write(varid, outdata, time_vals=timeval, time_bnds=timebnds)
Exemplo n.º 44
0
def write_data(varid, data, timeval, timebnds, index, **kwargs):
    """
    o3 = O3
    """
    outdata = data[RAW_VARIABLES[0]][index, :]
    if kwargs.get('simple'):
        return outdata
    cmor.write(varid, outdata, time_vals=timeval, time_bnds=timebnds)
Exemplo n.º 45
0
def write_data(varid, data, timeval, timebnds, index, **kwargs):
    """
    rlus = FLDS + FLNS
    """
    cmor.write(varid,
               data['FLDS'][index, :] + data['FLNS'][index, :],
               time_vals=timeval,
               time_bnds=timebnds)
Exemplo n.º 46
0
def write_data(varid, data, timeval, timebnds, index, **kwargs):
    """
    rlus = FLDS + FLNS
    """
    outdata = data['FLDS'][index, :] + data['FLNS'][index, :]
    if kwargs.get('simple'):
        return outdata
    cmor.write(varid, outdata, time_vals=timeval, time_bnds=timebnds)
Exemplo n.º 47
0
def write_data(varid, data, timeval, timebnds, index, **kwargs):
    """
    clt = CLDTOT * 100.0
    """
    cmor.write(varid,
               data['CLDTOT'][index, :] * 100.0,
               time_vals=timeval,
               time_bnds=timebnds)
Exemplo n.º 48
0
def write_data(varid, data, timeval, timebnds, index, **kwargs):
    """
    wetbc = bc_a1SFWET + bc_a4SFWET + bc_c1SFWET + bc_c4SFWET
    """
    outdata = data['bc_a1SFWET'][index, :] + data['bc_a4SFWET'][index, :] + \
              data['bc_c1SFWET'][index, :] + data['bc_c4SFWET'][index, :]

    cmor.write(varid, outdata, time_vals=timeval, time_bnds=timebnds)
Exemplo n.º 49
0
def write_data(varid, data, timeval, timebnds, index, **kwargs):
    """
    mmrdust = dst_a1 + dst_a3 + dst_c1 + dst_c4
    """
    outdata = data['dst_a1'][index, :] + data['dst_a3'][index, :] + \
              data['dst_c1'][index, :] + data['dst_c4'][index, :]

    cmor.write(varid, outdata, time_vals=timeval, time_bnds=timebnds)
Exemplo n.º 50
0
def write_data(varid, data, timeval, timebnds, index, **kwargs):
    """
    SO2 --> so2
    """
    cmor.write(varid,
               data['SO2'][index, :],
               time_vals=timeval,
               time_bnds=timebnds)
Exemplo n.º 51
0
def write_data(varid, data, timeval, timebnds, index, **kwargs):
    """
    rsus = FSDS - FSNS
    """
    cmor.write(varid,
               data['FSDS'][index, :] - data['FSNS'][index, :],
               time_vals=timeval,
               time_bnds=timebnds)
Exemplo n.º 52
0
def write_data(varid, data, timeval, timebnds, index, **kwargs):
    """
    clcalipso = CLD_CAL with alt40 levels
    """
    cmor.write(varid,
               data[RAW_VARIABLES[0]][index, :],
               time_vals=timeval,
               time_bnds=timebnds)
Exemplo n.º 53
0
def main():

    cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE_3)
    cmor.dataset('pre-industrial control',
                 'ukmo',
                 'HadCM3',
                 '360_day',
                 institute_id='ukmo',
                 model_id='HadCM3',
                 history='some global history',
                 forcing='N/A',
                 parent_experiment_id='N/A',
                 parent_experiment_rip='N/A',
                 branch_time=0.,
                 contact='bob')

    table = 'CMIP5_Amon'
    cmor.load_table(table)
    axes = [
        {
            'table_entry': 'time',
            'units': 'days since 2000-01-01 00:00:00',
        },
        {
            'table_entry': 'latitude',
            'units': 'degrees_north',
            'coord_vals': [0],
            'cell_bounds': [-1, 1]
        },
        {
            'table_entry': 'longitude',
            'units': 'degrees_east',
            'coord_vals': [90],
            'cell_bounds': [89, 91]
        },
    ]

    values = numpy.array([1.], numpy.float32) + 200
    axis_ids = list()
    for axis in axes:
        axis_id = cmor.axis(**axis)
        axis_ids.append(axis_id)

    for var, units, positive in (
        ('ts', 'K', ''),
        ('rsut', 'W m-2', 'up'),
        ('rlut', 'W m-2', 'down'),
    ):
        varid = cmor.variable(var,
                              units,
                              axis_ids,
                              history='variable history',
                              missing_value=-99,
                              positive=positive)
        cmor.write(varid, values, time_vals=[15], time_bnds=[[0, 30]])

    cmor.close()
Exemplo n.º 54
0
def write_data(varid, data, timeval, timebnds, index, **kwargs):
    """
    mmrso4 = so4_a1 + so4_a2 + so4_a3 + so4_c1 + so4_c2 + so4_c3
    """
    outdata = data['so4_a1'][index, :] + data['so4_a2'][index, :] + \
              data['so4_a3'][index, :] + data['so4_c1'][index, :] + \
              data['so4_c2'][index, :] + data['so4_c3'][index, :]

    cmor.write(varid, outdata, time_vals=timeval, time_bnds=timebnds)
Exemplo n.º 55
0
def write_data(varid, data, timeval, timebnds, index, **kwargs):
    outdata = data["FLUT"][index, :].values
    if kwargs.get('simple'):
        return outdata
    cmor.write(
        varid,
        outdata,
        time_vals=timeval,
        time_bnds=timebnds)
Exemplo n.º 56
0
def write_data(varid, data, timeval, timebnds, index, **kwargs):
    """
    cLitter = (TOTLITC + CWDC)/1000.0
    """
    outdata = (data['TOTLITC'][index, :] + data['CWDC'][index, :]) / 1000.0
    if kwargs.get('simple'):
        return outdata
    cmor.write(varid, outdata, time_vals=timeval, time_bnds=timebnds)
    return outdata
Exemplo n.º 57
0
def path_test():
    cmor.setup(inpath='TestTables', netcdf_file_action=cmor.CMOR_REPLACE)

    cmor.dataset_json("Test/CMOR_input_example.json")

    table = 'CMIP6_Amon.json'
    cmor.load_table(table)
    axes = [
        {
            'table_entry': 'time2',
            'units': 'months since 2000-01-01 00:00:00',
            #             'coord_vals': times,
            #             'cell_bounds': times_bnds,
        },
        {
            'table_entry':
            'plev19',
            'units':
            'Pa',
            'coord_vals': [
                100000., 92500., 85000., 70000., 60000., 50000., 40000.,
                30000., 25000., 20000., 15000., 10000., 7000., 5000., 3000.,
                2000., 1000., 500, 100
            ]
        },
        {
            'table_entry': 'latitude',
            'units': 'degrees_north',
            'coord_vals': [0],
            'cell_bounds': [-1, 1]
        },
        {
            'table_entry': 'longitude',
            'units': 'degrees_east',
            'coord_vals': [90],
            'cell_bounds': [89, 91]
        },
    ]

    axis_ids = list()
    for axis in axes:
        axis_id = cmor.axis(**axis)
        axis_ids.append(axis_id)
    varid = cmor.variable('co2Clim', '1.e-6', axis_ids)
    import numpy
    data = numpy.array([3, 4, 5])
    data.resize((3, 19, 1, 1))
    #    cmor.write(varid, data)
    #    for i in range(len(data)):
    #        cmor.write(varid, data[i], time_vals=times[i], time_bnds=times_bnds[i])
    cmor.write(varid,
               data,
               time_vals=[12, 15, 18],
               time_bnds=[[10, 1234], [12, 1125], [15, 1128]])
    path = cmor.close(varid, file_name=True)

    print(path)
Exemplo n.º 58
0
def write_data(varid, data, timeval, timebnds, index, **kwargs):
    """
    rldscs = FLDS + FLNS - FLNSC
    """
    outdata = data['FLDS'][index, :].values + \
        data['FLNS'][index, :].values - data['FLNSC'][index, :].values
    if kwargs.get('simple'):
        return outdata
    cmor.write(varid, outdata, time_vals=timeval, time_bnds=timebnds)
Exemplo n.º 59
0
def write_data(varid, data, timeval, timebnds, index, **kwargs):
    """
    dryso4 = so4_a1DDF + so4_c1DDF + so4_a2DDF + so4_c2DDF + so4_a3DDF + so4_c3DDF
    """
    outdata = data['so4_a1DDF'][index, :] + data['so4_c1DDF'][index, :] + \
              data['so4_a2DDF'][index, :] + data['so4_c2DDF'][index, :] + \
              data['so4_a3DDF'][index, :] + data['so4_c3DDF'][index, :]

    cmor.write(varid, outdata, time_vals=timeval, time_bnds=timebnds)
Exemplo n.º 60
0
def write_data(varid, data, timeval, timebnds, index, **kwargs):
    """
    rlut = FSNTOA - FSNT + FLNT
    """
    outdata = data['FSNTOA'][index, :].values - \
        data['FSNT'][index, :].values + data['FLNT'][index, :].values
    if kwargs.get('simple'):
        return outdata
    cmor.write(varid, outdata, time_vals=timeval, time_bnds=timebnds)