Mercurial > repos > rv43 > tomo
changeset 34:63de912323e5 draft
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit c81dfe083e164b51b3688e512f2a0b00b953851c"
author | rv43 |
---|---|
date | Tue, 19 Apr 2022 16:40:34 +0000 |
parents | afb612b64f26 |
children | 20829cd7aaef |
files | tomo.py |
diffstat | 1 files changed, 7 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/tomo.py Tue Apr 19 14:59:12 2022 +0000 +++ b/tomo.py Tue Apr 19 16:40:34 2022 +0000 @@ -1300,7 +1300,6 @@ # RV should we remove rings? # https://tomopy.readthedocs.io/en/latest/api/tomopy.misc.corr.html # RV: Add an option to do (extra) secondary iterations later or to do some sort of convergence test? - print(f'OK AA row_bounds = {row_bounds}') if row_bounds is None: row_bounds = [0, tomo_stack.shape[0]] else: @@ -1318,19 +1317,17 @@ raise ValueError('center_offsets dimension mismatch in reconstructOneTomoStack') centers = center_offsets centers += tomo_stack.shape[2]/2 - print(f'num_core = {num_core}') - print(f'thetas = {thetas}') - print(f'centers = {centers}') + # RV hangs here with more than 24 cores and sge_64G_4 if True: tomo_stack = tomopy.prep.stripe.remove_stripe_fw( tomo_stack[row_bounds[0]:row_bounds[1]], sigma=sigma, ncore=num_core) else: tomo_stack = tomo_stack[row_bounds[0]:row_bounds[1]] - print('OK BB') + logging.info('performing initial reconstruction') tomo_recon_stack = tomopy.recon(tomo_stack, thetas, centers, sinogram_order=True, algorithm=algorithm, ncore=num_core) - print('OK CC') if run_secondary_sirt and secondary_iter > 0: + logging.info(f'running {secondary_iter} secondary iterations') #options = {'method':'SIRT_CUDA', 'proj_type':'cuda', 'num_iter':secondary_iter} #RV: doesn't work for me: "Error: CUDA error 803: system has unsupported display driver / # cuda driver combination." @@ -1342,7 +1339,6 @@ tomo_recon_stack = tomopy.recon(tomo_stack, thetas, centers, init_recon=tomo_recon_stack, options=options, sinogram_order=True, algorithm=tomopy.astra, ncore=num_core) - print('OK DD') if True: tomopy.misc.corr.remove_ring(tomo_recon_stack, rwidth=rwidth, out=tomo_recon_stack, ncore=num_core) @@ -1895,7 +1891,10 @@ """ if num_core is None: num_core = self.num_core - logging.info(f'num_core = {num_core}') + logging.info(f'num_core available = {num_core}') + if num_core > 24: + num_core = 24 + logging.info(f'num_core used = {num_core}') if self.galaxy_flag: assert(galaxy_param) if not os.path.exists('center_slice_pngs'): @@ -1905,7 +1904,6 @@ assert(len(self.tomo_stacks) == self.config['stack_info']['num']) assert(len(self.tomo_stacks) == len(stacks)) assert(len(self.tomo_recon_stacks) == len(stacks)) - print('OK1') if self.galaxy_flag: assert(isinstance(galaxy_param, dict)) # Get rotation axis centers @@ -1923,7 +1921,6 @@ upper_center_offset = None # Get rotation axis rows and centers - print('OK2') find_center = self.config['find_center'] lower_row = find_center.get('lower_row') if lower_row is None: @@ -1957,7 +1954,6 @@ int(num_theta/(num_theta_skip+1)), endpoint=False)) # Reconstruct tomo stacks - print('OK3') zoom_perc = self.config['preprocess'].get('zoom_perc', 100) if zoom_perc == 100: basetitle = 'recon stack fullres' @@ -1970,7 +1966,6 @@ # reconstructed stack order for each one in stack : row/z,x,y # preprocessed stack order for each one in stack: row,theta,column index = stack['index'] - print(f'OK4 {i} a') if not self.galaxy_flag: available = False if stack.get('reconstructed', False): @@ -1981,7 +1976,6 @@ assert(stack.get('preprocessed', False) == True) assert(stack.get('reconstructed', False) == True) continue - print(f'OK4 {i} b size = {self.tomo_stacks[i].size}') stack['reconstructed'] = False if not self.tomo_stacks[i].size: self.tomo_stacks[i], available = self._loadTomo('red stack', index, @@ -1991,16 +1985,13 @@ stack[i]['preprocessed'] = False load_error = True continue - print(f'lower_row = {lower_row} upper_row = {upper_row} self.tomo_stacks[i].shape[0] = {self.tomo_stacks[i].shape[0]}') assert(0 <= lower_row < upper_row < self.tomo_stacks[i].shape[0]) center_offsets = [lower_center_offset-lower_row*center_slope, upper_center_offset+(self.tomo_stacks[i].shape[0]-1-upper_row)*center_slope] t0 = time() - print(f'OK4 {i} c') self.tomo_recon_stacks[i]= self._reconstructOneTomoStack(self.tomo_stacks[i], thetas, center_offsets=center_offsets, sigma=0.1, num_core=num_core, algorithm='gridrec', run_secondary_sirt=True, secondary_iter=25) - print(f'OK4 {i} d') logging.info(f'Reconstruction of stack {index} took {time()-t0:.2f} seconds!') if self.galaxy_flag: x_slice = int(self.tomo_stacks[i].shape[0]/2) @@ -2035,10 +2026,8 @@ if combine_stacks and index in combine_stacks.get('stacks', []): combine_stacks['stacks'].remove(index) self.cf.saveFile(self.config_out) - print(f'OK4 {i} e') # Save reconstructed tomography stack to file - print('OK5') if self.galaxy_flag: t0 = time() output_name = galaxy_param['output_name'] @@ -2047,7 +2036,6 @@ for stack,tomo_stack in zip(stacks,self.tomo_recon_stacks)} np.savez(output_name, **save_stacks) logging.info(f'... done in {time()-t0:.2f} seconds!') - print('OK6') def combineTomoStacks(self): """Combine the reconstructed tomography stacks.