From 39aee35a0b492c5dca5908bd4bdd8037612e9c98 Mon Sep 17 00:00:00 2001
From: Egor Sobolev <egor.sobolev@xfel.eu>
Date: Wed, 5 Jun 2024 11:31:10 +0200
Subject: [PATCH] Use numpy.split to split frame selection on train masks

---
 src/exdf/data_reduction/builtins.py | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/src/exdf/data_reduction/builtins.py b/src/exdf/data_reduction/builtins.py
index b35f485..88400cf 100644
--- a/src/exdf/data_reduction/builtins.py
+++ b/src/exdf/data_reduction/builtins.py
@@ -344,13 +344,9 @@ class LitFrames(ReductionMethod):
                  train_sel, nfrm, cell_id, [sel_type])
 
             # select frames for every train
-            i0 = 0
-            for i in range(len(train_sel)):
-                iN = i0 + nfrm[i]
-                self.select_xtdf(src,
-                                 by_id[[train_sel[i]]],
-                                 frame_sel[i0:iN])
-                i0 = iN
+            train_masks = np.split(frame_sel, np.cumsum(nfrm))
+            for train_id, mask in zip(train_sel, train_masks):
+                self.select_xtdf(src, by_id[[train_id]], mask)
 
     def print_report(self, sel, max_lines=20):
         report = sel.report()
-- 
GitLab