Mercurial > repos > rv43 > tomo
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 |