From b445205fc46ad64a4928ac2a7a75f27a795ebe2b Mon Sep 17 00:00:00 2001 From: Rafael Gort <rafael.gort@xfel.eu> Date: Thu, 17 Sep 2020 23:15:54 +0200 Subject: [PATCH] convert all 16 modules in parallel, removed prints --- src/toolbox_scs/detectors/dssc.py | 48 +++++++++++++++++++------------ 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/src/toolbox_scs/detectors/dssc.py b/src/toolbox_scs/detectors/dssc.py index b1eb883..db5e699 100644 --- a/src/toolbox_scs/detectors/dssc.py +++ b/src/toolbox_scs/detectors/dssc.py @@ -355,11 +355,19 @@ class DSSC_Generator: pass def full_detector(self, dssc_data): - print('assemble full detector: ') + log.debug('start alignment of module data') # assemble full detector - q_data = joblib.Parallel(n_jobs=4) \ - (joblib.delayed(self.quadrant)(i, dssc_data) for i in [1, 2, 3, 4]) + module_data = joblib.Parallel(n_jobs=16) \ + (joblib.delayed(self.convert_module) + (n, dssc_data[n, :, :]) for n in range(16)) + log.debug('assemble converted module data in quadrants') + q_data = [] + for i in range(4): + i0 = i*4 + q_data.append(self.quadrant(i+1, module_data[i0:i0+4])) + + log.debug('align quadrants') # determine dimensions [qdimy, qdimx] = q_data[0].shape fdimy = np.max( @@ -425,48 +433,51 @@ class DSSC_Generator: return full_dssc - def quadrant(self, q, dssc_data): + def quadrant(self, q, module_data): """ q: quadrant index 0-3 dssc_data: (15, 128, 512) """ - print("collecting quadrant: Q" + str(q)) + log.debug("assembling quadrant: Q" + str(q)) if q == 1: - module0 = self.convert_module(0, dssc_data[0, :, :]) + module0 = module_data[0] mdimx = module0.shape[1] qu = [module0] - for n in range(1, 4): + for n, m in zip(range(1, 4), range(1, 4)): qu.append(np.zeros( (self.module_geodat[n, 0], mdimx), dtype='float32')) - qu.append(self.convert_module(n, dssc_data[n, :, :])) + qu.append(module_data[m]) + elif q == 2: - module0 = self.convert_module(4, dssc_data[4, :, :]) + module0 = module_data[0] mdimx = module0.shape[1] qu = [module0] - for n in range(5, 8): + for n, m in zip(range(5, 8), range(1, 4)): qu.append(np.zeros( (self.module_geodat[n, 0], mdimx), dtype='float32')) - qu.append(self.convert_module(n, dssc_data[n, :, :])) + qu.append(module_data[m]) + elif q == 3: - module0 = self.convert_module(11, dssc_data[11, :, :]) + module0 = module_data[3] mdimx = module0.shape[1] qu = [module0] - for n in range(10, 7, -1): + for n, m in zip(range(10, 7, -1), range(2, -1, -1)): qu.append(np.zeros( (self.module_geodat[n, 0], mdimx), dtype='float32')) - qu.append(self.convert_module(n, dssc_data[n, :, :])) + qu.append(module_data[m]) + elif q == 4: - module0 = self.convert_module(15, dssc_data[15, :, :]) + module0 = module_data[3] mdimx = module0.shape[1] qu = [module0] - for n in range(14, 11, -1): + for n, m in zip(range(14, 11, -1), range(2, -1, -1)): qu.append(np.zeros( (self.module_geodat[n, 0], mdimx), dtype='float32')) - qu.append(self.convert_module(n, dssc_data[n, :, :])) + qu.append(module_data[m]) return np.vstack(qu) @@ -478,7 +489,7 @@ class DSSC_Generator: returns the module in cartesian coordinates with the correct gap between tiles """ - print("processing module: " + str(m)) + log.debug("processing module: " + str(m)) tile_hex = self.split_module(module_hex) offset, flip_module = self._get_tile_geodat(m) @@ -491,7 +502,6 @@ class DSSC_Generator: if flip_module[0]: module_cart = np.flip(module_cart, axis=flip_module[1]) - # print('flipped module: ' + str(flip_module[1])) return module_cart -- GitLab