From 9f56921072d5973eb08ad973953e22395f7e93f5 Mon Sep 17 00:00:00 2001 From: Ivan Usov Date: Wed, 8 Sep 2021 14:29:54 +0200 Subject: [PATCH] Average counts in case of almost identical scans Fix #37 --- pyzebra/ccl_process.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/pyzebra/ccl_process.py b/pyzebra/ccl_process.py index 0ff1d88..0abc28d 100644 --- a/pyzebra/ccl_process.py +++ b/pyzebra/ccl_process.py @@ -89,13 +89,20 @@ def merge_scans(scan_into, scan_from): scan_into["merged_scans"] = [] scan_into["merged_scans"].append(scan_from) - omega = np.concatenate((scan_into["omega"], scan_from["omega"])) - counts = np.concatenate((scan_into["counts"], scan_from["counts"])) + if ( + scan_into["omega"].shape == scan_from["omega"].shape + and np.max(np.abs(scan_into["omega"] - scan_from["omega"])) < 0.0005 + ): + scan_into["counts"] = (scan_into["counts"] + scan_from["counts"]) / 2 - index = np.argsort(omega) + else: + omega = np.concatenate((scan_into["omega"], scan_from["omega"])) + counts = np.concatenate((scan_into["counts"], scan_from["counts"])) - scan_into["omega"] = omega[index] - scan_into["counts"] = counts[index] + index = np.argsort(omega) + + scan_into["omega"] = omega[index] + scan_into["counts"] = counts[index] scan_from["active"] = False