Пример #1
0
def main():

    cmor.setup(inpath='Tables', netcdf_file_action=cmor.CMOR_REPLACE_3)
    cmor.dataset_json("Test/test_python_jamie_9.json")

    table = 'CMIP6_Amon.json'
    cmor.load_table(table)
    axes = [
        {
            'table_entry': 'time',
            'units': 'days since 2000-01-01 00:00:00',
        },
        {
            'table_entry':
            'plev19',
            'units':
            'Pa',
            'coord_vals':
            map(
                float,
                '100000. 92500. 85000. 70000. 60000. 50000. 40000. 30000. 25000. 20000. 15000. 10000. 7000. 5000. 3000. 2000. 1000. 500. 100.'
                .split(' '))
        },
        {
            '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:
        print 'doing:', axis
        axis_id = cmor.axis(**axis)
        axis_ids.append(axis_id)

    for var, units, value in (('ta', 'K', 274), ('ua', 'm s-1', 10)):
        values = numpy.array([
            value,
        ] * len(axes[1]['coord_vals']), numpy.float32)
        varid = cmor.variable(var,
                              units,
                              axis_ids,
                              history='variable history',
                              missing_value=-99)
        cmor.set_variable_attribute(varid, 'cell_measures', '')
        cmor.write(varid, values, time_vals=[15], time_bnds=[[0, 30]])

    cmor.close()
 def setUp(self):
     self.logfile = 'has_variable_attribute.log'
     cmor.setup(inpath='Tables', logfile=self.logfile)
     cmor.dataset_json('Test/test_python_CMIP6_experimentID.json')
     cmor.load_table('CMIP6_Omon.json')
     coord_vals = np.array([0., 1., 2., 3., 4.])
     cell_bounds = np.array([0., 1., 2., 3., 4., 5.])
     axis_id = cmor.axis(table_entry='time', units='months since 2010',
                         coord_vals=coord_vals, cell_bounds=cell_bounds)
     self.variable_id = cmor.variable(table_entry='masso',
                                      axis_ids=[axis_id], units='kg')
     cmor.set_variable_attribute(self.variable_id, 'valid_attribute',
                                 'valid_value')
Пример #3
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 = 'brian clough')
 
    table = 'CMIP5_Amon'
    cmor.load_table(table)
    axes = [ {'table_entry': 'time',
              'units': 'days since 2000-01-01 00:00:00',
              },
             {'table_entry': 'plevs',
              'units': 'Pa',
              'coord_vals': [100000., 92500., 85000., 70000., 60000., 50000., 40000., 30000., 25000., 20000., 15000., 10000., 7000., 5000., 3000., 2000., 1000.]},
             {'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:
        print 'doing:',axis
        axis_id = cmor.axis(**axis)
        axis_ids.append(axis_id)

    for var, units, value in (('ta', 'K', 274), ('ua', 'm s-1', 10)):
        values = numpy.array([value,]*len(axes[1]['coord_vals']), numpy.float32)
        varid = cmor.variable(var,
                              units,
                              axis_ids,
                              history = 'variable history',
                              missing_value = -99
                              )
        cmor.set_variable_attribute(varid, 'cell_measures', 'BLABLABLA')
        cmor.write(varid, values, time_vals = [15], time_bnds = [ [0,30] ])

    cmor.close()
Пример #4
0
 def setUp(self):
     self.logfile = 'has_variable_attribute.log'
     cmor.setup(inpath='Tables', logfile=self.logfile)
     cmor.dataset_json('Test/test_python_CMIP6_experimentID.json')
     cmor.load_table('CMIP6_Omon.json')
     coord_vals = np.array([0., 1., 2., 3., 4.])
     cell_bounds = np.array([0., 1., 2., 3., 4., 5.])
     axis_id = cmor.axis(table_entry='time',
                         units='months since 2010',
                         coord_vals=coord_vals,
                         cell_bounds=cell_bounds)
     self.variable_id = cmor.variable(table_entry='masso',
                                      axis_ids=[axis_id],
                                      units='kg')
     cmor.set_variable_attribute(self.variable_id, 'valid_attribute',
                                 'valid_value')
Пример #5
0
def main():

    cmor.setup(inpath='Tables',
               netcdf_file_action=cmor.CMOR_REPLACE_3)
    cmor.dataset_json("Test/CMOR_input_example.json")

    table = 'CMIP6_Amon.json'
    cmor.load_table(table)
    axes = [{'table_entry': 'time',
             'units': 'days since 2000-01-01 00:00:00',
             },
            {'table_entry': 'plev19',
             'units': 'Pa',
             'coord_vals': map(float, '100000. 92500. 85000. 70000. 60000. 50000. 40000. 30000. 25000. 20000. 15000. 10000. 7000. 5000. 3000. 2000. 1000. 500. 100.'.split(' '))},
            {'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:
        print('doing:', axis)
        axis_id = cmor.axis(**axis)
        axis_ids.append(axis_id)

    for var, units, value in (('ta', 'K', 274), ('ua', 'm s-1', 10)):
        values = numpy.array([value, ] *
                             len(axes[1]['coord_vals']), numpy.float32)
        varid = cmor.variable(var,
                              units,
                              axis_ids,
                              history='variable history',
                              missing_value=-99
                              )
        cmor.set_variable_attribute(varid, 'cell_measures', '')
        cmor.write(varid, values, time_vals=[15], time_bnds=[[0, 30]])

    cmor.close()
Пример #6
0
             },
             {'table_entry': 'latitude',
              'units': 'degrees_north',
              'coord_vals': lat[:],
              'cell_bounds': lat.getBounds()},
             {'table_entry': 'longitude',
              'units': 'degrees_east',
              'coord_vals': lon[:],
              'cell_bounds': lon.getBounds()},
          ]
axisIds = list() ; # Create list of axes
for axis in axes:
    axisId = cmor.axis(**axis)
    axisIds.append(axisId)

#pdb.set_trace() ; # Debug statement

# Setup units and create variable to write using cmor - see https://cmor.llnl.gov/mydoc_cmor3_api/#cmor_set_variable_attribute
d.units = outputUnits
varid   = cmor.variable(outputVarName,d.units,axisIds,missing_value=d.missing)
values  = np.array(d[:],np.float32)

# Append valid_min and valid_max to variable before writing using cmor - see https://cmor.llnl.gov/mydoc_cmor3_api/#cmor_set_variable_attribute
cmor.set_variable_attribute(varid,'valid_min','f',2.0)
cmor.set_variable_attribute(varid,'valid_max','f',3.0)

# Prepare variable for writing, then write and close file - see https://cmor.llnl.gov/mydoc_cmor3_api/#cmor_set_variable_attribute
cmor.set_deflate(varid,1,1,1) ; # shuffle=1,deflate=1,deflate_level=1 - Deflate options compress file data
cmor.write(varid,values,time_vals=time[:],time_bnds=time.getBounds()) ; # Write variable with time axis
f.close()
cmor.close()
Пример #7
0
            else:
                varid = cmor.variable(outputVarName,
                                      d.units,
                                      axisIds,
                                      missing_value=d.missing)
                # This is not trapping the correct missing_value
            values = np.array(d[:], np.float32)

            # Append valid_min and valid_max to variable before writing - see https://cmor.llnl.gov/mydoc_cmor3_api/#cmor_set_variable_attribute
            #cmor.set_variable_attribute(varid,'valid_min','f',2.0)
            #cmor.set_variable_attribute(varid,'valid_max','f',3.0)
            #            if var in ['friver','licalvf','areacellg']:
            #                cmor.set_cur_dataset_attribute('grid','0.25x0.25 degree latitude x longitude')
            #                cmor.set_cur_dataset_attribute('nominal_resolution','25 km')
            if var in ['friver', 'licalvf']:
                cmor.set_variable_attribute(varid, 'cell_measures', 'c',
                                            'area: areacello')
            # Prepare variable for writing, then write and close file - see https://cmor.llnl.gov/mydoc_cmor3_api/#cmor_set_variable_attribute
            cmor.set_deflate(varid, 1, 1, 1)
            # shuffle=1,deflate=1,deflate_level=1 - Deflate options compress file data
            print 'Start CMOR write..'
            if key == 'OmonC':
                cmor.write(varid, values)
                # Write variable with time axis
            elif key == 'OyrC':
                cmor.write(varid, values)
                # Write variable with time axis
            elif key == 'LIyrC':
                cmor.write(varid, values)
                # Write variable with time axis
            elif key == 'Ofx':
                cmor.write(varid, values)
 def test_set_variable_attribute_with_different_type(self):
     cmor.set_variable_attribute(self.variable_id, 'double_attribute', 'd',
                                 12.34)
     self.assertTrue(
         cmor.has_variable_attribute(self.variable_id, 'double_attribute'))
 def test_set_variable_attribute_with_right_type(self):
     cmor.set_variable_attribute(self.variable_id, 'float_attribute', 'f',
                                 1.0)
     self.assertTrue(
         cmor.has_variable_attribute(self.variable_id, 'float_attribute'))
 def test_set_variable_attribute_with_int_type(self):
     cmor.set_variable_attribute(self.variable_id, 'int_attribute', 'i',
                                 1134)
     self.assertTrue(
         cmor.has_variable_attribute(self.variable_id, 'int_attribute'))
 def test_set_variable_attribute_with_long_type(self):
     cmor.set_variable_attribute(self.variable_id, 'long_attribute', 'l',
                                 1234)
     self.assertTrue(
         cmor.has_variable_attribute(self.variable_id, 'long_attribute'))
 def test_set_variable_attribute_with_string_type(self):
     cmor.set_variable_attribute(self.variable_id, 'myStringAttr', 'c',
                                 'valid_value')
     self.assertTrue(
         cmor.has_variable_attribute(self.variable_id, 'myStringAttr'))