From 456d224f9707c52fa125ed9f0f2c9f80afcadece Mon Sep 17 00:00:00 2001 From: Philipp Schmidt <philipp.schmidt@xfel.eu> Date: Tue, 1 Nov 2022 09:44:08 +0100 Subject: [PATCH] Add from_file= argument to DataFile.create_index --- src/cal_tools/files.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/cal_tools/files.py b/src/cal_tools/files.py index 21fb85520..9d18d72de 100644 --- a/src/cal_tools/files.py +++ b/src/cal_tools/files.py @@ -157,7 +157,7 @@ class DataFile(h5py.File): return self def create_index(self, train_ids, timestamps=None, flags=None, - origins=None): + origins=None, from_file=None): """Create global INDEX datasets. These datasets are agnostic of any source and describe the @@ -171,11 +171,30 @@ class DataFile(h5py.File): initial origin of each train, 1 if omitted. origins (array_like, optional): Which source is the initial origin of each train, -1 (time server) if omitted. + from_file (str, Path or extra_data.FileAccess, optional): + Existing data file to take timestamps, flags and origins + information from if present. Returns: None """ + if from_file is not None: + from extra_data import FileAccess + + if not isinstance(from_file, FileAccess): + from_file = FileAccess(from_file) + + sel_trains = np.isin(from_file.train_ids, train_ids) + + if 'INDEX/timestamp' in from_file.file: + timestamps = from_file.file['INDEX/timestamp'][sel_trains] + + flags = from_file.validity_flag[sel_trains] + + if 'INDEX/origin' in from_file.file: + origins = from_file.file['INDEX/origin'][sel_trains] + self.create_dataset('INDEX/trainId', data=train_ids, dtype=np.uint64) if timestamps is None: -- GitLab