comparison tomo.py @ 22:ac2f726f9054 draft

"planemo upload for repository https://github.com/rolfverberg/galaxytools commit c38e9cb882bb790d6a5994b836719d1df494c92b"
author rv43
date Mon, 18 Apr 2022 19:55:01 +0000
parents 3caba2116858
children 3e336f5b6402
comparison
equal deleted inserted replaced
21:3caba2116858 22:ac2f726f9054
1181 # need index order column,theta for iradon, so take transpose 1181 # need index order column,theta for iradon, so take transpose
1182 sinogram_T = sinogram.T 1182 sinogram_T = sinogram.T
1183 center = sinogram.shape[1]/2 1183 center = sinogram.shape[1]/2
1184 1184
1185 # try automatic center finding routines for initial value 1185 # try automatic center finding routines for initial value
1186 print('OK2')
1186 tomo_center = tomopy.find_center_vo(sinogram, ncore=num_core) 1187 tomo_center = tomopy.find_center_vo(sinogram, ncore=num_core)
1187 center_offset_vo = tomo_center-center 1188 center_offset_vo = tomo_center-center
1188 if self.test_mode: 1189 if self.test_mode:
1189 logging.info(f'Center at row {row} using Nghia Vo’s method = {center_offset_vo:.2f}') 1190 logging.info(f'Center at row {row} using Nghia Vo’s method = {center_offset_vo:.2f}')
1190 del sinogram_T 1191 del sinogram_T
1194 recon_plane = self._reconstructOnePlane(sinogram_T, tomo_center, thetas_deg, 1195 recon_plane = self._reconstructOnePlane(sinogram_T, tomo_center, thetas_deg,
1195 eff_pixel_size, cross_sectional_dim, False, num_core) 1196 eff_pixel_size, cross_sectional_dim, False, num_core)
1196 title = f'edges row{row} center offset{center_offset_vo:.2f} Vo' 1197 title = f'edges row{row} center offset{center_offset_vo:.2f} Vo'
1197 self._plotEdgesOnePlane(recon_plane, title, path='find_center_pngs') 1198 self._plotEdgesOnePlane(recon_plane, title, path='find_center_pngs')
1198 del recon_plane 1199 del recon_plane
1200 print(f'center_type_selector = {center_type_selector}')
1199 if not galaxy_param['center_type_selector']: 1201 if not galaxy_param['center_type_selector']:
1200 del sinogram_T 1202 del sinogram_T
1201 return float(center_offset_vo) 1203 return float(center_offset_vo)
1202 else: 1204 else:
1203 print(f'Center at row {row} using Nghia Vo’s method = {center_offset_vo:.2f}') 1205 print(f'Center at row {row} using Nghia Vo’s method = {center_offset_vo:.2f}')
1261 center_offset_step = pyip.inputInt('Enter step size for center offset search '+ 1263 center_offset_step = pyip.inputInt('Enter step size for center offset search '+
1262 f'[1, {center_offset_upp-center_offset_low}]: ', 1264 f'[1, {center_offset_upp-center_offset_low}]: ',
1263 min=1, max=center_offset_upp-center_offset_low) 1265 min=1, max=center_offset_upp-center_offset_low)
1264 num_center_offset = 1+int((center_offset_upp-center_offset_low)/center_offset_step) 1266 num_center_offset = 1+int((center_offset_upp-center_offset_low)/center_offset_step)
1265 center_offsets = np.linspace(center_offset_low, center_offset_upp, num_center_offset) 1267 center_offsets = np.linspace(center_offset_low, center_offset_upp, num_center_offset)
1268 print(f'center_offsets = {center_offsets}')
1266 for center_offset in center_offsets: 1269 for center_offset in center_offsets:
1267 if center_offset == center_offset_vo: 1270 if center_offset == center_offset_vo:
1268 continue 1271 continue
1269 logging.info(f'center_offset = {center_offset:.2f}') 1272 logging.info(f'center_offset = {center_offset:.2f}')
1270 recon_plane = self._reconstructOnePlane(sinogram_T, center_offset+center, 1273 recon_plane = self._reconstructOnePlane(sinogram_T, center_offset+center,
1272 title = f'edges row{row} center_offset{center_offset:.2f}' 1275 title = f'edges row{row} center_offset{center_offset:.2f}'
1273 if self.galaxy_flag: 1276 if self.galaxy_flag:
1274 self._plotEdgesOnePlane(recon_plane, title, path='find_center_pngs') 1277 self._plotEdgesOnePlane(recon_plane, title, path='find_center_pngs')
1275 else: 1278 else:
1276 self._plotEdgesOnePlane(recon_plane, title) 1279 self._plotEdgesOnePlane(recon_plane, title)
1280 print('OK3')
1277 if self.galaxy_flag or pyip.inputInt('\nContinue (0) or end the search (1): ', 1281 if self.galaxy_flag or pyip.inputInt('\nContinue (0) or end the search (1): ',
1278 min=0, max=1): 1282 min=0, max=1):
1279 break 1283 break
1280 1284
1281 del sinogram_T 1285 del sinogram_T
1717 # Lower row center 1721 # Lower row center
1718 use_row = 'no' 1722 use_row = 'no'
1719 use_center = 'no' 1723 use_center = 'no'
1720 row = center_rows[0] 1724 row = center_rows[0]
1721 if self.test_mode or self.galaxy_flag: 1725 if self.test_mode or self.galaxy_flag:
1722 logging.info(f'row = {row} n1 = {n1} n2 = {n2}')
1723 assert(msnc.is_int(row, n1, n2-2)) 1726 assert(msnc.is_int(row, n1, n2-2))
1724 if msnc.is_int(row, n1, n2-2): 1727 if msnc.is_int(row, n1, n2-2):
1725 if self.test_mode or self.galaxy_flag: 1728 if self.test_mode or self.galaxy_flag:
1726 use_row = 'yes' 1729 use_row = 'yes'
1727 else: 1730 else:
1780 if use_row != 'no': 1783 if use_row != 'no':
1781 center_offset = find_center.get('upper_center_offset') 1784 center_offset = find_center.get('upper_center_offset')
1782 if msnc.is_num(center_offset): 1785 if msnc.is_num(center_offset):
1783 use_center = pyip.inputYesNo('Current upper center offset = '+ 1786 use_center = pyip.inputYesNo('Current upper center offset = '+
1784 f'{center_offset}, use this value ([y]/n)? ', blank=True) 1787 f'{center_offset}, use this value ([y]/n)? ', blank=True)
1788 logging.info(f'use_center = {use_center}')
1789 logging.info(f'use_row = {use_row}')
1785 if use_center == 'no': 1790 if use_center == 'no':
1786 if use_row == 'no': 1791 if use_row == 'no':
1787 if not self.test_mode: 1792 if not self.test_mode:
1788 msnc.quickImshow(center_stack[:,0,:], title=f'theta={theta_start}', 1793 msnc.quickImshow(center_stack[:,0,:], title=f'theta={theta_start}',
1789 aspect='auto') 1794 aspect='auto')
1792 if row == '': 1797 if row == '':
1793 row = n2-1 1798 row = n2-1
1794 if self.save_plots_only: 1799 if self.save_plots_only:
1795 msnc.clearFig(f'theta={theta_start}') 1800 msnc.clearFig(f'theta={theta_start}')
1796 # center_stack order: row,theta,column 1801 # center_stack order: row,theta,column
1797 center_offset = self._findCenterOnePlane(center_stack[row,:,:], row, thetas_deg, 1802 center_offset = self._findOenterOnePlane(center_stack[row,:,:], row, thetas_deg,
1798 eff_pixel_size, cross_sectional_dim, num_core=num_core, 1803 eff_pixel_size, cross_sectional_dim, num_core=num_core,
1799 galaxy_param=galaxy_param) 1804 galaxy_param=galaxy_param)
1800 logging.info(f'upper_center_offset = {center_offset:.2f}') 1805 logging.info(f'upper_center_offset = {center_offset:.2f}')
1801 del center_stack 1806 del center_stack
1802 1807