diff --git a/nifty5/operators/domain_distributor.py b/nifty5/operators/domain_distributor.py index a555196b1531fede651aa71dc66b70b594397124..aa5b39474e4bab73307077ce561b2e244b23fcc2 100644 --- a/nifty5/operators/domain_distributor.py +++ b/nifty5/operators/domain_distributor.py @@ -6,9 +6,9 @@ from ..domain_tuple import DomainTuple from .linear_operator import LinearOperator +# MR FIXME: this needs to be rewritten in a generic fashion class DomainDistributor(LinearOperator): def __init__(self, target, axis): - # TODO Replace this by a DiagonalOperator if dobj.ntask > 1: raise NotImplementedError('UpProj class does not support MPI.') assert len(target) == 2 diff --git a/nifty5/operators/multi_adaptor.py b/nifty5/operators/multi_adaptor.py index b54cc4cd1c23068dafe1bd9ebba02fbed5c22eee..6286804230b1b5f31871c7c581332cb2a0872b0f 100644 --- a/nifty5/operators/multi_adaptor.py +++ b/nifty5/operators/multi_adaptor.py @@ -17,12 +17,10 @@ # and financially supported by the Studienstiftung des deutschen Volkes. from ..multi.multi_domain import MultiDomain -from ..multi.multi_field import MultiField -from .linear_operator import LinearOperator -class MultiAdaptor(LinearOperator): - """Transforms a Field into a MultiField and vise versa when +def MultiAdaptor(target): + """Transforms a Field into a MultiField and vice versa when using adjoint_times. Parameters @@ -30,30 +28,8 @@ class MultiAdaptor(LinearOperator): target: MultiDomain MultiDomain with only one entry (key). """ - - def __init__(self, target): - super(MultiAdaptor, self).__init__() - if not isinstance(target, MultiDomain) or len(target) > 1: - raise TypeError - self._target = target - self._domain = list(target.values())[0] - - @property - def domain(self): - return self._domain - - @property - def target(self): - return self._target - - @property - def capability(self): - return self.TIMES | self.ADJOINT_TIMES - - def apply(self, x, mode): - self._check_input(x, mode) - key = list(self.target.keys())[0] - if mode == self.TIMES: - return MultiField({key: x}) - else: - return x[key] + if not isinstance(target, MultiDomain) or len(target) > 1: + raise TypeError + return SelectionOperator(target,target.keys()[0]).adjoint + self._target = target + self._domain = list(target.values())[0] diff --git a/nifty5/operators/symmetrizing_operator.py b/nifty5/operators/symmetrizing_operator.py index 49a4c4df37463f0b56484d8ac27ee720fe572ade..44d2aba7fbdbc4103e81bf5797c5430f88c04f30 100644 --- a/nifty5/operators/symmetrizing_operator.py +++ b/nifty5/operators/symmetrizing_operator.py @@ -4,6 +4,7 @@ from .endomorphic_operator import EndomorphicOperator from .. import dobj +# MR FIXME: we should make sure that the domain is a harmonic RGSpace, correct? class SymmetrizingOperator(EndomorphicOperator): def __init__(self, domain): self._domain = DomainTuple.make(domain)