From cc59f4ba901de66f33e2d3970a341b0866c20561 Mon Sep 17 00:00:00 2001 From: Martin Reinecke Date: Thu, 28 Feb 2019 13:27:35 +0100 Subject: [PATCH] fixes --- nifty5/operators/operator.py | 8 +++++++- test/test_operators/test_simplification.py | 5 +++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/nifty5/operators/operator.py b/nifty5/operators/operator.py index 712cd3d9..a674ccd5 100644 --- a/nifty5/operators/operator.py +++ b/nifty5/operators/operator.py @@ -219,10 +219,16 @@ class _ConstantOperator(Operator): def apply(self, x): from ..linearization import Linearization from .simple_linear_operators import NullOperator + from ..domain_tuple import DomainTuple self._check_input(x) if not isinstance(x, Linearization): return self._output - return x.new(self._output, NullOperator(self._domain, self._target)) + if x.want_metric and self._target is DomainTuple.scalar_domain(): + met = NullOperator(self._domain, self._domain) + else: + met = None + return x.new(self._output, NullOperator(self._domain, self._target), + met) def __repr__(self): return 'ConstantOperator <- {}'.format(self.domain.keys()) diff --git a/test/test_operators/test_simplification.py b/test/test_operators/test_simplification.py index 9306a9eb..bce790f2 100644 --- a/test/test_operators/test_simplification.py +++ b/test/test_operators/test_simplification.py @@ -48,3 +48,8 @@ def test_simplification(): assert_equal(isinstance(op2._op1, _ConstantOperator), True) assert_allclose(op(f1)["a"].local_data, op2(f1)["a"].local_data) assert_allclose(op(f1)["b"].local_data, op2(f1)["b"].local_data) + lin = ift.Linearization.make_var(ift.MultiField.full(op2.domain, 2.), True) + assert_allclose(op(lin).val["a"].local_data, + op2(lin).val["a"].local_data) + assert_allclose(op(lin).val["b"].local_data, + op2(lin).val["b"].local_data) -- GitLab