From fed34849632ef8d66d5d2bf38b1fe26dcb39065c Mon Sep 17 00:00:00 2001 From: Romain Hugonnet Date: Sun, 2 Jun 2024 21:37:02 -0800 Subject: [PATCH 1/2] Fix tests reusing previous subsample by passing non-init Coreg objects --- tests/test_coreg/test_base.py | 36 ++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/tests/test_coreg/test_base.py b/tests/test_coreg/test_base.py index f84ab682..db66c54a 100644 --- a/tests/test_coreg/test_base.py +++ b/tests/test_coreg/test_base.py @@ -592,7 +592,7 @@ def test_pipeline(self) -> None: # Create a pipeline from two coreg methods. pipeline = coreg.CoregPipeline([coreg.VerticalShift(), coreg.NuthKaab()]) - pipeline.fit(**self.fit_params) + pipeline.fit(**self.fit_params, subsample=5000, random_state=42) aligned_dem, _ = pipeline.apply(self.tba.data, transform=self.ref.transform, crs=self.ref.crs) @@ -608,41 +608,43 @@ def test_pipeline(self) -> None: assert pipeline2.to_matrix()[2, 3] == 2.0 all_coregs = [ - coreg.VerticalShift(), - coreg.NuthKaab(), - coreg.ICP(), - coreg.Deramp(), - coreg.TerrainBias(), - coreg.DirectionalBias(), + coreg.VerticalShift, + coreg.NuthKaab, + coreg.ICP, + coreg.Deramp, + coreg.TerrainBias, + coreg.DirectionalBias, ] @pytest.mark.parametrize("coreg1", all_coregs) # type: ignore @pytest.mark.parametrize("coreg2", all_coregs) # type: ignore - def test_pipeline_combinations__nobiasvar(self, coreg1: Coreg, coreg2: Coreg) -> None: + def test_pipeline_combinations__nobiasvar(self, coreg1: Callable[[], Coreg], coreg2: Callable[[], Coreg]) -> None: """Test pipelines with all combinations of coregistration subclasses (without bias variables)""" # Create a pipeline from one affine and one biascorr methods. - pipeline = coreg.CoregPipeline([coreg1, coreg2]) - pipeline.fit(**self.fit_params) + pipeline = coreg.CoregPipeline([coreg1(), coreg2()]) + pipeline.fit(**self.fit_params, subsample=5000, random_state=42) aligned_dem, _ = pipeline.apply(self.tba.data, transform=self.ref.transform, crs=self.ref.crs) assert aligned_dem.shape == self.ref.data.squeeze().shape @pytest.mark.parametrize("coreg1", all_coregs) # type: ignore @pytest.mark.parametrize( - "coreg2", + "coreg2_init_kwargs", [ - coreg.BiasCorr(bias_var_names=["slope"], fit_or_bin="bin"), - coreg.BiasCorr(bias_var_names=["slope", "aspect"], fit_or_bin="bin"), + dict(bias_var_names=["slope"], fit_or_bin="bin"), + dict(bias_var_names=["slope", "aspect"], fit_or_bin="bin"), ], ) # type: ignore - def test_pipeline_combinations__biasvar(self, coreg1: Coreg, coreg2: Coreg) -> None: + def test_pipeline_combinations__biasvar(self, coreg1: Callable[[], Coreg], coreg2_init_kwargs: dict[str, str]) -> None: """Test pipelines with all combinations of coregistration subclasses with bias variables""" - # Create a pipeline from one affine and one biascorr methods. - pipeline = coreg.CoregPipeline([coreg1, coreg2]) + # Create a pipeline from one affine and one biascorr methods + pipeline = coreg.CoregPipeline([coreg1(), coreg.BiasCorr(**coreg2_init_kwargs)]) + print(pipeline.pipeline[0].meta["subsample"]) + print(pipeline.pipeline[1].meta["subsample"]) bias_vars = {"slope": xdem.terrain.slope(self.ref), "aspect": xdem.terrain.aspect(self.ref)} - pipeline.fit(**self.fit_params, bias_vars=bias_vars) + pipeline.fit(**self.fit_params, bias_vars=bias_vars, subsample=5000, random_state=42) aligned_dem, _ = pipeline.apply( self.tba.data, transform=self.ref.transform, crs=self.ref.crs, bias_vars=bias_vars From 037563f66f5fd68c5b04352210df2cc8b7f175aa Mon Sep 17 00:00:00 2001 From: Romain Hugonnet Date: Sun, 2 Jun 2024 21:41:09 -0800 Subject: [PATCH 2/2] Linting --- tests/test_coreg/test_base.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/test_coreg/test_base.py b/tests/test_coreg/test_base.py index db66c54a..ecffe363 100644 --- a/tests/test_coreg/test_base.py +++ b/tests/test_coreg/test_base.py @@ -618,7 +618,7 @@ def test_pipeline(self) -> None: @pytest.mark.parametrize("coreg1", all_coregs) # type: ignore @pytest.mark.parametrize("coreg2", all_coregs) # type: ignore - def test_pipeline_combinations__nobiasvar(self, coreg1: Callable[[], Coreg], coreg2: Callable[[], Coreg]) -> None: + def test_pipeline_combinations__nobiasvar(self, coreg1: Callable[[], Coreg], coreg2: Callable[[], Coreg]) -> None: """Test pipelines with all combinations of coregistration subclasses (without bias variables)""" # Create a pipeline from one affine and one biascorr methods. @@ -636,7 +636,9 @@ def test_pipeline_combinations__nobiasvar(self, coreg1: Callable[[], Coreg], co dict(bias_var_names=["slope", "aspect"], fit_or_bin="bin"), ], ) # type: ignore - def test_pipeline_combinations__biasvar(self, coreg1: Callable[[], Coreg], coreg2_init_kwargs: dict[str, str]) -> None: + def test_pipeline_combinations__biasvar( + self, coreg1: Callable[[], Coreg], coreg2_init_kwargs: dict[str, str] + ) -> None: """Test pipelines with all combinations of coregistration subclasses with bias variables""" # Create a pipeline from one affine and one biascorr methods