Commit 309dd635 authored by Martin Reinecke's avatar Martin Reinecke
Browse files

Merge branch 'NIFTy_5' of into NIFTy_5

parents 794fab2a 0ce1b2ee
......@@ -259,5 +259,4 @@ class LinearOperator(Operator):
def _check_input(self, x, mode):
if self._dom(mode) != x.domain:
raise ValueError("The operator's and field's domains don't match.")
self._check_domain_equality(self._dom(mode), x.domain)
......@@ -32,6 +32,15 @@ from .linear_operator import LinearOperator
# collect the unstructured Fields.
class MaskOperator(LinearOperator):
def __init__(self, mask):
"""Implementation of a mask response
This operator takes a field, applies a mask and returns the values of
the field in a UnstructuredDomain. It can be used as response operator.
mask : Field
if not isinstance(mask, Field):
raise TypeError
......@@ -23,6 +23,17 @@ class Operator(NiftyMetaBase()):
The domain on which the Operator's output Field lives."""
return self._target
def _check_domain_equality(dom_op, dom_field):
if dom_op != dom_field:
s = "The operator's and field's domains don't match."
from ..domain_tuple import DomainTuple
from ..multi_domain import MultiDomain
if not isinstance(dom_op, [DomainTuple, MultiDomain]):
s += " Your operator's domain is neither a `DomainTuple`" \
" nor a `MultiDomain`."
raise ValueError(s)
def scale(self, factor):
if factor == 1:
return self
......@@ -66,8 +77,7 @@ class Operator(NiftyMetaBase()):
def _check_input(self, x):
from ..linearization import Linearization
d = if isinstance(x, Linearization) else x.domain
if self._domain != d:
raise ValueError("The operator's and field's domains don't match.")
self._check_domain_equality(self._domain, d)
def __call__(self, x):
if isinstance(x, Operator):
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment