From 5265bd32ae580f7af7539181d56b48c410ff7d7c Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (o)" <j.wuttke@fz-juelich.de>
Date: Thu, 21 Sep 2023 17:31:21 +0200
Subject: [PATCH] wrapped for Py

---
 Wrap/Swig/libBornAgainSim.i  | 21 +++++++++++++++++++++
 auto/Wrap/libBornAgainSim.py | 21 +++++++++++++++++++++
 2 files changed, 42 insertions(+)

diff --git a/Wrap/Swig/libBornAgainSim.i b/Wrap/Swig/libBornAgainSim.i
index be08a16266f..5722cacee59 100644
--- a/Wrap/Swig/libBornAgainSim.i
+++ b/Wrap/Swig/libBornAgainSim.i
@@ -188,6 +188,27 @@ class ObserverCallbackWrapper(PyObserverCallback):
         self.callback_container.append(wrp)
         return self.addSimulationAndData_cpp(wrp, data, *args, **kwargs)
 
+    def addFitPair(self, callback, expData, *args):
+        """
+        Sets simulation and experimental data to the fit objective.
+        Optionally accepts experimental data uncertainties and
+        user-defined dataset weight.
+
+        Arguments:
+
+        callback -- user-defined function returning fully-defined bornagain.ISimulation object.
+        The function must use fit parameter dictionary as its input.
+
+        expData -- Datafield containing experimental data.
+
+        weight -- user-defined weight of the dataset. If not specified, defaults to 1.0.
+        """
+        if not hasattr(self, 'callback_container'):
+            self.callback_container = []
+        wrp = SimulationBuilderWrapper(callback)
+        self.callback_container.append(wrp) # needed ???
+        return self.addFitPair_cpp(wrp, data, *args)
+
     def convert_params(self, params):
         """
         Converts parameters to what FitObjective::evaluate expects
diff --git a/auto/Wrap/libBornAgainSim.py b/auto/Wrap/libBornAgainSim.py
index d43d6838a99..da1f7fe86b3 100644
--- a/auto/Wrap/libBornAgainSim.py
+++ b/auto/Wrap/libBornAgainSim.py
@@ -2451,6 +2451,27 @@ class FitObjective(object):
         self.callback_container.append(wrp)
         return self.addSimulationAndData_cpp(wrp, data, *args, **kwargs)
 
+    def addFitPair(self, callback, expData, *args):
+        """
+        Sets simulation and experimental data to the fit objective.
+        Optionally accepts experimental data uncertainties and
+        user-defined dataset weight.
+
+        Arguments:
+
+        callback -- user-defined function returning fully-defined bornagain.ISimulation object.
+        The function must use fit parameter dictionary as its input.
+
+        expData -- Datafield containing experimental data.
+
+        weight -- user-defined weight of the dataset. If not specified, defaults to 1.0.
+        """
+        if not hasattr(self, 'callback_container'):
+            self.callback_container = []
+        wrp = SimulationBuilderWrapper(callback)
+        self.callback_container.append(wrp) # needed ???
+        return self.addFitPair_cpp(wrp, data, *args)
+
     def convert_params(self, params):
         """
         Converts parameters to what FitObjective::evaluate expects
-- 
GitLab