From 39856359ac648fa83f035c6f5dbbb3b6dd34dca5 Mon Sep 17 00:00:00 2001
From: Philipp Arras <c@philipp-arras.de>
Date: Fri, 13 May 2022 13:02:14 +0200
Subject: [PATCH] Use "multiplicative" for CalibrationLiklihood

---
 resolve/likelihood.py | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/resolve/likelihood.py b/resolve/likelihood.py
index 99e32643..885f2198 100644
--- a/resolve/likelihood.py
+++ b/resolve/likelihood.py
@@ -198,11 +198,10 @@ def CalibrationLikelihood(
     cops = _duplicate(_obj2list(calibration_operator, ift.Operator), len(obs))
     log_icovs = _duplicate(_obj2list(log_inverse_covariance_operator, ift.Operator), len(obs))
     model_d = _duplicate(_obj2list(model_visibilities, ift.Field), len(obs))
-    model_d = [ift.makeOp(mm) @ cop for mm, cop in zip(model_d, cops)]
 
     if len(obs) > 1:
         raise NotImplementedError
-    obs, model_d, log_icov = obs[0], model_d[0], log_icovs[0]
+    obs, model_d, log_icov, cop = obs[0], model_d[0], log_icovs[0]; cops[0]
 
     dt = DtypeConverter(model_d.target, np.complex128, obs.vis.dtype)
     dt_icov = DtypeConverter(model_d.target, np.float64, obs.weight.dtype)
@@ -213,11 +212,12 @@ def CalibrationLikelihood(
             inverse_covariance=obs.weight,
             nthreads=nthreads,
             mask=obs.mask,
+            multiplicative=dt(model_d)
         )
-        return e @ dt @ model_d
+        return e @ dt @ cop
     else:
         s0, s1 = "model data", "inverse covariance"
         e = VariableCovarianceDiagonalGaussianLikelihood(
             obs.vis, s0, s1, mask=obs.mask, nthreads=nthreads
         )
-        return e @ ((dt @ model_d).ducktape_left(s0) + (dt_icov @ log_icov).ducktape_left(s1))
+        return e @ ((dt @ model_d @ cop).ducktape_left(s0) + (dt_icov @ log_icov).ducktape_left(s1))
-- 
GitLab