Mercurial > repos > rv43 > tomo
comparison tomo.py @ 38:c09b8ee8f68f draft
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 62ea2c5a3629c5e4b5b59fadc282214326f093aa"
author | rv43 |
---|---|
date | Tue, 19 Apr 2022 18:28:07 +0000 |
parents | 51dc93d0806a |
children | 8a3036b0a34c |
comparison
equal
deleted
inserted
replaced
37:51dc93d0806a | 38:c09b8ee8f68f |
---|---|
1145 t0 = time() | 1145 t0 = time() |
1146 # recon_sinogram = filters.gaussian(recon_sinogram, 3.0) | 1146 # recon_sinogram = filters.gaussian(recon_sinogram, 3.0) |
1147 recon_sinogram = spi.gaussian_filter(recon_sinogram, 0.5) | 1147 recon_sinogram = spi.gaussian_filter(recon_sinogram, 0.5) |
1148 recon_clean = np.expand_dims(recon_sinogram, axis=0) | 1148 recon_clean = np.expand_dims(recon_sinogram, axis=0) |
1149 del recon_sinogram | 1149 del recon_sinogram |
1150 logging.info(f'tomopy.misc.corr.remove_ring start on {num_core} cores') | 1150 t1 = time() |
1151 logging.info(f'running tomopy.misc.corr.remove_ring on {num_core} cores ...') | |
1151 recon_clean = tomopy.misc.corr.remove_ring(recon_clean, rwidth=17, ncore=num_core) | 1152 recon_clean = tomopy.misc.corr.remove_ring(recon_clean, rwidth=17, ncore=num_core) |
1152 logging.info('tomopy.misc.corr.remove_ring end') | 1153 logging.info('... tomopy.misc.corr.remove_ring took {time()-t1:.2f} seconds!') |
1153 logging.debug(f'filtering and removing ring artifact took {time()-t0:.2f} seconds!') | 1154 logging.debug(f'filtering and removing ring artifact took {time()-t0:.2f} seconds!') |
1154 return recon_clean | 1155 return recon_clean |
1155 | 1156 |
1156 def _plotEdgesOnePlane(self, recon_plane, title, path=None, weight=0.001): | 1157 def _plotEdgesOnePlane(self, recon_plane, title, path=None, weight=0.001): |
1157 # RV parameters for the denoise, gaussian, and ring removal will be different for different feature sizes | 1158 # RV parameters for the denoise, gaussian, and ring removal will be different for different feature sizes |
1183 # need index order column,theta for iradon, so take transpose | 1184 # need index order column,theta for iradon, so take transpose |
1184 sinogram_T = sinogram.T | 1185 sinogram_T = sinogram.T |
1185 center = sinogram.shape[1]/2 | 1186 center = sinogram.shape[1]/2 |
1186 | 1187 |
1187 # try automatic center finding routines for initial value | 1188 # try automatic center finding routines for initial value |
1189 t0 = time() | |
1188 if num_core > 24: | 1190 if num_core > 24: |
1189 logging.info('tomopy.find_center_vo start on 24 cores') | 1191 logging.info('running tomopy.find_center_vo on 24 cores ...') |
1190 tomo_center = tomopy.find_center_vo(sinogram, ncore=24) | 1192 tomo_center = tomopy.find_center_vo(sinogram, ncore=24) |
1191 else: | 1193 else: |
1192 logging.info(f'tomopy.find_center_vo start on {num_core} cores') | 1194 logging.info(f'running tomopy.find_center_vo on {num_core} cores ...') |
1193 tomo_center = tomopy.find_center_vo(sinogram, ncore=num_core) | 1195 tomo_center = tomopy.find_center_vo(sinogram, ncore=num_core) |
1194 logging.info('tomopy.find_center_vo end') | 1196 logging.info('... tomopy.find_center_vo took {time()-t0:.2f} seconds!') |
1195 center_offset_vo = tomo_center-center | 1197 center_offset_vo = tomo_center-center |
1196 if self.test_mode: | 1198 if self.test_mode: |
1197 logging.info(f'Center at row {row} using Nghia Vo’s method = {center_offset_vo:.2f}') | 1199 logging.info(f'Center at row {row} using Nghia Vo’s method = {center_offset_vo:.2f}') |
1198 del sinogram_T | 1200 del sinogram_T |
1199 return float(center_offset_vo) | 1201 return float(center_offset_vo) |
1200 elif self.galaxy_flag: | 1202 elif self.galaxy_flag: |
1201 logging.info(f'Center at row {row} using Nghia Vo’s method = {center_offset_vo:.2f}') | 1203 logging.info(f'Center at row {row} using Nghia Vo’s method = {center_offset_vo:.2f}') |
1204 t0 = time() | |
1205 logging.info('running self._reconstructOnePlane on {num_core} cores ...') | |
1202 recon_plane = self._reconstructOnePlane(sinogram_T, tomo_center, thetas_deg, | 1206 recon_plane = self._reconstructOnePlane(sinogram_T, tomo_center, thetas_deg, |
1203 eff_pixel_size, cross_sectional_dim, False, num_core) | 1207 eff_pixel_size, cross_sectional_dim, False, num_core) |
1208 logging.info('... self._reconstructOnePlane took {time()-t0:.2f} seconds!') | |
1204 title = f'edges row{row} center offset{center_offset_vo:.2f} Vo' | 1209 title = f'edges row{row} center offset{center_offset_vo:.2f} Vo' |
1205 self._plotEdgesOnePlane(recon_plane, title, path='find_center_pngs') | 1210 self._plotEdgesOnePlane(recon_plane, title, path='find_center_pngs') |
1206 del recon_plane | 1211 del recon_plane |
1207 if not galaxy_param['center_type_selector']: | 1212 if not galaxy_param['center_type_selector']: |
1208 del sinogram_T | 1213 del sinogram_T |
1273 center_offsets = np.linspace(center_offset_low, center_offset_upp, num_center_offset) | 1278 center_offsets = np.linspace(center_offset_low, center_offset_upp, num_center_offset) |
1274 for center_offset in center_offsets: | 1279 for center_offset in center_offsets: |
1275 if center_offset == center_offset_vo: | 1280 if center_offset == center_offset_vo: |
1276 continue | 1281 continue |
1277 logging.info(f'center_offset = {center_offset:.2f}') | 1282 logging.info(f'center_offset = {center_offset:.2f}') |
1283 t0 = time() | |
1284 logging.info('running self._reconstructOnePlane on {num_core} cores ...') | |
1278 recon_plane = self._reconstructOnePlane(sinogram_T, center_offset+center, | 1285 recon_plane = self._reconstructOnePlane(sinogram_T, center_offset+center, |
1279 thetas_deg, eff_pixel_size, cross_sectional_dim, False, num_core) | 1286 thetas_deg, eff_pixel_size, cross_sectional_dim, False, num_core) |
1287 logging.info('... self._reconstructOnePlane took {time()-t0:.2f} seconds!') | |
1280 title = f'edges row{row} center_offset{center_offset:.2f}' | 1288 title = f'edges row{row} center_offset{center_offset:.2f}' |
1281 if self.galaxy_flag: | 1289 if self.galaxy_flag: |
1282 self._plotEdgesOnePlane(recon_plane, title, path='find_center_pngs') | 1290 self._plotEdgesOnePlane(recon_plane, title, path='find_center_pngs') |
1283 else: | 1291 else: |
1284 self._plotEdgesOnePlane(recon_plane, title) | 1292 self._plotEdgesOnePlane(recon_plane, title) |