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')
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()
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()
}, {'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()
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'))