def test_basic(tmp_path): """Test basic wind direction operation""" kgo_dir = acc.kgo_root() / "wind_direction/basic" kgo_path = kgo_dir / "kgo.nc" output_path = tmp_path / "output.nc" wind_direction.main([str(kgo_dir / "input.nc"), str(output_path)]) acc.compare(output_path, kgo_path)
def test_global(tmp_path): """Test global wind direction operation""" kgo_dir = acc.kgo_root() / "wind_direction/global" kgo_path = kgo_dir / "kgo.nc" output_path = tmp_path / "output.nc" wind_direction.main([ "--backup_method=first_realization", str(kgo_dir / "input.nc"), str(output_path) ]) acc.compare(output_path, kgo_path)
def test_masked(tmp_path): """Test basic percentile processing""" kgo_dir = acc.kgo_root() / "percentile/basic" kgo_path = kgo_dir / "kgo.nc" perc_input = kgo_dir / "input.nc" output_path = tmp_path / "output.nc" args = [str(perc_input), str(output_path), "--coordinates", "realization", "--percentiles", "25.0", "50", "75.0"] percentile.main(args) acc.compare(output_path, kgo_path)
def test_probconvert(tmp_path, count): """Test percentile probability conversion""" kgo_dir = acc.kgo_root() / "percentile/probability_convert" kgo_path = kgo_dir / f"{count}_realization_kgo.nc" prob_input = kgo_dir / f"{count}_realization.nc" output_path = tmp_path / "output.nc" args = [str(prob_input), str(output_path), "--coordinates", "realization", "--percentiles", "25", "50", "75"] percentile.main(args) acc.compare(output_path, kgo_path)
def test_combine_accumulation(tmp_path): """Test combining precipitation accumulations""" kgo_dir = acc.kgo_root() / "combine/accum" kgo_path = kgo_dir / "kgo_accum.nc" rains = kgo_dir.glob("*rainfall_accumulation.nc") timebound_meta = kgo_dir / "time_bound.json" output_path = tmp_path / "output.nc" args = [ f"--metadata_jsonfile={timebound_meta}", *[str(r) for r in rains], str(output_path) ] combine.main(args) acc.compare(output_path, kgo_path)
def test_basic(tmp_path): """Test basic combine operation""" kgo_dir = acc.kgo_root() / "combine/basic" kgo_path = kgo_dir / "kgo_cloud.nc" output_path = tmp_path / "output.nc" args = [ "--operation=max", "--new-name=cloud_area_fraction", str(kgo_dir / "low_cloud.nc"), str(kgo_dir / "medium_cloud.nc"), str(output_path) ] combine.main(args) acc.compare(output_path, kgo_path)
def test_minmax_temperatures(tmp_path, minmax): """Test combining minimum and maximum temperatures""" kgo_dir = acc.kgo_root() / "combine/bounds" kgo_path = kgo_dir / f"kgo_{minmax}.nc" timebound_meta = kgo_dir / "time_bound.json" temperatures = kgo_dir.glob(f"*temperature_at_screen_level_{minmax}.nc") output_path = tmp_path / "output.nc" args = [ f"--operation={minmax}", f"--metadata_jsonfile={timebound_meta}", *[str(t) for t in temperatures], str(output_path) ] combine.main(args) acc.compare(output_path, kgo_path)
def test_mean_temperature(tmp_path): """Test combining mean temperature""" kgo_dir = acc.kgo_root() / "combine/bounds" kgo_path = kgo_dir / "kgo_mean.nc" timebound_meta = kgo_dir / "time_bound.json" temperatures = kgo_dir.glob("*temperature_at_screen_level.nc") output_path = tmp_path / "output.nc" args = [ "--operation=mean", f"--metadata_jsonfile={timebound_meta}", *[str(t) for t in temperatures], str(output_path) ] combine.main(args) acc.compare(output_path, kgo_path)
def test_combine_accumulation(tmp_path): """Test combining precipitation accumulations""" kgo_dir = acc.kgo_root() / "combine/accum" kgo_path = kgo_dir / "kgo_accum.nc" rains = kgo_dir.glob("*rainfall_accumulation.nc") timebound_meta = kgo_dir / "time_bound.json" output_path = tmp_path / "output.nc" args = ["improver", "combine", f"--new-metadata={timebound_meta}", *[str(r) for r in rains], f"--output={output_path}"] cli.run_main(args) acc.compare(output_path, kgo_path)
def test_metadata(tmp_path): """Test combining with a separate metadata file""" kgo_dir = acc.kgo_root() / "combine/metadata" kgo_path = kgo_dir / "kgo_prob_precip.nc" precip_meta = kgo_dir / "prob_precip.json" output_path = tmp_path / "output.nc" new_name = "probability_of_total_precipitation_rate_between_thresholds" args = [ "--operation=-", f"--new-name={new_name}", f"--metadata_jsonfile={precip_meta}", str(kgo_dir / "precip_prob_0p1.nc"), str(kgo_dir / "precip_prob_1p0.nc"), str(output_path) ] combine.main(args) acc.compare(output_path, kgo_path)