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 |
