def test_aligngrids_samesize(precip_rate_ncdata_cnrmcm5, wdir_ncdata_cnrmcm5): wdir, precip, lats, lons = MonsoonData.align_grids( wdir_ncdata_cnrmcm5, precip_rate_ncdata_cnrmcm5) assert_almost_equal(precip, precip_rate_ncdata_cnrmcm5.variable) assert_almost_equal(wdir, wdir_ncdata_cnrmcm5.variable) assert_almost_equal(lats, precip_rate_ncdata_cnrmcm5.lats) assert_almost_equal(lons, precip_rate_ncdata_cnrmcm5.lons)
def test_aligngrids_largernc2(precip_rate_ncdata_access13, wdir_ncdata_access13, path_wdir_cnrmcm5_adj_coords): wdir, precip, lats, lons = MonsoonData.align_grids( wdir_ncdata_access13, precip_rate_ncdata_access13) wdir_truth = np.load(path_wdir_cnrmcm5_adj_coords) assert_almost_equal(precip, precip_rate_ncdata_access13.variable) assert_almost_equal(wdir, wdir_truth) assert_almost_equal(lats, precip_rate_ncdata_access13.lats) assert_almost_equal(lons, precip_rate_ncdata_access13.lons)
def test_init(path_monsoon_access13, precip_rate_ncdata_access13, wdir_ncdata_access13, truth_monsoon_indx_access13): with nc.Dataset(path_monsoon_access13, 'r') as monsoon_reader: monsoon = MonsoonData(monsoon_reader) assert_almost_equal(truth_monsoon_indx_access13, monsoon.variable) assert monsoon.var_name == 'monsoon' assert_almost_equal(monsoon.lats, precip_rate_ncdata_access13.lats) assert monsoon.time_units == wdir_ncdata_access13.time_units assert monsoon.globalattrs[ 'frequency'] == precip_rate_ncdata_access13.globalattrs['frequency'] assert monsoon.globalattrs[ 'institute_id'] == wdir_ncdata_access13.globalattrs['institute_id']
def test_monsoon_compute_nc_input(precip_rate_ncdata_access13, wdir_ncdata_access13, truth_monsoon_indx_access13): criteria = criteria_generator(pr_min=5, wd_min=180, wd_max=270) monsoon = MonsoonData.compute(precip_rate_ncdata_access13, wdir_ncdata_access13, criteria) assert_almost_equal(truth_monsoon_indx_access13, monsoon.variable) assert monsoon.var_name == 'monsoon' assert_almost_equal(monsoon.lats, precip_rate_ncdata_access13.lats) assert monsoon.time_units == wdir_ncdata_access13.time_units assert monsoon.globalattrs[ 'frequency'] == precip_rate_ncdata_access13.globalattrs['frequency'] assert monsoon.globalattrs[ 'institute_id'] == wdir_ncdata_access13.globalattrs['institute_id'] assert monsoon.globalattrs['monsoon_criteria'] == criteria['summary_dict']
def test_monsoon_compute_misaligned_models(precip_rate_ncdata_access13, wdir_ncdata_cnrmcm5): with pytest.raises(TypeError): MonsoonData.compute( precip_rate_ncdata_access13, wdir_ncdata_cnrmcm5, criteria_generator(pr_min=5, wd_min=180, wd_max=270))
def test_monsoon_compute_wdir_typeerror(precip_rate_ncdata_access13, path_uas_access13): with pytest.raises(TypeError): MonsoonData.compute( precip_rate_ncdata_access13, path_uas_access13, criteria_generator(pr_min=5, wd_min=180, wd_max=270))
def test_init_improper_input(path_monsoon_access13): with pytest.raises(TypeError): MonsoonData(path_monsoon_access13)
p_rate_path = os.path.join(folder, r"created/pr_from_flux_ACCESS1-3.nc") # p_rate.write(p_rate_path) # Generate wind direction with nc.Dataset(uas_test_file_lin, 'r') as uas_reader, \ nc.Dataset(vas_test_file_lin, 'r') as vas_reader: wdir = NCdata.wind_dir_from_components(uas_reader, vas_reader) wdir_path = os.path.join(folder, r"created/wdir_ACCESS1-3.nc") # wdir.write(wdir_path) # Compute monsoon criteria = criteria_generator(pr_min=5, wd_min=180, wd_max=270) with nc.Dataset(p_rate_path, 'r') as pr_reader, \ nc.Dataset(wdir_path, 'r') as wd_reader: output = MonsoonData.compute(pr_reader, wd_reader, criteria) filepath = '/home/rwegener/repos/wnpmonsoon/tests/data/created/monsoon_index_access13_pr5plus_180270wd_nomask.nc' # output.write(filepath) src = nc.Dataset(filepath, 'r') print(src.variables['monsoon'][:]) output.variable = output.variable * 5 from wnpmonsoon.netcdf import NetCDFWriter writer = NetCDFWriter(filepath) writer.set_global_attributes(**output.globalattrs) writer.set_global_attributes(model_id=output.model_id) writer.create_time_variable("time", output.time,