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.