Mercurial > repos > rv43 > tomo
comparison tomo.py @ 17:7f723407beb3 draft
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d1744188635274aa3d0bb0e10fcb683602a23b59"
| author | rv43 |
|---|---|
| date | Fri, 15 Apr 2022 20:26:25 +0000 |
| parents | 1bcca1f2adb4 |
| children | b0a816c8f66c |
comparison
equal
deleted
inserted
replaced
| 16:44f168e1e14f | 17:7f723407beb3 |
|---|---|
| 1875 self.config = msnc.update('config.txt', 'check_centers', True, 'find_centers') | 1875 self.config = msnc.update('config.txt', 'check_centers', True, 'find_centers') |
| 1876 | 1876 |
| 1877 def reconstructTomoStacks(self, galaxy_param=None, num_core=None): | 1877 def reconstructTomoStacks(self, galaxy_param=None, num_core=None): |
| 1878 """Reconstruct tomography stacks. | 1878 """Reconstruct tomography stacks. |
| 1879 """ | 1879 """ |
| 1880 print('OK1') | |
| 1880 if num_core is None: | 1881 if num_core is None: |
| 1881 num_core = self.num_core | 1882 num_core = self.num_core |
| 1882 logging.debug('Reconstruct tomography stacks') | 1883 logging.debug('Reconstruct tomography stacks') |
| 1883 stacks = self.config['stack_info']['stacks'] | 1884 stacks = self.config['stack_info']['stacks'] |
| 1884 assert(len(self.tomo_stacks) == self.config['stack_info']['num']) | 1885 assert(len(self.tomo_stacks) == self.config['stack_info']['num']) |
| 1885 assert(len(self.tomo_stacks) == len(stacks)) | 1886 assert(len(self.tomo_stacks) == len(stacks)) |
| 1886 assert(len(self.tomo_recon_stacks) == len(stacks)) | 1887 assert(len(self.tomo_recon_stacks) == len(stacks)) |
| 1888 print('OK2') | |
| 1887 if self.galaxy_flag: | 1889 if self.galaxy_flag: |
| 1888 assert(isinstance(galaxy_param, dict)) | 1890 assert(isinstance(galaxy_param, dict)) |
| 1889 # Get rotation axis centers | 1891 # Get rotation axis centers |
| 1890 center_offsets = galaxy_param['center_offsets'] | 1892 center_offsets = galaxy_param['center_offsets'] |
| 1891 assert(isinstance(center_offsets, list) and len(center_offsets) == 2) | 1893 assert(isinstance(center_offsets, list) and len(center_offsets) == 2) |
| 1897 if galaxy_param: | 1899 if galaxy_param: |
| 1898 logging.warning('Ignoring galaxy_param in reconstructTomoStacks (only for Galaxy)') | 1900 logging.warning('Ignoring galaxy_param in reconstructTomoStacks (only for Galaxy)') |
| 1899 galaxy_param = None | 1901 galaxy_param = None |
| 1900 lower_center_offset = None | 1902 lower_center_offset = None |
| 1901 upper_center_offset = None | 1903 upper_center_offset = None |
| 1904 print('OK3') | |
| 1902 | 1905 |
| 1903 # Get rotation axis rows and centers | 1906 # Get rotation axis rows and centers |
| 1904 find_center = self.config['find_center'] | 1907 find_center = self.config['find_center'] |
| 1905 lower_row = find_center.get('lower_row') | 1908 lower_row = find_center.get('lower_row') |
| 1906 if lower_row is None: | 1909 if lower_row is None: |
| 1923 logging.error('Unable to read upper_center_offset from config') | 1926 logging.error('Unable to read upper_center_offset from config') |
| 1924 return | 1927 return |
| 1925 center_slope = (upper_center_offset-lower_center_offset)/(upper_row-lower_row) | 1928 center_slope = (upper_center_offset-lower_center_offset)/(upper_row-lower_row) |
| 1926 | 1929 |
| 1927 # Set thetas (in radians) | 1930 # Set thetas (in radians) |
| 1931 print('OK4') | |
| 1928 theta_range = self.config['theta_range'] | 1932 theta_range = self.config['theta_range'] |
| 1929 theta_start = theta_range['start'] | 1933 theta_start = theta_range['start'] |
| 1930 theta_end = theta_range['end'] | 1934 theta_end = theta_range['end'] |
| 1931 num_theta = theta_range['num'] | 1935 num_theta = theta_range['num'] |
| 1932 num_theta_skip = self.config['preprocess'].get('num_theta_skip', 0) | 1936 num_theta_skip = self.config['preprocess'].get('num_theta_skip', 0) |
| 1933 thetas = np.radians(np.linspace(theta_start, theta_end, | 1937 thetas = np.radians(np.linspace(theta_start, theta_end, |
| 1934 int(num_theta/(num_theta_skip+1)), endpoint=False)) | 1938 int(num_theta/(num_theta_skip+1)), endpoint=False)) |
| 1935 | 1939 |
| 1940 print('OK5') | |
| 1936 # Reconstruct tomo stacks | 1941 # Reconstruct tomo stacks |
| 1937 zoom_perc = self.config['preprocess'].get('zoom_perc', 100) | 1942 zoom_perc = self.config['preprocess'].get('zoom_perc', 100) |
| 1938 if zoom_perc == 100: | 1943 if zoom_perc == 100: |
| 1939 basetitle = 'recon stack full' | 1944 basetitle = 'recon stack full' |
| 1940 else: | 1945 else: |
| 1958 continue | 1963 continue |
| 1959 stack['reconstructed'] = False | 1964 stack['reconstructed'] = False |
| 1960 if not self.tomo_stacks[i].size: | 1965 if not self.tomo_stacks[i].size: |
| 1961 self.tomo_stacks[i], available = self._loadTomo('red stack', index, | 1966 self.tomo_stacks[i], available = self._loadTomo('red stack', index, |
| 1962 required=True) | 1967 required=True) |
| 1968 print(f'self.tomo_stacks.shape = {self.tomo_stacks[i].shape}') | |
| 1963 if not self.tomo_stacks[i].size: | 1969 if not self.tomo_stacks[i].size: |
| 1964 logging.error(f'Unable to load tomography stack {index} for reconstruction') | 1970 logging.error(f'Unable to load tomography stack {index} for reconstruction') |
| 1965 stack[i]['preprocessed'] = False | 1971 stack[i]['preprocessed'] = False |
| 1966 load_error = True | 1972 load_error = True |
| 1967 continue | 1973 continue |
| 1987 self._saveTomo('recon stack', self.tomo_recon_stacks[i], index) | 1993 self._saveTomo('recon stack', self.tomo_recon_stacks[i], index) |
| 1988 # else: | 1994 # else: |
| 1989 # np.savetxt(self.output_folder+f'recon_stack_{index}.txt', | 1995 # np.savetxt(self.output_folder+f'recon_stack_{index}.txt', |
| 1990 # self.tomo_recon_stacks[i][row_slice,:,:], fmt='%.6e') | 1996 # self.tomo_recon_stacks[i][row_slice,:,:], fmt='%.6e') |
| 1991 self.tomo_stacks[i] = np.array([]) | 1997 self.tomo_stacks[i] = np.array([]) |
| 1998 print('OK6') | |
| 1992 | 1999 |
| 1993 # Update config and save to file | 2000 # Update config and save to file |
| 1994 stack['reconstructed'] = True | 2001 stack['reconstructed'] = True |
| 1995 combine_stacks = self.config.get('combine_stacks') | 2002 combine_stacks = self.config.get('combine_stacks') |
| 1996 if combine_stacks and index in combine_stacks.get('stacks', []): | 2003 if combine_stacks and index in combine_stacks.get('stacks', []): |
| 1997 combine_stacks['stacks'].remove(index) | 2004 combine_stacks['stacks'].remove(index) |
| 1998 self.cf.saveFile(self.config_out) | 2005 self.cf.saveFile(self.config_out) |
| 1999 | 2006 |
| 2007 print('OK7') | |
| 2000 # Save reconstructed tomography stack to file | 2008 # Save reconstructed tomography stack to file |
| 2001 if self.galaxy_flag: | 2009 if self.galaxy_flag: |
| 2002 t0 = time() | 2010 t0 = time() |
| 2003 output_name = galaxy_param['output_name'] | 2011 output_name = galaxy_param['output_name'] |
| 2004 logging.info(f'Saving reconstructed tomography stack to {output_name} ...') | 2012 logging.info(f'Saving reconstructed tomography stack to {output_name} ...') |
