From 310b273e2ca45cf9185c440fedbcad829210a899 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Sun, 22 Sep 2024 23:25:56 +0200 Subject: [PATCH 01/68] move the alpha check to GWSolver level instead of parent classes --- src/moscot/backends/ott/solver.py | 5 +++++ src/moscot/base/problems/problem.py | 18 +----------------- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/src/moscot/backends/ott/solver.py b/src/moscot/backends/ott/solver.py index 5a66d47a4..5629e5252 100644 --- a/src/moscot/backends/ott/solver.py +++ b/src/moscot/backends/ott/solver.py @@ -456,6 +456,11 @@ def _prepare( geom_kwargs["cost_matrix_rank"] = cost_matrix_rank geom_xx = self._create_geometry(x, t=time_scales_heat_kernel.x, is_linear_term=False, **geom_kwargs) geom_yy = self._create_geometry(y, t=time_scales_heat_kernel.y, is_linear_term=False, **geom_kwargs) + if alpha <= 0.0: + raise ValueError(f"Expected `alpha` to be in interval `(0, 1]`, found `{alpha}`.") + if (alpha == 1.0 and xy is not None) or (alpha != 1.0 and xy is None): + raise ValueError(f"Expected `xy` to be `None` if `alpha` is not 1.0, found xy={xy}, alpha={alpha}.") + if alpha == 1.0 or xy is None: # GW # arbitrary fused penalty; must be positive geom_xy, fused_penalty = None, 1.0 diff --git a/src/moscot/base/problems/problem.py b/src/moscot/base/problems/problem.py index 708b35d44..83e1d13d7 100644 --- a/src/moscot/base/problems/problem.py +++ b/src/moscot/base/problems/problem.py @@ -430,24 +430,8 @@ def solve( solver_class = backends.get_solver( self.problem_kind, solver_name=solver_name, backend=backend, return_class=True ) - init_kwargs, call_kwargs = solver_class._partition_kwargs(**kwargs) - # if linear problem, then alpha is 0.0 by default - # if quadratic problem, then alpha is 1.0 by default - alpha = call_kwargs.get("alpha", 0.0 if self.problem_kind == "linear" else 1.0) - if alpha < 0.0 or alpha > 1.0: - raise ValueError("Expected `alpha` to be in the range `[0, 1]`, found `{alpha}`.") - if self.problem_kind == "linear" and (alpha != 0.0 or not (self.x is None or self.y is None)): - raise ValueError("Unable to solve a linear problem with `alpha != 0` or `x` and `y` supplied.") - if self.problem_kind == "quadratic": - if self.x is None or self.y is None: - raise ValueError("Unable to solve a quadratic problem without `x` and `y` supplied.") - if alpha != 1.0 and self.xy is None: # means FGW case - raise ValueError( - "`alpha` must be 1.0 for quadratic problems without `xy` supplied. See `FGWProblem` class." - ) - if alpha == 1.0 and self.xy is not None: - raise ValueError("Unable to solve a quadratic problem with `alpha = 1` and `xy` supplied.") + init_kwargs, call_kwargs = solver_class._partition_kwargs(**kwargs) self._solver = solver_class(**init_kwargs) # note that the solver call consists of solver._prepare and solver._solve From 6c8d42d50326ae8f95e422002b6eb670ce93433b Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Sun, 22 Sep 2024 23:26:50 +0200 Subject: [PATCH 02/68] add tests to check if alpha fails or not --- tests/problems/base/test_general_problem.py | 34 +++++++++++++++ .../problems/space/test_alignment_problem.py | 42 ++++++++++++------- tests/problems/space/test_mapping_problem.py | 11 ++--- 3 files changed, 67 insertions(+), 20 deletions(-) diff --git a/tests/problems/base/test_general_problem.py b/tests/problems/base/test_general_problem.py index 5e17b6dec..da76fc512 100644 --- a/tests/problems/base/test_general_problem.py +++ b/tests/problems/base/test_general_problem.py @@ -1,5 +1,6 @@ from typing import Literal, Optional, Tuple +import re import pytest import jax.numpy as jnp @@ -346,3 +347,36 @@ def test_set_graph_xy_test_t(self, adata_x: AnnData, adata_y: AnnData, t: float) assert pushed_0.shape == pushed_1.shape assert np.all(np.abs(pushed_0 - pushed_1).sum() > np.abs(pushed_2 - pushed_1).sum()) assert np.all(np.abs(pushed_0 - pushed_2).sum() > np.abs(pushed_1 - pushed_2).sum()) + + @pytest.mark.parametrize( + ("attrs", "alpha", "raise_msg"), + [ + ({"xy"}, 0.5, "type-error"), + ({"xy", "x", "y"}, 0, re.escape("Expected `alpha` to be in interval `(0, 1]`, found")), + ({"xy", "x", "y"}, 1.1, re.escape("Expected `alpha` to be in interval `(0, 1]`, found")), + # ({"xy", "x"}, 0.1, re.escape("Unable to prepare the data. Either only supply")), -> this is covered by prepare + ({"xy", "x", "y"}, 0.5, None), + ({"x", "y"}, 1.0, None), + ({"x", "y"}, 0.5, re.escape("Expected `xy` to be `None` if `alpha` is not 1.0, found")), + ], + ) + def test_xy_alpha_raises(self, adata_x: AnnData, adata_y: AnnData, attrs, alpha, raise_msg): + prob = OTProblem(adata_x, adata_y) + data = { + "xy": {"x_attr": "obsm", "x_key": "X_pca", "y_attr": "obsm", "y_key": "X_pca"} if "xy" in attrs else {}, + "x": {"attr": "X"} if "x" in attrs else {}, + "y": {"attr": "X"} if "y" in attrs else {}, + } + prob = prob.prepare( + **data, + ) + if raise_msg is not None: + if raise_msg == "type-error": + with pytest.raises(TypeError): + prob.solve(epsilon=5e-1, alpha=alpha) + else: + with pytest.raises(ValueError, match=raise_msg): + prob.solve(epsilon=5e-1, alpha=alpha) + else: + prob.solve(epsilon=5e-1, alpha=alpha) + assert isinstance(prob.solution, BaseDiscreteSolverOutput) \ No newline at end of file diff --git a/tests/problems/space/test_alignment_problem.py b/tests/problems/space/test_alignment_problem.py index 0d1b21a16..18bf558fb 100644 --- a/tests/problems/space/test_alignment_problem.py +++ b/tests/problems/space/test_alignment_problem.py @@ -75,10 +75,17 @@ def test_prepare_star(self, adata_space_rotate: AnnData, reference: str): assert ref == reference assert isinstance(ap[prob_key], ap._base_problem_type) - @pytest.mark.skip(reason="See https://github.com/theislab/moscot/issues/678") + # @pytest.mark.skip(reason="See https://github.com/theislab/moscot/issues/678") @pytest.mark.parametrize( - ("epsilon", "alpha", "rank", "initializer"), - [(1, 0.9, -1, None), (1, 0.5, 10, "random"), (1, 0.5, 10, "rank2"), (0.1, 0.1, -1, None)], + ("epsilon", "alpha", "rank", "initializer", "should_raise"), + [ + (1, 0.9, -1, None, False), + (1, 0.5, 10, "random", False), + (1, 0.5, 10, "rank2", False), + (0.1, 0.1, -1, None, False), + (0.1, -0.1, -1, None, True), # Invalid alpha + (0.1, 1.1, -1, None, True), # Invalid alpha + ], ) def test_solve_balanced( self, @@ -87,6 +94,7 @@ def test_solve_balanced( alpha: float, rank: int, initializer: Optional[Literal["random", "rank2"]], + should_raise: bool, ): kwargs = {} if rank > -1: @@ -98,19 +106,23 @@ def test_solve_balanced( ap = ( AlignmentProblem(adata=adata_space_rotate) .prepare(batch_key="batch") - .solve(epsilon=epsilon, alpha=alpha, rank=rank, **kwargs) - ) - for prob_key in ap: - assert ap[prob_key].solution.rank == rank - if initializer != "random": # TODO: is this valid? - assert ap[prob_key].solution.converged - - # TODO(michalk8): use np.testing - assert np.allclose(*(sol.cost for sol in ap.solutions.values())) - assert np.all([sol.converged for sol in ap.solutions.values()]) - np.testing.assert_array_equal( - [np.all(np.isfinite(sol.transport_matrix)) for sol in ap.solutions.values()], True ) + if should_raise: + with pytest.raises(ValueError, match=r"Expected `alpha`"): + ap.solve(epsilon=epsilon, alpha=alpha, rank=rank, **kwargs) + else: + ap = ap.solve(epsilon=epsilon, alpha=alpha, rank=rank, **kwargs) + for prob_key in ap: + assert ap[prob_key].solution.rank == rank + if initializer != "random": # TODO: is this valid? + assert ap[prob_key].solution.converged + + # TODO(michalk8): use np.testing + assert np.allclose(*(sol.cost for sol in ap.solutions.values())) + assert np.all([sol.converged for sol in ap.solutions.values()]) + np.testing.assert_array_equal( + [np.all(np.isfinite(sol.transport_matrix)) for sol in ap.solutions.values()], True + ) def test_solve_unbalanced(self, adata_space_rotate: AnnData): tau_a, tau_b = [0.8, 1] diff --git a/tests/problems/space/test_mapping_problem.py b/tests/problems/space/test_mapping_problem.py index a51bf4ed9..fbe3f5287 100644 --- a/tests/problems/space/test_mapping_problem.py +++ b/tests/problems/space/test_mapping_problem.py @@ -1,6 +1,7 @@ from pathlib import Path from typing import Any, List, Literal, Mapping, Optional, Union +import re import pytest import numpy as np @@ -301,14 +302,14 @@ def test_problem_type( assert isinstance(sol._output, solution_kind) @pytest.mark.parametrize( - ("sc_attr", "alpha"), + ("sc_attr", "alpha", "raise_msg"), [ - (None, 0.5), - ({"attr": "X"}, 0), + (None, 0.5, re.escape("Expected `alpha` to be 0 for a `linear problem`.")), + ({"attr": "X"}, 0, re.escape("Expected `alpha` to be in interval `(0, 1]`, found `0`.")), ], ) def test_problem_type_corner_cases( - self, adata_mapping: AnnData, sc_attr: Optional[Mapping[str, str]], alpha: Optional[float] + self, adata_mapping: AnnData, sc_attr: Optional[Mapping[str, str]], alpha: Optional[float], raise_msg: str ): # initialize and prepare the MappingProblem adataref, adatasp = _adata_spatial_split(adata_mapping) @@ -316,5 +317,5 @@ def test_problem_type_corner_cases( mp = mp.prepare(batch_key="batch", sc_attr=sc_attr) # we test two incompatible combinations of `sc_attr` and `alpha` - with pytest.raises(ValueError, match=r"^Expected `alpha`"): + with pytest.raises(ValueError, match=raise_msg): mp.solve(alpha=alpha) From 0b06cc4fdfba8e25e3b06b7e64491072b2f69cf3 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Sun, 22 Sep 2024 23:27:13 +0200 Subject: [PATCH 03/68] remove kwargs on a more public problem class --- src/moscot/problems/cross_modality/_translation.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/moscot/problems/cross_modality/_translation.py b/src/moscot/problems/cross_modality/_translation.py index 5c8f9081c..0e702bea4 100644 --- a/src/moscot/problems/cross_modality/_translation.py +++ b/src/moscot/problems/cross_modality/_translation.py @@ -226,7 +226,6 @@ def solve( # type: ignore[override] threshold: float = 1e-3, linear_solver_kwargs: Mapping[str, Any] = types.MappingProxyType({}), device: Optional[Literal["cpu", "gpu", "tpu"]] = None, - **kwargs: Any, ) -> "TranslationProblem[K]": r"""Solve the translation problem. @@ -304,7 +303,6 @@ def solve( # type: ignore[override] threshold=threshold, linear_solver_kwargs=linear_solver_kwargs, device=device, - **kwargs, ) # type: ignore[return-value] @property From feca7ecf63026368ad9210086f2f1a0d7668da99 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Sun, 22 Sep 2024 23:27:57 +0200 Subject: [PATCH 04/68] pre-commit --- tests/problems/base/test_general_problem.py | 5 ++--- tests/problems/space/test_alignment_problem.py | 7 ++----- tests/problems/space/test_mapping_problem.py | 2 +- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/tests/problems/base/test_general_problem.py b/tests/problems/base/test_general_problem.py index da76fc512..d2f6477f8 100644 --- a/tests/problems/base/test_general_problem.py +++ b/tests/problems/base/test_general_problem.py @@ -1,6 +1,6 @@ +import re from typing import Literal, Optional, Tuple -import re import pytest import jax.numpy as jnp @@ -354,7 +354,6 @@ def test_set_graph_xy_test_t(self, adata_x: AnnData, adata_y: AnnData, t: float) ({"xy"}, 0.5, "type-error"), ({"xy", "x", "y"}, 0, re.escape("Expected `alpha` to be in interval `(0, 1]`, found")), ({"xy", "x", "y"}, 1.1, re.escape("Expected `alpha` to be in interval `(0, 1]`, found")), - # ({"xy", "x"}, 0.1, re.escape("Unable to prepare the data. Either only supply")), -> this is covered by prepare ({"xy", "x", "y"}, 0.5, None), ({"x", "y"}, 1.0, None), ({"x", "y"}, 0.5, re.escape("Expected `xy` to be `None` if `alpha` is not 1.0, found")), @@ -379,4 +378,4 @@ def test_xy_alpha_raises(self, adata_x: AnnData, adata_y: AnnData, attrs, alpha, prob.solve(epsilon=5e-1, alpha=alpha) else: prob.solve(epsilon=5e-1, alpha=alpha) - assert isinstance(prob.solution, BaseDiscreteSolverOutput) \ No newline at end of file + assert isinstance(prob.solution, BaseDiscreteSolverOutput) diff --git a/tests/problems/space/test_alignment_problem.py b/tests/problems/space/test_alignment_problem.py index 18bf558fb..7a9cd9f1f 100644 --- a/tests/problems/space/test_alignment_problem.py +++ b/tests/problems/space/test_alignment_problem.py @@ -84,7 +84,7 @@ def test_prepare_star(self, adata_space_rotate: AnnData, reference: str): (1, 0.5, 10, "rank2", False), (0.1, 0.1, -1, None, False), (0.1, -0.1, -1, None, True), # Invalid alpha - (0.1, 1.1, -1, None, True), # Invalid alpha + (0.1, 1.1, -1, None, True), # Invalid alpha ], ) def test_solve_balanced( @@ -103,10 +103,7 @@ def test_solve_balanced( # kwargs["kwargs_init"] = {"key": 0} # kwargs["key"] = 0 return # TODO(@MUCDK) fix after refactoring - ap = ( - AlignmentProblem(adata=adata_space_rotate) - .prepare(batch_key="batch") - ) + ap = AlignmentProblem(adata=adata_space_rotate).prepare(batch_key="batch") if should_raise: with pytest.raises(ValueError, match=r"Expected `alpha`"): ap.solve(epsilon=epsilon, alpha=alpha, rank=rank, **kwargs) diff --git a/tests/problems/space/test_mapping_problem.py b/tests/problems/space/test_mapping_problem.py index fbe3f5287..642a3b785 100644 --- a/tests/problems/space/test_mapping_problem.py +++ b/tests/problems/space/test_mapping_problem.py @@ -1,7 +1,7 @@ +import re from pathlib import Path from typing import Any, List, Literal, Mapping, Optional, Union -import re import pytest import numpy as np From c7cceb1cc8e0c72364f26105b5c0b9cdab376d28 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Sun, 22 Sep 2024 23:43:19 +0200 Subject: [PATCH 05/68] add test that asserts type error when unrecognized args are given --- tests/problems/base/test_general_problem.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/problems/base/test_general_problem.py b/tests/problems/base/test_general_problem.py index d2f6477f8..d7d785893 100644 --- a/tests/problems/base/test_general_problem.py +++ b/tests/problems/base/test_general_problem.py @@ -30,6 +30,19 @@ def test_simple_run(self, adata_x: AnnData, adata_y: AnnData): assert isinstance(prob.solution, BaseDiscreteSolverOutput) + @pytest.mark.parametrize("kind", ["linear", "quadratic"]) + def test_unrecognized_args(self, adata_x: AnnData, adata_y: AnnData, kind: Literal["linear", "quadratic"]): + prob = OTProblem(adata_x, adata_y) + data = { + "xy": {"x_attr": "obsm", "x_key": "X_pca", "y_attr": "obsm", "y_key": "X_pca"}, + } + if kind == "quadratic": + data["x"] = {"attr": "X"} + data["y"] = {"attr": "X"} + + with pytest.raises(TypeError): + prob.prepare(**data).solve(epsilon=5e-1, dummy=42) + @pytest.mark.fast def test_output(self, adata_x: AnnData, x: Geom_t): problem = OTProblem(adata_x) From 9edaafbcf8acd652f7f157594a3479eb027da2f6 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Sun, 22 Sep 2024 23:55:10 +0200 Subject: [PATCH 06/68] set default according to the data provided --- src/moscot/backends/ott/solver.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/moscot/backends/ott/solver.py b/src/moscot/backends/ott/solver.py index 5629e5252..0bc98fc55 100644 --- a/src/moscot/backends/ott/solver.py +++ b/src/moscot/backends/ott/solver.py @@ -435,7 +435,7 @@ def _prepare( cost_matrix_rank: Optional[int] = None, time_scales_heat_kernel: Optional[TimeScalesHeatKernel] = None, # problem - alpha: float = 0.5, + alpha: Optional[float] = None, **kwargs: Any, ) -> quadratic_problem.QuadraticProblem: self._a = a @@ -456,6 +456,8 @@ def _prepare( geom_kwargs["cost_matrix_rank"] = cost_matrix_rank geom_xx = self._create_geometry(x, t=time_scales_heat_kernel.x, is_linear_term=False, **geom_kwargs) geom_yy = self._create_geometry(y, t=time_scales_heat_kernel.y, is_linear_term=False, **geom_kwargs) + if alpha is None: + alpha = 1.0 if xy is None else 0.5 # set defaults according to the data provided if alpha <= 0.0: raise ValueError(f"Expected `alpha` to be in interval `(0, 1]`, found `{alpha}`.") if (alpha == 1.0 and xy is not None) or (alpha != 1.0 and xy is None): From 376eccf2652d6eb22f06bdc5a36daebbdf825f72 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 22 Sep 2024 21:55:32 +0000 Subject: [PATCH 07/68] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/moscot/backends/ott/solver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/moscot/backends/ott/solver.py b/src/moscot/backends/ott/solver.py index 0bc98fc55..32e421ee4 100644 --- a/src/moscot/backends/ott/solver.py +++ b/src/moscot/backends/ott/solver.py @@ -457,7 +457,7 @@ def _prepare( geom_xx = self._create_geometry(x, t=time_scales_heat_kernel.x, is_linear_term=False, **geom_kwargs) geom_yy = self._create_geometry(y, t=time_scales_heat_kernel.y, is_linear_term=False, **geom_kwargs) if alpha is None: - alpha = 1.0 if xy is None else 0.5 # set defaults according to the data provided + alpha = 1.0 if xy is None else 0.5 # set defaults according to the data provided if alpha <= 0.0: raise ValueError(f"Expected `alpha` to be in interval `(0, 1]`, found `{alpha}`.") if (alpha == 1.0 and xy is not None) or (alpha != 1.0 and xy is None): From 01c89a230fd31f2ff6a4abfa2b809fefd0a5bfcf Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Mon, 23 Sep 2024 00:15:14 +0200 Subject: [PATCH 08/68] Revert "remove kwargs on a more public problem class" This reverts commit 0b06cc4fdfba8e25e3b06b7e64491072b2f69cf3. --- src/moscot/problems/cross_modality/_translation.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/moscot/problems/cross_modality/_translation.py b/src/moscot/problems/cross_modality/_translation.py index 0e702bea4..5c8f9081c 100644 --- a/src/moscot/problems/cross_modality/_translation.py +++ b/src/moscot/problems/cross_modality/_translation.py @@ -226,6 +226,7 @@ def solve( # type: ignore[override] threshold: float = 1e-3, linear_solver_kwargs: Mapping[str, Any] = types.MappingProxyType({}), device: Optional[Literal["cpu", "gpu", "tpu"]] = None, + **kwargs: Any, ) -> "TranslationProblem[K]": r"""Solve the translation problem. @@ -303,6 +304,7 @@ def solve( # type: ignore[override] threshold=threshold, linear_solver_kwargs=linear_solver_kwargs, device=device, + **kwargs, ) # type: ignore[return-value] @property From 49c8bbc97795e0b0f8b7d76a0e8432feada38f4a Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Mon, 23 Sep 2024 16:06:48 +0200 Subject: [PATCH 09/68] improve the tests to also use other rank solvers --- tests/problems/base/test_general_problem.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/tests/problems/base/test_general_problem.py b/tests/problems/base/test_general_problem.py index d7d785893..869b0ea7f 100644 --- a/tests/problems/base/test_general_problem.py +++ b/tests/problems/base/test_general_problem.py @@ -30,18 +30,28 @@ def test_simple_run(self, adata_x: AnnData, adata_y: AnnData): assert isinstance(prob.solution, BaseDiscreteSolverOutput) - @pytest.mark.parametrize("kind", ["linear", "quadratic"]) - def test_unrecognized_args(self, adata_x: AnnData, adata_y: AnnData, kind: Literal["linear", "quadratic"]): + @pytest.mark.parametrize( + ("kind", "rank"), + [ + ("linear", -1), + ("linear", 5), + ("quadratic", -1), + ("quadratic", 5), + ], + ) + def test_unrecognized_args( + self, adata_x: AnnData, adata_y: AnnData, kind: Literal["linear", "quadratic"], rank: int + ): prob = OTProblem(adata_x, adata_y) data = { "xy": {"x_attr": "obsm", "x_key": "X_pca", "y_attr": "obsm", "y_key": "X_pca"}, } - if kind == "quadratic": + if "quadratic" in kind: data["x"] = {"attr": "X"} data["y"] = {"attr": "X"} with pytest.raises(TypeError): - prob.prepare(**data).solve(epsilon=5e-1, dummy=42) + prob.prepare(**data).solve(epsilon=5e-1, rank=rank, dummy=42) @pytest.mark.fast def test_output(self, adata_x: AnnData, x: Geom_t): From f303a14ac47b337b099b43800e567c89ca7b3dd3 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Mon, 23 Sep 2024 23:32:33 +0200 Subject: [PATCH 10/68] remove skipped tests and add link to other skipped test --- tests/problems/space/test_alignment_problem.py | 1 - tests/problems/spatio_temporal/test_spatio_temporal_problem.py | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/problems/space/test_alignment_problem.py b/tests/problems/space/test_alignment_problem.py index 7a9cd9f1f..04310adcb 100644 --- a/tests/problems/space/test_alignment_problem.py +++ b/tests/problems/space/test_alignment_problem.py @@ -75,7 +75,6 @@ def test_prepare_star(self, adata_space_rotate: AnnData, reference: str): assert ref == reference assert isinstance(ap[prob_key], ap._base_problem_type) - # @pytest.mark.skip(reason="See https://github.com/theislab/moscot/issues/678") @pytest.mark.parametrize( ("epsilon", "alpha", "rank", "initializer", "should_raise"), [ diff --git a/tests/problems/spatio_temporal/test_spatio_temporal_problem.py b/tests/problems/spatio_temporal/test_spatio_temporal_problem.py index 3b68561ba..29f4353e5 100644 --- a/tests/problems/spatio_temporal/test_spatio_temporal_problem.py +++ b/tests/problems/spatio_temporal/test_spatio_temporal_problem.py @@ -60,7 +60,7 @@ def test_solve_balanced(self, adata_spatio_temporal: AnnData): assert isinstance(subsol, BaseDiscreteSolverOutput) assert key in expected_keys - @pytest.mark.skip(reason="unbalanced does not work yet") + @pytest.mark.skip(reason="unbalanced does not work yet: https://github.com/ott-jax/ott/issues/519") def test_solve_unbalanced(self, adata_spatio_temporal: AnnData): taus = [9e-1, 1e-2] problem1 = SpatioTemporalProblem(adata=adata_spatio_temporal) From 1582baa9c49c8ecdca216fbef2a9320f7010ea6c Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Wed, 23 Oct 2024 15:53:51 +0200 Subject: [PATCH 11/68] adapt to was solvers new api --- src/moscot/backends/ott/solver.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/moscot/backends/ott/solver.py b/src/moscot/backends/ott/solver.py index c1dbf398a..16b11494f 100644 --- a/src/moscot/backends/ott/solver.py +++ b/src/moscot/backends/ott/solver.py @@ -31,6 +31,7 @@ from ott.problems.quadratic import quadratic_problem from ott.solvers.linear import sinkhorn, sinkhorn_lr from ott.solvers.quadratic import gromov_wasserstein, gromov_wasserstein_lr +from ott.initializers.quadratic import initializers as quad_initializers from ott.solvers.utils import uniform_sampler from moscot._logging import logger @@ -409,13 +410,13 @@ def __init__( **kwargs, ) else: - linear_ot_solver = sinkhorn.Sinkhorn(**linear_solver_kwargs) - initializer = None + linear_solver = sinkhorn.Sinkhorn(**linear_solver_kwargs) + if initializer is None: + initializer = quad_initializers.QuadraticInitializer() + initializer = functools.partial(initializer, **initializer_kwargs) self._solver = gromov_wasserstein.GromovWasserstein( - rank=rank, - linear_ot_solver=linear_ot_solver, - quad_initializer=initializer, - kwargs_init=initializer_kwargs, + linear_solver=linear_solver, + initializer=initializer, **kwargs, ) From a21c45f14fd69c033e63d1dd6c99eb61d32b2c47 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Wed, 23 Oct 2024 15:54:00 +0200 Subject: [PATCH 12/68] update the tests --- tests/problems/conftest.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tests/problems/conftest.py b/tests/problems/conftest.py index 9ee32e693..c7f3c4784 100644 --- a/tests/problems/conftest.py +++ b/tests/problems/conftest.py @@ -183,9 +183,8 @@ def marginal_keys(request): "threshold": "threshold", "min_iterations": "min_iterations", "max_iterations": "max_iterations", - "initializer_kwargs": "kwargs_init", - "warm_start": "_warm_start", - "initializer": "quad_initializer", + "warm_start": "warm_start", + "initializer": "initializer", } gw_lr_solver_args = { From a1dfd644c736447b102f5530fa6c1101b939579e Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Wed, 23 Oct 2024 15:54:25 +0200 Subject: [PATCH 13/68] update tests for solvers new api --- tests/problems/cross_modality/test_translation_problem.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/problems/cross_modality/test_translation_problem.py b/tests/problems/cross_modality/test_translation_problem.py index b048fa9cf..018aacce6 100644 --- a/tests/problems/cross_modality/test_translation_problem.py +++ b/tests/problems/cross_modality/test_translation_problem.py @@ -149,7 +149,7 @@ def test_pass_arguments(self, adata_translation_split: Tuple[AnnData, AnnData], for arg, val in args.items(): assert getattr(solver, val) == args_to_check[arg], arg - sinkhorn_solver = solver.linear_ot_solver if args_to_check["rank"] == -1 else solver + sinkhorn_solver = solver.linear_solver if args_to_check["rank"] == -1 else solver lin_solver_args = gw_linear_solver_args if args_to_check["rank"] == -1 else gw_lr_linear_solver_args tmp_dict = args_to_check["linear_solver_kwargs"] if args_to_check["rank"] == -1 else args_to_check for arg, val in lin_solver_args.items(): From e4dea94ecc742980b1b5afb28f6a2b0559d2d21d Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Wed, 23 Oct 2024 15:54:47 +0200 Subject: [PATCH 14/68] adapt tests for solvers new api --- tests/problems/generic/test_fgw_problem.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/problems/generic/test_fgw_problem.py b/tests/problems/generic/test_fgw_problem.py index 3ee7b4f30..38dc82d6c 100644 --- a/tests/problems/generic/test_fgw_problem.py +++ b/tests/problems/generic/test_fgw_problem.py @@ -114,7 +114,7 @@ def test_pass_arguments(self, adata_space_rotate: AnnData, args_to_check: Mappin for arg, val in args.items(): assert getattr(solver, val, object()) == args_to_check[arg], arg - sinkhorn_solver = solver.linear_ot_solver if args_to_check["rank"] == -1 else solver + sinkhorn_solver = solver.linear_solver if args_to_check["rank"] == -1 else solver lin_solver_args = gw_linear_solver_args if args_to_check["rank"] == -1 else gw_lr_linear_solver_args tmp_dict = args_to_check["linear_solver_kwargs"] if args_to_check["rank"] == -1 else args_to_check for arg, val in lin_solver_args.items(): @@ -342,7 +342,7 @@ def test_passing_ott_kwargs_linear(self, adata_space_rotate: AnnData, memory: in }, ) - sinkhorn_solver = problem[("0", "1")].solver.solver.linear_ot_solver + sinkhorn_solver = problem[("0", "1")].solver.solver.linear_solver anderson = sinkhorn_solver.anderson assert isinstance(anderson, acceleration.AndersonAcceleration) From 608ca73aa84fd39b24cc64980c3c2ecefe4524f0 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Wed, 23 Oct 2024 15:55:24 +0200 Subject: [PATCH 15/68] check if it's callable for solvers initializer instance instead of string --- tests/problems/generic/test_gw_problem.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/tests/problems/generic/test_gw_problem.py b/tests/problems/generic/test_gw_problem.py index 7ae0cb7e5..b6b0f3d11 100644 --- a/tests/problems/generic/test_gw_problem.py +++ b/tests/problems/generic/test_gw_problem.py @@ -9,6 +9,8 @@ from ott.solvers.linear import acceleration from anndata import AnnData +from typing import Callable + from moscot._types import CostKwargs_t from moscot.base.output import BaseDiscreteSolverOutput @@ -117,9 +119,12 @@ def test_pass_arguments(self, adata_space_rotate: AnnData, args_to_check: Mappin args = gw_solver_args if args_to_check["rank"] == -1 else gw_lr_solver_args for arg, val in args.items(): assert hasattr(solver, val) - assert getattr(solver, val) == args_to_check[arg] + if arg == "initializer" and args_to_check["rank"] == -1: + assert isinstance(getattr(solver, val), Callable) + else: + assert getattr(solver, val) == args_to_check[arg] - sinkhorn_solver = solver.linear_ot_solver if args_to_check["rank"] == -1 else solver + sinkhorn_solver = solver.linear_solver if args_to_check["rank"] == -1 else solver lin_solver_args = gw_linear_solver_args if args_to_check["rank"] == -1 else gw_lr_linear_solver_args tmp_dict = args_to_check["linear_solver_kwargs"] if args_to_check["rank"] == -1 else args_to_check for arg, val in lin_solver_args.items(): @@ -307,7 +312,7 @@ def test_passing_ott_kwargs_linear(self, adata_space_rotate: AnnData, memory: in }, ) - sinkhorn_solver = problem[("0", "1")].solver.solver.linear_ot_solver + sinkhorn_solver = problem[("0", "1")].solver.solver.linear_solver anderson = sinkhorn_solver.anderson assert isinstance(anderson, acceleration.AndersonAcceleration) From ae2c68164084afc4b35ac56cec98c3bc52286c11 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Wed, 23 Oct 2024 15:56:02 +0200 Subject: [PATCH 16/68] again simply linear_ot_solver -> linear_solver --- tests/problems/space/test_alignment_problem.py | 2 +- tests/problems/space/test_mapping_problem.py | 2 +- tests/problems/spatio_temporal/test_spatio_temporal_problem.py | 2 +- tests/problems/time/test_lineage_problem.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/problems/space/test_alignment_problem.py b/tests/problems/space/test_alignment_problem.py index 04310adcb..47202ffe0 100644 --- a/tests/problems/space/test_alignment_problem.py +++ b/tests/problems/space/test_alignment_problem.py @@ -200,7 +200,7 @@ def test_pass_arguments(self, adata_space_rotate: AnnData, args_to_check: Mappin assert hasattr(solver, val) assert getattr(solver, val) == args_to_check[arg] - sinkhorn_solver = solver.linear_ot_solver if args_to_check["rank"] == -1 else solver + sinkhorn_solver = solver.linear_solver if args_to_check["rank"] == -1 else solver lin_solver_args = gw_linear_solver_args if args_to_check["rank"] == -1 else gw_lr_linear_solver_args tmp_dict = args_to_check["linear_solver_kwargs"] if args_to_check["rank"] == -1 else args_to_check for arg, val in lin_solver_args.items(): diff --git a/tests/problems/space/test_mapping_problem.py b/tests/problems/space/test_mapping_problem.py index 642a3b785..bd72f7547 100644 --- a/tests/problems/space/test_mapping_problem.py +++ b/tests/problems/space/test_mapping_problem.py @@ -235,7 +235,7 @@ def test_pass_arguments(self, adata_mapping: AnnData, args_to_check: Mapping[str assert hasattr(solver, val) assert getattr(solver, val) == args_to_check[arg] - sinkhorn_solver = solver.linear_ot_solver if args_to_check["rank"] == -1 else solver + sinkhorn_solver = solver.linear_solver if args_to_check["rank"] == -1 else solver lin_solver_args = gw_linear_solver_args if args_to_check["rank"] == -1 else gw_lr_linear_solver_args tmp_dict = args_to_check["linear_solver_kwargs"] if args_to_check["rank"] == -1 else args_to_check for arg, val in lin_solver_args.items(): diff --git a/tests/problems/spatio_temporal/test_spatio_temporal_problem.py b/tests/problems/spatio_temporal/test_spatio_temporal_problem.py index 29f4353e5..ac661391d 100644 --- a/tests/problems/spatio_temporal/test_spatio_temporal_problem.py +++ b/tests/problems/spatio_temporal/test_spatio_temporal_problem.py @@ -200,7 +200,7 @@ def test_pass_arguments(self, adata_spatio_temporal: AnnData, args_to_check: Map assert hasattr(solver, val) assert getattr(solver, val) == args_to_check[arg], arg - sinkhorn_solver = solver.linear_ot_solver if args_to_check["rank"] == -1 else solver + sinkhorn_solver = solver.linear_solver if args_to_check["rank"] == -1 else solver lin_solver_args = gw_linear_solver_args if args_to_check["rank"] == -1 else gw_lr_linear_solver_args tmp_dict = args_to_check["linear_solver_kwargs"] if args_to_check["rank"] == -1 else args_to_check for arg, val in lin_solver_args.items(): diff --git a/tests/problems/time/test_lineage_problem.py b/tests/problems/time/test_lineage_problem.py index 5375c621e..21d5f77c5 100644 --- a/tests/problems/time/test_lineage_problem.py +++ b/tests/problems/time/test_lineage_problem.py @@ -235,7 +235,7 @@ def test_pass_arguments(self, adata_time_barcodes: AnnData, args_to_check: Mappi assert hasattr(solver, val) assert getattr(solver, val) == args_to_check[arg] - sinkhorn_solver = solver.linear_ot_solver if args_to_check["rank"] == -1 else solver + sinkhorn_solver = solver.linear_solver if args_to_check["rank"] == -1 else solver lin_solver_args = gw_linear_solver_args if args_to_check["rank"] == -1 else gw_lr_linear_solver_args tmp_dict = args_to_check["linear_solver_kwargs"] if args_to_check["rank"] == -1 else args_to_check for arg, val in lin_solver_args.items(): From 895085d1c2be529af5e9c5c0dba10e9e7eb5b113 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 23 Oct 2024 13:57:09 +0000 Subject: [PATCH 17/68] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/moscot/backends/ott/solver.py | 2 +- tests/problems/generic/test_gw_problem.py | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/moscot/backends/ott/solver.py b/src/moscot/backends/ott/solver.py index 16b11494f..b7cee7ae5 100644 --- a/src/moscot/backends/ott/solver.py +++ b/src/moscot/backends/ott/solver.py @@ -23,6 +23,7 @@ import jax.numpy as jnp import numpy as np from ott.geometry import costs, epsilon_scheduler, geodesic, geometry, pointcloud +from ott.initializers.quadratic import initializers as quad_initializers from ott.neural.datasets import OTData, OTDataset from ott.neural.methods.flows import dynamics, genot from ott.neural.networks.layers import time_encoder @@ -31,7 +32,6 @@ from ott.problems.quadratic import quadratic_problem from ott.solvers.linear import sinkhorn, sinkhorn_lr from ott.solvers.quadratic import gromov_wasserstein, gromov_wasserstein_lr -from ott.initializers.quadratic import initializers as quad_initializers from ott.solvers.utils import uniform_sampler from moscot._logging import logger diff --git a/tests/problems/generic/test_gw_problem.py b/tests/problems/generic/test_gw_problem.py index b6b0f3d11..064923cf3 100644 --- a/tests/problems/generic/test_gw_problem.py +++ b/tests/problems/generic/test_gw_problem.py @@ -1,4 +1,4 @@ -from typing import Any, Literal, Mapping +from typing import Any, Callable, Literal, Mapping import pytest @@ -9,8 +9,6 @@ from ott.solvers.linear import acceleration from anndata import AnnData -from typing import Callable - from moscot._types import CostKwargs_t from moscot.base.output import BaseDiscreteSolverOutput From 7e472dc8131ec1d53e2d0317d4466c34e0850c34 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Wed, 23 Oct 2024 16:00:05 +0200 Subject: [PATCH 18/68] fix test for also fgw tests --- tests/problems/generic/test_fgw_problem.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/problems/generic/test_fgw_problem.py b/tests/problems/generic/test_fgw_problem.py index 38dc82d6c..67b131812 100644 --- a/tests/problems/generic/test_fgw_problem.py +++ b/tests/problems/generic/test_fgw_problem.py @@ -9,6 +9,7 @@ from ott.solvers.linear import acceleration from anndata import AnnData +from typing import Callable from moscot._types import CostKwargs_t from moscot.backends.ott._utils import alpha_to_fused_penalty @@ -112,7 +113,10 @@ def test_pass_arguments(self, adata_space_rotate: AnnData, args_to_check: Mappin solver = problem[key].solver.solver args = gw_solver_args if args_to_check["rank"] == -1 else gw_lr_solver_args for arg, val in args.items(): - assert getattr(solver, val, object()) == args_to_check[arg], arg + if args_to_check["rank"] == -1 and arg == "initializer": + assert isinstance(getattr(solver,val), Callable) + else: + assert getattr(solver, val, object()) == args_to_check[arg], arg sinkhorn_solver = solver.linear_solver if args_to_check["rank"] == -1 else solver lin_solver_args = gw_linear_solver_args if args_to_check["rank"] == -1 else gw_lr_linear_solver_args From 19d7f35ced9ba012555a69a0ce7abf1fbf593db0 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Wed, 23 Oct 2024 16:02:21 +0200 Subject: [PATCH 19/68] lint --- tests/problems/generic/test_fgw_problem.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/problems/generic/test_fgw_problem.py b/tests/problems/generic/test_fgw_problem.py index 67b131812..233817b50 100644 --- a/tests/problems/generic/test_fgw_problem.py +++ b/tests/problems/generic/test_fgw_problem.py @@ -114,7 +114,7 @@ def test_pass_arguments(self, adata_space_rotate: AnnData, args_to_check: Mappin args = gw_solver_args if args_to_check["rank"] == -1 else gw_lr_solver_args for arg, val in args.items(): if args_to_check["rank"] == -1 and arg == "initializer": - assert isinstance(getattr(solver,val), Callable) + assert isinstance(getattr(solver, val), Callable) else: assert getattr(solver, val, object()) == args_to_check[arg], arg From 9e069bf1aba8b49aa80398d71810ac1fad98e6b5 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 23 Oct 2024 14:02:33 +0000 Subject: [PATCH 20/68] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- tests/problems/generic/test_fgw_problem.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/problems/generic/test_fgw_problem.py b/tests/problems/generic/test_fgw_problem.py index 233817b50..4595cbbab 100644 --- a/tests/problems/generic/test_fgw_problem.py +++ b/tests/problems/generic/test_fgw_problem.py @@ -1,4 +1,4 @@ -from typing import Any, Literal, Mapping +from typing import Any, Callable, Literal, Mapping import pytest @@ -9,7 +9,6 @@ from ott.solvers.linear import acceleration from anndata import AnnData -from typing import Callable from moscot._types import CostKwargs_t from moscot.backends.ott._utils import alpha_to_fused_penalty From 23c7caaf6e5c0bd56376fa837dd9b704f847d542 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Wed, 23 Oct 2024 16:11:27 +0200 Subject: [PATCH 21/68] fix linting errors --- src/moscot/_types.py | 4 +++- src/moscot/backends/ott/solver.py | 5 +++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/moscot/_types.py b/src/moscot/_types.py index 1c60884a2..2871482fb 100644 --- a/src/moscot/_types.py +++ b/src/moscot/_types.py @@ -2,6 +2,7 @@ from typing import Any, Literal, Mapping, Optional, Sequence, Union import numpy as np +from ott.initializers.quadratic.initializers import BaseQuadraticInitializer # TODO(michalk8): polish @@ -20,8 +21,9 @@ SinkFullRankInit = Literal["default", "gaussian", "sorting"] LRInitializer_t = Literal["random", "rank2", "k-means", "generalized-k-means"] + SinkhornInitializer_t = Optional[Union[SinkFullRankInit, LRInitializer_t]] -QuadInitializer_t = Optional[LRInitializer_t] +QuadInitializer_t = Optional[Union[LRInitializer_t, BaseQuadraticInitializer]] Initializer_t = Union[SinkhornInitializer_t, LRInitializer_t] ProblemStage_t = Literal["prepared", "solved"] diff --git a/src/moscot/backends/ott/solver.py b/src/moscot/backends/ott/solver.py index b7cee7ae5..4784cef25 100644 --- a/src/moscot/backends/ott/solver.py +++ b/src/moscot/backends/ott/solver.py @@ -413,6 +413,11 @@ def __init__( linear_solver = sinkhorn.Sinkhorn(**linear_solver_kwargs) if initializer is None: initializer = quad_initializers.QuadraticInitializer() + if isinstance(initializer, str): + raise ValueError( + "Expected `initializer` to be an instance of `ott.initializers.quadratic.BaseQuadraticInitializer`," + f"found `{initializer}`." + ) initializer = functools.partial(initializer, **initializer_kwargs) self._solver = gromov_wasserstein.GromovWasserstein( linear_solver=linear_solver, From aeb16216e9852e6e0a7998076747d9d490307c64 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Wed, 23 Oct 2024 16:33:21 +0200 Subject: [PATCH 22/68] fix test_backend tests. There were some ignored args --- tests/backends/ott/test_backend.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/backends/ott/test_backend.py b/tests/backends/ott/test_backend.py index 3962c53d1..84034a7d0 100644 --- a/tests/backends/ott/test_backend.py +++ b/tests/backends/ott/test_backend.py @@ -99,7 +99,7 @@ def test_matches_ott(self, x: Geom_t, y: Geom_t, eps: Optional[float], jit: bool thresh = 1e-2 pc_x, pc_y = PointCloud(x, epsilon=eps), PointCloud(y, epsilon=eps) prob = quadratic_problem.QuadraticProblem(pc_x, pc_y) - sol = GromovWasserstein(epsilon=eps, threshold=thresh) + sol = GromovWasserstein(epsilon=eps, threshold=thresh, linear_solver=Sinkhorn()) solver = jax.jit(sol, static_argnames=["threshold", "epsilon"]) if jit else sol gt = solver(prob) @@ -130,7 +130,7 @@ def test_epsilon(self, x_cost: jnp.ndarray, y_cost: jnp.ndarray, eps: Optional[f problem = QuadraticProblem( geom_xx=Geometry(cost_matrix=x_cost, epsilon=eps), geom_yy=Geometry(cost_matrix=y_cost, epsilon=eps) ) - gt = GromovWasserstein(epsilon=eps, threshold=thresh)(problem) + gt = GromovWasserstein(epsilon=eps, threshold=thresh, linear_solver=Sinkhorn())(problem) solver = GWSolver(epsilon=eps, threshold=thresh) pred = solver( @@ -157,7 +157,7 @@ def test_solver_rank(self, x: Geom_t, y: Geom_t, rank: int) -> None: ) else: - gt = GromovWasserstein(epsilon=eps, rank=rank, threshold=thresh)( + gt = GromovWasserstein(epsilon=eps, threshold=thresh, linear_solver=Sinkhorn())( QuadraticProblem(PointCloud(x, epsilon=eps), PointCloud(y, epsilon=eps)) ) @@ -183,7 +183,7 @@ def test_matches_ott(self, x: Geom_t, y: Geom_t, xy: Geom_t, eps: Optional[float thresh = 1e-2 xx, yy = xy - ott_solver = GromovWasserstein(epsilon=eps, threshold=thresh) + ott_solver = GromovWasserstein(epsilon=eps, threshold=thresh, linear_solver=Sinkhorn()) problem = quadratic_problem.QuadraticProblem( geom_xx=PointCloud(x, epsilon=eps), geom_yy=PointCloud(y, epsilon=eps), @@ -218,7 +218,7 @@ def test_alpha(self, x: Geom_t, y: Geom_t, xy: Geom_t, alpha: float) -> None: thresh, eps = 5e-2, 1e-1 xx, yy = xy - ott_solver = GromovWasserstein(epsilon=eps, threshold=thresh) + ott_solver = GromovWasserstein(epsilon=eps, threshold=thresh, linear_solver=Sinkhorn()) problem = quadratic_problem.QuadraticProblem( geom_xx=PointCloud(x, epsilon=eps), geom_yy=PointCloud(y, epsilon=eps), @@ -256,7 +256,7 @@ def test_epsilon( geom_xy=Geometry(cost_matrix=xy_cost, epsilon=eps), fused_penalty=alpha_to_fused_penalty(alpha), ) - gt = GromovWasserstein(epsilon=eps, threshold=thresh)(problem) + gt = GromovWasserstein(epsilon=eps, threshold=thresh, linear_solver=Sinkhorn())(problem) solver = GWSolver(epsilon=eps, threshold=thresh) pred = solver( @@ -398,7 +398,7 @@ def test_plot_errors_sink(self, x: Geom_t, y: Geom_t): out.plot_errors() def test_plot_errors_gw(self, x: Geom_t, y: Geom_t): - out = GWSolver(a=jnp.ones(len(x)) / len(x), b=jnp.ones(len(y)) / len(y), store_inner_errors=True)( + out = GWSolver(store_inner_errors=True)( a=jnp.ones(len(x)) / len(x), b=jnp.ones(len(y)) / len(y), x=x, y=y ) out.plot_errors() From 6543d572b99f9d90ade36041a50af87cab3c2047 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Wed, 23 Oct 2024 16:35:08 +0200 Subject: [PATCH 23/68] format --- tests/backends/ott/test_backend.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/backends/ott/test_backend.py b/tests/backends/ott/test_backend.py index 84034a7d0..1169e3f10 100644 --- a/tests/backends/ott/test_backend.py +++ b/tests/backends/ott/test_backend.py @@ -398,7 +398,5 @@ def test_plot_errors_sink(self, x: Geom_t, y: Geom_t): out.plot_errors() def test_plot_errors_gw(self, x: Geom_t, y: Geom_t): - out = GWSolver(store_inner_errors=True)( - a=jnp.ones(len(x)) / len(x), b=jnp.ones(len(y)) / len(y), x=x, y=y - ) + out = GWSolver(store_inner_errors=True)(a=jnp.ones(len(x)) / len(x), b=jnp.ones(len(y)) / len(y), x=x, y=y) out.plot_errors() From 0b517a6b0f31e2ee6bb917088559ac6a62ced796 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Wed, 23 Oct 2024 16:52:37 +0200 Subject: [PATCH 24/68] update test_pass_arguments --- tests/problems/cross_modality/test_translation_problem.py | 8 +++++--- tests/problems/space/test_mapping_problem.py | 7 +++++-- tests/problems/time/test_lineage_problem.py | 7 +++++-- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/tests/problems/cross_modality/test_translation_problem.py b/tests/problems/cross_modality/test_translation_problem.py index 018aacce6..a94b9ea03 100644 --- a/tests/problems/cross_modality/test_translation_problem.py +++ b/tests/problems/cross_modality/test_translation_problem.py @@ -1,5 +1,5 @@ from contextlib import nullcontext -from typing import Any, Literal, Mapping, Optional, Tuple +from typing import Any, Literal, Mapping, Optional, Tuple, Callable import pytest @@ -144,10 +144,12 @@ def test_pass_arguments(self, adata_translation_split: Tuple[AnnData, AnnData], tp = tp.solve(**args_to_check) solver = tp[key].solver.solver - args = gw_solver_args if args_to_check["rank"] == -1 else gw_lr_solver_args for arg, val in args.items(): - assert getattr(solver, val) == args_to_check[arg], arg + if arg == "initializer" and args_to_check["rank"] == -1: + assert isinstance(getattr(solver, val), Callable) + else: + assert getattr(solver, val) == args_to_check[arg], arg sinkhorn_solver = solver.linear_solver if args_to_check["rank"] == -1 else solver lin_solver_args = gw_linear_solver_args if args_to_check["rank"] == -1 else gw_lr_linear_solver_args diff --git a/tests/problems/space/test_mapping_problem.py b/tests/problems/space/test_mapping_problem.py index bd72f7547..4ac6266ed 100644 --- a/tests/problems/space/test_mapping_problem.py +++ b/tests/problems/space/test_mapping_problem.py @@ -1,6 +1,6 @@ import re from pathlib import Path -from typing import Any, List, Literal, Mapping, Optional, Union +from typing import Any, Callable, List, Literal, Mapping, Optional, Union import pytest @@ -233,7 +233,10 @@ def test_pass_arguments(self, adata_mapping: AnnData, args_to_check: Mapping[str args = gw_solver_args if args_to_check["rank"] == -1 else gw_lr_solver_args for arg, val in args.items(): assert hasattr(solver, val) - assert getattr(solver, val) == args_to_check[arg] + if arg == "initializer" and args_to_check["rank"] == -1: + assert isinstance(getattr(solver, val), Callable) + else: + assert getattr(solver, val) == args_to_check[arg] sinkhorn_solver = solver.linear_solver if args_to_check["rank"] == -1 else solver lin_solver_args = gw_linear_solver_args if args_to_check["rank"] == -1 else gw_lr_linear_solver_args diff --git a/tests/problems/time/test_lineage_problem.py b/tests/problems/time/test_lineage_problem.py index 21d5f77c5..efe9e8a4b 100644 --- a/tests/problems/time/test_lineage_problem.py +++ b/tests/problems/time/test_lineage_problem.py @@ -1,4 +1,4 @@ -from typing import Any, List, Mapping +from typing import Any, Callable, List, Mapping import pytest @@ -233,7 +233,10 @@ def test_pass_arguments(self, adata_time_barcodes: AnnData, args_to_check: Mappi args = gw_solver_args if args_to_check["rank"] == -1 else gw_lr_solver_args for arg, val in args.items(): assert hasattr(solver, val) - assert getattr(solver, val) == args_to_check[arg] + if arg == "initializer" and args_to_check["rank"] == -1: + assert isinstance(getattr(solver, val), Callable) + else: + assert getattr(solver, val) == args_to_check[arg] sinkhorn_solver = solver.linear_solver if args_to_check["rank"] == -1 else solver lin_solver_args = gw_linear_solver_args if args_to_check["rank"] == -1 else gw_lr_linear_solver_args From 9cb9c365f9c1e9081533ad8a9ac16445ed392b38 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 23 Oct 2024 14:53:00 +0000 Subject: [PATCH 25/68] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- tests/problems/cross_modality/test_translation_problem.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/problems/cross_modality/test_translation_problem.py b/tests/problems/cross_modality/test_translation_problem.py index a94b9ea03..5d444db30 100644 --- a/tests/problems/cross_modality/test_translation_problem.py +++ b/tests/problems/cross_modality/test_translation_problem.py @@ -1,5 +1,5 @@ from contextlib import nullcontext -from typing import Any, Literal, Mapping, Optional, Tuple, Callable +from typing import Any, Callable, Literal, Mapping, Optional, Tuple import pytest From b47be25dfd4d5aecfe0052d5bec3d53cc96508fc Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Wed, 27 Nov 2024 16:35:59 +0100 Subject: [PATCH 26/68] let util function cast everything to float64 --- src/moscot/backends/ott/_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/moscot/backends/ott/_utils.py b/src/moscot/backends/ott/_utils.py index 2cac53b30..c4b1f6d3f 100644 --- a/src/moscot/backends/ott/_utils.py +++ b/src/moscot/backends/ott/_utils.py @@ -132,7 +132,7 @@ def ensure_2d(arr: ArrayLike, *, reshape: bool = False) -> jax.Array: return jnp.reshape(arr, (-1, 1)) if arr.ndim != 2: raise ValueError(f"Expected array to have 2 dimensions, found `{arr.ndim}`.") - return arr + return arr.astype(jnp.float64) def convert_scipy_sparse(arr: Union[sp.spmatrix, jesp.BCOO]) -> jesp.BCOO: From 1a595bf46be85ee9093ec48b2abe9126621ac507 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Mon, 9 Dec 2024 19:52:39 +0100 Subject: [PATCH 27/68] set the version to new release --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 9fdbc3fa3..788aec3d6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -54,7 +54,7 @@ dependencies = [ "scanpy>=1.9.3", "wrapt>=1.13.2", "docrep>=0.3.2", - "ott-jax[neural]>=0.4.6,<=0.4.8", + "ott-jax[neural]>=0.4.8", "cloudpickle>=2.2.0", "rich>=13.5", "docstring_inheritance>=2.0.0", From 4cc42caa2666bb63c7c4b74d4f838604d32da905 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Tue, 10 Dec 2024 14:23:12 +0100 Subject: [PATCH 28/68] fix test initializers --- src/moscot/_types.py | 6 +++-- src/moscot/backends/ott/solver.py | 33 ++++++++--------------- tests/backends/ott/test_backend.py | 43 ++++++++++++++++++++++++++++-- 3 files changed, 56 insertions(+), 26 deletions(-) diff --git a/src/moscot/_types.py b/src/moscot/_types.py index 2871482fb..e6a83707c 100644 --- a/src/moscot/_types.py +++ b/src/moscot/_types.py @@ -2,6 +2,8 @@ from typing import Any, Literal, Mapping, Optional, Sequence, Union import numpy as np +from ott.initializers.linear.initializers import SinkhornInitializer +from ott.initializers.linear.initializers_lr import LRInitializer from ott.initializers.quadratic.initializers import BaseQuadraticInitializer # TODO(michalk8): polish @@ -22,8 +24,8 @@ LRInitializer_t = Literal["random", "rank2", "k-means", "generalized-k-means"] -SinkhornInitializer_t = Optional[Union[SinkFullRankInit, LRInitializer_t]] -QuadInitializer_t = Optional[Union[LRInitializer_t, BaseQuadraticInitializer]] +SinkhornInitializer_t = Optional[Union[SinkhornInitializer, LRInitializer]] +QuadInitializer_t = Optional[Union[BaseQuadraticInitializer]] Initializer_t = Union[SinkhornInitializer_t, LRInitializer_t] ProblemStage_t = Literal["prepared", "solved"] diff --git a/src/moscot/backends/ott/solver.py b/src/moscot/backends/ott/solver.py index 4784cef25..6d8468270 100644 --- a/src/moscot/backends/ott/solver.py +++ b/src/moscot/backends/ott/solver.py @@ -23,7 +23,6 @@ import jax.numpy as jnp import numpy as np from ott.geometry import costs, epsilon_scheduler, geodesic, geometry, pointcloud -from ott.initializers.quadratic import initializers as quad_initializers from ott.neural.datasets import OTData, OTDataset from ott.neural.methods.flows import dynamics, genot from ott.neural.networks.layers import time_encoder @@ -89,9 +88,11 @@ class OTTJaxSolver(OTSolver[OTTOutput], abc.ABC): ---------- jit Whether to :func:`~jax.jit` the :attr:`solver`. + initializer_kwargs + Keyword arguments for the initializer. """ - def __init__(self, jit: bool = True): + def __init__(self, jit: bool = True, initializer_kwargs: Mapping[str, Any] = types.MappingProxyType({})): super().__init__() self._solver: Optional[OTTSolver_t] = None self._problem: Optional[OTTProblem_t] = None @@ -99,6 +100,8 @@ def __init__(self, jit: bool = True): self._a: Optional[jnp.ndarray] = None self._b: Optional[jnp.ndarray] = None + self.initializer_kwargs = initializer_kwargs + def _create_geometry( self, x: TaggedArray, @@ -171,7 +174,7 @@ def _solve( # type: ignore[override] **kwargs: Any, ) -> Union[OTTOutput, GraphOTTOutput]: solver = jax.jit(self.solver) if self._jit else self.solver - out = solver(prob, **kwargs) + out = solver(prob, **self.initializer_kwargs, **kwargs) if isinstance(prob, linear_problem.LinearProblem) and isinstance(prob.geom, geodesic.Geodesic): return GraphOTTOutput(out, shape=(len(self._a), len(self._b))) # type: ignore[arg-type] return OTTOutput(out) @@ -276,20 +279,16 @@ def __init__( initializer_kwargs: Mapping[str, Any] = types.MappingProxyType({}), **kwargs: Any, ): - super().__init__(jit=jit) + super().__init__(jit=jit, initializer_kwargs=initializer_kwargs) if rank > -1: kwargs.setdefault("gamma", 500) kwargs.setdefault("gamma_rescale", True) eps = kwargs.get("epsilon") if eps is not None and eps > 0.0: logger.info(f"Found `epsilon`={eps}>0. We recommend setting `epsilon`=0 for the low-rank solver.") - initializer = "rank2" if initializer is None else initializer - self._solver = sinkhorn_lr.LRSinkhorn( - rank=rank, epsilon=epsilon, initializer=initializer, kwargs_init=initializer_kwargs, **kwargs - ) + self._solver = sinkhorn_lr.LRSinkhorn(rank=rank, epsilon=epsilon, initializer=initializer, **kwargs) else: - initializer = "default" if initializer is None else initializer - self._solver = sinkhorn.Sinkhorn(initializer=initializer, kwargs_init=initializer_kwargs, **kwargs) + self._solver = sinkhorn.Sinkhorn(initializer=initializer, **kwargs) def _prepare( self, @@ -390,35 +389,25 @@ def __init__( self, jit: bool = True, rank: int = -1, - initializer: QuadInitializer_t = None, + initializer: QuadInitializer_t | None = None, initializer_kwargs: Mapping[str, Any] = types.MappingProxyType({}), linear_solver_kwargs: Mapping[str, Any] = types.MappingProxyType({}), **kwargs: Any, ): - super().__init__(jit=jit) + super().__init__(jit=jit, initializer_kwargs=initializer_kwargs) if rank > -1: kwargs.setdefault("gamma", 10) kwargs.setdefault("gamma_rescale", True) eps = kwargs.get("epsilon") if eps is not None and eps > 0.0: logger.info(f"Found `epsilon`={eps}>0. We recommend setting `epsilon`=0 for the low-rank solver.") - initializer = "rank2" if initializer is None else initializer self._solver = gromov_wasserstein_lr.LRGromovWasserstein( rank=rank, initializer=initializer, - kwargs_init=initializer_kwargs, **kwargs, ) else: linear_solver = sinkhorn.Sinkhorn(**linear_solver_kwargs) - if initializer is None: - initializer = quad_initializers.QuadraticInitializer() - if isinstance(initializer, str): - raise ValueError( - "Expected `initializer` to be an instance of `ott.initializers.quadratic.BaseQuadraticInitializer`," - f"found `{initializer}`." - ) - initializer = functools.partial(initializer, **initializer_kwargs) self._solver = gromov_wasserstein.GromovWasserstein( linear_solver=linear_solver, initializer=initializer, diff --git a/tests/backends/ott/test_backend.py b/tests/backends/ott/test_backend.py index 1169e3f10..841e8e16d 100644 --- a/tests/backends/ott/test_backend.py +++ b/tests/backends/ott/test_backend.py @@ -9,6 +9,8 @@ from ott.geometry.geometry import Geometry from ott.geometry.low_rank import LRCGeometry from ott.geometry.pointcloud import PointCloud +from ott.initializers.linear import initializers as init_lib +from ott.initializers.linear import initializers_lr as lr_init_lib from ott.problems.linear.linear_problem import LinearProblem from ott.problems.quadratic import quadratic_problem from ott.problems.quadratic.quadratic_problem import QuadraticProblem @@ -28,6 +30,41 @@ from tests.plotting.conftest import PlotTester, PlotTesterMeta +def create_lr_initializer( + initializer, + rank, + **kwargs, +) -> lr_init_lib.LRInitializer: # noqa: D102 + if isinstance(initializer, lr_init_lib.LRInitializer): + return initializer + if initializer == "random": + return lr_init_lib.RandomInitializer(rank=rank, **kwargs) + if initializer == "rank2": + return lr_init_lib.Rank2Initializer(rank=rank, **kwargs) + if initializer == "k-means": + return lr_init_lib.KMeansInitializer(rank=rank, **kwargs) + if initializer == "generalized-k-means": + return lr_init_lib.GeneralizedKMeansInitializer(rank=rank, **kwargs) + raise NotImplementedError(f"Initializer `{initializer}` is not yet implemented.") + + +def create_fr_initializer( + initializer, + **kwargs, +) -> init_lib.SinkhornInitializer: # noqa: D102 + if isinstance(initializer, init_lib.SinkhornInitializer): + return initializer + if initializer == "default": + return init_lib.DefaultInitializer(**kwargs) + if initializer == "gaussian": + return init_lib.GaussianInitializer(**kwargs) + if initializer == "sorting": + return init_lib.SortingInitializer(**kwargs) + if initializer == "subsample": + return init_lib.SubsampleInitializer(**kwargs) + raise NotImplementedError(f"Initializer `{initializer}` is not yet implemented.") + + class TestSinkhorn: @pytest.mark.fast @pytest.mark.parametrize("jit", [False, True]) @@ -52,6 +89,7 @@ def test_matches_ott(self, x: Geom_t, eps: Optional[float], jit: bool): def test_solver_rank(self, y: Geom_t, rank: Optional[int], initializer: str): eps = 1e-2 default_gamma_lr_sinhorn = 500 + initializer = create_lr_initializer(initializer, rank=rank) lr_sinkhorn = LRSinkhorn(rank=rank, initializer=initializer, gamma=default_gamma_lr_sinhorn) problem = LinearProblem(PointCloud(y, epsilon=eps)) gt = lr_sinkhorn(problem) @@ -152,12 +190,13 @@ def test_epsilon(self, x_cost: jnp.ndarray, y_cost: jnp.ndarray, eps: Optional[f def test_solver_rank(self, x: Geom_t, y: Geom_t, rank: int) -> None: thresh, eps = 1e-2, 1e-2 if rank > -1: - gt = LRGromovWasserstein(epsilon=eps, rank=rank, threshold=thresh, initializer="rank2")( + initializer = lr_init_lib.RandomInitializer(rank=rank) + gt = LRGromovWasserstein(epsilon=eps, rank=rank, threshold=thresh, initializer=initializer)( QuadraticProblem(PointCloud(x, epsilon=eps), PointCloud(y, epsilon=eps)) ) else: - gt = GromovWasserstein(epsilon=eps, threshold=thresh, linear_solver=Sinkhorn())( + gt = GromovWasserstein(epsilon=eps, threshold=thresh, linear_solver=Sinkhorn(threshold=thresh))( QuadraticProblem(PointCloud(x, epsilon=eps), PointCloud(y, epsilon=eps)) ) From fb90d568fbba7fac87d42531de354d48381aae22 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Tue, 10 Dec 2024 14:25:02 +0100 Subject: [PATCH 29/68] fix types --- src/moscot/_types.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/moscot/_types.py b/src/moscot/_types.py index e6a83707c..25629f0d6 100644 --- a/src/moscot/_types.py +++ b/src/moscot/_types.py @@ -20,14 +20,11 @@ Numeric_t = Union[int, float] # type of `time_key` arguments Filter_t = Optional[Union[str, Mapping[str, Sequence[Any]]]] # type how to filter adata Str_Dict_t = Optional[Union[str, Mapping[str, Sequence[Any]]]] # type for `cell_transition` -SinkFullRankInit = Literal["default", "gaussian", "sorting"] -LRInitializer_t = Literal["random", "rank2", "k-means", "generalized-k-means"] - SinkhornInitializer_t = Optional[Union[SinkhornInitializer, LRInitializer]] QuadInitializer_t = Optional[Union[BaseQuadraticInitializer]] -Initializer_t = Union[SinkhornInitializer_t, LRInitializer_t] +Initializer_t = Union[SinkhornInitializer_t, QuadInitializer_t] ProblemStage_t = Literal["prepared", "solved"] Device_t = Union[Literal["cpu", "gpu", "tpu"], str] From 7de8496db8ed43935438b66715143d47718b3ce7 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Tue, 10 Dec 2024 15:21:53 +0100 Subject: [PATCH 30/68] fix tests --- src/moscot/problems/time/_lineage.py | 9 ++--- tests/_utils.py | 39 +++++++++++++++++++++ tests/backends/ott/test_backend.py | 37 +------------------ tests/problems/conftest.py | 8 ++--- tests/problems/time/test_lineage_problem.py | 3 +- 5 files changed, 48 insertions(+), 48 deletions(-) diff --git a/src/moscot/problems/time/_lineage.py b/src/moscot/problems/time/_lineage.py index 809b7f8b9..3fcfd53c9 100644 --- a/src/moscot/problems/time/_lineage.py +++ b/src/moscot/problems/time/_lineage.py @@ -185,7 +185,6 @@ def solve( jit: bool = True, threshold: float = 1e-3, lse_mode: bool = True, - inner_iterations: int = 10, min_iterations: Optional[int] = None, max_iterations: Optional[int] = None, device: Optional[Literal["cpu", "gpu", "tpu"]] = None, @@ -233,9 +232,7 @@ def solve( lse_mode Whether to use `log-sum-exp (LSE) `_ - computations for numerical stability. - inner_iterations - Compute the convergence criterion every ``inner_iterations``. + computations for numerical stability. Valid only for the :term:`linear problem`. min_iterations Minimum number of :term:`Sinkhorn` iterations. max_iterations @@ -253,6 +250,8 @@ def solve( - :attr:`solutions` - the :term:`OT` solutions for each subproblem. - :attr:`stage` - set to ``'solved'``. """ + if self.problem_kind == "linear": + kwargs["lse_mode"] = lse_mode return super().solve( # type:ignore[return-value] epsilon=epsilon, tau_a=tau_a, @@ -265,8 +264,6 @@ def solve( initializer_kwargs=initializer_kwargs, jit=jit, threshold=threshold, - lse_mode=lse_mode, - inner_iterations=inner_iterations, min_iterations=min_iterations, max_iterations=max_iterations, device=device, diff --git a/tests/_utils.py b/tests/_utils.py index d2d1960b9..050b02add 100644 --- a/tests/_utils.py +++ b/tests/_utils.py @@ -6,6 +6,9 @@ from anndata import AnnData +from ott.initializers.linear import initializers_lr as lr_init_lib +from ott.initializers.linear import initializers as init_lib + from moscot._types import ArrayLike from moscot.base.output import MatrixSolverOutput from moscot.base.problems import AnalysisMixin, CompoundProblem, OTProblem @@ -101,3 +104,39 @@ def _base_problem_type(self) -> Type[B]: @property def _valid_policies(self) -> Tuple[str, ...]: return () + + + +def create_lr_initializer( + initializer, + rank, + **kwargs, +) -> lr_init_lib.LRInitializer: # noqa: D102 + if isinstance(initializer, lr_init_lib.LRInitializer): + return initializer + if initializer == "random": + return lr_init_lib.RandomInitializer(rank=rank, **kwargs) + if initializer == "rank2": + return lr_init_lib.Rank2Initializer(rank=rank, **kwargs) + if initializer == "k-means": + return lr_init_lib.KMeansInitializer(rank=rank, **kwargs) + if initializer == "generalized-k-means": + return lr_init_lib.GeneralizedKMeansInitializer(rank=rank, **kwargs) + raise NotImplementedError(f"Initializer `{initializer}` is not yet implemented.") + + +def create_fr_initializer( + initializer, + **kwargs, +) -> init_lib.SinkhornInitializer: # noqa: D102 + if isinstance(initializer, init_lib.SinkhornInitializer): + return initializer + if initializer == "default": + return init_lib.DefaultInitializer(**kwargs) + if initializer == "gaussian": + return init_lib.GaussianInitializer(**kwargs) + if initializer == "sorting": + return init_lib.SortingInitializer(**kwargs) + if initializer == "subsample": + return init_lib.SubsampleInitializer(**kwargs) + raise NotImplementedError(f"Initializer `{initializer}` is not yet implemented.") \ No newline at end of file diff --git a/tests/backends/ott/test_backend.py b/tests/backends/ott/test_backend.py index 841e8e16d..db38b98b4 100644 --- a/tests/backends/ott/test_backend.py +++ b/tests/backends/ott/test_backend.py @@ -26,45 +26,10 @@ from moscot.base.output import BaseDiscreteSolverOutput from moscot.base.solver import O, OTSolver from moscot.utils.tagged_array import Tag, TaggedArray -from tests._utils import ATOL, RTOL, Geom_t +from tests._utils import ATOL, RTOL, Geom_t, create_lr_initializer from tests.plotting.conftest import PlotTester, PlotTesterMeta -def create_lr_initializer( - initializer, - rank, - **kwargs, -) -> lr_init_lib.LRInitializer: # noqa: D102 - if isinstance(initializer, lr_init_lib.LRInitializer): - return initializer - if initializer == "random": - return lr_init_lib.RandomInitializer(rank=rank, **kwargs) - if initializer == "rank2": - return lr_init_lib.Rank2Initializer(rank=rank, **kwargs) - if initializer == "k-means": - return lr_init_lib.KMeansInitializer(rank=rank, **kwargs) - if initializer == "generalized-k-means": - return lr_init_lib.GeneralizedKMeansInitializer(rank=rank, **kwargs) - raise NotImplementedError(f"Initializer `{initializer}` is not yet implemented.") - - -def create_fr_initializer( - initializer, - **kwargs, -) -> init_lib.SinkhornInitializer: # noqa: D102 - if isinstance(initializer, init_lib.SinkhornInitializer): - return initializer - if initializer == "default": - return init_lib.DefaultInitializer(**kwargs) - if initializer == "gaussian": - return init_lib.GaussianInitializer(**kwargs) - if initializer == "sorting": - return init_lib.SortingInitializer(**kwargs) - if initializer == "subsample": - return init_lib.SubsampleInitializer(**kwargs) - raise NotImplementedError(f"Initializer `{initializer}` is not yet implemented.") - - class TestSinkhorn: @pytest.mark.fast @pytest.mark.parametrize("jit", [False, True]) diff --git a/tests/problems/conftest.py b/tests/problems/conftest.py index c7f3c4784..84e62967e 100644 --- a/tests/problems/conftest.py +++ b/tests/problems/conftest.py @@ -9,6 +9,8 @@ from tests._utils import Geom_t +from ott.initializers.linear import initializers as init_lib +from ott.initializers.linear import initializers_lr as lr_init_lib @pytest.fixture def adata_with_cost_matrix(adata_x: Geom_t, adata_y: Geom_t) -> AnnData: @@ -75,7 +77,7 @@ def marginal_keys(request): "tau_a": 1.0, "tau_b": 1.0, "rank": 7, - "initializer": "rank2", + "initializer": lr_init_lib.RandomInitializer(rank=7), "initializer_kwargs": {}, "jit": False, "threshold": 2e-3, @@ -157,8 +159,7 @@ def marginal_keys(request): "scale_cost": "max_cost", "rank": 7, "batch_size": 123, - "initializer": "rank2", - "initializer_kwargs": {}, + "initializer": lr_init_lib.RandomInitializer(rank=7), "jit": False, "threshold": 2e-3, "min_iterations": 2, @@ -193,7 +194,6 @@ def marginal_keys(request): "threshold": "threshold", "min_iterations": "min_iterations", "max_iterations": "max_iterations", - "initializer_kwargs": "kwargs_init", "initializer": "initializer", } diff --git a/tests/problems/time/test_lineage_problem.py b/tests/problems/time/test_lineage_problem.py index efe9e8a4b..f1e1442ed 100644 --- a/tests/problems/time/test_lineage_problem.py +++ b/tests/problems/time/test_lineage_problem.py @@ -262,8 +262,7 @@ def test_pass_arguments(self, adata_time_barcodes: AnnData, args_to_check: Mappi el = getattr(geom, val)[0] if isinstance(getattr(geom, val), tuple) else getattr(geom, val) if arg == "epsilon": eps_processed = getattr(geom, val) - assert isinstance(eps_processed, epsilon_scheduler.Epsilon) - assert eps_processed.target == args_to_check[arg], arg + assert eps_processed == args_to_check[arg], arg else: assert getattr(geom, val) == args_to_check[arg], arg assert el == args_to_check[arg] From 124c0dfc860d096039be3294971c9b4bfa788f5f Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 10 Dec 2024 14:22:25 +0000 Subject: [PATCH 31/68] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- tests/_utils.py | 8 +++----- tests/backends/ott/test_backend.py | 1 - tests/problems/conftest.py | 3 +-- tests/problems/time/test_lineage_problem.py | 1 - 4 files changed, 4 insertions(+), 9 deletions(-) diff --git a/tests/_utils.py b/tests/_utils.py index 050b02add..dd527b2f8 100644 --- a/tests/_utils.py +++ b/tests/_utils.py @@ -2,13 +2,12 @@ import numpy as np import pandas as pd +from ott.initializers.linear import initializers as init_lib +from ott.initializers.linear import initializers_lr as lr_init_lib from scipy.sparse import csr_matrix from anndata import AnnData -from ott.initializers.linear import initializers_lr as lr_init_lib -from ott.initializers.linear import initializers as init_lib - from moscot._types import ArrayLike from moscot.base.output import MatrixSolverOutput from moscot.base.problems import AnalysisMixin, CompoundProblem, OTProblem @@ -106,7 +105,6 @@ def _valid_policies(self) -> Tuple[str, ...]: return () - def create_lr_initializer( initializer, rank, @@ -139,4 +137,4 @@ def create_fr_initializer( return init_lib.SortingInitializer(**kwargs) if initializer == "subsample": return init_lib.SubsampleInitializer(**kwargs) - raise NotImplementedError(f"Initializer `{initializer}` is not yet implemented.") \ No newline at end of file + raise NotImplementedError(f"Initializer `{initializer}` is not yet implemented.") diff --git a/tests/backends/ott/test_backend.py b/tests/backends/ott/test_backend.py index db38b98b4..f90696939 100644 --- a/tests/backends/ott/test_backend.py +++ b/tests/backends/ott/test_backend.py @@ -9,7 +9,6 @@ from ott.geometry.geometry import Geometry from ott.geometry.low_rank import LRCGeometry from ott.geometry.pointcloud import PointCloud -from ott.initializers.linear import initializers as init_lib from ott.initializers.linear import initializers_lr as lr_init_lib from ott.problems.linear.linear_problem import LinearProblem from ott.problems.quadratic import quadratic_problem diff --git a/tests/problems/conftest.py b/tests/problems/conftest.py index 84e62967e..2ab509125 100644 --- a/tests/problems/conftest.py +++ b/tests/problems/conftest.py @@ -2,6 +2,7 @@ import numpy as np import pandas as pd +from ott.initializers.linear import initializers_lr as lr_init_lib from sklearn.metrics import pairwise_distances import anndata as ad @@ -9,8 +10,6 @@ from tests._utils import Geom_t -from ott.initializers.linear import initializers as init_lib -from ott.initializers.linear import initializers_lr as lr_init_lib @pytest.fixture def adata_with_cost_matrix(adata_x: Geom_t, adata_y: Geom_t) -> AnnData: diff --git a/tests/problems/time/test_lineage_problem.py b/tests/problems/time/test_lineage_problem.py index f1e1442ed..5a992800c 100644 --- a/tests/problems/time/test_lineage_problem.py +++ b/tests/problems/time/test_lineage_problem.py @@ -3,7 +3,6 @@ import pytest import numpy as np -from ott.geometry import epsilon_scheduler from anndata import AnnData From 14e96e64c78ab2efacfe1d08a863ab858003fc7b Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Tue, 10 Dec 2024 15:34:10 +0100 Subject: [PATCH 32/68] fix some more tests --- src/moscot/backends/ott/_utils.py | 3 +-- src/moscot/problems/time/_mixins.py | 10 +++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/moscot/backends/ott/_utils.py b/src/moscot/backends/ott/_utils.py index c4b1f6d3f..05bc48a57 100644 --- a/src/moscot/backends/ott/_utils.py +++ b/src/moscot/backends/ott/_utils.py @@ -45,11 +45,10 @@ def sinkhorn_divergence( batch_size=batch_size, a=a, b=b, - sinkhorn_kwargs={"tau_a": tau_a, "tau_b": tau_b}, scale_cost=scale_cost, epsilon=epsilon, **kwargs, - ) + )[1] xy_conv, xx_conv, *yy_conv = output.converged if not xy_conv: diff --git a/src/moscot/problems/time/_mixins.py b/src/moscot/problems/time/_mixins.py index c2537f6b4..bc650345d 100644 --- a/src/moscot/problems/time/_mixins.py +++ b/src/moscot/problems/time/_mixins.py @@ -518,7 +518,7 @@ def _get_data( if src == source: source_data = self.problems[src, tgt].xy.data_src if only_start: - return source_data, self.problems[src, tgt].adata_src + return source_data.astype(np.float64), self.problems[src, tgt].adata_src # TODO(michalk8): posterior marginals attr = "posterior_growth_rates" if posterior_marginals else "prior_growth_rates" growth_rates_source = getattr(self.problems[src, tgt], attr) @@ -540,11 +540,11 @@ def _get_data( raise ValueError(f"No data found for `{target}` time point.") return ( - source_data, - growth_rates_source, - intermediate_data, + source_data.astype(np.float64) if source_data is not None else None, + growth_rates_source.astype(np.float64) if growth_rates_source is not None else None, + intermediate_data.astype(np.float64) if intermediate_data is not None else None, intermediate_adata, - target_data, + target_data.astype(np.float64) if target_data is not None else None, ) def compute_interpolated_distance( From b01423344403203a76cb272df16d2ec6055fd84a Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Tue, 10 Dec 2024 15:44:11 +0100 Subject: [PATCH 33/68] adapt to new epsilon scheduler class --- tests/problems/cross_modality/test_translation_problem.py | 3 +-- tests/problems/generic/test_fgw_problem.py | 3 +-- tests/problems/generic/test_gw_problem.py | 3 +-- tests/problems/generic/test_sinkhorn_problem.py | 3 +-- tests/problems/space/test_alignment_problem.py | 3 +-- tests/problems/space/test_mapping_problem.py | 3 +-- tests/problems/spatio_temporal/test_spatio_temporal_problem.py | 3 +-- tests/problems/time/test_temporal_problem.py | 3 +-- 8 files changed, 8 insertions(+), 16 deletions(-) diff --git a/tests/problems/cross_modality/test_translation_problem.py b/tests/problems/cross_modality/test_translation_problem.py index 5d444db30..81f2232d3 100644 --- a/tests/problems/cross_modality/test_translation_problem.py +++ b/tests/problems/cross_modality/test_translation_problem.py @@ -173,8 +173,7 @@ def test_pass_arguments(self, adata_translation_split: Tuple[AnnData, AnnData], el = getattr(geom, val)[0] if isinstance(getattr(geom, val), tuple) else getattr(geom, val) if arg == "epsilon": eps_processed = getattr(geom, val) - assert isinstance(eps_processed, epsilon_scheduler.Epsilon) - assert eps_processed.target == args_to_check[arg], arg + assert eps_processed == args_to_check[arg], arg else: assert getattr(geom, val) == args_to_check[arg], arg assert el == args_to_check[arg] diff --git a/tests/problems/generic/test_fgw_problem.py b/tests/problems/generic/test_fgw_problem.py index 4595cbbab..df1bb6347 100644 --- a/tests/problems/generic/test_fgw_problem.py +++ b/tests/problems/generic/test_fgw_problem.py @@ -139,8 +139,7 @@ def test_pass_arguments(self, adata_space_rotate: AnnData, args_to_check: Mappin el = getattr(geom, val)[0] if isinstance(getattr(geom, val), tuple) else getattr(geom, val) if arg == "epsilon": eps_processed = getattr(geom, val) - assert isinstance(eps_processed, epsilon_scheduler.Epsilon) - assert eps_processed.target == args_to_check[arg], arg + assert eps_processed == args_to_check[arg], arg else: assert getattr(geom, val) == args_to_check[arg], arg assert el == args_to_check[arg] diff --git a/tests/problems/generic/test_gw_problem.py b/tests/problems/generic/test_gw_problem.py index 064923cf3..f92b0a67d 100644 --- a/tests/problems/generic/test_gw_problem.py +++ b/tests/problems/generic/test_gw_problem.py @@ -144,8 +144,7 @@ def test_pass_arguments(self, adata_space_rotate: AnnData, args_to_check: Mappin el = getattr(geom, val)[0] if isinstance(getattr(geom, val), tuple) else getattr(geom, val) if arg == "epsilon": eps_processed = getattr(geom, val) - assert isinstance(eps_processed, epsilon_scheduler.Epsilon) - assert eps_processed.target == args_to_check[arg], arg + assert eps_processed == args_to_check[arg], arg else: assert getattr(geom, val) == args_to_check[arg], arg assert el == args_to_check[arg] diff --git a/tests/problems/generic/test_sinkhorn_problem.py b/tests/problems/generic/test_sinkhorn_problem.py index 1badbf49b..9892ee781 100644 --- a/tests/problems/generic/test_sinkhorn_problem.py +++ b/tests/problems/generic/test_sinkhorn_problem.py @@ -177,8 +177,7 @@ def test_pass_arguments(self, adata_time: AnnData, args_to_check: Mapping[str, A el = getattr(geom, val)[0] if isinstance(getattr(geom, val), tuple) else getattr(geom, val) if arg == "epsilon": eps_processed = getattr(geom, val) - assert isinstance(eps_processed, epsilon_scheduler.Epsilon) - assert eps_processed.target == args_to_check[arg], arg + assert eps_processed == args_to_check[arg], arg else: assert getattr(geom, val) == args_to_check[arg], arg assert el == args_to_check[arg] diff --git a/tests/problems/space/test_alignment_problem.py b/tests/problems/space/test_alignment_problem.py index 47202ffe0..901f46d7e 100644 --- a/tests/problems/space/test_alignment_problem.py +++ b/tests/problems/space/test_alignment_problem.py @@ -224,8 +224,7 @@ def test_pass_arguments(self, adata_space_rotate: AnnData, args_to_check: Mappin el = getattr(geom, val)[0] if isinstance(getattr(geom, val), tuple) else getattr(geom, val) if arg == "epsilon": eps_processed = getattr(geom, val) - assert isinstance(eps_processed, epsilon_scheduler.Epsilon) - assert eps_processed.target == args_to_check[arg], arg + assert eps_processed == args_to_check[arg], arg else: assert getattr(geom, val) == args_to_check[arg], arg assert el == args_to_check[arg] diff --git a/tests/problems/space/test_mapping_problem.py b/tests/problems/space/test_mapping_problem.py index 4ac6266ed..7d6520293 100644 --- a/tests/problems/space/test_mapping_problem.py +++ b/tests/problems/space/test_mapping_problem.py @@ -262,8 +262,7 @@ def test_pass_arguments(self, adata_mapping: AnnData, args_to_check: Mapping[str el = getattr(geom, val)[0] if isinstance(getattr(geom, val), tuple) else getattr(geom, val) if arg == "epsilon": eps_processed = getattr(geom, val) - assert isinstance(eps_processed, epsilon_scheduler.Epsilon) - assert eps_processed.target == args_to_check[arg], arg + assert eps_processed == args_to_check[arg], arg else: assert getattr(geom, val) == args_to_check[arg], arg assert el == args_to_check[arg] diff --git a/tests/problems/spatio_temporal/test_spatio_temporal_problem.py b/tests/problems/spatio_temporal/test_spatio_temporal_problem.py index ac661391d..3632d76b7 100644 --- a/tests/problems/spatio_temporal/test_spatio_temporal_problem.py +++ b/tests/problems/spatio_temporal/test_spatio_temporal_problem.py @@ -224,8 +224,7 @@ def test_pass_arguments(self, adata_spatio_temporal: AnnData, args_to_check: Map el = getattr(geom, val)[0] if isinstance(getattr(geom, val), tuple) else getattr(geom, val) if arg == "epsilon": eps_processed = getattr(geom, val) - assert isinstance(eps_processed, epsilon_scheduler.Epsilon) - assert eps_processed.target == args_to_check[arg], arg + assert eps_processed == args_to_check[arg], arg else: assert getattr(geom, val) == args_to_check[arg], arg assert el == args_to_check[arg] diff --git a/tests/problems/time/test_temporal_problem.py b/tests/problems/time/test_temporal_problem.py index f53a745c9..d3780a8ec 100644 --- a/tests/problems/time/test_temporal_problem.py +++ b/tests/problems/time/test_temporal_problem.py @@ -456,8 +456,7 @@ def test_pass_arguments(self, adata_time: AnnData, args_to_check: Mapping[str, A el = getattr(geom, val)[0] if isinstance(getattr(geom, val), tuple) else getattr(geom, val) if arg == "epsilon": eps_processed = getattr(geom, val) - assert isinstance(eps_processed, epsilon_scheduler.Epsilon) - assert eps_processed.target == args_to_check[arg], arg + assert eps_processed == args_to_check[arg], arg else: assert getattr(geom, val) == args_to_check[arg], arg assert el == args_to_check[arg] From 1b56904bea4fa5391f2cbc18f795c49daf329b28 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 10 Dec 2024 14:44:45 +0000 Subject: [PATCH 34/68] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- tests/problems/cross_modality/test_translation_problem.py | 1 - tests/problems/generic/test_fgw_problem.py | 1 - tests/problems/generic/test_gw_problem.py | 1 - tests/problems/generic/test_sinkhorn_problem.py | 1 - tests/problems/space/test_alignment_problem.py | 1 - tests/problems/space/test_mapping_problem.py | 1 - tests/problems/spatio_temporal/test_spatio_temporal_problem.py | 1 - tests/problems/time/test_temporal_problem.py | 2 +- 8 files changed, 1 insertion(+), 8 deletions(-) diff --git a/tests/problems/cross_modality/test_translation_problem.py b/tests/problems/cross_modality/test_translation_problem.py index 81f2232d3..ccd5de25d 100644 --- a/tests/problems/cross_modality/test_translation_problem.py +++ b/tests/problems/cross_modality/test_translation_problem.py @@ -4,7 +4,6 @@ import pytest import numpy as np -from ott.geometry import epsilon_scheduler from anndata import AnnData diff --git a/tests/problems/generic/test_fgw_problem.py b/tests/problems/generic/test_fgw_problem.py index df1bb6347..4167edf6d 100644 --- a/tests/problems/generic/test_fgw_problem.py +++ b/tests/problems/generic/test_fgw_problem.py @@ -4,7 +4,6 @@ import numpy as np import pandas as pd -from ott.geometry import epsilon_scheduler from ott.geometry.costs import Cosine, Euclidean, PNormP, SqEuclidean, SqPNorm from ott.solvers.linear import acceleration diff --git a/tests/problems/generic/test_gw_problem.py b/tests/problems/generic/test_gw_problem.py index f92b0a67d..5de5ea0b2 100644 --- a/tests/problems/generic/test_gw_problem.py +++ b/tests/problems/generic/test_gw_problem.py @@ -4,7 +4,6 @@ import numpy as np import pandas as pd -from ott.geometry import epsilon_scheduler from ott.geometry.costs import Cosine, Euclidean, PNormP, SqEuclidean, SqPNorm from ott.solvers.linear import acceleration diff --git a/tests/problems/generic/test_sinkhorn_problem.py b/tests/problems/generic/test_sinkhorn_problem.py index 9892ee781..ef7c56f60 100644 --- a/tests/problems/generic/test_sinkhorn_problem.py +++ b/tests/problems/generic/test_sinkhorn_problem.py @@ -4,7 +4,6 @@ import numpy as np import pandas as pd -from ott.geometry import epsilon_scheduler from ott.geometry.costs import Cosine, Euclidean, PNormP, SqEuclidean, SqPNorm from ott.solvers.linear import acceleration diff --git a/tests/problems/space/test_alignment_problem.py b/tests/problems/space/test_alignment_problem.py index 901f46d7e..b3e21cee7 100644 --- a/tests/problems/space/test_alignment_problem.py +++ b/tests/problems/space/test_alignment_problem.py @@ -6,7 +6,6 @@ import numpy as np import pandas as pd import scipy.sparse as sp -from ott.geometry import epsilon_scheduler import scanpy as sc from anndata import AnnData diff --git a/tests/problems/space/test_mapping_problem.py b/tests/problems/space/test_mapping_problem.py index 7d6520293..63ffdb175 100644 --- a/tests/problems/space/test_mapping_problem.py +++ b/tests/problems/space/test_mapping_problem.py @@ -7,7 +7,6 @@ import numpy as np import pandas as pd import scipy.sparse as sp -from ott.geometry import epsilon_scheduler from ott.solvers.linear.sinkhorn import SinkhornOutput from ott.solvers.quadratic.gromov_wasserstein import GWOutput diff --git a/tests/problems/spatio_temporal/test_spatio_temporal_problem.py b/tests/problems/spatio_temporal/test_spatio_temporal_problem.py index 3632d76b7..4dd31fa56 100644 --- a/tests/problems/spatio_temporal/test_spatio_temporal_problem.py +++ b/tests/problems/spatio_temporal/test_spatio_temporal_problem.py @@ -4,7 +4,6 @@ import numpy as np import pandas as pd -from ott.geometry import epsilon_scheduler from anndata import AnnData diff --git a/tests/problems/time/test_temporal_problem.py b/tests/problems/time/test_temporal_problem.py index d3780a8ec..c5ec8e08a 100644 --- a/tests/problems/time/test_temporal_problem.py +++ b/tests/problems/time/test_temporal_problem.py @@ -6,7 +6,7 @@ import numpy as np import pandas as pd import scipy.sparse as sp -from ott.geometry import costs, epsilon_scheduler +from ott.geometry import costs from scipy.sparse import csr_matrix import scanpy as sc From f0d48095f404d1fed022505bf3cb7f6558fba58c Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Tue, 10 Dec 2024 15:45:45 +0100 Subject: [PATCH 35/68] remove unused lse_mode --- tests/problems/base/test_general_problem.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/problems/base/test_general_problem.py b/tests/problems/base/test_general_problem.py index 869b0ea7f..dc05b09b9 100644 --- a/tests/problems/base/test_general_problem.py +++ b/tests/problems/base/test_general_problem.py @@ -288,7 +288,7 @@ def test_set_graph_x_y(self, adata_x: AnnData, adata_y: AnnData, ts: Tuple[Optio assert ta2.tag == Tag.GRAPH assert ta2.cost == "geodesic" - prob1 = prob1.solve(lse_mode=False, epsilon=10.0) + prob1 = prob1.solve(epsilon=10.0) prob2 = OTProblem(adata_x, adata_y) prob2 = prob2.prepare( From f7c5d0238142c8685f7fbd0ed9504dc543f96b11 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Tue, 10 Dec 2024 15:46:36 +0100 Subject: [PATCH 36/68] remove unused arg again --- tests/problems/base/test_general_problem.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/problems/base/test_general_problem.py b/tests/problems/base/test_general_problem.py index dc05b09b9..094eb61e6 100644 --- a/tests/problems/base/test_general_problem.py +++ b/tests/problems/base/test_general_problem.py @@ -313,7 +313,7 @@ def test_set_graph_x_y(self, adata_x: AnnData, adata_y: AnnData, ts: Tuple[Optio assert ta2.tag == Tag.GRAPH assert ta2.cost == "geodesic" - prob2 = prob2.solve(lse_mode=False, epsilon=10.0) + prob2 = prob2.solve(epsilon=10.0) assert not np.allclose(prob1.solution._output.geom.cost_matrix, prob2.solution._output.geom.cost_matrix) From fec5b0f8377baa42417a0a2da66f18f987e0d7af Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Tue, 10 Dec 2024 15:52:55 +0100 Subject: [PATCH 37/68] ignore return of _get_data --- src/moscot/problems/time/_mixins.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/moscot/problems/time/_mixins.py b/src/moscot/problems/time/_mixins.py index bc650345d..dee020f35 100644 --- a/src/moscot/problems/time/_mixins.py +++ b/src/moscot/problems/time/_mixins.py @@ -545,7 +545,7 @@ def _get_data( intermediate_data.astype(np.float64) if intermediate_data is not None else None, intermediate_adata, target_data.astype(np.float64) if target_data is not None else None, - ) + ) # type: ignore[return-value] def compute_interpolated_distance( self, From b1ef471d3cc6cedef22705fe0f1857a1fcff973c Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Tue, 10 Dec 2024 16:48:53 +0100 Subject: [PATCH 38/68] remove lse_mode --- tests/problems/space/test_mapping_problem.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/problems/space/test_mapping_problem.py b/tests/problems/space/test_mapping_problem.py index 63ffdb175..912071efe 100644 --- a/tests/problems/space/test_mapping_problem.py +++ b/tests/problems/space/test_mapping_problem.py @@ -189,7 +189,7 @@ def test_geodesic_cost_xy(self, adata_mapping: AnnData, key: str, geodesic_y: bo if geodesic_y: mp[("1", "ref")].set_graph_y(df_y, cost="geodesic") mp[("2", "ref")].set_graph_y(df_y, cost="geodesic") - mp = mp.solve(max_iterations=2, lse_mode=False) + mp = mp.solve(max_iterations=2) ta = mp[("1", "ref")].xy assert isinstance(ta, TaggedArray) From 9ccdfea93b3729b5501fbbb26018f691697c7b58 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Tue, 10 Dec 2024 16:49:07 +0100 Subject: [PATCH 39/68] remove lse mode --- tests/problems/space/test_alignment_problem.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tests/problems/space/test_alignment_problem.py b/tests/problems/space/test_alignment_problem.py index b3e21cee7..45382c2dd 100644 --- a/tests/problems/space/test_alignment_problem.py +++ b/tests/problems/space/test_alignment_problem.py @@ -24,7 +24,7 @@ pointcloud_args, quad_prob_args, ) - +from tests._utils import create_lr_initializer # TODO(giovp): refactor as fixture SOLUTIONS_PATH = Path("./tests/data/alignment_solutions.pkl") # base is moscot @@ -95,6 +95,7 @@ def test_solve_balanced( should_raise: bool, ): kwargs = {} + initializer = create_lr_initializer(initializer, rank=rank) if initializer is not None else None if rank > -1: kwargs["initializer"] = initializer if initializer == "random": @@ -169,7 +170,7 @@ def test_geodesic_cost_xy(self, adata_space_rotate: AnnData, key: str, dense_inp ap[("0", "1")].set_graph_xy(dfs[0], cost="geodesic") ap[("1", "2")].set_graph_xy(dfs[1], cost="geodesic") - ap = ap.solve(max_iterations=2, lse_mode=False) + ap = ap.solve(max_iterations=2) ta = ap[("0", "1")].xy assert isinstance(ta, TaggedArray) @@ -197,7 +198,8 @@ def test_pass_arguments(self, adata_space_rotate: AnnData, args_to_check: Mappin args = gw_solver_args if args_to_check["rank"] == -1 else gw_lr_solver_args for arg, val in args.items(): assert hasattr(solver, val) - assert getattr(solver, val) == args_to_check[arg] + if arg != "initializer": + assert getattr(solver, val) == args_to_check[arg] sinkhorn_solver = solver.linear_solver if args_to_check["rank"] == -1 else solver lin_solver_args = gw_linear_solver_args if args_to_check["rank"] == -1 else gw_lr_linear_solver_args From 6998fe4b592072ae9a2f443b56ae4751286d5f96 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Tue, 10 Dec 2024 16:55:06 +0100 Subject: [PATCH 40/68] fix kwargs init --- tests/problems/conftest.py | 5 +++-- tests/problems/time/test_temporal_problem.py | 7 ++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/tests/problems/conftest.py b/tests/problems/conftest.py index 2ab509125..05d4e2898 100644 --- a/tests/problems/conftest.py +++ b/tests/problems/conftest.py @@ -3,6 +3,7 @@ import numpy as np import pandas as pd from ott.initializers.linear import initializers_lr as lr_init_lib +from ott.initializers.linear import initializers as init_lib from sklearn.metrics import pairwise_distances import anndata as ad @@ -98,7 +99,7 @@ def marginal_keys(request): "tau_b": 0.8, "rank": -1, "batch_size": 125, - "initializer": "gaussian", + "initializer": init_lib.GaussianInitializer(), "initializer_kwargs": {}, "jit": True, "threshold": 3e-3, @@ -244,7 +245,7 @@ def marginal_keys(request): "min_iterations": "min_iterations", "max_iterations": "max_iterations", "initializer": "initializer", - "initializer_kwargs": "kwargs_init", + "initializer_kwargs": "initializer_kwargs", } lr_sinkhorn_solver_args = sinkhorn_solver_args.copy() diff --git a/tests/problems/time/test_temporal_problem.py b/tests/problems/time/test_temporal_problem.py index c5ec8e08a..89519beb8 100644 --- a/tests/problems/time/test_temporal_problem.py +++ b/tests/problems/time/test_temporal_problem.py @@ -440,9 +440,10 @@ def test_pass_arguments(self, adata_time: AnnData, args_to_check: Mapping[str, A solver = problem[key].solver.solver args = sinkhorn_solver_args if args_to_check["rank"] == -1 else lr_sinkhorn_solver_args for arg, val in args.items(): - assert hasattr(solver, val) - el = getattr(solver, val)[0] if isinstance(getattr(solver, val), tuple) else getattr(solver, val) - assert el == args_to_check[arg] + if val != "initializer_kwargs": + assert hasattr(solver, val) + el = getattr(solver, val)[0] if isinstance(getattr(solver, val), tuple) else getattr(solver, val) + assert el == args_to_check[arg] lin_prob = problem[key]._solver._problem for arg, val in lin_prob_args.items(): From 39e6c03a480ff2fc14783b150784271337f30ac1 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 10 Dec 2024 15:55:37 +0000 Subject: [PATCH 41/68] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- tests/problems/conftest.py | 2 +- tests/problems/space/test_alignment_problem.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/problems/conftest.py b/tests/problems/conftest.py index 05d4e2898..e7b76f3bd 100644 --- a/tests/problems/conftest.py +++ b/tests/problems/conftest.py @@ -2,8 +2,8 @@ import numpy as np import pandas as pd -from ott.initializers.linear import initializers_lr as lr_init_lib from ott.initializers.linear import initializers as init_lib +from ott.initializers.linear import initializers_lr as lr_init_lib from sklearn.metrics import pairwise_distances import anndata as ad diff --git a/tests/problems/space/test_alignment_problem.py b/tests/problems/space/test_alignment_problem.py index 45382c2dd..100d1bbe9 100644 --- a/tests/problems/space/test_alignment_problem.py +++ b/tests/problems/space/test_alignment_problem.py @@ -13,6 +13,7 @@ from moscot.backends.ott._utils import alpha_to_fused_penalty from moscot.problems.space import AlignmentProblem from moscot.utils.tagged_array import Tag, TaggedArray +from tests._utils import create_lr_initializer from tests.problems.conftest import ( fgw_args_1, fgw_args_2, @@ -24,7 +25,7 @@ pointcloud_args, quad_prob_args, ) -from tests._utils import create_lr_initializer + # TODO(giovp): refactor as fixture SOLUTIONS_PATH = Path("./tests/data/alignment_solutions.pkl") # base is moscot From 3fd0facdb3560d35f667b97705af8266cb9ee8f3 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Tue, 10 Dec 2024 17:00:46 +0100 Subject: [PATCH 42/68] fix initializer_kwargs test --- tests/problems/generic/test_sinkhorn_problem.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/problems/generic/test_sinkhorn_problem.py b/tests/problems/generic/test_sinkhorn_problem.py index ef7c56f60..542ffbae3 100644 --- a/tests/problems/generic/test_sinkhorn_problem.py +++ b/tests/problems/generic/test_sinkhorn_problem.py @@ -160,9 +160,10 @@ def test_pass_arguments(self, adata_time: AnnData, args_to_check: Mapping[str, A solver = problem[(0, 1)].solver.solver args = sinkhorn_solver_args if args_to_check["rank"] == -1 else lr_sinkhorn_solver_args for arg, val in args.items(): - assert hasattr(solver, val), val - el = getattr(solver, val)[0] if isinstance(getattr(solver, val), tuple) else getattr(solver, val) - assert el == args_to_check[arg], arg + if val != "initializer_kwargs": + assert hasattr(solver, val), val + el = getattr(solver, val)[0] if isinstance(getattr(solver, val), tuple) else getattr(solver, val) + assert el == args_to_check[arg], arg lin_prob = problem[(0, 1)]._solver._problem for arg, val in lin_prob_args.items(): From e22318e852fd6e824cb10c2574280e983784395c Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Tue, 10 Dec 2024 17:17:13 +0100 Subject: [PATCH 43/68] update solution files --- tests/data/alignment_solutions.pkl | Bin 168672 -> 168085 bytes tests/data/mapping_solutions.pkl | Bin 168674 -> 168087 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/data/alignment_solutions.pkl b/tests/data/alignment_solutions.pkl index 6e8f2be8be2fc4417815ede0eb48831939008956..145468eddb72e8fa59b3c0b1352d8f2f4f458f04 100644 GIT binary patch literal 168085 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

o0$_T`=^wYE5 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 diff --git a/tests/data/mapping_solutions.pkl b/tests/data/mapping_solutions.pkl index b9a2a05f1ee25a9370b4bede2269c8169890b46a..63a4d0f29f27d5d816d187b622b8c6819d34abe3 100644 GIT binary patch literal 168087 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

EEM188{faP$zgIH* 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

}FS1|O~OTpA!@Dnfl-k^GV&DzhHw}0~3AejMu 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

CxS%_5xm&7z6O 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ð-1q`JoxDvnnL3^%>fPOWdn02JLeT@bpU_{9;~0XLczX zWc{d;diC$Rd?@JZvSqf^Y-hFkX^S^zZmU5AeVw_hbAfOlI?!m2)TJ@yaFTgK>XUl(>)wia#>#Rg*W;_u514dGo#PIhuxs-t z)Q-{Rf);J=IwCed-tZc9-Wo+*uG1ZTMDG+n>bI?Z97q z+i+cHV`eMc@r{|}5%<#ImBnT}|EeSBEtE{IJ*FHY=i$inHtg}f8_lli(*Iy*u64HN z!o#}EmAc7!iUp0PS+P#52N##x@u{3^gAzJ$vt(Y!3^iiv-wsTX@3HQQ9mCvBIQU*6 ze54N%cg3AK>4xmp$C@s}C-*lo;Q(zr#>vm4ZDPO?iwrnePl^3SudB7+ki|oFL_6D! zHES*SB1eM;QbRUZo3Lhs8M6cQ*$^UJu^3y972n+uYeRneS@Mc!+VdxWOU{8QL&lqP z@NR3~Jgv*e_2%4KuE&Zomi+xE`8Ov^>d5CiJ+M1}Sfwxh3LRFv^`iGJd+Jte^425^ z{&>=o^Mp`*=ET z_m*txk+k~Y!uK9-d~kCbqj!$r;#Xssr!tcY_Os}@UdO!|SPtLJmq!6|H*GM;|#Cv(iq2|PJ) zJnb)fabn$MzHk^%N-nodu^RGAPK0`%Zc?@YZ1;u9rilxyWZ1xgRg)0Er=&Hk84lh)a=Un*jC$Ugj Kev{`|?fhTfdbZyH From d5b31b732092ad217f653882d8185c0060ac540b Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Tue, 10 Dec 2024 17:19:16 +0100 Subject: [PATCH 44/68] fix test --- tests/problems/spatio_temporal/test_spatio_temporal_problem.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/problems/spatio_temporal/test_spatio_temporal_problem.py b/tests/problems/spatio_temporal/test_spatio_temporal_problem.py index 4dd31fa56..49773d3d9 100644 --- a/tests/problems/spatio_temporal/test_spatio_temporal_problem.py +++ b/tests/problems/spatio_temporal/test_spatio_temporal_problem.py @@ -197,7 +197,8 @@ def test_pass_arguments(self, adata_spatio_temporal: AnnData, args_to_check: Map args = gw_solver_args if args_to_check["rank"] == -1 else gw_lr_solver_args for arg, val in args.items(): assert hasattr(solver, val) - assert getattr(solver, val) == args_to_check[arg], arg + if arg != "initializer": + assert getattr(solver, val) == args_to_check[arg], arg sinkhorn_solver = solver.linear_solver if args_to_check["rank"] == -1 else solver lin_solver_args = gw_linear_solver_args if args_to_check["rank"] == -1 else gw_lr_linear_solver_args From 11aa435028ee42f22f5eb7e0012f601a9e527fe6 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Tue, 10 Dec 2024 17:28:09 +0100 Subject: [PATCH 45/68] fix docs --- docs/conf.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/conf.py b/docs/conf.py index 6ac6bff5e..7806d7038 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -72,6 +72,9 @@ ("py:class", "None. Update D from dict/iterable E and F."), ("py:class", "an object providing a view on D's values"), ("py:class", "a shallow copy of D"), + # ignore these classes until ott-jax adds them to their docs + ("py:class", "ott.initializers.quadratic.initializers.BaseQuadraticInitializer"), + ("py:class", "ott.initializers.linear.initializers.SinkhornInitializer"), ] # TODO(michalk8): remove once typing has been cleaned-up nitpick_ignore_regex = [ From 64ab534c2dd9dc905e8ac5a6cb4cbdcc752afd72 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Tue, 10 Dec 2024 17:58:48 +0100 Subject: [PATCH 46/68] make alpha mandatory --- src/moscot/backends/ott/solver.py | 2 +- tests/backends/ott/test_backend.py | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/moscot/backends/ott/solver.py b/src/moscot/backends/ott/solver.py index 6d8468270..2d3c52b3e 100644 --- a/src/moscot/backends/ott/solver.py +++ b/src/moscot/backends/ott/solver.py @@ -418,6 +418,7 @@ def _prepare( self, a: jnp.ndarray, b: jnp.ndarray, + alpha: float, xy: Optional[TaggedArray] = None, x: Optional[TaggedArray] = None, y: Optional[TaggedArray] = None, @@ -430,7 +431,6 @@ def _prepare( cost_matrix_rank: Optional[int] = None, time_scales_heat_kernel: Optional[TimeScalesHeatKernel] = None, # problem - alpha: Optional[float] = None, **kwargs: Any, ) -> quadratic_problem.QuadraticProblem: self._a = a diff --git a/tests/backends/ott/test_backend.py b/tests/backends/ott/test_backend.py index f90696939..e14e4c687 100644 --- a/tests/backends/ott/test_backend.py +++ b/tests/backends/ott/test_backend.py @@ -116,6 +116,7 @@ def test_matches_ott(self, x: Geom_t, y: Geom_t, eps: Optional[float], jit: bool x=x, y=y, tags={"x": "point_cloud", "y": "point_cloud"}, + alpha=1.0, ) assert solver.is_fused is False @@ -141,6 +142,7 @@ def test_epsilon(self, x_cost: jnp.ndarray, y_cost: jnp.ndarray, eps: Optional[f x=x_cost, y=y_cost, tags={"x": Tag.COST_MATRIX, "y": Tag.COST_MATRIX}, + alpha=1.0, ) assert solver.is_fused is False @@ -171,6 +173,7 @@ def test_solver_rank(self, x: Geom_t, y: Geom_t, rank: int) -> None: x=x, y=y, tags={"x": "point_cloud", "y": "point_cloud"}, + alpha=1.0, ) assert solver.is_fused is False @@ -347,8 +350,8 @@ def test_pull( b, ndim = (b, b.shape[1]) if batched else (b[:, 0], None) xx, yy = xy solver = solver_t() - - out = solver(a=jnp.ones(len(x)) / len(x), b=jnp.ones(len(y)) / len(y), x=x, y=y, xy=(xx, yy)) + additional_kwargs = {"alpha": 1.0} if xy is not None else {} + out = solver(a=jnp.ones(len(x)) / len(x), b=jnp.ones(len(y)) / len(y), x=x, y=y, xy=(xx, yy), **additional_kwargs) p = out.pull(b, scale_by_marginals=False) assert isinstance(out, BaseDiscreteSolverOutput) @@ -389,11 +392,11 @@ def test_to_device(self, x: Geom_t, device: Optional[Device_t]) -> None: class TestOutputPlotting(PlotTester, metaclass=PlotTesterMeta): def test_plot_costs(self, x: Geom_t, y: Geom_t): - out = GWSolver()(a=jnp.ones(len(x)) / len(x), b=jnp.ones(len(y)) / len(y), x=x, y=y) + out = GWSolver()(a=jnp.ones(len(x)) / len(x), b=jnp.ones(len(y)) / len(y), x=x, y=y, alpha=1.0) out.plot_costs() def test_plot_costs_last(self, x: Geom_t, y: Geom_t): - out = GWSolver(rank=2)(a=jnp.ones(len(x)) / len(x), b=jnp.ones(len(y)) / len(y), x=x, y=y) + out = GWSolver(rank=2)(a=jnp.ones(len(x)) / len(x), b=jnp.ones(len(y)) / len(y), x=x, y=y, alpha=1.0) out.plot_costs(last=3) def test_plot_errors_sink(self, x: Geom_t, y: Geom_t): @@ -401,5 +404,5 @@ def test_plot_errors_sink(self, x: Geom_t, y: Geom_t): out.plot_errors() def test_plot_errors_gw(self, x: Geom_t, y: Geom_t): - out = GWSolver(store_inner_errors=True)(a=jnp.ones(len(x)) / len(x), b=jnp.ones(len(y)) / len(y), x=x, y=y) + out = GWSolver(store_inner_errors=True)(a=jnp.ones(len(x)) / len(x), b=jnp.ones(len(y)) / len(y), x=x, y=y, alpha=1.0) out.plot_errors() From f6f7cfb400e0c6c29f6c14de1b9550f8296da855 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Tue, 10 Dec 2024 17:59:32 +0100 Subject: [PATCH 47/68] fix test --- tests/backends/ott/test_backend.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/backends/ott/test_backend.py b/tests/backends/ott/test_backend.py index e14e4c687..312879755 100644 --- a/tests/backends/ott/test_backend.py +++ b/tests/backends/ott/test_backend.py @@ -350,7 +350,7 @@ def test_pull( b, ndim = (b, b.shape[1]) if batched else (b[:, 0], None) xx, yy = xy solver = solver_t() - additional_kwargs = {"alpha": 1.0} if xy is not None else {} + additional_kwargs = {"alpha": 1.0} if xy is None else {} out = solver(a=jnp.ones(len(x)) / len(x), b=jnp.ones(len(y)) / len(y), x=x, y=y, xy=(xx, yy), **additional_kwargs) p = out.pull(b, scale_by_marginals=False) From 97846e24007da3060cdd6c0b4a3dfcad9cd8beb3 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 10 Dec 2024 17:00:20 +0000 Subject: [PATCH 48/68] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- tests/backends/ott/test_backend.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/backends/ott/test_backend.py b/tests/backends/ott/test_backend.py index 312879755..b268bdb3b 100644 --- a/tests/backends/ott/test_backend.py +++ b/tests/backends/ott/test_backend.py @@ -351,7 +351,9 @@ def test_pull( xx, yy = xy solver = solver_t() additional_kwargs = {"alpha": 1.0} if xy is None else {} - out = solver(a=jnp.ones(len(x)) / len(x), b=jnp.ones(len(y)) / len(y), x=x, y=y, xy=(xx, yy), **additional_kwargs) + out = solver( + a=jnp.ones(len(x)) / len(x), b=jnp.ones(len(y)) / len(y), x=x, y=y, xy=(xx, yy), **additional_kwargs + ) p = out.pull(b, scale_by_marginals=False) assert isinstance(out, BaseDiscreteSolverOutput) @@ -404,5 +406,7 @@ def test_plot_errors_sink(self, x: Geom_t, y: Geom_t): out.plot_errors() def test_plot_errors_gw(self, x: Geom_t, y: Geom_t): - out = GWSolver(store_inner_errors=True)(a=jnp.ones(len(x)) / len(x), b=jnp.ones(len(y)) / len(y), x=x, y=y, alpha=1.0) + out = GWSolver(store_inner_errors=True)( + a=jnp.ones(len(x)) / len(x), b=jnp.ones(len(y)) / len(y), x=x, y=y, alpha=1.0 + ) out.plot_errors() From f15c4e345bac84b9ab575f837d78d3f0804efb0d Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Tue, 10 Dec 2024 18:10:39 +0100 Subject: [PATCH 49/68] fix test --- tests/backends/ott/test_backend.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/tests/backends/ott/test_backend.py b/tests/backends/ott/test_backend.py index b268bdb3b..9a0a04108 100644 --- a/tests/backends/ott/test_backend.py +++ b/tests/backends/ott/test_backend.py @@ -350,10 +350,7 @@ def test_pull( b, ndim = (b, b.shape[1]) if batched else (b[:, 0], None) xx, yy = xy solver = solver_t() - additional_kwargs = {"alpha": 1.0} if xy is None else {} - out = solver( - a=jnp.ones(len(x)) / len(x), b=jnp.ones(len(y)) / len(y), x=x, y=y, xy=(xx, yy), **additional_kwargs - ) + out = solver(a=jnp.ones(len(x)) / len(x), b=jnp.ones(len(y)) / len(y), x=x, y=y, xy=(xx, yy), alpha=0.5) p = out.pull(b, scale_by_marginals=False) assert isinstance(out, BaseDiscreteSolverOutput) From e13665e62017847cf9aec09dd2d235a323cbdc4d Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Tue, 10 Dec 2024 18:32:31 +0100 Subject: [PATCH 50/68] fix alpha tests --- src/moscot/backends/ott/solver.py | 2 -- tests/problems/base/test_general_problem.py | 4 ++-- tests/problems/time/test_temporal_base_problem.py | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/moscot/backends/ott/solver.py b/src/moscot/backends/ott/solver.py index 2d3c52b3e..c9ff29ba1 100644 --- a/src/moscot/backends/ott/solver.py +++ b/src/moscot/backends/ott/solver.py @@ -451,8 +451,6 @@ def _prepare( geom_kwargs["cost_matrix_rank"] = cost_matrix_rank geom_xx = self._create_geometry(x, t=time_scales_heat_kernel.x, is_linear_term=False, **geom_kwargs) geom_yy = self._create_geometry(y, t=time_scales_heat_kernel.y, is_linear_term=False, **geom_kwargs) - if alpha is None: - alpha = 1.0 if xy is None else 0.5 # set defaults according to the data provided if alpha <= 0.0: raise ValueError(f"Expected `alpha` to be in interval `(0, 1]`, found `{alpha}`.") if (alpha == 1.0 and xy is not None) or (alpha != 1.0 and xy is None): diff --git a/tests/problems/base/test_general_problem.py b/tests/problems/base/test_general_problem.py index 094eb61e6..7cd907ba1 100644 --- a/tests/problems/base/test_general_problem.py +++ b/tests/problems/base/test_general_problem.py @@ -288,7 +288,7 @@ def test_set_graph_x_y(self, adata_x: AnnData, adata_y: AnnData, ts: Tuple[Optio assert ta2.tag == Tag.GRAPH assert ta2.cost == "geodesic" - prob1 = prob1.solve(epsilon=10.0) + prob1 = prob1.solve(epsilon=10.0, alpha=1.0) prob2 = OTProblem(adata_x, adata_y) prob2 = prob2.prepare( @@ -313,7 +313,7 @@ def test_set_graph_x_y(self, adata_x: AnnData, adata_y: AnnData, ts: Tuple[Optio assert ta2.tag == Tag.GRAPH assert ta2.cost == "geodesic" - prob2 = prob2.solve(epsilon=10.0) + prob2 = prob2.solve(epsilon=10.0, alpha=1.0) assert not np.allclose(prob1.solution._output.geom.cost_matrix, prob2.solution._output.geom.cost_matrix) diff --git a/tests/problems/time/test_temporal_base_problem.py b/tests/problems/time/test_temporal_base_problem.py index abdfe0f90..a52669c54 100644 --- a/tests/problems/time/test_temporal_base_problem.py +++ b/tests/problems/time/test_temporal_base_problem.py @@ -111,7 +111,7 @@ def test_posterior_growth_rates(self, adata_time_marginal_estimations: AnnData): b=True, marginal_kwargs={"proliferation_key": "proliferation"}, ) - prob = prob.solve(max_iterations=10) + prob = prob.solve(max_iterations=10, alpha=1.0) assert prob.delta == (t2 - t1) gr = prob.posterior_growth_rates From ddfb89ce6812d8adfa048a56c924c74839703cc4 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Tue, 10 Dec 2024 18:40:40 +0100 Subject: [PATCH 51/68] remove the skip --- tests/problems/space/test_mapping_problem.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/problems/space/test_mapping_problem.py b/tests/problems/space/test_mapping_problem.py index 912071efe..0482c5922 100644 --- a/tests/problems/space/test_mapping_problem.py +++ b/tests/problems/space/test_mapping_problem.py @@ -17,7 +17,7 @@ from moscot.backends.ott._utils import alpha_to_fused_penalty from moscot.problems.space import MappingProblem from moscot.utils.tagged_array import Tag, TaggedArray -from tests._utils import _adata_spatial_split +from tests._utils import _adata_spatial_split, create_lr_initializer from tests.problems.conftest import ( fgw_args_1, fgw_args_2, @@ -96,7 +96,6 @@ def test_prepare_varnames(self, adata_mapping: AnnData, var_names: Optional[List assert prob.x.data_src.shape == (n_obs, x_n_var) assert prob.y.data_src.shape == (n_obs, y_n_var) - @pytest.mark.skip(reason="See https://github.com/theislab/moscot/issues/678") @pytest.mark.parametrize( ("epsilon", "alpha", "rank", "initializer"), [(1e-2, 0.9, -1, None), (2, 0.5, 10, "random"), (2, 0.5, 10, "rank2"), (2, 0.1, -1, None)], @@ -115,6 +114,7 @@ def test_solve_balanced( ): adataref, adatasp = _adata_spatial_split(adata_mapping) kwargs = {} + initializer = create_lr_initializer(initializer, rank) if initializer is not None else None if rank > -1: kwargs["initializer"] = initializer if initializer == "random": From ff13556ad940f40c655500971b3263ebe1a83f57 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Tue, 10 Dec 2024 18:46:52 +0100 Subject: [PATCH 52/68] upgrade version --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 788aec3d6..af308d131 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -54,7 +54,7 @@ dependencies = [ "scanpy>=1.9.3", "wrapt>=1.13.2", "docrep>=0.3.2", - "ott-jax[neural]>=0.4.8", + "ott-jax[neural]>=0.5.0", "cloudpickle>=2.2.0", "rich>=13.5", "docstring_inheritance>=2.0.0", From 0f28ec024ede4e9dd0bcae262786b4863edd28cf Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Tue, 10 Dec 2024 18:47:21 +0100 Subject: [PATCH 53/68] remove skips since we removed python 3.9 support --- tests/problems/time/test_mixins.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/tests/problems/time/test_mixins.py b/tests/problems/time/test_mixins.py index bc116a704..ddc85fb09 100644 --- a/tests/problems/time/test_mixins.py +++ b/tests/problems/time/test_mixins.py @@ -236,7 +236,6 @@ def test_compute_interpolated_distance_pipeline(self, gt_temporal_adata: AnnData assert isinstance(interpolation_result, float) assert interpolation_result > 0 - @pytest.mark.skipif(sys.version_info < (3, 9), reason="requires python3.9 or higher") def test_compute_interpolated_distance_regression(self, gt_temporal_adata: AnnData): config = gt_temporal_adata.uns key = config["key"] @@ -264,7 +263,6 @@ def test_compute_interpolated_distance_regression(self, gt_temporal_adata: AnnDa interpolation_result, gt_temporal_adata.uns["interpolated_distance_10_105_11"], rtol=1e-6, atol=1e-6 ) - @pytest.mark.skipif(sys.version_info < (3, 9), reason="requires python3.9 or higher") def test_compute_time_point_distances_regression(self, gt_temporal_adata: AnnData): config = gt_temporal_adata.uns key = config["key"] @@ -316,7 +314,6 @@ def test_compute_batch_distances_regression(self, gt_temporal_adata: AnnData): assert isinstance(result, float) np.testing.assert_allclose(result, gt_temporal_adata.uns["batch_distances_10"], rtol=1e-5) - @pytest.mark.skipif(sys.version_info < (3, 9), reason="requires python3.9 or higher") def test_compute_random_distance_regression(self, gt_temporal_adata: AnnData): config = gt_temporal_adata.uns key = config["key"] From ef50b554a0a2de74f697574b123b5a25032f3f21 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 10 Dec 2024 17:47:51 +0000 Subject: [PATCH 54/68] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- tests/problems/time/test_mixins.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/problems/time/test_mixins.py b/tests/problems/time/test_mixins.py index ddc85fb09..f062adefa 100644 --- a/tests/problems/time/test_mixins.py +++ b/tests/problems/time/test_mixins.py @@ -1,4 +1,3 @@ -import sys from typing import Tuple import pytest From 45509e01a8d929991ea99cf3a64799cb323377e4 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Tue, 10 Dec 2024 20:13:09 +0100 Subject: [PATCH 55/68] refactor the gwproblem and fgwproblem inheritance --- src/moscot/problems/generic/_generic.py | 156 ++++++++++-------------- 1 file changed, 64 insertions(+), 92 deletions(-) diff --git a/src/moscot/problems/generic/_generic.py b/src/moscot/problems/generic/_generic.py index fcd3d8b2e..9a819671a 100644 --- a/src/moscot/problems/generic/_generic.py +++ b/src/moscot/problems/generic/_generic.py @@ -264,8 +264,8 @@ def _valid_policies(self) -> Tuple[Policy_t, ...]: return _constants.SEQUENTIAL, _constants.EXPLICIT, _constants.STAR # type: ignore[return-value] -class GWProblem(GenericAnalysisMixin[K, B], CompoundProblem[K, B]): # type: ignore[misc] - """Class for solving the :term:`GW ` or :term:`FGW ` problems. +class FGWProblem(GenericAnalysisMixin[K, B], CompoundProblem[K, B]): # type: ignore[misc] + """Class for solving the :term:`FGW ` problem. Parameters ---------- @@ -281,6 +281,7 @@ def __init__(self, adata: AnnData, **kwargs: Any): def prepare( self, key: str, + joint_attr: Optional[Union[str, Mapping[str, Any]]] = None, x_attr: Optional[Union[str, Mapping[str, Any]]] = None, y_attr: Optional[Union[str, Mapping[str, Any]]] = None, policy: Literal["sequential", "explicit", "star"] = "sequential", @@ -288,13 +289,15 @@ def prepare( cost_kwargs: CostKwargs_t = types.MappingProxyType({}), a: Optional[Union[bool, str]] = None, b: Optional[Union[bool, str]] = None, - subset: Optional[Sequence[Tuple[K, K]]] = None, - reference: Optional[Any] = None, + xy_callback: Optional[Union[Literal["local-pca"], Callback_t]] = None, x_callback: Optional[Union[Literal["local-pca"], Callback_t]] = None, y_callback: Optional[Union[Literal["local-pca"], Callback_t]] = None, + xy_callback_kwargs: Mapping[str, Any] = types.MappingProxyType({}), x_callback_kwargs: Mapping[str, Any] = types.MappingProxyType({}), y_callback_kwargs: Mapping[str, Any] = types.MappingProxyType({}), - ) -> "GWProblem[K, B]": + subset: Optional[Sequence[Tuple[K, K]]] = None, + reference: Optional[Any] = None, + ) -> "FGWProblem[K, B]": """Prepare the individual :term:`quadratic subproblems `. .. seealso:: @@ -304,6 +307,16 @@ def prepare( ---------- key Key in :attr:`~anndata.AnnData.obs` for the :class:`~moscot.utils.subset_policy.SubsetPolicy`. + joint_attr + How to get the data for the :term:`linear term` in the :term:`fused ` case: + + - :obj:`None` - run `PCA `_ + on :attr:`~anndata.AnnData.X` is computed. + - :class:`str` - a key in :attr:`~anndata.AnnData.obsm` where the data is stored. + - :class:`dict` - it should contain ``'attr'`` and ``'key'``, the attribute and the key + in :class:`~anndata.AnnData`, and optionally ``'tag'``, one of :class:`~moscot.utils.tagged_array.Tag`. + + By default, :attr:`tag = 'point_cloud' ` is used. x_attr How to get the data for the source :term:`quadratic term`: @@ -355,6 +368,18 @@ def prepare( :meth:`estimate the marginals `, otherwise use uniform marginals. - :obj:`None` - uniform marginals. + xy_callback + Callback function used to prepare the data in the :term:`linear term`. + x_callback + Callback function used to prepare the data in the source :term:`quadratic term`. + y_callback + Callback function used to prepare the data in the target :term:`quadratic term`. + xy_callback_kwargs + Keyword arguments for the ``xy_callback``. + x_callback_kwargs + Keyword arguments for the ``x_callback``. + y_callback_kwargs + Keyword arguments for the ``y_callback``. Returns ------- @@ -369,15 +394,16 @@ def prepare( self.batch_key = key x = set_quad_defaults(x_attr) if x_callback is None else {} y = set_quad_defaults(y_attr) if y_callback is None else {} - + xy, xy_callback, xy_callback_kwargs = handle_joint_attr(joint_attr, xy_callback, xy_callback_kwargs) xy, x, y = handle_cost( - xy={}, + xy=xy, x=x, y=y, cost=cost, - cost_kwargs=cost_kwargs, x_callback=x_callback, y_callback=y_callback, + xy_callback=xy_callback, + cost_kwargs=cost_kwargs, ) return super().prepare( # type: ignore[return-value] key=key, @@ -387,16 +413,19 @@ def prepare( policy=policy, a=a, b=b, + reference=reference, + subset=subset, x_callback=x_callback, y_callback=y_callback, + xy_callback=xy_callback, x_callback_kwargs=x_callback_kwargs, y_callback_kwargs=y_callback_kwargs, - subset=subset, - reference=reference, + xy_callback_kwargs=xy_callback_kwargs, ) def solve( self, + alpha: float = 0.5, epsilon: float = 1e-3, tau_a: float = 1.0, tau_b: float = 1.0, @@ -413,7 +442,7 @@ def solve( linear_solver_kwargs: Mapping[str, Any] = types.MappingProxyType({}), device: Optional[Literal["cpu", "gpu", "tpu"]] = None, **kwargs: Any, - ) -> "GWProblem[K,B]": + ) -> "FGWProblem[K,B]": r"""Solve the individual :term:`quadratic subproblems `. .. seealso: @@ -424,6 +453,10 @@ def solve( Parameters ---------- + alpha + Parameter in :math:`(0, 1)` that interpolates between the :term:`quadratic term` and + the :term:`linear term`. :math:`\alpha = 1` corresponds to the pure :term:`Gromov-Wasserstein` problem while + :math:`\alpha \to 0` corresponds to the pure :term:`linear problem`. epsilon :term:`Entropic regularization`. tau_a @@ -471,8 +504,10 @@ def solve( - :attr:`solutions` - the :term:`OT` solutions for each subproblem. - :attr:`stage` - set to ``'solved'``. """ - return super().solve( # type: ignore[return-value] - alpha=1.0, + if alpha == 1.0: + raise ValueError("The `FGWProblem` is equivalent to the `GWProblem` when `alpha=1.0`.") + return super().solve( + alpha=alpha, epsilon=epsilon, tau_a=tau_a, tau_b=tau_b, @@ -489,7 +524,7 @@ def solve( linear_solver_kwargs=linear_solver_kwargs, device=device, **kwargs, - ) + ) # type: ignore[return-value] @property def _base_problem_type(self) -> Type[B]: @@ -500,8 +535,8 @@ def _valid_policies(self) -> Tuple[Policy_t, ...]: return _constants.SEQUENTIAL, _constants.EXPLICIT, _constants.STAR # type: ignore[return-value] -class FGWProblem(GWProblem[K, B]): - """Class for solving the :term:`FGW ` problem. +class GWProblem(FGWProblem[K, B]): + """Class for solving the :term:`GW ` or :term:`FGW ` problems. Parameters ---------- @@ -514,7 +549,6 @@ class FGWProblem(GWProblem[K, B]): def prepare( self, key: str, - joint_attr: Optional[Union[str, Mapping[str, Any]]] = None, x_attr: Optional[Union[str, Mapping[str, Any]]] = None, y_attr: Optional[Union[str, Mapping[str, Any]]] = None, policy: Literal["sequential", "explicit", "star"] = "sequential", @@ -522,15 +556,13 @@ def prepare( cost_kwargs: CostKwargs_t = types.MappingProxyType({}), a: Optional[Union[bool, str]] = None, b: Optional[Union[bool, str]] = None, - xy_callback: Optional[Union[Literal["local-pca"], Callback_t]] = None, + subset: Optional[Sequence[Tuple[K, K]]] = None, + reference: Optional[Any] = None, x_callback: Optional[Union[Literal["local-pca"], Callback_t]] = None, y_callback: Optional[Union[Literal["local-pca"], Callback_t]] = None, - xy_callback_kwargs: Mapping[str, Any] = types.MappingProxyType({}), x_callback_kwargs: Mapping[str, Any] = types.MappingProxyType({}), y_callback_kwargs: Mapping[str, Any] = types.MappingProxyType({}), - subset: Optional[Sequence[Tuple[K, K]]] = None, - reference: Optional[Any] = None, - ) -> "FGWProblem[K, B]": + ) -> "GWProblem[K, B]": """Prepare the individual :term:`quadratic subproblems `. .. seealso:: @@ -540,16 +572,6 @@ def prepare( ---------- key Key in :attr:`~anndata.AnnData.obs` for the :class:`~moscot.utils.subset_policy.SubsetPolicy`. - joint_attr - How to get the data for the :term:`linear term` in the :term:`fused ` case: - - - :obj:`None` - run `PCA `_ - on :attr:`~anndata.AnnData.X` is computed. - - :class:`str` - a key in :attr:`~anndata.AnnData.obsm` where the data is stored. - - :class:`dict` - it should contain ``'attr'`` and ``'key'``, the attribute and the key - in :class:`~anndata.AnnData`, and optionally ``'tag'``, one of :class:`~moscot.utils.tagged_array.Tag`. - - By default, :attr:`tag = 'point_cloud' ` is used. x_attr How to get the data for the source :term:`quadratic term`: @@ -601,24 +623,6 @@ def prepare( :meth:`estimate the marginals `, otherwise use uniform marginals. - :obj:`None` - uniform marginals. - xy - Data for the :term:`linear term`. - x - Data for the source :term:`quadratic term`. - y - Data for the target :term:`quadratic term`. - xy_callback - Callback function used to prepare the data in the :term:`linear term`. - x_callback - Callback function used to prepare the data in the source :term:`quadratic term`. - y_callback - Callback function used to prepare the data in the target :term:`quadratic term`. - xy_callback_kwargs - Keyword arguments for the ``xy_callback``. - x_callback_kwargs - Keyword arguments for the ``x_callback``. - y_callback_kwargs - Keyword arguments for the ``y_callback``. Returns ------- @@ -630,42 +634,25 @@ def prepare( - :attr:`stage` - set to ``'prepared'``. - :attr:`problem_kind` - set to ``'quadratic'``. """ - self.batch_key = key - x = set_quad_defaults(x_attr) if x_callback is None else {} - y = set_quad_defaults(y_attr) if y_callback is None else {} - xy, xy_callback, xy_callback_kwargs = handle_joint_attr(joint_attr, xy_callback, xy_callback_kwargs) - xy, x, y = handle_cost( - xy=xy, - x=x, - y=y, - cost=cost, - x_callback=x_callback, - y_callback=y_callback, - xy_callback=xy_callback, - cost_kwargs=cost_kwargs, - ) - return CompoundProblem.prepare( - self, # type: ignore[return-value, arg-type] + return super().prepare( # type: ignore[return-value] key=key, - xy=xy, - x=x, - y=y, policy=policy, a=a, b=b, - reference=reference, - subset=subset, # type: ignore[arg-type] + x_attr=x_attr, + y_attr=y_attr, + cost=cost, + cost_kwargs=cost_kwargs, x_callback=x_callback, y_callback=y_callback, - xy_callback=xy_callback, x_callback_kwargs=x_callback_kwargs, y_callback_kwargs=y_callback_kwargs, - xy_callback_kwargs=xy_callback_kwargs, + subset=subset, + reference=reference, ) def solve( self, - alpha: float = 0.5, epsilon: float = 1e-3, tau_a: float = 1.0, tau_b: float = 1.0, @@ -682,7 +669,7 @@ def solve( linear_solver_kwargs: Mapping[str, Any] = types.MappingProxyType({}), device: Optional[Literal["cpu", "gpu", "tpu"]] = None, **kwargs: Any, - ) -> "FGWProblem[K,B]": + ) -> "GWProblem[K,B]": r"""Solve the individual :term:`quadratic subproblems `. .. seealso: @@ -693,10 +680,6 @@ def solve( Parameters ---------- - alpha - Parameter in :math:`(0, 1)` that interpolates between the :term:`quadratic term` and - the :term:`linear term`. :math:`\alpha = 1` corresponds to the pure :term:`Gromov-Wasserstein` problem while - :math:`\alpha \to 0` corresponds to the pure :term:`linear problem`. epsilon :term:`Entropic regularization`. tau_a @@ -744,11 +727,8 @@ def solve( - :attr:`solutions` - the :term:`OT` solutions for each subproblem. - :attr:`stage` - set to ``'solved'``. """ - if alpha == 1.0: - raise ValueError("The `FGWProblem` is equivalent to the `GWProblem` when `alpha=1.0`.") - return CompoundProblem.solve( - self, # type: ignore[return-value, arg-type] - alpha=alpha, + return super().solve( # type: ignore[return-value] + alpha=1.0, epsilon=epsilon, tau_a=tau_a, tau_b=tau_b, @@ -767,14 +747,6 @@ def solve( **kwargs, ) - @property - def _base_problem_type(self) -> Type[B]: - return OTProblem # type: ignore[return-value] - - @property - def _valid_policies(self) -> Tuple[Policy_t, ...]: - return _constants.SEQUENTIAL, _constants.EXPLICIT, _constants.STAR # type: ignore[return-value] - class GENOTLinProblem(CondOTProblem): """Class for solving Conditional Parameterized Monge Map problems / Conditional Neural OT problems.""" From 69703af219f9d8e718cae37b1141b513ace4c4c4 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Tue, 10 Dec 2024 20:52:55 +0100 Subject: [PATCH 56/68] Revert "[pre-commit.ci] auto fixes from pre-commit.com hooks" This reverts commit ef50b554a0a2de74f697574b123b5a25032f3f21. --- tests/problems/time/test_mixins.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/problems/time/test_mixins.py b/tests/problems/time/test_mixins.py index f062adefa..ddc85fb09 100644 --- a/tests/problems/time/test_mixins.py +++ b/tests/problems/time/test_mixins.py @@ -1,3 +1,4 @@ +import sys from typing import Tuple import pytest From 3766a049af66a2872b7ae9ba0685ebdd81f8ef5c Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 10 Dec 2024 19:55:21 +0000 Subject: [PATCH 57/68] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- tests/problems/time/test_mixins.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/problems/time/test_mixins.py b/tests/problems/time/test_mixins.py index ddc85fb09..f062adefa 100644 --- a/tests/problems/time/test_mixins.py +++ b/tests/problems/time/test_mixins.py @@ -1,4 +1,3 @@ -import sys from typing import Tuple import pytest From f06d4c6cd3e881fea366252e900449af0f645c27 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Tue, 10 Dec 2024 23:08:45 +0100 Subject: [PATCH 58/68] Revert "refactor the gwproblem and fgwproblem inheritance" This reverts commit 45509e01a8d929991ea99cf3a64799cb323377e4. --- src/moscot/problems/generic/_generic.py | 156 ++++++++++++++---------- 1 file changed, 92 insertions(+), 64 deletions(-) diff --git a/src/moscot/problems/generic/_generic.py b/src/moscot/problems/generic/_generic.py index 9a819671a..fcd3d8b2e 100644 --- a/src/moscot/problems/generic/_generic.py +++ b/src/moscot/problems/generic/_generic.py @@ -264,8 +264,8 @@ def _valid_policies(self) -> Tuple[Policy_t, ...]: return _constants.SEQUENTIAL, _constants.EXPLICIT, _constants.STAR # type: ignore[return-value] -class FGWProblem(GenericAnalysisMixin[K, B], CompoundProblem[K, B]): # type: ignore[misc] - """Class for solving the :term:`FGW ` problem. +class GWProblem(GenericAnalysisMixin[K, B], CompoundProblem[K, B]): # type: ignore[misc] + """Class for solving the :term:`GW ` or :term:`FGW ` problems. Parameters ---------- @@ -281,7 +281,6 @@ def __init__(self, adata: AnnData, **kwargs: Any): def prepare( self, key: str, - joint_attr: Optional[Union[str, Mapping[str, Any]]] = None, x_attr: Optional[Union[str, Mapping[str, Any]]] = None, y_attr: Optional[Union[str, Mapping[str, Any]]] = None, policy: Literal["sequential", "explicit", "star"] = "sequential", @@ -289,15 +288,13 @@ def prepare( cost_kwargs: CostKwargs_t = types.MappingProxyType({}), a: Optional[Union[bool, str]] = None, b: Optional[Union[bool, str]] = None, - xy_callback: Optional[Union[Literal["local-pca"], Callback_t]] = None, + subset: Optional[Sequence[Tuple[K, K]]] = None, + reference: Optional[Any] = None, x_callback: Optional[Union[Literal["local-pca"], Callback_t]] = None, y_callback: Optional[Union[Literal["local-pca"], Callback_t]] = None, - xy_callback_kwargs: Mapping[str, Any] = types.MappingProxyType({}), x_callback_kwargs: Mapping[str, Any] = types.MappingProxyType({}), y_callback_kwargs: Mapping[str, Any] = types.MappingProxyType({}), - subset: Optional[Sequence[Tuple[K, K]]] = None, - reference: Optional[Any] = None, - ) -> "FGWProblem[K, B]": + ) -> "GWProblem[K, B]": """Prepare the individual :term:`quadratic subproblems `. .. seealso:: @@ -307,16 +304,6 @@ def prepare( ---------- key Key in :attr:`~anndata.AnnData.obs` for the :class:`~moscot.utils.subset_policy.SubsetPolicy`. - joint_attr - How to get the data for the :term:`linear term` in the :term:`fused ` case: - - - :obj:`None` - run `PCA `_ - on :attr:`~anndata.AnnData.X` is computed. - - :class:`str` - a key in :attr:`~anndata.AnnData.obsm` where the data is stored. - - :class:`dict` - it should contain ``'attr'`` and ``'key'``, the attribute and the key - in :class:`~anndata.AnnData`, and optionally ``'tag'``, one of :class:`~moscot.utils.tagged_array.Tag`. - - By default, :attr:`tag = 'point_cloud' ` is used. x_attr How to get the data for the source :term:`quadratic term`: @@ -368,18 +355,6 @@ def prepare( :meth:`estimate the marginals `, otherwise use uniform marginals. - :obj:`None` - uniform marginals. - xy_callback - Callback function used to prepare the data in the :term:`linear term`. - x_callback - Callback function used to prepare the data in the source :term:`quadratic term`. - y_callback - Callback function used to prepare the data in the target :term:`quadratic term`. - xy_callback_kwargs - Keyword arguments for the ``xy_callback``. - x_callback_kwargs - Keyword arguments for the ``x_callback``. - y_callback_kwargs - Keyword arguments for the ``y_callback``. Returns ------- @@ -394,16 +369,15 @@ def prepare( self.batch_key = key x = set_quad_defaults(x_attr) if x_callback is None else {} y = set_quad_defaults(y_attr) if y_callback is None else {} - xy, xy_callback, xy_callback_kwargs = handle_joint_attr(joint_attr, xy_callback, xy_callback_kwargs) + xy, x, y = handle_cost( - xy=xy, + xy={}, x=x, y=y, cost=cost, + cost_kwargs=cost_kwargs, x_callback=x_callback, y_callback=y_callback, - xy_callback=xy_callback, - cost_kwargs=cost_kwargs, ) return super().prepare( # type: ignore[return-value] key=key, @@ -413,19 +387,16 @@ def prepare( policy=policy, a=a, b=b, - reference=reference, - subset=subset, x_callback=x_callback, y_callback=y_callback, - xy_callback=xy_callback, x_callback_kwargs=x_callback_kwargs, y_callback_kwargs=y_callback_kwargs, - xy_callback_kwargs=xy_callback_kwargs, + subset=subset, + reference=reference, ) def solve( self, - alpha: float = 0.5, epsilon: float = 1e-3, tau_a: float = 1.0, tau_b: float = 1.0, @@ -442,7 +413,7 @@ def solve( linear_solver_kwargs: Mapping[str, Any] = types.MappingProxyType({}), device: Optional[Literal["cpu", "gpu", "tpu"]] = None, **kwargs: Any, - ) -> "FGWProblem[K,B]": + ) -> "GWProblem[K,B]": r"""Solve the individual :term:`quadratic subproblems `. .. seealso: @@ -453,10 +424,6 @@ def solve( Parameters ---------- - alpha - Parameter in :math:`(0, 1)` that interpolates between the :term:`quadratic term` and - the :term:`linear term`. :math:`\alpha = 1` corresponds to the pure :term:`Gromov-Wasserstein` problem while - :math:`\alpha \to 0` corresponds to the pure :term:`linear problem`. epsilon :term:`Entropic regularization`. tau_a @@ -504,10 +471,8 @@ def solve( - :attr:`solutions` - the :term:`OT` solutions for each subproblem. - :attr:`stage` - set to ``'solved'``. """ - if alpha == 1.0: - raise ValueError("The `FGWProblem` is equivalent to the `GWProblem` when `alpha=1.0`.") - return super().solve( - alpha=alpha, + return super().solve( # type: ignore[return-value] + alpha=1.0, epsilon=epsilon, tau_a=tau_a, tau_b=tau_b, @@ -524,7 +489,7 @@ def solve( linear_solver_kwargs=linear_solver_kwargs, device=device, **kwargs, - ) # type: ignore[return-value] + ) @property def _base_problem_type(self) -> Type[B]: @@ -535,8 +500,8 @@ def _valid_policies(self) -> Tuple[Policy_t, ...]: return _constants.SEQUENTIAL, _constants.EXPLICIT, _constants.STAR # type: ignore[return-value] -class GWProblem(FGWProblem[K, B]): - """Class for solving the :term:`GW ` or :term:`FGW ` problems. +class FGWProblem(GWProblem[K, B]): + """Class for solving the :term:`FGW ` problem. Parameters ---------- @@ -549,6 +514,7 @@ class GWProblem(FGWProblem[K, B]): def prepare( self, key: str, + joint_attr: Optional[Union[str, Mapping[str, Any]]] = None, x_attr: Optional[Union[str, Mapping[str, Any]]] = None, y_attr: Optional[Union[str, Mapping[str, Any]]] = None, policy: Literal["sequential", "explicit", "star"] = "sequential", @@ -556,13 +522,15 @@ def prepare( cost_kwargs: CostKwargs_t = types.MappingProxyType({}), a: Optional[Union[bool, str]] = None, b: Optional[Union[bool, str]] = None, - subset: Optional[Sequence[Tuple[K, K]]] = None, - reference: Optional[Any] = None, + xy_callback: Optional[Union[Literal["local-pca"], Callback_t]] = None, x_callback: Optional[Union[Literal["local-pca"], Callback_t]] = None, y_callback: Optional[Union[Literal["local-pca"], Callback_t]] = None, + xy_callback_kwargs: Mapping[str, Any] = types.MappingProxyType({}), x_callback_kwargs: Mapping[str, Any] = types.MappingProxyType({}), y_callback_kwargs: Mapping[str, Any] = types.MappingProxyType({}), - ) -> "GWProblem[K, B]": + subset: Optional[Sequence[Tuple[K, K]]] = None, + reference: Optional[Any] = None, + ) -> "FGWProblem[K, B]": """Prepare the individual :term:`quadratic subproblems `. .. seealso:: @@ -572,6 +540,16 @@ def prepare( ---------- key Key in :attr:`~anndata.AnnData.obs` for the :class:`~moscot.utils.subset_policy.SubsetPolicy`. + joint_attr + How to get the data for the :term:`linear term` in the :term:`fused ` case: + + - :obj:`None` - run `PCA `_ + on :attr:`~anndata.AnnData.X` is computed. + - :class:`str` - a key in :attr:`~anndata.AnnData.obsm` where the data is stored. + - :class:`dict` - it should contain ``'attr'`` and ``'key'``, the attribute and the key + in :class:`~anndata.AnnData`, and optionally ``'tag'``, one of :class:`~moscot.utils.tagged_array.Tag`. + + By default, :attr:`tag = 'point_cloud' ` is used. x_attr How to get the data for the source :term:`quadratic term`: @@ -623,6 +601,24 @@ def prepare( :meth:`estimate the marginals `, otherwise use uniform marginals. - :obj:`None` - uniform marginals. + xy + Data for the :term:`linear term`. + x + Data for the source :term:`quadratic term`. + y + Data for the target :term:`quadratic term`. + xy_callback + Callback function used to prepare the data in the :term:`linear term`. + x_callback + Callback function used to prepare the data in the source :term:`quadratic term`. + y_callback + Callback function used to prepare the data in the target :term:`quadratic term`. + xy_callback_kwargs + Keyword arguments for the ``xy_callback``. + x_callback_kwargs + Keyword arguments for the ``x_callback``. + y_callback_kwargs + Keyword arguments for the ``y_callback``. Returns ------- @@ -634,25 +630,42 @@ def prepare( - :attr:`stage` - set to ``'prepared'``. - :attr:`problem_kind` - set to ``'quadratic'``. """ - return super().prepare( # type: ignore[return-value] + self.batch_key = key + x = set_quad_defaults(x_attr) if x_callback is None else {} + y = set_quad_defaults(y_attr) if y_callback is None else {} + xy, xy_callback, xy_callback_kwargs = handle_joint_attr(joint_attr, xy_callback, xy_callback_kwargs) + xy, x, y = handle_cost( + xy=xy, + x=x, + y=y, + cost=cost, + x_callback=x_callback, + y_callback=y_callback, + xy_callback=xy_callback, + cost_kwargs=cost_kwargs, + ) + return CompoundProblem.prepare( + self, # type: ignore[return-value, arg-type] key=key, + xy=xy, + x=x, + y=y, policy=policy, a=a, b=b, - x_attr=x_attr, - y_attr=y_attr, - cost=cost, - cost_kwargs=cost_kwargs, + reference=reference, + subset=subset, # type: ignore[arg-type] x_callback=x_callback, y_callback=y_callback, + xy_callback=xy_callback, x_callback_kwargs=x_callback_kwargs, y_callback_kwargs=y_callback_kwargs, - subset=subset, - reference=reference, + xy_callback_kwargs=xy_callback_kwargs, ) def solve( self, + alpha: float = 0.5, epsilon: float = 1e-3, tau_a: float = 1.0, tau_b: float = 1.0, @@ -669,7 +682,7 @@ def solve( linear_solver_kwargs: Mapping[str, Any] = types.MappingProxyType({}), device: Optional[Literal["cpu", "gpu", "tpu"]] = None, **kwargs: Any, - ) -> "GWProblem[K,B]": + ) -> "FGWProblem[K,B]": r"""Solve the individual :term:`quadratic subproblems `. .. seealso: @@ -680,6 +693,10 @@ def solve( Parameters ---------- + alpha + Parameter in :math:`(0, 1)` that interpolates between the :term:`quadratic term` and + the :term:`linear term`. :math:`\alpha = 1` corresponds to the pure :term:`Gromov-Wasserstein` problem while + :math:`\alpha \to 0` corresponds to the pure :term:`linear problem`. epsilon :term:`Entropic regularization`. tau_a @@ -727,8 +744,11 @@ def solve( - :attr:`solutions` - the :term:`OT` solutions for each subproblem. - :attr:`stage` - set to ``'solved'``. """ - return super().solve( # type: ignore[return-value] - alpha=1.0, + if alpha == 1.0: + raise ValueError("The `FGWProblem` is equivalent to the `GWProblem` when `alpha=1.0`.") + return CompoundProblem.solve( + self, # type: ignore[return-value, arg-type] + alpha=alpha, epsilon=epsilon, tau_a=tau_a, tau_b=tau_b, @@ -747,6 +767,14 @@ def solve( **kwargs, ) + @property + def _base_problem_type(self) -> Type[B]: + return OTProblem # type: ignore[return-value] + + @property + def _valid_policies(self) -> Tuple[Policy_t, ...]: + return _constants.SEQUENTIAL, _constants.EXPLICIT, _constants.STAR # type: ignore[return-value] + class GENOTLinProblem(CondOTProblem): """Class for solving Conditional Parameterized Monge Map problems / Conditional Neural OT problems.""" From 3ec3328cfa2da292331a63f13626cc508acb440a Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Thu, 12 Dec 2024 02:22:02 +0100 Subject: [PATCH 59/68] update tests and implement str as initializer input --- src/moscot/_types.py | 7 +- src/moscot/backends/ott/_utils.py | 88 +++++++++++++++++++ src/moscot/backends/ott/solver.py | 12 ++- tests/_utils.py | 37 -------- tests/backends/ott/test_backend.py | 4 +- tests/problems/conftest.py | 9 +- .../test_translation_problem.py | 4 +- tests/problems/generic/test_fgw_problem.py | 4 +- tests/problems/generic/test_gw_problem.py | 4 +- .../problems/generic/test_sinkhorn_problem.py | 7 +- .../problems/space/test_alignment_problem.py | 3 +- tests/problems/space/test_mapping_problem.py | 4 +- tests/problems/time/test_lineage_problem.py | 4 +- tests/problems/time/test_temporal_problem.py | 7 +- 14 files changed, 121 insertions(+), 73 deletions(-) diff --git a/src/moscot/_types.py b/src/moscot/_types.py index 25629f0d6..1f72953d8 100644 --- a/src/moscot/_types.py +++ b/src/moscot/_types.py @@ -20,11 +20,14 @@ Numeric_t = Union[int, float] # type of `time_key` arguments Filter_t = Optional[Union[str, Mapping[str, Sequence[Any]]]] # type how to filter adata Str_Dict_t = Optional[Union[str, Mapping[str, Sequence[Any]]]] # type for `cell_transition` +SinkhornInitializerTag_t = Literal["default", "gaussian", "sorting"] +LRInitializerTag_t = Literal["random", "rank2", "k-means", "generalized-k-means"] -SinkhornInitializer_t = Optional[Union[SinkhornInitializer, LRInitializer]] +LRInitializer_t = Optional[Union[LRInitializer, LRInitializerTag_t]] +SinkhornInitializer_t = Optional[Union[SinkhornInitializer, SinkhornInitializerTag_t]] QuadInitializer_t = Optional[Union[BaseQuadraticInitializer]] -Initializer_t = Union[SinkhornInitializer_t, QuadInitializer_t] +Initializer_t = Union[SinkhornInitializer_t, QuadInitializer_t, LRInitializer_t] ProblemStage_t = Literal["prepared", "solved"] Device_t = Union[Literal["cpu", "gpu", "tpu"], str] diff --git a/src/moscot/backends/ott/_utils.py b/src/moscot/backends/ott/_utils.py index 05bc48a57..68b01d4a1 100644 --- a/src/moscot/backends/ott/_utils.py +++ b/src/moscot/backends/ott/_utils.py @@ -8,6 +8,8 @@ import numpy as np import scipy.sparse as sp from ott.geometry import epsilon_scheduler, geodesic, geometry, pointcloud +from ott.initializers.linear import initializers as init_lib +from ott.initializers.linear import initializers_lr as lr_init_lib from ott.neural import datasets from ott.solvers import utils as solver_utils from ott.tools.sinkhorn_divergence import sinkhorn_divergence as sinkhorn_div @@ -21,6 +23,90 @@ __all__ = ["sinkhorn_divergence"] +class InitializerAdapter: + """Adapter class for creating various OT solver initializers. + + This class provides static methods to create and manage different types of + initializers used in optimal transport solvers, including low-rank, k-means, + and standard Sinkhorn initializers. + """ + + @staticmethod + def lr_from_str( + initializer: str, + rank: int, + **kwargs: Any, + ) -> lr_init_lib.LRInitializer: + """Create a low-rank initializer from a string specification. + + Parameters + ---------- + initializer : str + Either existing initializer instance or string specifier. + rank : int + Rank for the initialization. + **kwargs : Any + Additional keyword arguments for initializer creation. + + Returns + ------- + LRInitializer + Configured low-rank initializer. + + Raises + ------ + NotImplementedError + If requested initializer type is not implemented. + """ + if isinstance(initializer, lr_init_lib.LRInitializer): + return initializer + if initializer == "k-means": + return lr_init_lib.KMeansInitializer(rank=rank, **kwargs) + if initializer == "generalized-k-means": + return lr_init_lib.GeneralizedKMeansInitializer(rank=rank, **kwargs) + if initializer == "random": + return lr_init_lib.RandomInitializer(rank=rank, **kwargs) + if initializer == "rank2": + return lr_init_lib.Rank2Initializer(rank=rank, **kwargs) + raise NotImplementedError(f"Initializer `{initializer}` is not implemented.") + + @staticmethod + def from_str( + initializer: str, + **kwargs: Any, + ) -> init_lib.SinkhornInitializer: + """Create a Sinkhorn initializer from a string specification. + + Parameters + ---------- + initializer : str + String specifier for initializer type. + **kwargs : Any + Additional keyword arguments for initializer creation. + + Returns + ------- + SinkhornInitializer + Configured Sinkhorn initializer. + + Raises + ------ + NotImplementedError + If requested initializer type is not implemented. + """ + if isinstance(initializer, init_lib.SinkhornInitializer): + return initializer + if initializer == "default": + return init_lib.DefaultInitializer(**kwargs) + if initializer == "gaussian": + return init_lib.GaussianInitializer(**kwargs) + if initializer == "sorting": + return init_lib.SortingInitializer(**kwargs) + if initializer == "subsample": + return init_lib.SubsampleInitializer(**kwargs) + raise NotImplementedError(f"Initializer `{initializer}` is not yet implemented.") + + def sinkhorn_divergence( point_cloud_1: ArrayLike, point_cloud_2: ArrayLike, @@ -47,6 +133,8 @@ def sinkhorn_divergence( b=b, scale_cost=scale_cost, epsilon=epsilon, + tau_a=tau_a, + tau_b=tau_b, **kwargs, )[1] xy_conv, xx_conv, *yy_conv = output.converged diff --git a/src/moscot/backends/ott/solver.py b/src/moscot/backends/ott/solver.py index c9ff29ba1..75336b5aa 100644 --- a/src/moscot/backends/ott/solver.py +++ b/src/moscot/backends/ott/solver.py @@ -36,11 +36,13 @@ from moscot._logging import logger from moscot._types import ( ArrayLike, + LRInitializer_t, ProblemKind_t, QuadInitializer_t, SinkhornInitializer_t, ) from moscot.backends.ott._utils import ( + InitializerAdapter, Loader, MultiLoader, _instantiate_geodesic_cost, @@ -286,8 +288,12 @@ def __init__( eps = kwargs.get("epsilon") if eps is not None and eps > 0.0: logger.info(f"Found `epsilon`={eps}>0. We recommend setting `epsilon`=0 for the low-rank solver.") + if isinstance(initializer, str): + initializer = InitializerAdapter.lr_from_str(initializer, rank=rank) self._solver = sinkhorn_lr.LRSinkhorn(rank=rank, epsilon=epsilon, initializer=initializer, **kwargs) else: + if isinstance(initializer, str): + initializer = InitializerAdapter.from_str(initializer) self._solver = sinkhorn.Sinkhorn(initializer=initializer, **kwargs) def _prepare( @@ -389,7 +395,7 @@ def __init__( self, jit: bool = True, rank: int = -1, - initializer: QuadInitializer_t | None = None, + initializer: QuadInitializer_t | LRInitializer_t = None, initializer_kwargs: Mapping[str, Any] = types.MappingProxyType({}), linear_solver_kwargs: Mapping[str, Any] = types.MappingProxyType({}), **kwargs: Any, @@ -401,6 +407,8 @@ def __init__( eps = kwargs.get("epsilon") if eps is not None and eps > 0.0: logger.info(f"Found `epsilon`={eps}>0. We recommend setting `epsilon`=0 for the low-rank solver.") + if isinstance(initializer, str): + initializer = InitializerAdapter.lr_from_str(initializer, rank=rank) self._solver = gromov_wasserstein_lr.LRGromovWasserstein( rank=rank, initializer=initializer, @@ -408,6 +416,8 @@ def __init__( ) else: linear_solver = sinkhorn.Sinkhorn(**linear_solver_kwargs) + if isinstance(initializer, str): + raise ValueError("Expected `initializer` to be `None` or `ott.initializers.quadratic.initializers`.") self._solver = gromov_wasserstein.GromovWasserstein( linear_solver=linear_solver, initializer=initializer, diff --git a/tests/_utils.py b/tests/_utils.py index dd527b2f8..d2d1960b9 100644 --- a/tests/_utils.py +++ b/tests/_utils.py @@ -2,8 +2,6 @@ import numpy as np import pandas as pd -from ott.initializers.linear import initializers as init_lib -from ott.initializers.linear import initializers_lr as lr_init_lib from scipy.sparse import csr_matrix from anndata import AnnData @@ -103,38 +101,3 @@ def _base_problem_type(self) -> Type[B]: @property def _valid_policies(self) -> Tuple[str, ...]: return () - - -def create_lr_initializer( - initializer, - rank, - **kwargs, -) -> lr_init_lib.LRInitializer: # noqa: D102 - if isinstance(initializer, lr_init_lib.LRInitializer): - return initializer - if initializer == "random": - return lr_init_lib.RandomInitializer(rank=rank, **kwargs) - if initializer == "rank2": - return lr_init_lib.Rank2Initializer(rank=rank, **kwargs) - if initializer == "k-means": - return lr_init_lib.KMeansInitializer(rank=rank, **kwargs) - if initializer == "generalized-k-means": - return lr_init_lib.GeneralizedKMeansInitializer(rank=rank, **kwargs) - raise NotImplementedError(f"Initializer `{initializer}` is not yet implemented.") - - -def create_fr_initializer( - initializer, - **kwargs, -) -> init_lib.SinkhornInitializer: # noqa: D102 - if isinstance(initializer, init_lib.SinkhornInitializer): - return initializer - if initializer == "default": - return init_lib.DefaultInitializer(**kwargs) - if initializer == "gaussian": - return init_lib.GaussianInitializer(**kwargs) - if initializer == "sorting": - return init_lib.SortingInitializer(**kwargs) - if initializer == "subsample": - return init_lib.SubsampleInitializer(**kwargs) - raise NotImplementedError(f"Initializer `{initializer}` is not yet implemented.") diff --git a/tests/backends/ott/test_backend.py b/tests/backends/ott/test_backend.py index 9a0a04108..72f6455ae 100644 --- a/tests/backends/ott/test_backend.py +++ b/tests/backends/ott/test_backend.py @@ -9,7 +9,6 @@ from ott.geometry.geometry import Geometry from ott.geometry.low_rank import LRCGeometry from ott.geometry.pointcloud import PointCloud -from ott.initializers.linear import initializers_lr as lr_init_lib from ott.problems.linear.linear_problem import LinearProblem from ott.problems.quadratic import quadratic_problem from ott.problems.quadratic.quadratic_problem import QuadraticProblem @@ -156,8 +155,7 @@ def test_epsilon(self, x_cost: jnp.ndarray, y_cost: jnp.ndarray, eps: Optional[f def test_solver_rank(self, x: Geom_t, y: Geom_t, rank: int) -> None: thresh, eps = 1e-2, 1e-2 if rank > -1: - initializer = lr_init_lib.RandomInitializer(rank=rank) - gt = LRGromovWasserstein(epsilon=eps, rank=rank, threshold=thresh, initializer=initializer)( + gt = LRGromovWasserstein(epsilon=eps, rank=rank, threshold=thresh, initializer="rank2")( QuadraticProblem(PointCloud(x, epsilon=eps), PointCloud(y, epsilon=eps)) ) diff --git a/tests/problems/conftest.py b/tests/problems/conftest.py index e7b76f3bd..b4f883bba 100644 --- a/tests/problems/conftest.py +++ b/tests/problems/conftest.py @@ -2,8 +2,6 @@ import numpy as np import pandas as pd -from ott.initializers.linear import initializers as init_lib -from ott.initializers.linear import initializers_lr as lr_init_lib from sklearn.metrics import pairwise_distances import anndata as ad @@ -77,7 +75,7 @@ def marginal_keys(request): "tau_a": 1.0, "tau_b": 1.0, "rank": 7, - "initializer": lr_init_lib.RandomInitializer(rank=7), + "initializer": "rank2", "initializer_kwargs": {}, "jit": False, "threshold": 2e-3, @@ -99,7 +97,7 @@ def marginal_keys(request): "tau_b": 0.8, "rank": -1, "batch_size": 125, - "initializer": init_lib.GaussianInitializer(), + "initializer": "gaussian", "initializer_kwargs": {}, "jit": True, "threshold": 3e-3, @@ -159,7 +157,8 @@ def marginal_keys(request): "scale_cost": "max_cost", "rank": 7, "batch_size": 123, - "initializer": lr_init_lib.RandomInitializer(rank=7), + "initializer": "rank2", + "initializer_kwargs": {}, "jit": False, "threshold": 2e-3, "min_iterations": 2, diff --git a/tests/problems/cross_modality/test_translation_problem.py b/tests/problems/cross_modality/test_translation_problem.py index ccd5de25d..4af87e3b1 100644 --- a/tests/problems/cross_modality/test_translation_problem.py +++ b/tests/problems/cross_modality/test_translation_problem.py @@ -145,10 +145,8 @@ def test_pass_arguments(self, adata_translation_split: Tuple[AnnData, AnnData], solver = tp[key].solver.solver args = gw_solver_args if args_to_check["rank"] == -1 else gw_lr_solver_args for arg, val in args.items(): - if arg == "initializer" and args_to_check["rank"] == -1: + if arg == "initializer": assert isinstance(getattr(solver, val), Callable) - else: - assert getattr(solver, val) == args_to_check[arg], arg sinkhorn_solver = solver.linear_solver if args_to_check["rank"] == -1 else solver lin_solver_args = gw_linear_solver_args if args_to_check["rank"] == -1 else gw_lr_linear_solver_args diff --git a/tests/problems/generic/test_fgw_problem.py b/tests/problems/generic/test_fgw_problem.py index 4167edf6d..08d0a75bf 100644 --- a/tests/problems/generic/test_fgw_problem.py +++ b/tests/problems/generic/test_fgw_problem.py @@ -111,10 +111,8 @@ def test_pass_arguments(self, adata_space_rotate: AnnData, args_to_check: Mappin solver = problem[key].solver.solver args = gw_solver_args if args_to_check["rank"] == -1 else gw_lr_solver_args for arg, val in args.items(): - if args_to_check["rank"] == -1 and arg == "initializer": + if arg == "initializer": assert isinstance(getattr(solver, val), Callable) - else: - assert getattr(solver, val, object()) == args_to_check[arg], arg sinkhorn_solver = solver.linear_solver if args_to_check["rank"] == -1 else solver lin_solver_args = gw_linear_solver_args if args_to_check["rank"] == -1 else gw_lr_linear_solver_args diff --git a/tests/problems/generic/test_gw_problem.py b/tests/problems/generic/test_gw_problem.py index 5de5ea0b2..5fa815990 100644 --- a/tests/problems/generic/test_gw_problem.py +++ b/tests/problems/generic/test_gw_problem.py @@ -116,10 +116,8 @@ def test_pass_arguments(self, adata_space_rotate: AnnData, args_to_check: Mappin args = gw_solver_args if args_to_check["rank"] == -1 else gw_lr_solver_args for arg, val in args.items(): assert hasattr(solver, val) - if arg == "initializer" and args_to_check["rank"] == -1: + if arg == "initializer": assert isinstance(getattr(solver, val), Callable) - else: - assert getattr(solver, val) == args_to_check[arg] sinkhorn_solver = solver.linear_solver if args_to_check["rank"] == -1 else solver lin_solver_args = gw_linear_solver_args if args_to_check["rank"] == -1 else gw_lr_linear_solver_args diff --git a/tests/problems/generic/test_sinkhorn_problem.py b/tests/problems/generic/test_sinkhorn_problem.py index 542ffbae3..ef7c56f60 100644 --- a/tests/problems/generic/test_sinkhorn_problem.py +++ b/tests/problems/generic/test_sinkhorn_problem.py @@ -160,10 +160,9 @@ def test_pass_arguments(self, adata_time: AnnData, args_to_check: Mapping[str, A solver = problem[(0, 1)].solver.solver args = sinkhorn_solver_args if args_to_check["rank"] == -1 else lr_sinkhorn_solver_args for arg, val in args.items(): - if val != "initializer_kwargs": - assert hasattr(solver, val), val - el = getattr(solver, val)[0] if isinstance(getattr(solver, val), tuple) else getattr(solver, val) - assert el == args_to_check[arg], arg + assert hasattr(solver, val), val + el = getattr(solver, val)[0] if isinstance(getattr(solver, val), tuple) else getattr(solver, val) + assert el == args_to_check[arg], arg lin_prob = problem[(0, 1)]._solver._problem for arg, val in lin_prob_args.items(): diff --git a/tests/problems/space/test_alignment_problem.py b/tests/problems/space/test_alignment_problem.py index 100d1bbe9..7b720b438 100644 --- a/tests/problems/space/test_alignment_problem.py +++ b/tests/problems/space/test_alignment_problem.py @@ -199,8 +199,7 @@ def test_pass_arguments(self, adata_space_rotate: AnnData, args_to_check: Mappin args = gw_solver_args if args_to_check["rank"] == -1 else gw_lr_solver_args for arg, val in args.items(): assert hasattr(solver, val) - if arg != "initializer": - assert getattr(solver, val) == args_to_check[arg] + assert getattr(solver, val) == args_to_check[arg] sinkhorn_solver = solver.linear_solver if args_to_check["rank"] == -1 else solver lin_solver_args = gw_linear_solver_args if args_to_check["rank"] == -1 else gw_lr_linear_solver_args diff --git a/tests/problems/space/test_mapping_problem.py b/tests/problems/space/test_mapping_problem.py index 0482c5922..d01e97268 100644 --- a/tests/problems/space/test_mapping_problem.py +++ b/tests/problems/space/test_mapping_problem.py @@ -232,10 +232,8 @@ def test_pass_arguments(self, adata_mapping: AnnData, args_to_check: Mapping[str args = gw_solver_args if args_to_check["rank"] == -1 else gw_lr_solver_args for arg, val in args.items(): assert hasattr(solver, val) - if arg == "initializer" and args_to_check["rank"] == -1: + if arg == "initializer": assert isinstance(getattr(solver, val), Callable) - else: - assert getattr(solver, val) == args_to_check[arg] sinkhorn_solver = solver.linear_solver if args_to_check["rank"] == -1 else solver lin_solver_args = gw_linear_solver_args if args_to_check["rank"] == -1 else gw_lr_linear_solver_args diff --git a/tests/problems/time/test_lineage_problem.py b/tests/problems/time/test_lineage_problem.py index 5a992800c..21b0a7eca 100644 --- a/tests/problems/time/test_lineage_problem.py +++ b/tests/problems/time/test_lineage_problem.py @@ -232,10 +232,8 @@ def test_pass_arguments(self, adata_time_barcodes: AnnData, args_to_check: Mappi args = gw_solver_args if args_to_check["rank"] == -1 else gw_lr_solver_args for arg, val in args.items(): assert hasattr(solver, val) - if arg == "initializer" and args_to_check["rank"] == -1: + if arg == "initializer": assert isinstance(getattr(solver, val), Callable) - else: - assert getattr(solver, val) == args_to_check[arg] sinkhorn_solver = solver.linear_solver if args_to_check["rank"] == -1 else solver lin_solver_args = gw_linear_solver_args if args_to_check["rank"] == -1 else gw_lr_linear_solver_args diff --git a/tests/problems/time/test_temporal_problem.py b/tests/problems/time/test_temporal_problem.py index 89519beb8..c5ec8e08a 100644 --- a/tests/problems/time/test_temporal_problem.py +++ b/tests/problems/time/test_temporal_problem.py @@ -440,10 +440,9 @@ def test_pass_arguments(self, adata_time: AnnData, args_to_check: Mapping[str, A solver = problem[key].solver.solver args = sinkhorn_solver_args if args_to_check["rank"] == -1 else lr_sinkhorn_solver_args for arg, val in args.items(): - if val != "initializer_kwargs": - assert hasattr(solver, val) - el = getattr(solver, val)[0] if isinstance(getattr(solver, val), tuple) else getattr(solver, val) - assert el == args_to_check[arg] + assert hasattr(solver, val) + el = getattr(solver, val)[0] if isinstance(getattr(solver, val), tuple) else getattr(solver, val) + assert el == args_to_check[arg] lin_prob = problem[key]._solver._problem for arg, val in lin_prob_args.items(): From 2474cf787bac042d33dc244bda9f8f33c784cf52 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Thu, 12 Dec 2024 02:25:00 +0100 Subject: [PATCH 60/68] fix tests --- tests/backends/ott/test_backend.py | 3 +-- tests/problems/space/test_alignment_problem.py | 2 -- tests/problems/space/test_mapping_problem.py | 3 +-- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/tests/backends/ott/test_backend.py b/tests/backends/ott/test_backend.py index 72f6455ae..9bdc7f4ea 100644 --- a/tests/backends/ott/test_backend.py +++ b/tests/backends/ott/test_backend.py @@ -24,7 +24,7 @@ from moscot.base.output import BaseDiscreteSolverOutput from moscot.base.solver import O, OTSolver from moscot.utils.tagged_array import Tag, TaggedArray -from tests._utils import ATOL, RTOL, Geom_t, create_lr_initializer +from tests._utils import ATOL, RTOL, Geom_t from tests.plotting.conftest import PlotTester, PlotTesterMeta @@ -52,7 +52,6 @@ def test_matches_ott(self, x: Geom_t, eps: Optional[float], jit: bool): def test_solver_rank(self, y: Geom_t, rank: Optional[int], initializer: str): eps = 1e-2 default_gamma_lr_sinhorn = 500 - initializer = create_lr_initializer(initializer, rank=rank) lr_sinkhorn = LRSinkhorn(rank=rank, initializer=initializer, gamma=default_gamma_lr_sinhorn) problem = LinearProblem(PointCloud(y, epsilon=eps)) gt = lr_sinkhorn(problem) diff --git a/tests/problems/space/test_alignment_problem.py b/tests/problems/space/test_alignment_problem.py index 7b720b438..31e3de917 100644 --- a/tests/problems/space/test_alignment_problem.py +++ b/tests/problems/space/test_alignment_problem.py @@ -13,7 +13,6 @@ from moscot.backends.ott._utils import alpha_to_fused_penalty from moscot.problems.space import AlignmentProblem from moscot.utils.tagged_array import Tag, TaggedArray -from tests._utils import create_lr_initializer from tests.problems.conftest import ( fgw_args_1, fgw_args_2, @@ -96,7 +95,6 @@ def test_solve_balanced( should_raise: bool, ): kwargs = {} - initializer = create_lr_initializer(initializer, rank=rank) if initializer is not None else None if rank > -1: kwargs["initializer"] = initializer if initializer == "random": diff --git a/tests/problems/space/test_mapping_problem.py b/tests/problems/space/test_mapping_problem.py index d01e97268..b0645e28d 100644 --- a/tests/problems/space/test_mapping_problem.py +++ b/tests/problems/space/test_mapping_problem.py @@ -17,7 +17,7 @@ from moscot.backends.ott._utils import alpha_to_fused_penalty from moscot.problems.space import MappingProblem from moscot.utils.tagged_array import Tag, TaggedArray -from tests._utils import _adata_spatial_split, create_lr_initializer +from tests._utils import _adata_spatial_split from tests.problems.conftest import ( fgw_args_1, fgw_args_2, @@ -114,7 +114,6 @@ def test_solve_balanced( ): adataref, adatasp = _adata_spatial_split(adata_mapping) kwargs = {} - initializer = create_lr_initializer(initializer, rank) if initializer is not None else None if rank > -1: kwargs["initializer"] = initializer if initializer == "random": From 101b24851020bdcd5177ffd0b9ce2028467bc7f8 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Thu, 12 Dec 2024 02:35:15 +0100 Subject: [PATCH 61/68] fix backend test --- tests/backends/ott/test_backend.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/backends/ott/test_backend.py b/tests/backends/ott/test_backend.py index 9bdc7f4ea..24c9111e6 100644 --- a/tests/backends/ott/test_backend.py +++ b/tests/backends/ott/test_backend.py @@ -20,7 +20,7 @@ from moscot._types import ArrayLike, Device_t from moscot.backends.ott import GWSolver, SinkhornSolver -from moscot.backends.ott._utils import alpha_to_fused_penalty +from moscot.backends.ott._utils import alpha_to_fused_penalty, InitializerAdapter from moscot.base.output import BaseDiscreteSolverOutput from moscot.base.solver import O, OTSolver from moscot.utils.tagged_array import Tag, TaggedArray @@ -52,6 +52,7 @@ def test_matches_ott(self, x: Geom_t, eps: Optional[float], jit: bool): def test_solver_rank(self, y: Geom_t, rank: Optional[int], initializer: str): eps = 1e-2 default_gamma_lr_sinhorn = 500 + initializer = InitializerAdapter.lr_from_str(initializer, rank=rank) lr_sinkhorn = LRSinkhorn(rank=rank, initializer=initializer, gamma=default_gamma_lr_sinhorn) problem = LinearProblem(PointCloud(y, epsilon=eps)) gt = lr_sinkhorn(problem) @@ -154,7 +155,8 @@ def test_epsilon(self, x_cost: jnp.ndarray, y_cost: jnp.ndarray, eps: Optional[f def test_solver_rank(self, x: Geom_t, y: Geom_t, rank: int) -> None: thresh, eps = 1e-2, 1e-2 if rank > -1: - gt = LRGromovWasserstein(epsilon=eps, rank=rank, threshold=thresh, initializer="rank2")( + initializer = InitializerAdapter.lr_from_str("random", rank=rank) + gt = LRGromovWasserstein(epsilon=eps, rank=rank, threshold=thresh, initializer=initializer)( QuadraticProblem(PointCloud(x, epsilon=eps), PointCloud(y, epsilon=eps)) ) From 09a3b49c2688e8452a943bc4e3be3d4a9dd50ba0 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 12 Dec 2024 01:35:46 +0000 Subject: [PATCH 62/68] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- tests/backends/ott/test_backend.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/backends/ott/test_backend.py b/tests/backends/ott/test_backend.py index 24c9111e6..f3ad08b4a 100644 --- a/tests/backends/ott/test_backend.py +++ b/tests/backends/ott/test_backend.py @@ -20,7 +20,7 @@ from moscot._types import ArrayLike, Device_t from moscot.backends.ott import GWSolver, SinkhornSolver -from moscot.backends.ott._utils import alpha_to_fused_penalty, InitializerAdapter +from moscot.backends.ott._utils import InitializerAdapter, alpha_to_fused_penalty from moscot.base.output import BaseDiscreteSolverOutput from moscot.base.solver import O, OTSolver from moscot.utils.tagged_array import Tag, TaggedArray From 90b93bb8f666024eb60f63e024dd5aff37ded7fc Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Thu, 12 Dec 2024 02:40:01 +0100 Subject: [PATCH 63/68] fix other tests --- tests/problems/generic/test_sinkhorn_problem.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tests/problems/generic/test_sinkhorn_problem.py b/tests/problems/generic/test_sinkhorn_problem.py index ef7c56f60..5b92aed81 100644 --- a/tests/problems/generic/test_sinkhorn_problem.py +++ b/tests/problems/generic/test_sinkhorn_problem.py @@ -1,4 +1,4 @@ -from typing import Any, Literal, Mapping +from typing import Any, Callable, Literal, Mapping import pytest @@ -162,7 +162,10 @@ def test_pass_arguments(self, adata_time: AnnData, args_to_check: Mapping[str, A for arg, val in args.items(): assert hasattr(solver, val), val el = getattr(solver, val)[0] if isinstance(getattr(solver, val), tuple) else getattr(solver, val) - assert el == args_to_check[arg], arg + if arg == "initializer": + assert isinstance(el, Callable) + else: + assert el == args_to_check[arg], arg lin_prob = problem[(0, 1)]._solver._problem for arg, val in lin_prob_args.items(): From c334e474b5e8084432846a37073eb78ff0ac53a4 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Thu, 12 Dec 2024 02:43:50 +0100 Subject: [PATCH 64/68] fix other tests --- tests/problems/generic/test_sinkhorn_problem.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/tests/problems/generic/test_sinkhorn_problem.py b/tests/problems/generic/test_sinkhorn_problem.py index 5b92aed81..755dc1541 100644 --- a/tests/problems/generic/test_sinkhorn_problem.py +++ b/tests/problems/generic/test_sinkhorn_problem.py @@ -160,12 +160,13 @@ def test_pass_arguments(self, adata_time: AnnData, args_to_check: Mapping[str, A solver = problem[(0, 1)].solver.solver args = sinkhorn_solver_args if args_to_check["rank"] == -1 else lr_sinkhorn_solver_args for arg, val in args.items(): - assert hasattr(solver, val), val - el = getattr(solver, val)[0] if isinstance(getattr(solver, val), tuple) else getattr(solver, val) - if arg == "initializer": - assert isinstance(el, Callable) - else: - assert el == args_to_check[arg], arg + if arg != "initializer_kwargs": + assert hasattr(solver, val), val + el = getattr(solver, val)[0] if isinstance(getattr(solver, val), tuple) else getattr(solver, val) + if arg == "initializer": + assert isinstance(el, Callable) + else: + assert el == args_to_check[arg], arg lin_prob = problem[(0, 1)]._solver._problem for arg, val in lin_prob_args.items(): From c9295ea79f03f94a56d189b5db9f60c6392e5592 Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Thu, 12 Dec 2024 10:20:26 +0100 Subject: [PATCH 65/68] update tau arguments --- src/moscot/backends/ott/_utils.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/moscot/backends/ott/_utils.py b/src/moscot/backends/ott/_utils.py index 68b01d4a1..981df0dd2 100644 --- a/src/moscot/backends/ott/_utils.py +++ b/src/moscot/backends/ott/_utils.py @@ -133,8 +133,10 @@ def sinkhorn_divergence( b=b, scale_cost=scale_cost, epsilon=epsilon, - tau_a=tau_a, - tau_b=tau_b, + solve_kwargs={ + "tau_a": tau_a, + "tau_b": tau_b, + }, **kwargs, )[1] xy_conv, xx_conv, *yy_conv = output.converged From 7f6d1cfa0112e6cfad42e48080ca727a70e67edd Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Thu, 12 Dec 2024 10:24:13 +0100 Subject: [PATCH 66/68] fix errors --- tests/problems/space/test_alignment_problem.py | 7 +++++-- tests/problems/time/test_temporal_problem.py | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/tests/problems/space/test_alignment_problem.py b/tests/problems/space/test_alignment_problem.py index 31e3de917..166cafad3 100644 --- a/tests/problems/space/test_alignment_problem.py +++ b/tests/problems/space/test_alignment_problem.py @@ -1,5 +1,5 @@ from pathlib import Path -from typing import Any, Literal, Mapping, Optional +from typing import Any, Callable, Literal, Mapping, Optional import pytest @@ -197,7 +197,10 @@ def test_pass_arguments(self, adata_space_rotate: AnnData, args_to_check: Mappin args = gw_solver_args if args_to_check["rank"] == -1 else gw_lr_solver_args for arg, val in args.items(): assert hasattr(solver, val) - assert getattr(solver, val) == args_to_check[arg] + if arg == "initializer": + assert isinstance(getattr(solver, val), Callable) + else: + assert getattr(solver, val) == args_to_check[arg] sinkhorn_solver = solver.linear_solver if args_to_check["rank"] == -1 else solver lin_solver_args = gw_linear_solver_args if args_to_check["rank"] == -1 else gw_lr_linear_solver_args diff --git a/tests/problems/time/test_temporal_problem.py b/tests/problems/time/test_temporal_problem.py index c5ec8e08a..5a81ae57a 100644 --- a/tests/problems/time/test_temporal_problem.py +++ b/tests/problems/time/test_temporal_problem.py @@ -1,4 +1,4 @@ -from typing import Any, List, Mapping, Optional +from typing import Any, Callable, List, Mapping, Optional import pytest @@ -442,7 +442,10 @@ def test_pass_arguments(self, adata_time: AnnData, args_to_check: Mapping[str, A for arg, val in args.items(): assert hasattr(solver, val) el = getattr(solver, val)[0] if isinstance(getattr(solver, val), tuple) else getattr(solver, val) - assert el == args_to_check[arg] + if arg == "initializer": + assert isinstance(el, Callable) + else: + assert el == args_to_check[arg] lin_prob = problem[key]._solver._problem for arg, val in lin_prob_args.items(): From aed1866110cb8e8ce6719673097fb089b396b6dd Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Thu, 12 Dec 2024 10:33:47 +0100 Subject: [PATCH 67/68] rename the initializer factor method class --- src/moscot/backends/ott/_utils.py | 4 ++-- src/moscot/backends/ott/solver.py | 8 ++++---- tests/backends/ott/test_backend.py | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/moscot/backends/ott/_utils.py b/src/moscot/backends/ott/_utils.py index 981df0dd2..9f71e2d5a 100644 --- a/src/moscot/backends/ott/_utils.py +++ b/src/moscot/backends/ott/_utils.py @@ -23,8 +23,8 @@ __all__ = ["sinkhorn_divergence"] -class InitializerAdapter: - """Adapter class for creating various OT solver initializers. +class InitializerResolver: + """Class for creating various OT solver initializers. This class provides static methods to create and manage different types of initializers used in optimal transport solvers, including low-rank, k-means, diff --git a/src/moscot/backends/ott/solver.py b/src/moscot/backends/ott/solver.py index 75336b5aa..9a21acf86 100644 --- a/src/moscot/backends/ott/solver.py +++ b/src/moscot/backends/ott/solver.py @@ -42,7 +42,7 @@ SinkhornInitializer_t, ) from moscot.backends.ott._utils import ( - InitializerAdapter, + InitializerResolver, Loader, MultiLoader, _instantiate_geodesic_cost, @@ -289,11 +289,11 @@ def __init__( if eps is not None and eps > 0.0: logger.info(f"Found `epsilon`={eps}>0. We recommend setting `epsilon`=0 for the low-rank solver.") if isinstance(initializer, str): - initializer = InitializerAdapter.lr_from_str(initializer, rank=rank) + initializer = InitializerResolver.lr_from_str(initializer, rank=rank) self._solver = sinkhorn_lr.LRSinkhorn(rank=rank, epsilon=epsilon, initializer=initializer, **kwargs) else: if isinstance(initializer, str): - initializer = InitializerAdapter.from_str(initializer) + initializer = InitializerResolver.from_str(initializer) self._solver = sinkhorn.Sinkhorn(initializer=initializer, **kwargs) def _prepare( @@ -408,7 +408,7 @@ def __init__( if eps is not None and eps > 0.0: logger.info(f"Found `epsilon`={eps}>0. We recommend setting `epsilon`=0 for the low-rank solver.") if isinstance(initializer, str): - initializer = InitializerAdapter.lr_from_str(initializer, rank=rank) + initializer = InitializerResolver.lr_from_str(initializer, rank=rank) self._solver = gromov_wasserstein_lr.LRGromovWasserstein( rank=rank, initializer=initializer, diff --git a/tests/backends/ott/test_backend.py b/tests/backends/ott/test_backend.py index f3ad08b4a..3a60308e4 100644 --- a/tests/backends/ott/test_backend.py +++ b/tests/backends/ott/test_backend.py @@ -20,7 +20,7 @@ from moscot._types import ArrayLike, Device_t from moscot.backends.ott import GWSolver, SinkhornSolver -from moscot.backends.ott._utils import InitializerAdapter, alpha_to_fused_penalty +from moscot.backends.ott._utils import InitializerResolver, alpha_to_fused_penalty from moscot.base.output import BaseDiscreteSolverOutput from moscot.base.solver import O, OTSolver from moscot.utils.tagged_array import Tag, TaggedArray @@ -52,7 +52,7 @@ def test_matches_ott(self, x: Geom_t, eps: Optional[float], jit: bool): def test_solver_rank(self, y: Geom_t, rank: Optional[int], initializer: str): eps = 1e-2 default_gamma_lr_sinhorn = 500 - initializer = InitializerAdapter.lr_from_str(initializer, rank=rank) + initializer = InitializerResolver.lr_from_str(initializer, rank=rank) lr_sinkhorn = LRSinkhorn(rank=rank, initializer=initializer, gamma=default_gamma_lr_sinhorn) problem = LinearProblem(PointCloud(y, epsilon=eps)) gt = lr_sinkhorn(problem) @@ -155,7 +155,7 @@ def test_epsilon(self, x_cost: jnp.ndarray, y_cost: jnp.ndarray, eps: Optional[f def test_solver_rank(self, x: Geom_t, y: Geom_t, rank: int) -> None: thresh, eps = 1e-2, 1e-2 if rank > -1: - initializer = InitializerAdapter.lr_from_str("random", rank=rank) + initializer = InitializerResolver.lr_from_str("random", rank=rank) gt = LRGromovWasserstein(epsilon=eps, rank=rank, threshold=thresh, initializer=initializer)( QuadraticProblem(PointCloud(x, epsilon=eps), PointCloud(y, epsilon=eps)) ) From 792d913ec9b04170fa2155e8c0c6bd7a51e12e1b Mon Sep 17 00:00:00 2001 From: selmanozleyen Date: Thu, 12 Dec 2024 10:51:48 +0100 Subject: [PATCH 68/68] update tests --- tests/problems/time/test_temporal_problem.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/tests/problems/time/test_temporal_problem.py b/tests/problems/time/test_temporal_problem.py index 5a81ae57a..6acd35e4f 100644 --- a/tests/problems/time/test_temporal_problem.py +++ b/tests/problems/time/test_temporal_problem.py @@ -440,12 +440,13 @@ def test_pass_arguments(self, adata_time: AnnData, args_to_check: Mapping[str, A solver = problem[key].solver.solver args = sinkhorn_solver_args if args_to_check["rank"] == -1 else lr_sinkhorn_solver_args for arg, val in args.items(): - assert hasattr(solver, val) - el = getattr(solver, val)[0] if isinstance(getattr(solver, val), tuple) else getattr(solver, val) - if arg == "initializer": - assert isinstance(el, Callable) - else: - assert el == args_to_check[arg] + if arg != "initializer_kwargs": + assert hasattr(solver, val) + el = getattr(solver, val)[0] if isinstance(getattr(solver, val), tuple) else getattr(solver, val) + if arg == "initializer": + assert isinstance(el, Callable) + else: + assert el == args_to_check[arg] lin_prob = problem[key]._solver._problem for arg, val in lin_prob_args.items():