def test_qout_same(): """ Test function to compare RAPID simulation Qout """ print("TEST 6: TEST COMPARE RAPID QOUT") input_qout_file = os.path.join(COMPARE_DATA_PATH, 'Qout_nasa_lis_3hr_20020830.nc') input_qout_file_cf = os.path.join(COMPARE_DATA_PATH, 'Qout_nasa_lis_3hr_20020830_CF.nc') assert (compare_qout_files(input_qout_file, input_qout_file_cf))
def test_qout_same(): """ Test function to compare RAPID simulation Qout """ print("TEST 6: TEST COMPARE RAPID QOUT") input_qout_file = os.path.join(COMPARE_DATA_PATH, 'Qout_nasa_lis_3hr_20020830.nc') input_qout_file_cf = os.path.join(COMPARE_DATA_PATH, 'Qout_nasa_lis_3hr_20020830_CF.nc') ok_(compare_qout_files(input_qout_file, input_qout_file_cf))
def test_convert_file_to_be_cf_compliant_new_format_comid_lat_lon_z(): """ Test Convert RAPID Output to be CF Compliant for new format with COMID_LAT_LON_Z """ print( "TEST 8: TEST CONVERT RAPID OUTPUT TO CF COMPLIANT (COMID_LAT_LON_Z)") input_qout_file = os.path.join(COMPARE_DATA_PATH, 'Qout_nasa_lis_3hr_20020830.nc') temp_qout_file = os.path.join( OUTPUT_DATA_PATH, 'Qout_nasa_lis_3hr_20020830_test_cf_lat_lon_z.nc') copy(input_qout_file, temp_qout_file) rapid_manager = RAPID(rapid_executable_location=RAPID_EXE_PATH, cygwin_bin_location=CYGWIN_BIN_PATH, Qout_file=temp_qout_file, rapid_connect_file=os.path.join( INPUT_DATA_PATH, 'rapid_connect.csv'), ZS_TauR=3 * 3600) rapid_manager.make_output_cf_compliant( simulation_start_datetime=datetime(2002, 8, 30), comid_lat_lon_z_file=os.path.join(INPUT_DATA_PATH, 'comid_lat_lon_z.csv'), project_name= "ERA Interim (T511 Grid) 3 Hourly Runoff Based Historical flows by US Army ERDC" ) cf_qout_file_solution = os.path.join(COMPARE_DATA_PATH, 'Qout_nasa_lis_3hr_20020830_CF.nc') #check Qout assert (compare_qout_files(temp_qout_file, cf_qout_file_solution)) #check other info in netcdf file d1 = Dataset(temp_qout_file) d2 = Dataset(cf_qout_file_solution) # MPG: new dimensions have been introduced in RAPID. We only test for those # included in the original benchmarks. for dim in ['time', 'rivid']: assert (dim in d1.dimensions.keys()) # MPG: new variables have been introduced in RAPID. We only test for those # included in the original benchmarks. for v in [u'Qout', u'rivid', u'time', u'lon', u'lat', u'crs']: assert (v in d1.variables.keys()) assert ((d1.variables['time'][:] == d2.variables['time'][:]).all()) assert ((d1.variables['rivid'][:] == d2.variables['rivid'][:]).all()) assert ((d1.variables['lat'][:] == d2.variables['lat'][:]).all()) assert ((d1.variables['lon'][:] == d2.variables['lon'][:]).all()) d1.close() d2.close() remove_files(temp_qout_file)
def test_convert_file_to_be_cf_compliant_original_format(): """ Test Convert RAPID Output to be CF Compliant for original format """ print( "TEST 10: TEST CONVERT RAPID OUTPUT TO CF COMPLIANT - ORIGINAL (COMID_LAT_LON_Z)" ) input_qout_file = os.path.join(COMPARE_DATA_PATH, 'Qout_nasa_lis_3hr_20020830_original.nc') temp_qout_file = os.path.join( OUTPUT_DATA_PATH, 'Qout_nasa_lis_3hr_20020830_original_test_cf.nc') copy(input_qout_file, temp_qout_file) rapid_manager = RAPID(rapid_executable_location=RAPID_EXE_PATH, cygwin_bin_location=CYGWIN_BIN_PATH, Qout_file=temp_qout_file, rapid_connect_file=os.path.join( INPUT_DATA_PATH, 'rapid_connect.csv'), ZS_TauR=3 * 3600) rapid_manager.make_output_CF_compliant( simulation_start_datetime=datetime(2002, 8, 30), comid_lat_lon_z_file=os.path.join(INPUT_DATA_PATH, 'comid_lat_lon_z.csv'), project_name= "ERA Interim (T511 Grid) 3 Hourly Runoff Based Historical flows by US Army ERDC" ) cf_qout_file_solution = os.path.join(COMPARE_DATA_PATH, 'Qout_nasa_lis_3hr_20020830_CF.nc') #check Qout assert (compare_qout_files(temp_qout_file, cf_qout_file_solution)) #check other info in netcdf file d1 = Dataset(temp_qout_file) d2 = Dataset(cf_qout_file_solution) assert (d1.dimensions.keys() == d2.dimensions.keys()) assert (d1.variables.keys() == d2.variables.keys()) assert ((d1.variables['time'][:] == d2.variables['time'][:]).all()) assert ((d1.variables['rivid'][:] == d2.variables['rivid'][:]).all()) assert ((d1.variables['lat'][:] == d2.variables['lat'][:]).all()) assert ((d1.variables['lon'][:] == d2.variables['lon'][:]).all()) d1.close() d2.close() remove_files(temp_qout_file)
def test_run_rapid_simulation(): """ Test Running RAPID Simulation """ print("TEST 7: TEST RUNNING RAPID SIMULATION") generated_qout_file = os.path.join( OUTPUT_DATA_PATH, 'Qout_nasa_lis_3hr_20020830_generated.nc') rapid_manager = RAPID( rapid_executable_location=RAPID_EXE_PATH, cygwin_bin_location=CYGWIN_BIN_PATH, num_processors=1, rapid_connect_file=os.path.join(INPUT_DATA_PATH, 'rapid_connect.csv'), riv_bas_id_file=os.path.join(INPUT_DATA_PATH, 'riv_bas_id.csv'), Vlat_file=os.path.join(INPUT_DATA_PATH, 'm3_nasa_lis_3hr_20020830.nc'), k_file=os.path.join(INPUT_DATA_PATH, 'k.csv'), x_file=os.path.join(INPUT_DATA_PATH, 'x.csv'), ZS_dtM=10800, ZS_dtR=900, ZS_TauM=2 * 86400, ZS_TauR=10800, Qout_file=generated_qout_file) rapid_manager.update_reach_number_data() rapid_manager.run() generated_qout_file_solution = os.path.join( COMPARE_DATA_PATH, 'Qout_nasa_lis_3hr_20020830.nc') #check Qout assert (compare_qout_files(generated_qout_file, generated_qout_file_solution)) #check other info in netcdf file d1 = Dataset(generated_qout_file) d2 = Dataset(generated_qout_file_solution) # MPG: new dimensions have been introduced in RAPID. We only test for those # included in the original benchmarks. for dim in ['time', 'rivid']: assert (dim in d1.dimensions.keys()) # MPG: new variables have been introduced in RAPID. We only test for those # included in the original benchmarks. for v in [u'Qout', u'rivid', u'time', u'lon', u'lat', u'crs']: assert (v in d1.variables.keys()) assert ((d1.variables['rivid'][:] == d2.variables['rivid'][:]).all()) d1.close() d2.close() remove_files(generated_qout_file)
def test_cf_merge(): """ This tests merging two qout files """ print("TEST 15: TEST MERGE QOUT") orig_qout_1 = os.path.join(INPUT_DATA_PATH, 'Qout_merge_3hr.nc') orig_qout_2 = os.path.join(INPUT_DATA_PATH, 'Qout_merge_6hr.nc') qout_1 = os.path.join(OUTPUT_DATA_PATH, 'Qout_merge_3hr.nc') qout_2 = os.path.join(OUTPUT_DATA_PATH, 'Qout_merge_6hr.nc') copy(orig_qout_1, qout_1) copy(orig_qout_2, qout_2) #Merge all files together at the end cv = ConvertRAPIDOutputToCF( rapid_output_file=[qout_1, qout_2], start_datetime=datetime(2016, 2, 12), time_step=[3 * 3600, 6 * 3600], qinit_file="", comid_lat_lon_z_file="", rapid_connect_file="", project_name="ECMWF-RAPID Predicted flows by US Army ERDC", output_id_dim_name='rivid', output_flow_var_name='Qout', print_debug=False) cv.convert() cf_merge_qout_file_solution = os.path.join(COMPARE_DATA_PATH, 'Qout_merge.nc') #check Qout assert (compare_qout_files(qout_1, cf_merge_qout_file_solution)) #check other info in netcdf file d1 = Dataset(qout_1) d2 = Dataset(cf_merge_qout_file_solution) assert (d1.dimensions.keys() == d2.dimensions.keys()) assert (d1.variables.keys() == d2.variables.keys()) assert ((d1.variables['time'][:] == d2.variables['time'][:]).all()) assert ((d1.variables['rivid'][:] == d2.variables['rivid'][:]).all()) d1.close() d2.close() remove_files(qout_1, qout_2)
def test_cf_merge(): """ This tests merging two qout files """ print("TEST 15: TEST MERGE QOUT") orig_qout_1 = os.path.join(INPUT_DATA_PATH, 'Qout_merge_3hr.nc') orig_qout_2 = os.path.join(INPUT_DATA_PATH, 'Qout_merge_6hr.nc') qout_1 = os.path.join(OUTPUT_DATA_PATH, 'Qout_merge_3hr.nc') qout_2 = os.path.join(OUTPUT_DATA_PATH, 'Qout_merge_6hr.nc') copy(orig_qout_1, qout_1) copy(orig_qout_2, qout_2) #Merge all files together at the end cv = ConvertRAPIDOutputToCF(rapid_output_file=[qout_1, qout_2], start_datetime=datetime(2016, 2, 12), time_step=[3*3600, 6*3600], qinit_file="", comid_lat_lon_z_file="", rapid_connect_file="", project_name="ECMWF-RAPID Predicted flows by US Army ERDC", output_id_dim_name='rivid', output_flow_var_name='Qout', print_debug=False) cv.convert() cf_merge_qout_file_solution = os.path.join(COMPARE_DATA_PATH, 'Qout_merge.nc') #check Qout ok_(compare_qout_files(qout_1, cf_merge_qout_file_solution)) #check other info in netcdf file d1 = Dataset(qout_1) d2 = Dataset(cf_merge_qout_file_solution) ok_(d1.dimensions.keys() == d2.dimensions.keys()) ok_(d1.variables.keys() == d2.variables.keys()) ok_((d1.variables['time'][:] == d1.variables['time'][:]).all()) ok_((d1.variables['rivid'][:] == d1.variables['rivid'][:]).all()) d1.close() d2.close() remove_files(qout_1, qout_2)
def test_run_rapid_simulation(): """ Test Running RAPID Simulation """ print("TEST 7: TEST RUNNING RAPID SIMULATION") generated_qout_file = os.path.join(OUTPUT_DATA_PATH, 'Qout_nasa_lis_3hr_20020830_generated.nc') rapid_manager = RAPID(rapid_executable_location=RAPID_EXE_PATH, cygwin_bin_location=CYGWIN_BIN_PATH, num_processors=1, rapid_connect_file=os.path.join(INPUT_DATA_PATH, 'rapid_connect.csv'), riv_bas_id_file=os.path.join(INPUT_DATA_PATH, 'riv_bas_id.csv'), Vlat_file=os.path.join(INPUT_DATA_PATH, 'm3_nasa_lis_3hr_20020830.nc'), k_file=os.path.join(INPUT_DATA_PATH, 'k.csv'), x_file=os.path.join(INPUT_DATA_PATH, 'x.csv'), ZS_dtM=10800, ZS_dtR=900, ZS_TauM=2*86400, ZS_TauR=10800, Qout_file=generated_qout_file ) rapid_manager.update_reach_number_data() rapid_manager.run() generated_qout_file_solution = os.path.join(COMPARE_DATA_PATH, 'Qout_nasa_lis_3hr_20020830.nc') #check Qout ok_(compare_qout_files(generated_qout_file, generated_qout_file_solution)) #check other info in netcdf file d1 = Dataset(generated_qout_file) d2 = Dataset(generated_qout_file_solution) ok_(d1.dimensions.keys() == d2.dimensions.keys()) ok_(d1.variables.keys() == d2.variables.keys()) ok_((d1.variables['rivid'][:] == d2.variables['rivid'][:]).all()) d1.close() d2.close() remove_files(generated_qout_file)
def test_run_rapid_simulation(): """ Test Running RAPID Simulation """ print("TEST 7: TEST RUNNING RAPID SIMULATION") generated_qout_file = os.path.join( OUTPUT_DATA_PATH, 'Qout_nasa_lis_3hr_20020830_generated.nc') rapid_manager = RAPID( rapid_executable_location=RAPID_EXE_PATH, cygwin_bin_location=CYGWIN_BIN_PATH, num_processors=1, rapid_connect_file=os.path.join(INPUT_DATA_PATH, 'rapid_connect.csv'), riv_bas_id_file=os.path.join(INPUT_DATA_PATH, 'riv_bas_id.csv'), Vlat_file=os.path.join(INPUT_DATA_PATH, 'm3_nasa_lis_3hr_20020830.nc'), k_file=os.path.join(INPUT_DATA_PATH, 'k.csv'), x_file=os.path.join(INPUT_DATA_PATH, 'x.csv'), ZS_dtM=10800, ZS_dtR=900, ZS_TauM=2 * 86400, ZS_TauR=10800, Qout_file=generated_qout_file) rapid_manager.update_reach_number_data() rapid_manager.run() generated_qout_file_solution = os.path.join( COMPARE_DATA_PATH, 'Qout_nasa_lis_3hr_20020830.nc') #check Qout ok_(compare_qout_files(generated_qout_file, generated_qout_file_solution)) #check other info in netcdf file d1 = Dataset(generated_qout_file) d2 = Dataset(generated_qout_file_solution) ok_(d1.dimensions.keys() == d2.dimensions.keys()) ok_(d1.variables.keys() == d2.variables.keys()) ok_((d1.variables['rivid'][:] == d2.variables['rivid'][:]).all()) d1.close() d2.close() remove_files(generated_qout_file)
def test_convert_file_to_be_cf_compliant_original_format(): """ Test Convert RAPID Output to be CF Compliant for original format """ print("TEST 10: TEST CONVERT RAPID OUTPUT TO CF COMPLIANT - ORIGINAL (COMID_LAT_LON_Z)") input_qout_file = os.path.join(COMPARE_DATA_PATH, 'Qout_nasa_lis_3hr_20020830_original.nc') temp_qout_file = os.path.join(OUTPUT_DATA_PATH, 'Qout_nasa_lis_3hr_20020830_original_test_cf.nc') copy(input_qout_file, temp_qout_file) rapid_manager = RAPID(rapid_executable_location=RAPID_EXE_PATH, cygwin_bin_location=CYGWIN_BIN_PATH, Qout_file=temp_qout_file, rapid_connect_file=os.path.join(INPUT_DATA_PATH, 'rapid_connect.csv'), ZS_TauR=3*3600) rapid_manager.make_output_CF_compliant(simulation_start_datetime=datetime(2002, 8, 30), comid_lat_lon_z_file=os.path.join(INPUT_DATA_PATH, 'comid_lat_lon_z.csv'), project_name="ERA Interim (T511 Grid) 3 Hourly Runoff Based Historical flows by US Army ERDC") cf_qout_file_solution = os.path.join(COMPARE_DATA_PATH, 'Qout_nasa_lis_3hr_20020830_CF.nc') #check Qout ok_(compare_qout_files(temp_qout_file, cf_qout_file_solution)) #check other info in netcdf file d1 = Dataset(temp_qout_file) d2 = Dataset(cf_qout_file_solution) ok_(d1.dimensions.keys() == d2.dimensions.keys()) ok_(d1.variables.keys() == d2.variables.keys()) ok_((d1.variables['time'][:] == d1.variables['time'][:]).all()) ok_((d1.variables['rivid'][:] == d1.variables['rivid'][:]).all()) ok_((d1.variables['lat'][:] == d1.variables['lat'][:]).all()) ok_((d1.variables['lon'][:] == d1.variables['lon'][:]).all()) d1.close() d2.close() remove_files(temp_qout_file)