diff --git a/nifty5/domains/log_rg_space.py b/nifty5/domains/log_rg_space.py index 3384c9dd062823ad4dd9bce3381edafe553ba973..8b9c6095c0a503206bd80caa62aa9ff8f59b7f2f 100644 --- a/nifty5/domains/log_rg_space.py +++ b/nifty5/domains/log_rg_space.py @@ -93,10 +93,10 @@ class LogRGSpace(StructuredDomain): Returns ------- LogRGSpace - The parter domain + The partner domain """ codomain_bindistances = 1./(self.bindistances*self.shape) - return LogRGSpace(self.shape, codomain_bindistances, self._t_0, True) + return LogRGSpace(self.shape, codomain_bindistances, self._t_0, not self.harmonic) def get_k_length_array(self): """Generates array of distances to origin of the space. diff --git a/nifty5/domains/rg_space.py b/nifty5/domains/rg_space.py index 4fd3829a4a73639045047336e5106227c3461059..344af55fba397c74bbe507891f9251dd220097c9 100644 --- a/nifty5/domains/rg_space.py +++ b/nifty5/domains/rg_space.py @@ -181,7 +181,7 @@ class RGSpace(StructuredDomain): Returns ------- RGSpace - The parter domain + The partner domain """ distances = 1. / (np.array(self.shape)*np.array(self.distances)) return RGSpace(self.shape, distances, not self.harmonic) diff --git a/nifty5/operators/block_diagonal_operator.py b/nifty5/operators/block_diagonal_operator.py index fef27414a0e3b7dcc1303dd1e513c52ad527721c..ad338655951c144eac1f4b08dfa69b88bc5ad060 100644 --- a/nifty5/operators/block_diagonal_operator.py +++ b/nifty5/operators/block_diagonal_operator.py @@ -30,7 +30,7 @@ class BlockDiagonalOperator(EndomorphicOperator): Domain and target of the operator. operators : dict Dictionary with subdomain names as keys and :class:`LinearOperator` s - as items. + as items. Any missing item will be treated as unity operator. """ def __init__(self, domain, operators): if not isinstance(domain, MultiDomain): @@ -44,13 +44,17 @@ class BlockDiagonalOperator(EndomorphicOperator): def apply(self, x, mode): self._check_input(x, mode) - val = tuple(op.apply(v, mode=mode) if op is not None else None + val = tuple(op.apply(v, mode=mode) if op is not None else v for op, v in zip(self._ops, x.values())) return MultiField(self._domain, val) def draw_sample(self, from_inverse=False, dtype=np.float64): - val = tuple(op.draw_sample(from_inverse, dtype) - if op is not None else None for op in self._ops) + from ..sugar import from_random + val = tuple( + op.draw_sample(from_inverse, dtype) + if op is not None + else from_random('normal', self._domain[key], dtype=dtype) + for op, key in zip(self._ops, self._domain.keys())) return MultiField(self._domain, val) def _combine_chain(self, op):