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'
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')
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')
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')
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')
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')
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')
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')
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')
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)
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
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
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)
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)
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")
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
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)
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
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
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])
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)
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)
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)
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)
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)
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)
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)
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)
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)
def write_data(varid, data, timeval, timebnds, index, **kwargs): """ va = V """ cmor.write(varid, data['V'][index, :], time_vals=timeval, time_bnds=timebnds)
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)
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)
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'
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)
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)
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)
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)
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)
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)
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)
def write_data(varid, data, timeval, timebnds, index, **kwargs): """ SO2 --> so2 """ cmor.write(varid, data['SO2'][index, :], time_vals=timeval, time_bnds=timebnds)
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)
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)
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()
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)
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)
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
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)
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)
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)
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)