From 7334440bb90233f9881249a38954f2bd9367dd8a Mon Sep 17 00:00:00 2001 From: Gordian Edenhofer Date: Wed, 4 Dec 2019 17:29:25 +0100 Subject: [PATCH] correlated_field.py: Implement offset in finalize Allow for specifying either a Field/MultiField or a float as an offset for the correlated field during `finalize`. --- nifty6/library/correlated_fields.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/nifty6/library/correlated_fields.py b/nifty6/library/correlated_fields.py index 63a710fd..5571f081 100644 --- a/nifty6/library/correlated_fields.py +++ b/nifty6/library/correlated_fields.py @@ -32,6 +32,8 @@ from ..operators.operator import Operator from ..operators.simple_linear_operators import VdotOperator, ducktape from ..probing import StatCalculator from ..sugar import from_global_data, full, makeDomain +from ..field import Field +from ..multi_field import MultiField def _reshaper(x, N): @@ -467,11 +469,16 @@ class CorrelatedFieldMaker: """ offset vs zeromode: volume factor """ + op = self._finalize_from_op() if offset is not None: - raise NotImplementedError - offset = float(offset) + # Deviations from this offset must not be considered here as they + # are learned by the zeromode + if isinstance(offset, (Field, MultiField)): + op = Adder(offset) @ op + else: + offset = float(offset) + op = Adder(full(op.target, offset)) @ op - op = self._finalize_from_op() if prior_info > 0: from ..sugar import from_random samps = [ -- GitLab