Mercurial > repos > rv43 > tomo
annotate tomo.py @ 7:845270a96464 draft
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
| author | rv43 | 
|---|---|
| date | Thu, 07 Apr 2022 21:09:58 +0000 | 
| parents | f9c52762c32c | 
| children | ec7c3e84d611 | 
| rev | line source | 
|---|---|
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1 #!/usr/bin/env python3 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 3 # -*- coding: utf-8 -*- | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 4 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 5 Created on Fri Dec 10 09:54:37 2021 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 6 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 7 @author: rv43 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 8 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 9 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 10 import logging | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 11 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 12 import os | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 13 import sys | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 14 import getopt | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 15 import re | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 16 import io | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 17 try: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 18 import pyinputplus as pyip | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 19 except: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 20 pass | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 21 import argparse | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 22 import numpy as np | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 23 import numexpr as ne | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 24 import multiprocessing as mp | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 25 import scipy.ndimage as spi | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 26 import tomopy | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 27 from time import time | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 28 from skimage.transform import iradon | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 29 from skimage.restoration import denoise_tv_chambolle | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 30 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 31 import msnc_tools as msnc | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 32 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 33 class set_numexpr_threads: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 34 | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 35 def __init__(self, num_core): | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 36 cpu_count = mp.cpu_count() | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 37 logging.debug(f'start: num_core={num_core} cpu_count={cpu_count}') | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 38 if num_core is None or num_core < 1 or num_core > cpu_count: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 39 self.num_core = cpu_count | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 40 else: | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 41 self.num_core = num_core | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 42 logging.debug(f'self.num_core={self.num_core}') | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 43 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 44 def __enter__(self): | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 45 self.num_core_org = ne.set_num_threads(self.num_core) | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 46 logging.debug(f'self.num_core={self.num_core}') | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 47 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 48 def __exit__(self, exc_type, exc_value, traceback): | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 49 ne.set_num_threads(self.num_core_org) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 50 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 51 class ConfigTomo(msnc.Config): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 52 """Class for processing a config file. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 53 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 54 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 55 def __init__(self, config_file=None, config_dict=None): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 56 super().__init__(config_file, config_dict) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 57 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 58 def _validate_txt(self): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 59 """Returns False if any required config parameter is illegal or missing. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 60 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 61 is_valid = True | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 62 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 63 # Check for required first-level keys | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 64 pars_required = ['tdf_data_path', 'tbf_data_path', 'detector_id'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 65 pars_missing = [] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 66 is_valid = super().validate(pars_required, pars_missing) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 67 if len(pars_missing) > 0: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 68 logging.error(f'Missing item(s) in config file: {", ".join(pars_missing)}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 69 self.detector_id = self.config.get('detector_id') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 70 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 71 # Find tomography dark field images file/folder | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 72 self.tdf_data_path = self.config.get('tdf_data_path') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 73 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 74 # Find tomography bright field images file/folder | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 75 self.tbf_data_path = self.config.get('tbf_data_path') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 76 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 77 # Check number of tomography image stacks | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 78 self.num_tomo_stacks = self.config.get('num_tomo_stacks', 1) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 79 if not msnc.is_int(self.num_tomo_stacks, 1): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 80 self.num_tomo_stacks = None | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 81 msnc.illegal_value('num_tomo_stacks', self.num_tomo_stacks, 'config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 82 return False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 83 logging.info(f'num_tomo_stacks = {self.num_tomo_stacks}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 84 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 85 # Find tomography images file/folders and stack parameters | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 86 tomo_data_paths_indices = sorted({key:value for key,value in self.config.items() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 87 if 'tomo_data_path' in key}.items()) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 88 if len(tomo_data_paths_indices) != self.num_tomo_stacks: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 89 logging.error(f'Incorrect number of tomography data path names in config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 90 is_valid = False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 91 self.tomo_data_paths = [tomo_data_paths_indices[i][1] for i in range(self.num_tomo_stacks)] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 92 self.tomo_data_indices = [msnc.get_trailing_int(tomo_data_paths_indices[i][0]) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 93 if msnc.get_trailing_int(tomo_data_paths_indices[i][0]) else None | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 94 for i in range(self.num_tomo_stacks)] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 95 tomo_ref_height_indices = sorted({key:value for key,value in self.config.items() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 96 if 'z_pos' in key}.items()) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 97 if self.num_tomo_stacks > 1 and len(tomo_ref_height_indices) != self.num_tomo_stacks: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 98 logging.error(f'Incorrect number of tomography reference heights in config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 99 is_valid = False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 100 if len(tomo_ref_height_indices): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 101 self.tomo_ref_heights = [ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 102 tomo_ref_height_indices[i][1] for i in range(self.num_tomo_stacks)] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 103 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 104 self.tomo_ref_heights = [0.0]*self.num_tomo_stacks | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 105 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 106 # Check tomo angle (theta) range | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 107 self.start_theta = self.config.get('start_theta', 0.) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 108 if not msnc.is_num(self.start_theta, 0.): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 109 msnc.illegal_value('start_theta', self.start_theta, 'config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 110 is_valid = False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 111 logging.debug(f'start_theta = {self.start_theta}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 112 self.end_theta = self.config.get('end_theta', 180.) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 113 if not msnc.is_num(self.end_theta, self.start_theta): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 114 msnc.illegal_value('end_theta', self.end_theta, 'config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 115 is_valid = False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 116 logging.debug(f'end_theta = {self.end_theta}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 117 self.num_thetas = self.config.get('num_thetas') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 118 if not (self.num_thetas is None or msnc.is_int(self.num_thetas, 1)): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 119 msnc.illegal_value('num_thetas', self.num_thetas, 'config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 120 self.num_thetas = None | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 121 is_valid = False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 122 logging.debug(f'num_thetas = {self.num_thetas}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 123 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 124 return is_valid | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 125 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 126 def _validate_yaml(self): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 127 """Returns False if any required config parameter is illegal or missing. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 128 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 129 is_valid = True | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 130 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 131 # Check for required first-level keys | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 132 pars_required = ['dark_field', 'bright_field', 'stack_info', 'detector'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 133 pars_missing = [] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 134 is_valid = super().validate(pars_required, pars_missing) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 135 if len(pars_missing) > 0: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 136 logging.error(f'Missing item(s) in config file: {", ".join(pars_missing)}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 137 self.detector_id = self.config['detector'].get('id') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 138 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 139 # Find tomography dark field images file/folder | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 140 self.tdf_data_path = self.config['dark_field'].get('data_path') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 141 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 142 # Find tomography bright field images file/folder | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 143 self.tbf_data_path = self.config['bright_field'].get('data_path') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 144 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 145 # Check number of tomography image stacks | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 146 stack_info = self.config['stack_info'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 147 self.num_tomo_stacks = stack_info.get('num', 1) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 148 if not msnc.is_int(self.num_tomo_stacks, 1): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 149 self.num_tomo_stacks = None | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 150 msnc.illegal_value('stack_info:num', self.num_tomo_stacks, 'config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 151 return False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 152 logging.info(f'num_tomo_stacks = {self.num_tomo_stacks}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 153 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 154 # Find tomography images file/folders and stack parameters | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 155 stacks = stack_info.get('stacks') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 156 if stacks is None or len(stacks) is not self.num_tomo_stacks: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 157 msnc.illegal_value('stack_info:stacks', stacks, 'config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 158 return False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 159 self.tomo_data_paths = [] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 160 self.tomo_data_indices = [] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 161 self.tomo_ref_heights = [] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 162 for stack in stacks: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 163 self.tomo_data_paths.append(stack.get('data_path')) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 164 self.tomo_data_indices.append(stack.get('index')) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 165 self.tomo_ref_heights.append(stack.get('ref_height')) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 166 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 167 # Check tomo angle (theta) range | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 168 theta_range = self.config.get('theta_range') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 169 if theta_range is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 170 self.start_theta = 0. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 171 self.end_theta = 180. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 172 self.num_thetas = None | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 173 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 174 self.start_theta = theta_range.get('start', 0.) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 175 if not msnc.is_num(self.start_theta, 0.): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 176 msnc.illegal_value('theta_range:start', self.start_theta, 'config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 177 is_valid = False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 178 logging.debug(f'start_theta = {self.start_theta}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 179 self.end_theta = theta_range.get('end', 180.) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 180 if not msnc.is_num(self.end_theta, self.start_theta): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 181 msnc.illegal_value('theta_range:end', self.end_theta, 'config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 182 is_valid = False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 183 logging.debug(f'end_theta = {self.end_theta}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 184 self.num_thetas = theta_range.get('num') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 185 if self.num_thetas and not msnc.is_int(self.num_thetas, 1): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 186 msnc.illegal_value('theta_range:num', self.num_thetas, 'config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 187 self.num_thetas = None | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 188 is_valid = False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 189 logging.debug(f'num_thetas = {self.num_thetas}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 190 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 191 return is_valid | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 192 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 193 def validate(self): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 194 """Returns False if any required config parameter is illegal or missing. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 195 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 196 is_valid = True | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 197 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 198 # Check work_folder (shared by both file formats) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 199 work_folder = os.path.abspath(self.config.get('work_folder', '')) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 200 if not os.path.isdir(work_folder): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 201 msnc.illegal_value('work_folder', work_folder, 'config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 202 is_valid = False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 203 logging.info(f'work_folder: {work_folder}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 204 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 205 # Check data filetype (shared by both file formats) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 206 self.data_filetype = self.config.get('data_filetype', 'tif') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 207 if not isinstance(self.data_filetype, str) or (self.data_filetype != 'tif' and | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 208 self.data_filetype != 'h5'): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 209 msnc.illegal_value('data_filetype', self.data_filetype, 'config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 210 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 211 if self.suffix == '.yml' or self.suffix == '.yaml': | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 212 is_valid = self._validate_yaml() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 213 elif self.suffix == '.txt': | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 214 is_valid = self._validate_txt() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 215 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 216 logging.error(f'Undefined or illegal config file extension: {self.suffix}') | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 217 is_valid = False | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 218 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 219 # Find tomography bright field images file/folder | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 220 if self.tdf_data_path: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 221 if self.data_filetype == 'h5': | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 222 if isinstance(self.tdf_data_path, str): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 223 if not os.path.isabs(self.tdf_data_path): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 224 self.tdf_data_path = os.path.abspath( | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 225 f'{work_folder}/{self.tdf_data_path}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 226 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 227 msnc.illegal_value('tdf_data_path', tdf_data_fil, 'config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 228 is_valid = False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 229 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 230 if isinstance(self.tdf_data_path, int): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 231 self.tdf_data_path = os.path.abspath( | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 232 f'{work_folder}/{self.tdf_data_path}/nf') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 233 elif isinstance(self.tdf_data_path, str): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 234 if not os.path.isabs(self.tdf_data_path): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 235 self.tdf_data_path = os.path.abspath( | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 236 f'{work_folder}/{self.tdf_data_path}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 237 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 238 msnc.illegal_value('tdf_data_path', self.tdf_data_path, 'config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 239 is_valid = False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 240 logging.info(f'dark field images path = {self.tdf_data_path}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 241 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 242 # Find tomography bright field images file/folder | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 243 if self.tbf_data_path: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 244 if self.data_filetype == 'h5': | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 245 if isinstance(self.tbf_data_path, str): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 246 if not os.path.isabs(self.tbf_data_path): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 247 self.tbf_data_path = os.path.abspath( | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 248 f'{work_folder}/{self.tbf_data_path}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 249 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 250 msnc.illegal_value('tbf_data_path', tbf_data_fil, 'config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 251 is_valid = False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 252 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 253 if isinstance(self.tbf_data_path, int): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 254 self.tbf_data_path = os.path.abspath( | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 255 f'{work_folder}/{self.tbf_data_path}/nf') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 256 elif isinstance(self.tbf_data_path, str): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 257 if not os.path.isabs(self.tbf_data_path): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 258 self.tbf_data_path = os.path.abspath( | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 259 f'{work_folder}/{self.tbf_data_path}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 260 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 261 msnc.illegal_value('tbf_data_path', self.tbf_data_path, 'config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 262 is_valid = False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 263 logging.info(f'bright field images path = {self.tbf_data_path}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 264 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 265 # Find tomography images file/folders and stack parameters | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 266 tomo_data_paths = [] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 267 tomo_data_indices = [] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 268 tomo_ref_heights = [] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 269 for data_path, index, ref_height in zip(self.tomo_data_paths, self.tomo_data_indices, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 270 self.tomo_ref_heights): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 271 if self.data_filetype == 'h5': | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 272 if isinstance(data_path, str): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 273 if not os.path.isabs(data_path): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 274 data_path = os.path.abspath(f'{work_folder}/{data_path}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 275 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 276 msnc.illegal_value(f'stack_info:stacks:data_path', data_path, 'config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 277 is_valid = False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 278 data_path = None | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 279 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 280 if isinstance(data_path, int): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 281 data_path = os.path.abspath(f'{work_folder}/{data_path}/nf') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 282 elif isinstance(data_path, str): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 283 if not os.path.isabs(data_path): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 284 data_path = os.path.abspath(f'{work_folder}/{data_path}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 285 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 286 msnc.illegal_value(f'stack_info:stacks:data_path', data_path, 'config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 287 is_valid = False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 288 data_path = None | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 289 tomo_data_paths.append(data_path) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 290 if index is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 291 if self.num_tomo_stacks > 1: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 292 logging.error('Missing stack_info:stacks:index in config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 293 is_valid = False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 294 index = None | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 295 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 296 index = 1 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 297 elif not isinstance(index, int): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 298 msnc.illegal_value(f'stack_info:stacks:index', index, 'config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 299 is_valid = False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 300 index = None | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 301 tomo_data_indices.append(index) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 302 if ref_height is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 303 if self.num_tomo_stacks > 1: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 304 logging.error('Missing stack_info:stacks:ref_height in config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 305 is_valid = False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 306 ref_height = None | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 307 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 308 ref_height = 0. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 309 elif not msnc.is_num(ref_height): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 310 msnc.illegal_value(f'stack_info:stacks:ref_height', ref_height, 'config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 311 is_valid = False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 312 ref_height = None | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 313 # Set reference heights relative to first stack | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 314 if (len(tomo_ref_heights) and msnc.is_num(ref_height) and | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 315 msnc.is_num(tomo_ref_heights[0])): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 316 ref_height = (round(ref_height-tomo_ref_heights[0], 3)) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 317 tomo_ref_heights.append(ref_height) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 318 tomo_ref_heights[0] = 0.0 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 319 logging.info('tomography data paths:') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 320 for i in range(self.num_tomo_stacks): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 321 logging.info(f' {tomo_data_paths[i]}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 322 logging.info(f'tomography data path indices: {tomo_data_indices}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 323 logging.info(f'tomography reference heights: {tomo_ref_heights}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 324 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 325 # Update config in memory | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 326 if self.suffix == '.txt': | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 327 self.config = {} | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 328 dark_field = self.config.get('dark_field') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 329 if dark_field is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 330 self.config['dark_field'] = {'data_path' : self.tdf_data_path} | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 331 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 332 self.config['dark_field']['data_path'] = self.tdf_data_path | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 333 bright_field = self.config.get('bright_field') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 334 if bright_field is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 335 self.config['bright_field'] = {'data_path' : self.tbf_data_path} | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 336 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 337 self.config['bright_field']['data_path'] = self.tbf_data_path | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 338 detector = self.config.get('detector') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 339 if detector is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 340 self.config['detector'] = {'id' : self.detector_id} | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 341 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 342 detector['id'] = self.detector_id | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 343 self.config['work_folder'] = work_folder | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 344 self.config['data_filetype'] = self.data_filetype | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 345 stack_info = self.config.get('stack_info') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 346 if stack_info is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 347 stacks = [] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 348 for i in range(self.num_tomo_stacks): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 349 stacks.append({'data_path' : tomo_data_paths[i], 'index' : tomo_data_indices[i], | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 350 'ref_height' : tomo_ref_heights[i]}) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 351 self.config['stack_info'] = {'num' : self.num_tomo_stacks, 'stacks' : stacks} | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 352 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 353 stack_info['num'] = self.num_tomo_stacks | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 354 stacks = stack_info.get('stacks') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 355 for i,stack in enumerate(stacks): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 356 stack['data_path'] = tomo_data_paths[i] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 357 stack['index'] = tomo_data_indices[i] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 358 stack['ref_height'] = tomo_ref_heights[i] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 359 if self.num_thetas: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 360 theta_range = {'start' : self.start_theta, 'end' : self.end_theta, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 361 'num' : self.num_thetas} | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 362 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 363 theta_range = {'start' : self.start_theta, 'end' : self.end_theta} | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 364 self.config['theta_range'] = theta_range | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 365 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 366 # Cleanup temporary validation variables | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 367 del self.tdf_data_path | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 368 del self.tbf_data_path | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 369 del self.detector_id | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 370 del self.data_filetype | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 371 del self.num_tomo_stacks | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 372 del self.tomo_data_paths | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 373 del self.tomo_data_indices | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 374 del self.tomo_ref_heights | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 375 del self.start_theta | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 376 del self.end_theta | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 377 del self.num_thetas | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 378 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 379 return is_valid | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 380 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 381 class Tomo: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 382 """Processing tomography data with misalignment. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 383 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 384 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 385 def __init__(self, config_file=None, config_dict=None, config_out=None, output_folder='.', | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 386 log_level='INFO', log_stream='tomo.log', galaxy_flag=False, test_mode=False, | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 387 num_core=-1): | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 388 """Initialize with optional config input file or dictionary | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 389 """ | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 390 self.num_core = None | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 391 self.config_out = config_out | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 392 self.output_folder = output_folder | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 393 self.galaxy_flag = galaxy_flag | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 394 self.test_mode = test_mode | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 395 self.save_plots = True # Make input argument? | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 396 self.save_plots_only = True # Make input argument? | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 397 self.cf = None | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 398 self.config = None | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 399 self.is_valid = True | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 400 self.tdf = np.array([]) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 401 self.tbf = np.array([]) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 402 self.tomo_stacks = [] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 403 self.tomo_recon_stacks = [] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 404 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 405 # Validate input parameters | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 406 if config_file is not None and not os.path.isfile(config_file): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 407 raise OSError(f'Invalid config_file input {config_file} {type(config_file)}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 408 if config_dict is not None and not isinstance(config_dict, dict): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 409 raise ValueError(f'Invalid config_dict input {config_dict} {type(config_dict)}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 410 if config_out is not None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 411 if isinstance(config_out, str): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 412 if isinstance(log_stream, str): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 413 path = os.path.split(log_stream)[0] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 414 if path and not os.path.isdir(path): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 415 raise OSError(f'Invalid log_stream path') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 416 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 417 raise OSError(f'Invalid config_out input {config_out} {type(config_out)}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 418 if not os.path.isdir(output_folder): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 419 raise OSError(f'Invalid output_folder input {output_folder} {type(output_folder)}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 420 if isinstance(log_stream, str): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 421 path = os.path.split(log_stream)[0] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 422 if path and not os.path.isdir(path): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 423 raise OSError(f'Invalid log_stream path') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 424 if not os.path.isabs(path): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 425 log_stream = f'{output_folder}/{log_stream}' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 426 if not isinstance(galaxy_flag, bool): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 427 raise ValueError(f'Invalid galaxy_flag input {galaxy_flag} {type(galaxy_flag)}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 428 if not isinstance(test_mode, bool): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 429 raise ValueError(f'Invalid test_mode input {test_mode} {type(test_mode)}') | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 430 if not isinstance(num_core, int) or num_core < -1 or num_core == 0: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 431 raise ValueError(f'Invalid num_core input {num_core} {type(num_core)}') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 432 if num_core == -1: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 433 self.num_core = mp.cpu_count() | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 434 else: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 435 self.num_core = num_core | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 436 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 437 # Set log configuration | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 438 logging_format = '%(asctime)s : %(levelname)s - %(module)s : %(funcName)s - %(message)s' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 439 if self.test_mode: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 440 self.save_plots_only = True | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 441 if isinstance(log_stream, str): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 442 logging.basicConfig(filename=f'{log_stream}', filemode='w', | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 443 format=logging_format, level=logging.INFO, force=True) | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 444 #format=logging_format, level=logging.WARNING, force=True) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 445 elif isinstance(log_stream, io.TextIOWrapper): | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 446 #logging.basicConfig(filemode='w', format=logging_format, level=logging.WARNING, | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 447 logging.basicConfig(filemode='w', format=logging_format, level=logging.INFO, | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 448 stream=log_stream, force=True) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 449 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 450 raise ValueError(f'Invalid log_stream: {log_stream}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 451 logging.warning('Ignoring log_level argument in test mode') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 452 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 453 level = getattr(logging, log_level.upper(), None) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 454 if not isinstance(level, int): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 455 raise ValueError(f'Invalid log_level: {log_level}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 456 if log_stream is sys.stdout: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 457 logging.basicConfig(format=logging_format, level=level, force=True, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 458 handlers=[logging.StreamHandler()]) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 459 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 460 if isinstance(log_stream, str): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 461 logging.basicConfig(filename=f'{log_stream}', filemode='w', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 462 format=logging_format, level=level, force=True) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 463 elif isinstance(log_stream, io.TextIOWrapper): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 464 logging.basicConfig(filemode='w', format=logging_format, level=level, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 465 stream=log_stream, force=True) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 466 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 467 raise ValueError(f'Invalid log_stream: {log_stream}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 468 stream_handler = logging.StreamHandler() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 469 logging.getLogger().addHandler(stream_handler) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 470 stream_handler.setLevel(logging.WARNING) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 471 stream_handler.setFormatter(logging.Formatter(logging_format)) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 472 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 473 # Check/set output config file name | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 474 if self.config_out is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 475 self.config_out = f'{self.output_folder}/config.yaml' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 476 elif (self.config_out is os.path.basename(self.config_out) and | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 477 not os.path.isabs(self.config_out)): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 478 self.config_out = f'{self.output_folder}/{self.config_out}' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 479 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 480 # Create config object and load config file | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 481 self.cf = ConfigTomo(config_file, config_dict) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 482 if not self.cf.load_flag: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 483 self.is_valid = False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 484 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 485 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 486 if self.galaxy_flag: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 487 assert(self.output_folder == '.') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 488 assert(self.test_mode is False) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 489 self.save_plots = True | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 490 self.save_plots_only = True | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 491 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 492 # Input validation is already performed during link_data_to_galaxy | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 493 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 494 # Check config file parameters | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 495 self.is_valid = self.cf.validate() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 496 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 497 # Load detector info file | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 498 df = msnc.Detector(self.cf.config['detector']['id']) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 499 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 500 # Check detector info file parameters | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 501 if df.validate(): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 502 pixel_size = df.getPixelSize() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 503 num_rows, num_columns = df.getDimensions() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 504 if not pixel_size or not num_rows or not num_columns: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 505 self.is_valid = False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 506 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 507 pixel_size = None | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 508 num_rows = None | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 509 num_columns = None | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 510 self.is_valid = False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 511 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 512 # Update config | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 513 self.cf.config['detector']['pixel_size'] = pixel_size | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 514 self.cf.config['detector']['rows'] = num_rows | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 515 self.cf.config['detector']['columns'] = num_columns | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 516 logging.debug(f'pixel_size = self.cf.config["detector"]["pixel_size"]') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 517 logging.debug(f'num_rows: {self.cf.config["detector"]["rows"]}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 518 logging.debug(f'num_columns: {self.cf.config["detector"]["columns"]}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 519 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 520 # Safe config to file | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 521 if self.is_valid: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 522 self.cf.saveFile(self.config_out) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 523 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 524 # Initialize shortcut to config | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 525 self.config = self.cf.config | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 526 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 527 # Initialize tomography stack | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 528 num_tomo_stacks = self.config['stack_info']['num'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 529 if num_tomo_stacks: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 530 self.tomo_stacks = [np.array([]) for _ in range(num_tomo_stacks)] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 531 self.tomo_recon_stacks = [np.array([]) for _ in range(num_tomo_stacks)] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 532 | 
| 2 
b8977c98800b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 0c40fb274acc13ebf7054379bb49ed13acec918e"
 rv43 parents: 
1diff
changeset | 533 logging.debug(f'num_core = {self.num_core}') | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 534 logging.debug(f'config_file = {config_file}') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 535 logging.debug(f'config_dict = {config_dict}') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 536 logging.debug(f'config_out = {self.config_out}') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 537 logging.debug(f'output_folder = {self.output_folder}') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 538 logging.debug(f'log_stream = {log_stream}') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 539 logging.debug(f'log_level = {log_level}') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 540 logging.debug(f'galaxy_flag = {self.galaxy_flag}') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 541 logging.debug(f'test_mode = {self.test_mode}') | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 542 logging.debug(f'save_plots = {self.save_plots}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 543 logging.debug(f'save_plots_only = {self.save_plots_only}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 544 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 545 def _selectImageRanges(self, available_stacks=None): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 546 """Select image files to be included in analysis. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 547 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 548 self.is_valid = True | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 549 stack_info = self.config['stack_info'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 550 if available_stacks is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 551 available_stacks = [False]*stack_info['num'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 552 elif len(available_stacks) != stack_info['num']: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 553 logging.warning('Illegal dimension of available_stacks in getImageFiles '+ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 554 f'({len(available_stacks)}'); | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 555 available_stacks = [False]*stack_info['num'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 556 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 557 # Check number of tomography angles/thetas | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 558 num_thetas = self.config['theta_range'].get('num') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 559 if num_thetas is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 560 num_thetas = pyip.inputInt('\nEnter the number of thetas (>0): ', greaterThan=0) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 561 elif not msnc.is_int(num_thetas, 0): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 562 msnc.illegal_value('num_thetas', num_thetas, 'config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 563 self.is_valid = False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 564 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 565 self.config['theta_range']['num'] = num_thetas | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 566 logging.debug(f'num_thetas = {self.config["theta_range"]["num"]}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 567 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 568 # Find tomography dark field images | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 569 dark_field = self.config['dark_field'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 570 img_start = dark_field.get('img_start', -1) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 571 img_offset = dark_field.get('img_offset', -1) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 572 num_imgs = dark_field.get('num', 0) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 573 if not self.test_mode: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 574 img_start, img_offset, num_imgs = msnc.selectImageRange(img_start, img_offset, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 575 num_imgs, 'dark field') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 576 if img_start < 0 or num_imgs < 1: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 577 logging.error('Unable to find suitable dark field images') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 578 if dark_field['data_path']: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 579 self.is_valid = False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 580 dark_field['img_start'] = img_start | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 581 dark_field['img_offset'] = img_offset | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 582 dark_field['num'] = num_imgs | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 583 logging.debug(f'Dark field image start index: {dark_field["img_start"]}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 584 logging.debug(f'Dark field image offset: {dark_field["img_offset"]}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 585 logging.debug(f'Number of dark field images: {dark_field["num"]}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 586 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 587 # Find tomography bright field images | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 588 bright_field = self.config['bright_field'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 589 img_start = bright_field.get('img_start', -1) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 590 img_offset = bright_field.get('img_offset', -1) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 591 num_imgs = bright_field.get('num', 0) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 592 if not self.test_mode: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 593 img_start, img_offset, num_imgs = msnc.selectImageRange(img_start, img_offset, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 594 num_imgs, 'bright field') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 595 if img_start < 0 or num_imgs < 1: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 596 logging.error('Unable to find suitable bright field images') | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 597 self.is_valid = False | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 598 bright_field['img_start'] = img_start | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 599 bright_field['img_offset'] = img_offset | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 600 bright_field['num'] = num_imgs | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 601 logging.debug(f'Bright field image start index: {bright_field["img_start"]}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 602 logging.debug(f'Bright field image offset: {bright_field["img_offset"]}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 603 logging.debug(f'Number of bright field images: {bright_field["num"]}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 604 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 605 # Find tomography images | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 606 for i,stack in enumerate(stack_info['stacks']): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 607 # Check if stack is already loaded or available | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 608 if self.tomo_stacks[i].size or available_stacks[i]: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 609 continue | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 610 index = stack['index'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 611 img_start = stack.get('img_start', -1) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 612 img_offset = stack.get('img_offset', -1) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 613 num_imgs = stack.get('num', 0) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 614 if not self.test_mode: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 615 img_start, img_offset, num_imgs = msnc.selectImageRange(img_start, img_offset, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 616 num_imgs, f'tomography stack {index}', num_thetas) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 617 if img_start < 0 or num_imgs != num_thetas: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 618 logging.error('Unable to find suitable tomography images') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 619 self.is_valid = False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 620 stack['img_start'] = img_start | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 621 stack['img_offset'] = img_offset | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 622 stack['num'] = num_imgs | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 623 logging.debug(f'Tomography stack {index} image start index: {stack["img_start"]}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 624 logging.debug(f'Tomography stack {index} image offset: {stack["img_offset"]}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 625 logging.debug(f'Number of tomography images for stack {index}: {stack["num"]}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 626 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 627 # Safe updated config to file | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 628 if self.is_valid: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 629 self.cf.saveFile(self.config_out) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 630 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 631 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 632 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 633 def _genDark(self, tdf_files, dark_field_pngname): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 634 """Generate dark field. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 635 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 636 # Load the dark field images | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 637 logging.debug('Loading dark field...') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 638 dark_field = self.config['dark_field'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 639 tdf_stack = msnc.loadImageStack(tdf_files, self.config['data_filetype'], | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 640 dark_field['img_offset'], dark_field['num']) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 641 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 642 # Take median | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 643 self.tdf = np.median(tdf_stack, axis=0) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 644 del tdf_stack | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 645 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 646 # RV make input of some kind (not always needed) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 647 tdf_cutoff = 21 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 648 self.tdf[self.tdf > tdf_cutoff] = np.nan | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 649 tdf_mean = np.nanmean(self.tdf) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 650 logging.debug(f'tdf_cutoff = {tdf_cutoff}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 651 logging.debug(f'tdf_mean = {tdf_mean}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 652 np.nan_to_num(self.tdf, copy=False, nan=tdf_mean, posinf=tdf_mean, neginf=0.) | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 653 if self.galaxy_flag: | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 654 msnc.quickImshow(self.tdf, title='dark field', name=dark_field_pngname, | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 655 save_fig=True, save_only=True) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 656 elif not self.test_mode: | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 657 msnc.quickImshow(self.tdf, title='dark field', path=self.output_folder, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 658 save_fig=self.save_plots, save_only=self.save_plots_only) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 659 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 660 def _genBright(self, tbf_files, bright_field_pngname): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 661 """Generate bright field. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 662 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 663 # Load the bright field images | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 664 logging.debug('Loading bright field...') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 665 bright_field = self.config['bright_field'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 666 tbf_stack = msnc.loadImageStack(tbf_files, self.config['data_filetype'], | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 667 bright_field['img_offset'], bright_field['num']) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 668 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 669 # Take median | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 670 """Median or mean: It may be best to try the median because of some image | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 671 artifacts that arise due to crinkles in the upstream kapton tape windows | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 672 causing some phase contrast images to appear on the detector. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 673 One thing that also may be useful in a future implementation is to do a | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 674 brightfield adjustment on EACH frame of the tomo based on a ROI in the | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 675 corner of the frame where there is no sample but there is the direct X-ray | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 676 beam because there is frame to frame fluctuations from the incoming beam. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 677 We don’t typically account for them but potentially could. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 678 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 679 self.tbf = np.median(tbf_stack, axis=0) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 680 del tbf_stack | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 681 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 682 # Subtract dark field | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 683 if self.tdf.size: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 684 self.tbf -= self.tdf | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 685 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 686 logging.warning('Dark field unavailable') | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 687 if self.galaxy_flag: | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 688 msnc.quickImshow(self.tbf, title='bright field', name=bright_field_pngname, | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 689 save_fig=True, save_only=True) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 690 elif not self.test_mode: | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 691 msnc.quickImshow(self.tbf, title='bright field', path=self.output_folder, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 692 save_fig=self.save_plots, save_only=self.save_plots_only) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 693 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 694 def _setDetectorBounds(self, tomo_stack_files, tomo_field_pngname, detectorbounds_pngname): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 695 """Set vertical detector bounds for image stack. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 696 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 697 preprocess = self.config.get('preprocess') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 698 if preprocess is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 699 img_x_bounds = [None, None] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 700 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 701 img_x_bounds = preprocess.get('img_x_bounds', [0, self.tbf.shape[0]]) | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 702 if img_x_bounds[0] is not None and img_x_bounds[1] is not None: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 703 if img_x_bounds[0] < 0: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 704 msnc.illegal_value('img_x_bounds[0]', img_x_bounds[0], 'config file') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 705 img_x_bounds[0] = 0 | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 706 if not msnc.is_index_range(img_x_bounds, 0, self.tbf.shape[0]): | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 707 msnc.illegal_value('img_x_bounds[1]', img_x_bounds[1], 'config file') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 708 img_x_bounds[1] = self.tbf.shape[0] | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 709 if self.test_mode: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 710 # Update config and save to file | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 711 if preprocess is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 712 self.cf.config['preprocess'] = {'img_x_bounds' : [0, self.tbf.shape[0]]} | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 713 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 714 preprocess['img_x_bounds'] = img_x_bounds | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 715 self.cf.saveFile(self.config_out) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 716 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 717 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 718 # Check reference heights | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 719 pixel_size = self.config['detector']['pixel_size'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 720 if pixel_size is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 721 raise ValueError('Detector pixel size unavailable') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 722 if not self.tbf.size: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 723 raise ValueError('Bright field unavailable') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 724 num_x_min = None | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 725 num_tomo_stacks = self.config['stack_info']['num'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 726 stacks = self.config['stack_info']['stacks'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 727 if num_tomo_stacks > 1: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 728 delta_z = stacks[1]['ref_height']-stacks[0]['ref_height'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 729 for i in range(2, num_tomo_stacks): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 730 delta_z = min(delta_z, stacks[i]['ref_height']-stacks[i-1]['ref_height']) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 731 logging.debug(f'delta_z = {delta_z}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 732 num_x_min = int(delta_z/pixel_size)+1 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 733 logging.debug(f'num_x_min = {num_x_min}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 734 if num_x_min > self.tbf.shape[0]: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 735 logging.warning('Image bounds and pixel size prevent seamless stacking') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 736 num_x_min = self.tbf.shape[0] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 737 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 738 # Select image bounds | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 739 if self.galaxy_flag: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 740 if num_x_min is None or num_x_min >= self.tbf.shape[0]: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 741 img_x_bounds = [0, self.tbf.shape[0]] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 742 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 743 margin = int(num_x_min/10) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 744 offset = min(0, int((self.tbf.shape[0]-num_x_min)/2-margin)) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 745 img_x_bounds = [offset, num_x_min+offset+2*margin] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 746 tomo_stack = msnc.loadImageStack(tomo_stack_files[0], self.config['data_filetype'], | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 747 stacks[0]['img_offset'], 1) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 748 x_sum = np.sum(tomo_stack[0,:,:], 1) | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 749 x_sum_min = x_sum.min() | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 750 x_sum_max = x_sum.max() | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 751 title = f'tomography image at theta={self.config["theta_range"]["start"]}' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 752 msnc.quickImshow(tomo_stack[0,:,:], title=title, name=tomo_field_pngname, | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 753 save_fig=True, save_only=True, show_grid=True) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 754 msnc.quickPlot((range(x_sum.size), x_sum), | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 755 ([img_x_bounds[0], img_x_bounds[0]], [x_sum_min, x_sum_max], 'r-'), | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 756 ([img_x_bounds[1]-1, img_x_bounds[1]-1], [x_sum_min, x_sum_max], 'r-'), | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 757 title='sum over theta and y', name=detectorbounds_pngname, | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 758 save_fig=True, save_only=True, show_grid=True) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 759 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 760 # Update config and save to file | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 761 if preprocess is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 762 self.cf.config['preprocess'] = {'img_x_bounds' : img_x_bounds} | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 763 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 764 preprocess['img_x_bounds'] = img_x_bounds | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 765 self.cf.saveFile(self.config_out) | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 766 del x_sum | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 767 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 768 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 769 # For one tomography stack only: load the first image | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 770 title = None | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 771 msnc.quickImshow(self.tbf, title='bright field') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 772 if num_tomo_stacks == 1: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 773 tomo_stack = msnc.loadImageStack(tomo_stack_files[0], self.config['data_filetype'], | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 774 stacks[0]['img_offset'], 1) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 775 title = f'tomography image at theta={self.config["theta_range"]["start"]}' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 776 msnc.quickImshow(tomo_stack[0,:,:], title=title) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 777 tomo_or_bright = pyip.inputNum('\nSelect image bounds from bright field (0) or '+ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 778 'from first tomography image (1): ', min=0, max=1) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 779 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 780 print('\nSelect image bounds from bright field') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 781 tomo_or_bright = 0 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 782 if tomo_or_bright: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 783 x_sum = np.sum(tomo_stack[0,:,:], 1) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 784 use_bounds = 'no' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 785 if img_x_bounds[0] is not None and img_x_bounds[1] is not None: | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 786 tmp = np.copy(tomo_stack[0,:,:]) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 787 tmp_max = tmp.max() | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 788 tmp[img_x_bounds[0],:] = tmp_max | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 789 tmp[img_x_bounds[1]-1,:] = tmp_max | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 790 msnc.quickImshow(tmp, title=title) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 791 del tmp | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 792 x_sum_min = x_sum.min() | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 793 x_sum_max = x_sum.max() | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 794 msnc.quickPlot((range(x_sum.size), x_sum), | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 795 ([img_x_bounds[0], img_x_bounds[0]], [x_sum_min, x_sum_max], 'r-'), | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 796 ([img_x_bounds[1]-1, img_x_bounds[1]-1], [x_sum_min, x_sum_max], 'r-'), | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 797 title='sum over theta and y') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 798 print(f'lower bound = {img_x_bounds[0]} (inclusive)\n'+ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 799 f'upper bound = {img_x_bounds[1]} (exclusive)]') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 800 use_bounds = pyip.inputYesNo('Accept these bounds ([y]/n)?: ', blank=True) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 801 if use_bounds == 'no': | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 802 img_x_bounds = msnc.selectImageBounds(tomo_stack[0,:,:], 0, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 803 img_x_bounds[0], img_x_bounds[1], num_x_min, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 804 f'tomography image at theta={self.config["theta_range"]["start"]}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 805 if num_x_min is not None and img_x_bounds[1]-img_x_bounds[0]+1 < num_x_min: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 806 logging.warning('Image bounds and pixel size prevent seamless stacking') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 807 title = f'tomography image at theta={self.config["theta_range"]["start"]}' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 808 msnc.quickImshow(tomo_stack[0,:,:], title=title, path=self.output_folder, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 809 save_fig=self.save_plots, save_only=True) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 810 msnc.quickPlot(range(img_x_bounds[0], img_x_bounds[1]), | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 811 x_sum[img_x_bounds[0]:img_x_bounds[1]], | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 812 title='sum over theta and y', path=self.output_folder, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 813 save_fig=self.save_plots, save_only=True) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 814 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 815 x_sum = np.sum(self.tbf, 1) | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 816 x_sum_min = x_sum.min() | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 817 x_sum_max = x_sum.max() | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 818 use_bounds = 'no' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 819 if img_x_bounds[0] is not None and img_x_bounds[1] is not None: | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 820 tmp = np.copy(self.tbf) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 821 tmp_max = tmp.max() | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 822 tmp[img_x_bounds[0],:] = tmp_max | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 823 tmp[img_x_bounds[1]-1,:] = tmp_max | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 824 title = 'Bright field' | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 825 msnc.quickImshow(tmp, title=title) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 826 del tmp | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 827 msnc.quickPlot((range(x_sum.size), x_sum), | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 828 ([img_x_bounds[0], img_x_bounds[0]], [x_sum_min, x_sum_max], 'r-'), | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 829 ([img_x_bounds[1]-1, img_x_bounds[1]-1], [x_sum_min, x_sum_max], 'r-'), | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 830 title='sum over theta and y') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 831 print(f'lower bound = {img_x_bounds[0]} (inclusive)\n'+ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 832 f'upper bound = {img_x_bounds[1]} (exclusive)]') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 833 use_bounds = pyip.inputYesNo('Accept these bounds ([y]/n)?: ', blank=True) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 834 if use_bounds == 'no': | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 835 fit = msnc.fitStep(y=x_sum, model='rectangle', form='atan') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 836 x_low = fit.get('center1', None) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 837 x_upp = fit.get('center2', None) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 838 if (x_low is not None and x_low >= 0 and x_upp is not None and | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 839 x_low < x_upp < x_sum.size): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 840 x_low = int(x_low-(x_upp-x_low)/10) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 841 if x_low < 0: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 842 x_low = 0 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 843 x_upp = int(x_upp+(x_upp-x_low)/10) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 844 if x_upp >= x_sum.size: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 845 x_upp = x_sum.size | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 846 tmp = np.copy(self.tbf) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 847 tmp_max = tmp.max() | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 848 tmp[x_low,:] = tmp_max | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 849 tmp[x_upp-1,:] = tmp_max | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 850 title = 'Bright field' | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 851 msnc.quickImshow(tmp, title=title) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 852 del tmp | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 853 msnc.quickPlot((range(x_sum.size), x_sum), | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 854 ([x_low, x_low], [x_sum_min, x_sum_max], 'r-'), | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 855 ([x_upp, x_upp], [x_sum_min, x_sum_max], 'r-'), | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 856 title='sum over theta and y') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 857 print(f'lower bound = {x_low} (inclusive)\nupper bound = {x_upp} (exclusive)]') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 858 use_fit = pyip.inputYesNo('Accept these bounds ([y]/n)?: ', blank=True) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 859 if use_fit == 'no': | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 860 img_x_bounds = msnc.selectArrayBounds(x_sum, img_x_bounds[0], img_x_bounds[1], | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 861 num_x_min, 'sum over theta and y') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 862 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 863 img_x_bounds = [x_low, x_upp] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 864 if num_x_min is not None and img_x_bounds[1]-img_x_bounds[0]+1 < num_x_min: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 865 logging.warning('Image bounds and pixel size prevent seamless stacking') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 866 msnc.quickPlot(range(img_x_bounds[0], img_x_bounds[1]), | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 867 x_sum[img_x_bounds[0]:img_x_bounds[1]], | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 868 title='sum over theta and y', path=self.output_folder, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 869 save_fig=self.save_plots, save_only=True) | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 870 del x_sum | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 871 logging.debug(f'img_x_bounds: {img_x_bounds}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 872 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 873 if self.save_plots_only: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 874 msnc.clearFig('bright field') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 875 msnc.clearFig('sum over theta and y') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 876 if title: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 877 msnc.clearFig(title) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 878 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 879 # Update config and save to file | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 880 if preprocess is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 881 self.cf.config['preprocess'] = {'img_x_bounds' : img_x_bounds} | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 882 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 883 preprocess['img_x_bounds'] = img_x_bounds | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 884 self.cf.saveFile(self.config_out) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 885 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 886 def _setZoomOrSkip(self): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 887 """Set zoom and/or theta skip to reduce memory the requirement for the analysis. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 888 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 889 preprocess = self.config.get('preprocess') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 890 zoom_perc = 100 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 891 if not self.galaxy_flag: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 892 if preprocess is None or 'zoom_perc' not in preprocess: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 893 if pyip.inputYesNo( | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 894 '\nDo you want to zoom in to reduce memory requirement (y/[n])? ', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 895 blank=True) == 'yes': | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 896 zoom_perc = pyip.inputInt(' Enter zoom percentage [1, 100]: ', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 897 min=1, max=100) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 898 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 899 zoom_perc = preprocess['zoom_perc'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 900 if msnc.is_num(zoom_perc, 1., 100.): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 901 zoom_perc = int(zoom_perc) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 902 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 903 msnc.illegal_value('zoom_perc', zoom_perc, 'config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 904 zoom_perc = 100 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 905 num_theta_skip = 0 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 906 if not self.galaxy_flag: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 907 if preprocess is None or 'num_theta_skip' not in preprocess: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 908 if pyip.inputYesNo( | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 909 'Do you want to skip thetas to reduce memory requirement (y/[n])? ', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 910 blank=True) == 'yes': | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 911 num_theta_skip = pyip.inputInt(' Enter the number skip theta interval'+ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 912 f' [0, {self.num_thetas-1}]: ', min=0, max=self.num_thetas-1) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 913 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 914 num_theta_skip = preprocess['num_theta_skip'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 915 if not msnc.is_int(num_theta_skip, 0): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 916 msnc.illegal_value('num_theta_skip', num_theta_skip, 'config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 917 num_theta_skip = 0 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 918 logging.info(f'zoom_perc = {zoom_perc}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 919 logging.info(f'num_theta_skip = {num_theta_skip}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 920 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 921 # Update config and save to file | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 922 if preprocess is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 923 self.cf.config['preprocess'] = {'zoom_perc' : zoom_perc, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 924 'num_theta_skip' : num_theta_skip} | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 925 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 926 preprocess['zoom_perc'] = zoom_perc | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 927 preprocess['num_theta_skip'] = num_theta_skip | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 928 self.cf.saveFile(self.config_out) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 929 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 930 def _loadTomo(self, base_name, index, required=False): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 931 """Load a tomography stack. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 932 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 933 # stack order: row,theta,column | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 934 zoom_perc = None | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 935 preprocess = self.config.get('preprocess') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 936 if preprocess: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 937 zoom_perc = preprocess.get('zoom_perc') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 938 if zoom_perc is None or zoom_perc == 100: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 939 title = f'{base_name} fullres' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 940 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 941 title = f'{base_name} {zoom_perc}p' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 942 title += f'_{index}' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 943 tomo_file = re.sub(r"\s+", '_', f'{self.output_folder}/{title}.npy') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 944 load_flag = 'no' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 945 available = False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 946 if os.path.isfile(tomo_file): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 947 available = True | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 948 if required: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 949 load_flag = 'yes' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 950 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 951 load_flag = pyip.inputYesNo(f'\nDo you want to load {tomo_file} (y/n)? ') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 952 stack = np.array([]) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 953 if load_flag == 'yes': | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 954 t0 = time() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 955 logging.info(f'Loading {tomo_file} ...') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 956 try: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 957 stack = np.load(tomo_file) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 958 except IOError or ValueError: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 959 stack = np.array([]) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 960 logging.error(f'Error loading {tomo_file}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 961 logging.info(f'... done in {time()-t0:.2f} seconds!') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 962 if stack.size: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 963 msnc.quickImshow(stack[:,0,:], title=title, path=self.output_folder, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 964 save_fig=self.save_plots, save_only=self.save_plots_only) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 965 return stack, available | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 966 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 967 def _saveTomo(self, base_name, stack, index=None): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 968 """Save a tomography stack. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 969 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 970 zoom_perc = None | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 971 preprocess = self.config.get('preprocess') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 972 if preprocess: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 973 zoom_perc = preprocess.get('zoom_perc') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 974 if zoom_perc is None or zoom_perc == 100: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 975 title = f'{base_name} fullres' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 976 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 977 title = f'{base_name} {zoom_perc}p' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 978 if index: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 979 title += f'_{index}' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 980 tomo_file = re.sub(r"\s+", '_', f'{self.output_folder}/{title}.npy') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 981 t0 = time() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 982 logging.info(f'Saving {tomo_file} ...') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 983 np.save(tomo_file, stack) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 984 logging.info(f'... done in {time()-t0:.2f} seconds!') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 985 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 986 def _genTomo(self, tomo_stack_files, available_stacks): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 987 """Generate tomography fields. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 988 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 989 stacks = self.config['stack_info']['stacks'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 990 assert(len(self.tomo_stacks) == self.config['stack_info']['num']) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 991 assert(len(self.tomo_stacks) == len(stacks)) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 992 if len(available_stacks) != len(stacks): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 993 logging.warning('Illegal dimension of available_stacks in _genTomo'+ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 994 f'({len(available_stacks)}'); | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 995 available_stacks = [False]*self.num_tomo_stacks | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 996 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 997 preprocess = self.config.get('preprocess') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 998 if preprocess is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 999 img_x_bounds = [0, self.tbf.shape[0]] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1000 img_y_bounds = [0, self.tbf.shape[1]] | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1001 zoom_perc = 100 | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1002 num_theta_skip = 0 | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1003 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1004 img_x_bounds = preprocess.get('img_x_bounds', [0, self.tbf.shape[0]]) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1005 img_y_bounds = preprocess.get('img_y_bounds', [0, self.tbf.shape[1]]) | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1006 zoom_perc = preprocess.get('zoom_perc', 100) | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1007 num_theta_skip = preprocess.get('num_theta_skip', 0) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1008 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1009 if self.tdf.size: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1010 tdf = self.tdf[img_x_bounds[0]:img_x_bounds[1],img_y_bounds[0]:img_y_bounds[1]] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1011 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1012 logging.warning('Dark field unavailable') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1013 if not self.tbf.size: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1014 raise ValueError('Bright field unavailable') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1015 tbf = self.tbf[img_x_bounds[0]:img_x_bounds[1],img_y_bounds[0]:img_y_bounds[1]] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1016 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1017 for i,stack in enumerate(stacks): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1018 # Check if stack is already loaded or available | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1019 if self.tomo_stacks[i].size or available_stacks[i]: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1020 continue | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1021 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1022 # Load a stack of tomography images | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1023 index = stack['index'] | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1024 t0 = time() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1025 tomo_stack = msnc.loadImageStack(tomo_stack_files[i], self.config['data_filetype'], | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1026 stack['img_offset'], self.config['theta_range']['num'], num_theta_skip, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1027 img_x_bounds, img_y_bounds) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1028 tomo_stack = tomo_stack.astype('float64') | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1029 logging.debug(f'loading stack {index} took {time()-t0:.2f} seconds!') | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1030 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1031 # Subtract dark field | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1032 if self.tdf.size: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1033 t0 = time() | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1034 with set_numexpr_threads(self.num_core): | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1035 ne.evaluate('tomo_stack-tdf', out=tomo_stack) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1036 logging.debug(f'subtracting dark field took {time()-t0:.2f} seconds!') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1037 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1038 # Normalize | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1039 t0 = time() | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1040 with set_numexpr_threads(self.num_core): | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1041 ne.evaluate('tomo_stack/tbf', out=tomo_stack, truediv=True) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1042 logging.debug(f'normalizing took {time()-t0:.2f} seconds!') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1043 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1044 # Remove non-positive values and linearize data | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1045 t0 = time() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1046 cutoff = 1.e-6 | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1047 with set_numexpr_threads(self.num_core): | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1048 ne.evaluate('where(tomo_stack<cutoff, cutoff, tomo_stack)', out=tomo_stack) | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1049 with set_numexpr_threads(self.num_core): | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1050 ne.evaluate('-log(tomo_stack)', out=tomo_stack) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1051 logging.debug('removing non-positive values and linearizing data took '+ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1052 f'{time()-t0:.2f} seconds!') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1053 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1054 # Get rid of nans/infs that may be introduced by normalization | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1055 t0 = time() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1056 np.where(np.isfinite(tomo_stack), tomo_stack, 0.) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1057 logging.debug(f'remove nans/infs took {time()-t0:.2f} seconds!') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1058 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1059 # Downsize tomography stack to smaller size | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1060 tomo_stack = tomo_stack.astype('float32') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1061 if not self.galaxy_flag: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1062 title = f'red stack fullres {index}' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1063 if not self.test_mode: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1064 msnc.quickImshow(tomo_stack[0,:,:], title=title, path=self.output_folder, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1065 save_fig=self.save_plots, save_only=self.save_plots_only) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1066 if zoom_perc != 100: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1067 t0 = time() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1068 logging.info(f'Zooming in ...') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1069 tomo_zoom_list = [] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1070 for j in range(tomo_stack.shape[0]): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1071 tomo_zoom = spi.zoom(tomo_stack[j,:,:], 0.01*zoom_perc) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1072 tomo_zoom_list.append(tomo_zoom) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1073 tomo_stack = np.stack([tomo_zoom for tomo_zoom in tomo_zoom_list]) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1074 logging.info(f'... done in {time()-t0:.2f} seconds!') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1075 del tomo_zoom_list | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1076 if not self.galaxy_flag: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1077 title = f'red stack {zoom_perc}p {index}' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1078 if not self.test_mode: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1079 msnc.quickImshow(tomo_stack[0,:,:], title=title, path=self.output_folder, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1080 save_fig=self.save_plots, save_only=self.save_plots_only) | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1081 | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1082 # Convert tomography stack from theta,row,column to row,theta,column | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1083 tomo_stack = np.swapaxes(tomo_stack, 0, 1) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1084 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1085 # Save tomography stack to file | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1086 if not self.galaxy_flag: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1087 if not self.test_mode: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1088 self._saveTomo('red stack', tomo_stack, index) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1089 else: | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1090 np.savetxt(f'{self.output_folder}/red_stack_{index}.txt', | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1091 tomo_stack[0,:,:], fmt='%.6e') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1092 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1093 # Combine stacks | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1094 t0 = time() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1095 self.tomo_stacks[i] = tomo_stack | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1096 logging.debug(f'combining nstack took {time()-t0:.2f} seconds!') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1097 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1098 # Update config and save to file | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1099 stack['preprocessed'] = True | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1100 stack.pop('reconstructed', 'reconstructed not found') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1101 find_center = self.config.get('find_center') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1102 if find_center: | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1103 find_center.pop('completed', 'completed not found') | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1104 if self.test_mode: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1105 find_center.pop('lower_center_offset', 'lower_center_offset not found') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1106 find_center.pop('upper_center_offset', 'upper_center_offset not found') | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1107 self.cf.saveFile(self.config_out) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1108 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1109 if self.tdf.size: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1110 del tdf | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1111 del tbf | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1112 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1113 def _reconstructOnePlane(self, tomo_plane_T, center, thetas_deg, eff_pixel_size, | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1114 cross_sectional_dim, plot_sinogram=True, num_core=1): | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1115 """Invert the sinogram for a single tomography plane. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1116 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1117 # tomo_plane_T index order: column,theta | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1118 assert(0 <= center < tomo_plane_T.shape[0]) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1119 center_offset = center-tomo_plane_T.shape[0]/2 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1120 two_offset = 2*int(np.round(center_offset)) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1121 two_offset_abs = np.abs(two_offset) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1122 max_rad = int(0.5*(cross_sectional_dim/eff_pixel_size)*1.1) # 10% slack to avoid edge effects | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1123 dist_from_edge = max(1, int(np.floor((tomo_plane_T.shape[0]-two_offset_abs)/2.)-max_rad)) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1124 if two_offset >= 0: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1125 logging.debug(f'sinogram range = [{two_offset+dist_from_edge}, {-dist_from_edge}]') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1126 sinogram = tomo_plane_T[two_offset+dist_from_edge:-dist_from_edge,:] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1127 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1128 logging.debug(f'sinogram range = [{dist_from_edge}, {two_offset-dist_from_edge}]') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1129 sinogram = tomo_plane_T[dist_from_edge:two_offset-dist_from_edge,:] | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1130 if plot_sinogram and not self.test_mode: | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1131 msnc.quickImshow(sinogram.T, f'sinogram center offset{center_offset:.2f}', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1132 path=self.output_folder, save_fig=self.save_plots, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1133 save_only=self.save_plots_only, aspect='auto') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1134 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1135 # Inverting sinogram | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1136 t0 = time() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1137 recon_sinogram = iradon(sinogram, theta=thetas_deg, circle=True) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1138 logging.debug(f'inverting sinogram took {time()-t0:.2f} seconds!') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1139 del sinogram | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1140 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1141 # Removing ring artifacts | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1142 # RV parameters for the denoise, gaussian, and ring removal will be different for different feature sizes | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1143 t0 = time() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1144 # recon_sinogram = filters.gaussian(recon_sinogram, 3.0) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1145 recon_sinogram = spi.gaussian_filter(recon_sinogram, 0.5) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1146 recon_clean = np.expand_dims(recon_sinogram, axis=0) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1147 del recon_sinogram | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1148 recon_clean = tomopy.misc.corr.remove_ring(recon_clean, rwidth=17, ncore=num_core) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1149 logging.debug(f'filtering and removing ring artifact took {time()-t0:.2f} seconds!') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1150 return recon_clean | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1151 | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1152 def _plotEdgesOnePlane(self, recon_plane, title, name=None, weight=0.001): | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1153 # RV parameters for the denoise, gaussian, and ring removal will be different for different feature sizes | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1154 edges = denoise_tv_chambolle(recon_plane, weight = weight) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1155 vmax = np.max(edges[0,:,:]) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1156 vmin = -vmax | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1157 if self.galaxy_flag: | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1158 msnc.quickImshow(edges[0,:,:], title, name=name, save_fig=True, save_only=True, | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1159 cmap='gray', vmin=vmin, vmax=vmax) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1160 else: | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1161 msnc.quickImshow(edges[0,:,:], f'{title} coolwarm', path=self.output_folder, | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1162 save_fig=self.save_plots, save_only=self.save_plots_only, cmap='coolwarm') | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1163 msnc.quickImshow(edges[0,:,:], f'{title} gray', path=self.output_folder, | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1164 save_fig=self.save_plots, save_only=self.save_plots_only, cmap='gray', | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1165 vmin=vmin, vmax=vmax) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1166 del edges | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1167 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1168 def _findCenterOnePlane(self, sinogram, row, thetas_deg, eff_pixel_size, cross_sectional_dim, | 
| 7 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1169 tol=0.1, num_core=1, recon_pngname=None, galaxy_param=None): | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1170 """Find center for a single tomography plane. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1171 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1172 # sinogram index order: theta,column | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1173 # need index order column,theta for iradon, so take transpose | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1174 sinogram_T = sinogram.T | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1175 center = sinogram.shape[1]/2 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1176 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1177 # try automatic center finding routines for initial value | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1178 tomo_center = tomopy.find_center_vo(sinogram, ncore=num_core) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1179 center_offset_vo = tomo_center-center | 
| 7 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1180 if self.test_mode: | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1181 logging.info(f'Center at row {row} using Nghia Vo’s method = {center_offset_vo:.2f}') | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1182 del sinogram_T | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1183 return float(center_offset_vo) | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1184 elif self.galaxy_flag: | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1185 logging.info(f'Center at row {row} using Nghia Vo’s method = {center_offset_vo:.2f}') | 
| 7 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1186 if recon_pngname: | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1187 assert(isinstance(recon_pngname, str)) | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1188 recon_plane = self._reconstructOnePlane(sinogram_T, tomo_center, thetas_deg, | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1189 eff_pixel_size, cross_sectional_dim, False, num_core) | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1190 title = os.path.basename(recon_pngname) | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1191 self._plotEdgesOnePlane(recon_plane, title, name=recon_pngname) | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1192 del recon_plane | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1193 if not galaxy_param or not galaxy_param['center_type_selector']: | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1194 del sinogram_T | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1195 return float(center_offset_vo) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1196 else: | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1197 print(f'Center at row {row} using Nghia Vo’s method = {center_offset_vo:.2f}') | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1198 if recon_pngname: | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1199 logging.warning('Ignoring recon_pngname in _findCenterOnePlane (only for Galaxy)') | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1200 recon_plane = self._reconstructOnePlane(sinogram_T, tomo_center, thetas_deg, | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1201 eff_pixel_size, cross_sectional_dim, False, num_core) | 
| 7 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1202 title = f'edges row{row} center_offset_vo{center_offset_vo:.2f}' | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1203 self._plotEdgesOnePlane(recon_plane, title) | 
| 7 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1204 if not self.galaxy_flag: | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1205 if (pyip.inputYesNo('Try finding center using phase correlation '+ | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1206 '(y/[n])? ', blank=True) == 'yes'): | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1207 tomo_center = tomopy.find_center_pc(sinogram, sinogram, tol=0.1, | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1208 rotc_guess=tomo_center) | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1209 error = 1. | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1210 while error > tol: | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1211 prev = tomo_center | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1212 tomo_center = tomopy.find_center_pc(sinogram, sinogram, tol=tol, | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1213 rotc_guess=tomo_center) | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1214 error = np.abs(tomo_center-prev) | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1215 center_offset = tomo_center-center | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1216 print(f'Center at row {row} using phase correlation = {center_offset:.2f}') | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1217 recon_plane = self._reconstructOnePlane(sinogram_T, tomo_center, thetas_deg, | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1218 eff_pixel_size, cross_sectional_dim, False, num_core) | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1219 title = f'edges row{row} center_offset{center_offset:.2f}' | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1220 self._plotEdgesOnePlane(recon_plane, title) | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1221 if (pyip.inputYesNo('Accept a center location ([y]) or continue '+ | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1222 'search (n)? ', blank=True) != 'no'): | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1223 center_offset = pyip.inputNum( | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1224 f' Enter chosen center offset [{-int(center)}, {int(center)}] '+ | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1225 f'([{center_offset_vo:.2f}])): ', blank=True) | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1226 if center_offset == '': | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1227 center_offset = center_offset_vo | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1228 del sinogram_T | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1229 del recon_plane | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1230 return float(center_offset) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1231 | 
| 7 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1232 # perform center finding search | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1233 while True: | 
| 7 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1234 if self.galaxy_flag and galaxy_param and galaxy_param['center_type_selector']: | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1235 set_center = center_offset_vo | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1236 if galaxy_param['center_type_selector'] == 'user': | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1237 set_center = galaxy_param['set_center'] | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1238 set_range = galaxy_param['set_range'] | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1239 center_offset_step = galaxy_param['set_step'] | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1240 if (not msnc.is_num(set_range, 0) or not msnc.is_num(center_offset_step) or | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1241 center_offset_step <= 0): | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1242 logging.warning('Illegal center finding search parameter, skip search') | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1243 del sinogram_T | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1244 return float(center_offset_vo) | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1245 set_range = center_offset_step*max(1, int(set_range/center_offset_step)) | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1246 center_offset_low = set_center-set_range | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1247 center_offset_upp = set_center+set_range | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1248 else: | 
| 7 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1249 center_offset_low = pyip.inputInt('\nEnter lower bound for center offset '+ | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1250 f'[{-int(center)}, {int(center)}]: ', min=-int(center), max=int(center)) | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1251 center_offset_upp = pyip.inputInt('Enter upper bound for center offset '+ | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1252 f'[{center_offset_low}, {int(center)}]: ', | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1253 min=center_offset_low, max=int(center)) | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1254 if center_offset_upp == center_offset_low: | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1255 center_offset_step = 1 | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1256 else: | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1257 center_offset_step = pyip.inputInt('Enter step size for center offset search '+ | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1258 f'[1, {center_offset_upp-center_offset_low}]: ', | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1259 min=1, max=center_offset_upp-center_offset_low) | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1260 num_center_offset = 1+int((center_offset_upp-center_offset_low)/center_offset_step) | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1261 center_offsets = np.linspace(center_offset_low, center_offset_upp, num_center_offset) | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1262 for center_offset in center_offsets: | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1263 if center_offset == center_offset_vo: | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1264 continue | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1265 logging.info(f'center_offset = {center_offset:.2f}') | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1266 recon_plane = self._reconstructOnePlane(sinogram_T, center_offset+center, | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1267 thetas_deg, eff_pixel_size, cross_sectional_dim, False, num_core) | 
| 7 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1268 title = f'edges row{row} center_offset{center_offset:.2f}' | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1269 self._plotEdgesOnePlane(recon_plane, title) | 
| 7 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1270 if self.galaxy_flag or pyip.inputInt('\nContinue (0) or end the search (1): ', | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1271 min=0, max=1): | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1272 break | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1273 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1274 del sinogram_T | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1275 del recon_plane | 
| 7 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1276 if self.galaxy_flag: | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1277 center_offset = center_offset_vo | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1278 else: | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1279 center_offset = pyip.inputNum(f' Enter chosen center offset '+ | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1280 f'[{-int(center)}, {int(center)}]: ', min=-int(center), max=int(center)) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1281 return float(center_offset) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1282 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1283 def _reconstructOneTomoStack(self, tomo_stack, thetas, row_bounds=None, | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1284 center_offsets=[], sigma=0.1, rwidth=30, num_core=1, algorithm='gridrec', | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1285 run_secondary_sirt=False, secondary_iter=100): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1286 """reconstruct a single tomography stack. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1287 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1288 # stack order: row,theta,column | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1289 # thetas must be in radians | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1290 # centers_offset: tomography axis shift in pixels relative to column center | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1291 # RV should we remove stripes? | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1292 # https://tomopy.readthedocs.io/en/latest/api/tomopy.prep.stripe.html | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1293 # RV should we remove rings? | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1294 # https://tomopy.readthedocs.io/en/latest/api/tomopy.misc.corr.html | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1295 # RV: Add an option to do (extra) secondary iterations later or to do some sort of convergence test? | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1296 if row_bounds is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1297 row_bounds = [0, tomo_stack.shape[0]] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1298 else: | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1299 if not msnc.is_index_range(row_bounds, 0, tomo_stack.shape[0]): | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1300 raise ValueError('Illegal row bounds in reconstructOneTomoStack') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1301 if thetas.size != tomo_stack.shape[1]: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1302 raise ValueError('theta dimension mismatch in reconstructOneTomoStack') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1303 if not len(center_offsets): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1304 centers = np.zeros((row_bounds[1]-row_bounds[0])) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1305 elif len(center_offsets) == 2: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1306 centers = np.linspace(center_offsets[0], center_offsets[1], | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1307 row_bounds[1]-row_bounds[0]) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1308 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1309 if center_offsets.size != row_bounds[1]-row_bounds[0]: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1310 raise ValueError('center_offsets dimension mismatch in reconstructOneTomoStack') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1311 centers = center_offsets | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1312 centers += tomo_stack.shape[2]/2 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1313 if True: | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1314 tomo_stack = tomopy.prep.stripe.remove_stripe_fw( | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1315 tomo_stack[row_bounds[0]:row_bounds[1]], sigma=sigma, ncore=num_core) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1316 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1317 tomo_stack = tomo_stack[row_bounds[0]:row_bounds[1]] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1318 tomo_recon_stack = tomopy.recon(tomo_stack, thetas, centers, sinogram_order=True, | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1319 algorithm=algorithm, ncore=num_core) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1320 if run_secondary_sirt and secondary_iter > 0: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1321 #options = {'method':'SIRT_CUDA', 'proj_type':'cuda', 'num_iter':secondary_iter} | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1322 #RV: doesn't work for me: "Error: CUDA error 803: system has unsupported display driver / | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1323 # cuda driver combination." | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1324 #options = {'method':'SIRT', 'proj_type':'linear', 'MinConstraint': 0, 'num_iter':secondary_iter} | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1325 #SIRT did not finish while running overnight | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1326 #options = {'method':'SART', 'proj_type':'linear', 'num_iter':secondary_iter} | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1327 options = {'method':'SART', 'proj_type':'linear', 'MinConstraint': 0, | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1328 'num_iter':secondary_iter} | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1329 tomo_recon_stack = tomopy.recon(tomo_stack, thetas, centers, | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1330 init_recon=tomo_recon_stack, options=options, sinogram_order=True, | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1331 algorithm=tomopy.astra, ncore=num_core) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1332 if True: | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1333 tomopy.misc.corr.remove_ring(tomo_recon_stack, rwidth=rwidth, out=tomo_recon_stack, | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1334 ncore=num_core) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1335 return tomo_recon_stack | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1336 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1337 def findImageFiles(self): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1338 """Find all available image files. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1339 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1340 self.is_valid = True | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1341 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1342 # Find dark field images | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1343 dark_field = self.config['dark_field'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1344 img_start, num_imgs, dark_files = msnc.findImageFiles( | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1345 dark_field['data_path'], self.config['data_filetype'], 'dark field') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1346 if img_start < 0 or num_imgs < 1: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1347 logging.error('Unable to find suitable dark field images') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1348 if dark_field['data_path']: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1349 self.is_valid = False | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1350 img_start_old = dark_field.get('img_start') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1351 num_imgs_old = dark_field.get('num') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1352 if num_imgs_old is None: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1353 dark_field['num'] = num_imgs | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1354 else: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1355 if num_imgs_old > num_imgs: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1356 logging.error('Inconsistent number of availaible dark field images') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1357 if dark_field['data_path']: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1358 self.is_valid = False | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1359 if img_start_old is None: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1360 dark_field['img_start'] = img_start | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1361 else: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1362 if img_start_old < img_start: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1363 logging.error('Inconsistent image start index for dark field images') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1364 if dark_field['data_path']: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1365 self.is_valid = False | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1366 logging.info(f'Number of dark field images = {dark_field["num"]}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1367 logging.info(f'Dark field image start index = {dark_field["img_start"]}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1368 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1369 # Find bright field images | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1370 bright_field = self.config['bright_field'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1371 img_start, num_imgs, bright_files = msnc.findImageFiles( | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1372 bright_field['data_path'], self.config['data_filetype'], 'bright field') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1373 if img_start < 0 or num_imgs < 1: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1374 logging.error('Unable to find suitable bright field images') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1375 self.is_valid = False | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1376 img_start_old = bright_field.get('img_start') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1377 num_imgs_old = bright_field.get('num') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1378 if num_imgs_old is None: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1379 bright_field['num'] = num_imgs | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1380 else: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1381 if num_imgs_old > num_imgs: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1382 logging.error('Inconsistent number of availaible bright field images') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1383 self.is_valid = False | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1384 if img_start_old is None: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1385 bright_field['img_start'] = img_start | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1386 else: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1387 if img_start_old < img_start: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1388 logging.warning('Inconsistent image start index for bright field images') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1389 self.is_valid = False | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1390 logging.info(f'Number of bright field images = {bright_field["num"]}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1391 logging.info(f'Bright field image start index = {bright_field["img_start"]}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1392 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1393 # Find tomography images | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1394 tomo_stack_files = [] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1395 for stack in self.config['stack_info']['stacks']: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1396 index = stack['index'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1397 img_start, num_imgs, tomo_files = msnc.findImageFiles( | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1398 stack['data_path'], self.config['data_filetype'], f'tomography set {index}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1399 if img_start < 0 or num_imgs < 1: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1400 logging.error('Unable to find suitable tomography images') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1401 self.is_valid = False | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1402 img_start_old = stack.get('img_start') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1403 num_imgs_old = stack.get('num') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1404 if num_imgs_old is None: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1405 stack['num'] = num_imgs | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1406 else: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1407 if num_imgs_old > num_imgs: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1408 logging.error('Inconsistent number of availaible tomography images') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1409 self.is_valid = False | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1410 if img_start_old is None: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1411 stack['img_start'] = img_start | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1412 else: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1413 if img_start_old < img_start: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1414 logging.warning('Inconsistent image start index for tomography images') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1415 self.is_valid = False | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1416 logging.info(f'Number of tomography images for set {index} = {stack["num"]}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1417 logging.info(f'Tomography set {index} image start index = {stack["img_start"]}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1418 tomo_stack_files.append(tomo_files) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1419 del tomo_files | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1420 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1421 # Safe updated config | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1422 if self.is_valid: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1423 self.cf.saveFile(self.config_out) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1424 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1425 return dark_files, bright_files, tomo_stack_files | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1426 | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1427 def loadTomoStacks(self, input_name): | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1428 """Load tomography stacks (only for Galaxy). | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1429 """ | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1430 assert(self.galaxy_flag) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1431 t0 = time() | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1432 logging.info(f'Loading preprocessed tomography stack from {input_name} ...') | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1433 stack_info = self.config['stack_info'] | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1434 stacks = stack_info.get('stacks') | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1435 assert(len(self.tomo_stacks) == stack_info['num']) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1436 with np.load(input_name) as f: | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1437 for i,stack in enumerate(stacks): | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1438 self.tomo_stacks[i] = f[f'set_{stack["index"]}'] | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1439 logging.info(f'loaded stack {i}: index = {stack["index"]}, shape = '+ | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1440 f'{self.tomo_stacks[i].shape}') | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1441 logging.info(f'... done in {time()-t0:.2f} seconds!') | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1442 | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1443 def genTomoStacks(self, tdf_files=None, tbf_files=None, tomo_stack_files=None, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1444 dark_field_pngname=None, bright_field_pngname=None, tomo_field_pngname=None, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1445 detectorbounds_pngname=None, output_name=None): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1446 """Preprocess tomography images. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1447 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1448 # Try loading any already preprocessed stacks (skip in Galaxy) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1449 # preprocessed stack order for each one in stack: row,theta,column | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1450 stack_info = self.config['stack_info'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1451 stacks = stack_info['stacks'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1452 num_tomo_stacks = stack_info['num'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1453 assert(num_tomo_stacks == len(self.tomo_stacks)) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1454 available_stacks = [False]*num_tomo_stacks | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1455 if self.galaxy_flag: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1456 assert(tdf_files is None or isinstance(tdf_files, list)) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1457 assert(isinstance(tbf_files, list)) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1458 assert(isinstance(tomo_stack_files, list)) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1459 assert(num_tomo_stacks == len(tomo_stack_files)) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1460 assert(isinstance(dark_field_pngname, str)) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1461 assert(isinstance(bright_field_pngname, str)) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1462 assert(isinstance(tomo_field_pngname, str)) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1463 assert(isinstance(detectorbounds_pngname, str)) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1464 assert(isinstance(output_name, str)) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1465 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1466 if tdf_files: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1467 logging.warning('Ignoring tdf_files in genTomoStacks (only for Galaxy)') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1468 if tbf_files: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1469 logging.warning('Ignoring tbf_files in genTomoStacks (only for Galaxy)') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1470 if tomo_stack_files: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1471 logging.warning('Ignoring tomo_stack_files in genTomoStacks (only for Galaxy)') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1472 tdf_files, tbf_files, tomo_stack_files = self.findImageFiles() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1473 if not self.is_valid: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1474 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1475 for i,stack in enumerate(stacks): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1476 if not self.tomo_stacks[i].size and stack.get('preprocessed', False): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1477 self.tomo_stacks[i], available_stacks[i] = \ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1478 self._loadTomo('red stack', stack['index']) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1479 if dark_field_pngname: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1480 logging.warning('Ignoring dark_field_pngname in genTomoStacks (only for Galaxy)') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1481 if bright_field_pngname: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1482 logging.warning('Ignoring bright_field_pngname in genTomoStacks (only for Galaxy)') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1483 if tomo_field_pngname: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1484 logging.warning('Ignoring tomo_field_pngname in genTomoStacks (only for Galaxy)') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1485 if detectorbounds_pngname: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1486 logging.warning('Ignoring detectorbounds_pngname in genTomoStacks '+ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1487 '(only used in Galaxy)') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1488 if output_name: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1489 logging.warning('Ignoring output_name in genTomoStacks '+ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1490 '(only used in Galaxy)') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1491 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1492 # Preprocess any unloaded stacks | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1493 if False in available_stacks: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1494 logging.debug('Preprocessing tomography images') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1495 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1496 # Check required image files (skip in Galaxy) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1497 if not self.galaxy_flag: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1498 self._selectImageRanges(available_stacks) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1499 if not self.is_valid: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1500 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1501 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1502 # Generate dark field | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1503 if tdf_files: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1504 self._genDark(tdf_files, dark_field_pngname) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1505 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1506 # Generate bright field | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1507 self._genBright(tbf_files, bright_field_pngname) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1508 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1509 # Set vertical detector bounds for image stack | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1510 self._setDetectorBounds(tomo_stack_files, tomo_field_pngname, detectorbounds_pngname) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1511 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1512 # Set zoom and/or theta skip to reduce memory the requirement | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1513 self._setZoomOrSkip() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1514 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1515 # Generate tomography fields | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1516 self._genTomo(tomo_stack_files, available_stacks) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1517 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1518 # Save tomography stack to file | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1519 if self.galaxy_flag: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1520 t0 = time() | 
| 2 
b8977c98800b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 0c40fb274acc13ebf7054379bb49ed13acec918e"
 rv43 parents: 
1diff
changeset | 1521 logging.info(f'Saving preprocessed tomography stack to {output_name} ...') | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1522 save_stacks = {f'set_{stack["index"]}':tomo_stack | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1523 for stack,tomo_stack in zip(stacks,self.tomo_stacks)} | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1524 np.savez(output_name, **save_stacks) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1525 logging.info(f'... done in {time()-t0:.2f} seconds!') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1526 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1527 del available_stacks | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1528 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1529 # Adjust sample reference height, update config and save to file | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1530 preprocess = self.config.get('preprocess') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1531 if preprocess is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1532 img_x_bounds = [0, self.tbf.shape[0]] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1533 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1534 img_x_bounds = preprocess.get('img_x_bounds', [0, self.tbf.shape[0]]) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1535 pixel_size = self.config['detector']['pixel_size'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1536 if pixel_size is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1537 raise ValueError('Detector pixel size unavailable') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1538 pixel_size *= img_x_bounds[0] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1539 for stack in stacks: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1540 stack['ref_height'] = stack['ref_height']+pixel_size | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1541 self.cf.saveFile(self.config_out) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1542 | 
| 7 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1543 def findCenters(self, galaxy_param=None, num_core=None): | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1544 """Find rotation axis centers for the tomography stacks. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1545 """ | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1546 if num_core is None: | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1547 num_core = self.num_core | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1548 logging.debug('Find centers for tomography stacks') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1549 stacks = self.config['stack_info']['stacks'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1550 available_stacks = [stack['index'] for stack in stacks if stack.get('preprocessed', False)] | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1551 logging.debug('Available stacks: {available_stacks}') | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1552 if self.galaxy_flag: | 
| 7 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1553 assert(isinstance(galaxy_param, dict)) | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1554 row_bounds = galaxy_param['row_bounds'] | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1555 center_rows = galaxy_param['center_rows'] | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1556 if center_rows is None: | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1557 logging.error('Missing center_rows entry in galaxy_param') | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1558 return | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1559 center_type_selector = galaxy_param['center_type_selector'] | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1560 if center_type_selector: | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1561 if center_type_selector == 'vo': | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1562 set_center = None | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1563 elif center_type_selector == 'user': | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1564 set_center = galaxy_param['set_center'] | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1565 else: | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1566 logging.error('Illegal center_type_selector entry in galaxy_param '+ | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1567 f'({center_type_selector})') | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1568 galaxy_param['center_type_selector'] = None | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1569 else: | 
| 7 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1570 if galaxy_param: | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1571 logging.warning('Ignoring galaxy_param in findCenters (only for Galaxy)') | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1572 galaxy_param = None | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1573 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1574 # Check for valid available center stack index | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1575 find_center = self.config.get('find_center') | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1576 center_stack_index = None | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1577 if find_center and 'center_stack_index' in find_center: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1578 center_stack_index = find_center['center_stack_index'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1579 if (not isinstance(center_stack_index, int) or | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1580 center_stack_index not in available_stacks): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1581 msnc.illegal_value('center_stack_index', center_stack_index, 'config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1582 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1583 if self.test_mode: | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1584 assert(find_center.get('completed', False) == False) | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1585 else: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1586 print('\nFound calibration center offset info for stack '+ | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1587 f'{center_stack_index}') | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1588 if (pyip.inputYesNo('Do you want to use this again ([y]/n)? ', | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1589 blank=True) != 'no' and find_center.get('completed', False) == True): | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1590 return | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1591 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1592 # Load the required preprocessed stack | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1593 # preprocessed stack order: row,theta,column | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1594 num_tomo_stacks = self.config['stack_info']['num'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1595 assert(len(stacks) == num_tomo_stacks) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1596 assert(len(self.tomo_stacks) == num_tomo_stacks) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1597 if num_tomo_stacks == 1: | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1598 if not center_stack_index: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1599 center_stack_index = stacks[0]['index'] | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1600 elif center_stack_index != stacks[0]['index']: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1601 raise ValueError(f'Inconsistent center_stack_index {center_stack_index}') | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1602 if not self.tomo_stacks[0].size: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1603 self.tomo_stacks[0], available = self._loadTomo('red stack', center_stack_index, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1604 required=True) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1605 center_stack = self.tomo_stacks[0] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1606 if not center_stack.size: | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1607 stacks[0]['preprocessed'] = False | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1608 raise OSError('Unable to load the required preprocessed tomography stack') | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1609 assert(stacks[0].get('preprocessed', False) == True) | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1610 elif self.galaxy_flag: | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1611 logging.error('CHECK/FIX FOR GALAXY') | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1612 #center_stack_index = stacks[int(num_tomo_stacks/2)]['index'] | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1613 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1614 while True: | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1615 if not center_stack_index: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1616 center_stack_index = pyip.inputInt('\nEnter tomography stack index to get ' | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1617 f'rotation axis centers {available_stacks}: ') | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1618 while center_stack_index not in available_stacks: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1619 center_stack_index = pyip.inputInt('\nEnter tomography stack index to get ' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1620 f'rotation axis centers {available_stacks}: ') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1621 tomo_stack_index = available_stacks.index(center_stack_index) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1622 if not self.tomo_stacks[tomo_stack_index].size: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1623 self.tomo_stacks[tomo_stack_index], available = self._loadTomo( | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1624 'red stack', center_stack_index, required=True) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1625 center_stack = self.tomo_stacks[tomo_stack_index] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1626 if not center_stack.size: | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1627 stacks[tomo_stack_index]['preprocessed'] = False | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1628 logging.error(f'Unable to load the {center_stack_index}th '+ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1629 'preprocessed tomography stack, pick another one') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1630 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1631 break | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1632 assert(stacks[tomo_stack_index].get('preprocessed', False) == True) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1633 if find_center is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1634 self.config['find_center'] = {'center_stack_index' : center_stack_index} | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1635 find_center = self.config['find_center'] | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1636 else: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1637 find_center['center_stack_index'] = center_stack_index | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1638 if not self.galaxy_flag: | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1639 row_bounds = find_center.get('row_bounds', None) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1640 center_rows = [find_center.get('lower_row', None), | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1641 find_center.get('upper_row', None)] | 
| 7 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1642 if row_bounds is None: | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1643 row_bounds = [0, center_stack.shape[0]] | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1644 if row_bounds[0] == -1: | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1645 row_bounds[0] = 0 | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1646 if row_bounds[1] == -1: | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1647 row_bounds[1] = center_stack.shape[0] | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1648 if not msnc.is_index_range(row_bounds, 0, center_stack.shape[0]): | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1649 msnc.illegal_value('row_bounds', row_bounds) | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1650 return | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1651 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1652 # Set thetas (in degrees) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1653 theta_range = self.config['theta_range'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1654 theta_start = theta_range['start'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1655 theta_end = theta_range['end'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1656 num_theta = theta_range['num'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1657 num_theta_skip = self.config['preprocess'].get('num_theta_skip', 0) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1658 thetas_deg = np.linspace(theta_start, theta_end, int(num_theta/(num_theta_skip+1)), | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1659 endpoint=False) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1660 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1661 # Get non-overlapping sample row boundaries | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1662 zoom_perc = self.config['preprocess'].get('zoom_perc', 100) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1663 pixel_size = self.config['detector']['pixel_size'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1664 if pixel_size is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1665 raise ValueError('Detector pixel size unavailable') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1666 eff_pixel_size = 100.*pixel_size/zoom_perc | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1667 logging.debug(f'eff_pixel_size = {eff_pixel_size}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1668 if num_tomo_stacks == 1: | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1669 accept = 'yes' | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1670 if not self.test_mode and not self.galaxy_flag: | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1671 accept = 'no' | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1672 print('\nSelect bounds for image reconstruction') | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1673 if msnc.is_index_range(row_bounds, 0, center_stack.shape[0]): | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1674 a_tmp = np.copy(center_stack[:,0,:]) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1675 a_tmp_max = a_tmp.max() | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1676 a_tmp[row_bounds[0],:] = a_tmp_max | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1677 a_tmp[row_bounds[1]-1,:] = a_tmp_max | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1678 print(f'lower bound = {row_bounds[0]} (inclusive)') | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1679 print(f'upper bound = {row_bounds[1]} (exclusive)') | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1680 msnc.quickImshow(a_tmp, title=f'center stack theta={theta_start}', | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1681 aspect='auto') | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1682 del a_tmp | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1683 accept = pyip.inputYesNo('Accept these bounds ([y]/n)?: ', blank=True) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1684 if accept == 'no': | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1685 (n1, n2) = msnc.selectImageBounds(center_stack[:,0,:], 0, | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1686 title=f'center stack theta={theta_start}') | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1687 else: | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1688 n1 = row_bounds[0] | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1689 n2 = row_bounds[1] | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1690 else: | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1691 logging.error('CHECK/FIX FOR GALAXY') | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1692 tomo_ref_heights = [stack['ref_height'] for stack in stacks] | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1693 n1 = int((1.+(tomo_ref_heights[0]+center_stack.shape[0]*eff_pixel_size- | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1694 tomo_ref_heights[1])/eff_pixel_size)/2) | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1695 n2 = center_stack.shape[0]-n1 | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1696 logging.info(f'n1 = {n1}, n2 = {n2} (n2-n1) = {(n2-n1)*eff_pixel_size:.3f} mm') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1697 if not center_stack.size: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1698 RuntimeError('Center stack not loaded') | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1699 if not self.test_mode and not self.galaxy_flag: | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1700 tmp = center_stack[:,0,:] | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1701 tmp_max = tmp.max() | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1702 tmp[n1,:] = tmp_max | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1703 tmp[n2-1,:] = tmp_max | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1704 if msnc.is_index_range(center_rows, 0, tmp.shape[0]): | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1705 tmp[center_rows[0],:] = tmp_max | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1706 tmp[center_rows[1]-1,:] = tmp_max | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1707 extent = [0, tmp.shape[1], tmp.shape[0], 0] | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1708 msnc.quickImshow(tmp, title=f'center stack theta={theta_start}', | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1709 path=self.output_folder, extent=extent, save_fig=self.save_plots, | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1710 save_only=self.save_plots_only, aspect='auto') | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1711 del tmp | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1712 #extent = [0, center_stack.shape[2], n2, n1] | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1713 #msnc.quickImshow(center_stack[n1:n2,0,:], title=f'center stack theta={theta_start}', | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1714 # path=self.output_folder, extent=extent, save_fig=self.save_plots, | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1715 # save_only=self.save_plots_only, show_grid=True, aspect='auto') | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1716 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1717 # Get cross sectional diameter in mm | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1718 cross_sectional_dim = center_stack.shape[2]*eff_pixel_size | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1719 logging.debug(f'cross_sectional_dim = {cross_sectional_dim}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1720 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1721 # Determine center offset at sample row boundaries | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1722 logging.info('Determine center offset at sample row boundaries') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1723 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1724 # Lower row center | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1725 use_row = 'no' | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1726 use_center = 'no' | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1727 row = center_rows[0] | 
| 7 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1728 if self.test_mode or self.galaxy_flag: | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1729 assert(msnc.is_int(row, n1, n2-2)) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1730 if msnc.is_int(row, n1, n2-2): | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1731 if self.test_mode or self.galaxy_flag: | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1732 use_row = 'yes' | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1733 else: | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1734 msnc.quickImshow(center_stack[:,0,:], title=f'theta={theta_start}', aspect='auto') | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1735 use_row = pyip.inputYesNo('\nCurrent row index for lower center = ' | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1736 f'{row}, use this value ([y]/n)? ', blank=True) | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1737 if self.save_plots_only: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1738 msnc.clearFig(f'theta={theta_start}') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1739 if use_row != 'no': | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1740 center_offset = find_center.get('lower_center_offset') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1741 if msnc.is_num(center_offset): | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1742 use_center = pyip.inputYesNo('Current lower center offset = '+ | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1743 f'{center_offset}, use this value ([y]/n)? ', blank=True) | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1744 if use_center == 'no': | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1745 if use_row == 'no': | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1746 if not self.test_mode: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1747 msnc.quickImshow(center_stack[:,0,:], title=f'theta={theta_start}', | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1748 aspect='auto') | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1749 row = pyip.inputInt('\nEnter row index to find lower center '+ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1750 f'[[{n1}], {n2-2}]: ', min=n1, max=n2-2, blank=True) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1751 if row == '': | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1752 row = n1 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1753 if self.save_plots_only: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1754 msnc.clearFig(f'theta={theta_start}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1755 # center_stack order: row,theta,column | 
| 7 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1756 if galaxy_param: | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1757 recon_pngname = galaxy_param['recon_center_low'] | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1758 else: | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1759 recon_pngname = None | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1760 center_offset = self._findCenterOnePlane(center_stack[row,:,:], row, thetas_deg, | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1761 eff_pixel_size, cross_sectional_dim, num_core=num_core, | 
| 7 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1762 recon_pngname=recon_pngname, galaxy_param=galaxy_param) | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1763 logging.info(f'lower_center_offset = {center_offset:.2f} {type(center_offset)}') | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1764 print(center_offset) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1765 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1766 # Update config and save to file | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1767 find_center['row_bounds'] = [n1, n2] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1768 find_center['lower_row'] = row | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1769 find_center['lower_center_offset'] = center_offset | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1770 self.cf.saveFile(self.config_out) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1771 lower_row = row | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1772 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1773 # Upper row center | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1774 use_row = 'no' | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1775 use_center = 'no' | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1776 row = center_rows[1] | 
| 7 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1777 if self.test_mode or self.galaxy_flag: | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1778 assert(msnc.is_int(row, lower_row+1, n2-1)) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1779 if msnc.is_int(row, lower_row+1, n2-1): | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1780 if self.test_mode or self.galaxy_flag: | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1781 use_row = 'yes' | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1782 else: | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1783 msnc.quickImshow(center_stack[:,0,:], title=f'theta={theta_start}', aspect='auto') | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1784 use_row = pyip.inputYesNo('\nCurrent row index for upper center = ' | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1785 f'{row}, use this value ([y]/n)? ', blank=True) | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1786 if self.save_plots_only: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1787 msnc.clearFig(f'theta={theta_start}') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1788 if use_row != 'no': | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1789 center_offset = find_center.get('upper_center_offset') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1790 if msnc.is_num(center_offset): | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1791 use_center = pyip.inputYesNo('Current upper center offset = '+ | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1792 f'{center_offset}, use this value ([y]/n)? ', blank=True) | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1793 if use_center == 'no': | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1794 if use_row == 'no': | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1795 if not self.test_mode: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1796 msnc.quickImshow(center_stack[:,0,:], title=f'theta={theta_start}', | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1797 aspect='auto') | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1798 row = pyip.inputInt('\nEnter row index to find upper center '+ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1799 f'[{lower_row+1}, [{n2-1}]]: ', min=lower_row+1, max=n2-1, blank=True) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1800 if row == '': | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1801 row = n2-1 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1802 if self.save_plots_only: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1803 msnc.clearFig(f'theta={theta_start}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1804 # center_stack order: row,theta,column | 
| 7 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1805 if galaxy_param: | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1806 recon_pngname = galaxy_param['recon_center_upp'] | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1807 else: | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1808 recon_pngname = None | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1809 center_offset = self._findCenterOnePlane(center_stack[row,:,:], row, thetas_deg, | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1810 eff_pixel_size, cross_sectional_dim, num_core=num_core, | 
| 7 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1811 recon_pngname=recon_pngname, galaxy_param=galaxy_param) | 
| 
845270a96464
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a08ed1264ea7b7c878ba96801e4b27ef621fb6be"
 rv43 parents: 
3diff
changeset | 1812 logging.info(f'upper_center_offset = {center_offset:.2f}') | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1813 del center_stack | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1814 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1815 # Update config and save to file | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1816 find_center['upper_row'] = row | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1817 find_center['upper_center_offset'] = center_offset | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1818 find_center['completed'] = True | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1819 self.cf.saveFile(self.config_out) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1820 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1821 def checkCenters(self): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1822 """Check centers for the tomography stacks. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1823 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1824 #RV TODO load all stacks and check at all stack boundaries | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1825 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1826 logging.debug('Check centers for tomography stacks') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1827 center_stack_index = self.config.get('center_stack_index') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1828 if center_stack_index is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1829 raise ValueError('Unable to read center_stack_index from config') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1830 center_stack_index = self.tomo_stacks[self.tomo_data_indices.index(center_stack_index)] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1831 lower_row = self.config.get('lower_row') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1832 if lower_row is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1833 raise ValueError('Unable to read lower_row from config') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1834 lower_center_offset = self.config.get('lower_center_offset') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1835 if lower_center_offset is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1836 raise ValueError('Unable to read lower_center_offset from config') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1837 upper_row = self.config.get('upper_row') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1838 if upper_row is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1839 raise ValueError('Unable to read upper_row from config') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1840 upper_center_offset = self.config.get('upper_center_offset') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1841 if upper_center_offset is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1842 raise ValueError('Unable to read upper_center_offset from config') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1843 center_slope = (upper_center_offset-lower_center_offset)/(upper_row-lower_row) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1844 shift = upper_center_offset-lower_center_offset | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1845 if lower_row == 0: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1846 logging.warning(f'lower_row == 0: one row offset between both planes') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1847 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1848 lower_row -= 1 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1849 lower_center_offset -= center_slope | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1850 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1851 # stack order: stack,row,theta,column | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1852 if center_stack_index: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1853 stack1 = self.tomo_stacks[center_stack_index-1] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1854 stack2 = self.tomo_stacks[center_stack_index] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1855 if not stack1.size: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1856 logging.error(f'Unable to load required tomography stack {stack1}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1857 elif not stack2.size: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1858 logging.error(f'Unable to load required tomography stack {stack1}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1859 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1860 assert(0 <= lower_row < stack2.shape[0]) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1861 assert(0 <= upper_row < stack1.shape[0]) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1862 plane1 = stack1[upper_row,:] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1863 plane2 = stack2[lower_row,:] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1864 for i in range(-2, 3): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1865 shift_i = shift+2*i | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1866 plane1_shifted = spi.shift(plane2, [0, shift_i]) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1867 msnc.quickPlot((plane1[0,:],), (plane1_shifted[0,:],), | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1868 title=f'stacks {stack1} {stack2} shifted {2*i} theta={self.start_theta}', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1869 path=self.output_folder, save_fig=self.save_plots, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1870 save_only=self.save_plots_only) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1871 if center_stack_index < self.num_tomo_stacks-1: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1872 stack1 = self.tomo_stacks[center_stack_index] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1873 stack2 = self.tomo_stacks[center_stack_index+1] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1874 if not stack1.size: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1875 logging.error(f'Unable to load required tomography stack {stack1}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1876 elif not stack2.size: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1877 logging.error(f'Unable to load required tomography stack {stack1}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1878 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1879 assert(0 <= lower_row < stack2.shape[0]) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1880 assert(0 <= upper_row < stack1.shape[0]) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1881 plane1 = stack1[upper_row,:] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1882 plane2 = stack2[lower_row,:] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1883 for i in range(-2, 3): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1884 shift_i = -shift+2*i | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1885 plane1_shifted = spi.shift(plane2, [0, shift_i]) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1886 msnc.quickPlot((plane1[0,:],), (plane1_shifted[0,:],), | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1887 title=f'stacks {stack1} {stack2} shifted {2*i} theta={start_theta}', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1888 path=self.output_folder, save_fig=self.save_plots, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1889 save_only=self.save_plots_only) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1890 del plane1, plane2, plane1_shifted | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1891 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1892 # Update config file | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1893 self.config = msnc.update('config.txt', 'check_centers', True, 'find_centers') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1894 | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1895 def reconstructTomoStacks(self, output_name=None, num_core=None): | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1896 """Reconstruct tomography stacks. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1897 """ | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1898 if num_core is None: | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1899 num_core = self.num_core | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1900 logging.debug('Reconstruct tomography stacks') | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1901 stacks = self.config['stack_info']['stacks'] | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1902 assert(len(self.tomo_stacks) == self.config['stack_info']['num']) | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1903 assert(len(self.tomo_stacks) == len(stacks)) | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 1904 assert(len(self.tomo_recon_stacks) == len(stacks)) | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1905 if self.galaxy_flag: | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1906 assert(isinstance(output_name, str)) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1907 else: | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1908 if output_name: | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1909 logging.warning('Ignoring output_name in reconstructTomoStacks '+ | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1910 '(only used in Galaxy)') | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1911 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1912 # Get rotation axis rows and centers | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1913 find_center = self.config['find_center'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1914 lower_row = find_center.get('lower_row') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1915 if lower_row is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1916 logging.error('Unable to read lower_row from config') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1917 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1918 lower_center_offset = find_center.get('lower_center_offset') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1919 if lower_center_offset is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1920 logging.error('Unable to read lower_center_offset from config') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1921 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1922 upper_row = find_center.get('upper_row') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1923 if upper_row is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1924 logging.error('Unable to read upper_row from config') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1925 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1926 upper_center_offset = find_center.get('upper_center_offset') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1927 if upper_center_offset is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1928 logging.error('Unable to read upper_center_offset from config') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1929 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1930 logging.debug(f'lower_row = {lower_row} upper_row = {upper_row}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1931 assert(lower_row < upper_row) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1932 center_slope = (upper_center_offset-lower_center_offset)/(upper_row-lower_row) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1933 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1934 # Set thetas (in radians) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1935 theta_range = self.config['theta_range'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1936 theta_start = theta_range['start'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1937 theta_end = theta_range['end'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1938 num_theta = theta_range['num'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1939 num_theta_skip = self.config['preprocess'].get('num_theta_skip', 0) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1940 thetas = np.radians(np.linspace(theta_start, theta_end, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1941 int(num_theta/(num_theta_skip+1)), endpoint=False)) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1942 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1943 # Reconstruct tomo stacks | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1944 zoom_perc = self.config['preprocess'].get('zoom_perc', 100) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1945 if zoom_perc == 100: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1946 basetitle = 'recon stack full' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1947 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1948 basetitle = f'recon stack {zoom_perc}p' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1949 load_error = False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1950 stacks = self.config['stack_info']['stacks'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1951 for i,stack in enumerate(stacks): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1952 # Check if stack can be loaded | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1953 # reconstructed stack order for each one in stack : row/z,x,y | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1954 # preprocessed stack order for each one in stack: row,theta,column | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1955 index = stack['index'] | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1956 if not self.galaxy_flag: | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1957 available = False | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1958 if stack.get('reconstructed', False): | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1959 self.tomo_recon_stacks[i], available = self._loadTomo('recon stack', index) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1960 if self.tomo_recon_stacks[i].size or available: | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1961 if self.tomo_stacks[i].size: | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1962 self.tomo_stacks[i] = np.array([]) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1963 assert(stack.get('preprocessed', False) == True) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1964 assert(stack.get('reconstructed', False) == True) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1965 continue | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1966 stack['reconstructed'] = False | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1967 if not self.tomo_stacks[i].size: | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1968 self.tomo_stacks[i], available = self._loadTomo('red stack', index, | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1969 required=True) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1970 if not self.tomo_stacks[i].size: | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1971 logging.error(f'Unable to load tomography stack {index} for reconstruction') | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1972 stack[i]['preprocessed'] = False | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1973 load_error = True | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1974 continue | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1975 assert(0 <= lower_row < upper_row < self.tomo_stacks[i].shape[0]) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1976 center_offsets = [lower_center_offset-lower_row*center_slope, | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1977 upper_center_offset+(self.tomo_stacks[i].shape[0]-1-upper_row)*center_slope] | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1978 t0 = time() | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1979 self.tomo_recon_stacks[i]= self._reconstructOneTomoStack(self.tomo_stacks[i], | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1980 thetas, center_offsets=center_offsets, sigma=0.1, num_core=num_core, | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1981 algorithm='gridrec', run_secondary_sirt=True, secondary_iter=25) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1982 logging.info(f'Reconstruction of stack {index} took {time()-t0:.2f} seconds!') | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1983 if not self.test_mode and not self.galaxy_flag: | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1984 row_slice = int(self.tomo_stacks[i].shape[0]/2) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1985 title = f'{basetitle} {index} slice{row_slice}' | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1986 msnc.quickImshow(self.tomo_recon_stacks[i][row_slice,:,:], title=title, | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1987 path=self.output_folder, save_fig=self.save_plots, | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1988 save_only=self.save_plots_only) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1989 msnc.quickPlot(self.tomo_recon_stacks[i] | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1990 [row_slice,int(self.tomo_recon_stacks[i].shape[2]/2),:], | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1991 title=f'{title} cut{int(self.tomo_recon_stacks[i].shape[2]/2)}', | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1992 path=self.output_folder, save_fig=self.save_plots, | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1993 save_only=self.save_plots_only) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1994 self._saveTomo('recon stack', self.tomo_recon_stacks[i], index) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1995 # else: | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1996 # np.savetxt(self.output_folder+f'recon_stack_{index}.txt', | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1997 # self.tomo_recon_stacks[i][row_slice,:,:], fmt='%.6e') | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 1998 self.tomo_stacks[i] = np.array([]) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 1999 | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 2000 # Update config and save to file | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 2001 stack['reconstructed'] = True | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 2002 combine_stacks = self.config.get('combine_stacks') | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 2003 if combine_stacks and index in combine_stacks.get('stacks', []): | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 2004 combine_stacks['stacks'].remove(index) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 2005 self.cf.saveFile(self.config_out) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 2006 | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 2007 # Save reconstructed tomography stack to file | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 2008 if self.galaxy_flag: | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 2009 t0 = time() | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 2010 logging.info(f'Saving reconstructed tomography stack to {output_name} ...') | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 2011 save_stacks = {f'set_{stack["index"]}':tomo_stack | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 2012 for stack,tomo_stack in zip(stacks,self.tomo_recon_stacks)} | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 2013 np.savez(output_name, **save_stacks) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 2014 logging.info(f'... done in {time()-t0:.2f} seconds!') | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2015 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2016 def combineTomoStacks(self): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2017 """Combine the reconstructed tomography stacks. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2018 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2019 # stack order: stack,row(z),x,y | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2020 logging.debug('Combine reconstructed tomography stacks') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2021 # Load any unloaded reconstructed stacks | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2022 stack_info = self.config['stack_info'] | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2023 stacks = stack_info['stacks'] | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2024 for i,stack in enumerate(stacks): | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2025 available = False | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2026 if not self.tomo_recon_stacks[i].size and stack.get('reconstructed', False): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2027 self.tomo_recon_stacks[i], available = self._loadTomo('recon stack', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2028 stack['index'], required=True) | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2029 if not self.tomo_recon_stacks[i].size: | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2030 logging.error(f'Unable to load reconstructed stack {stack["index"]}') | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2031 stack['reconstructed'] = False | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2032 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2033 if i: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2034 if (self.tomo_recon_stacks[i].shape[1] != self.tomo_recon_stacks[0].shape[1] or | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2035 self.tomo_recon_stacks[i].shape[1] != self.tomo_recon_stacks[0].shape[1]): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2036 logging.error('Incompatible reconstructed tomography stack dimensions') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2037 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2038 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2039 # Get center stack boundaries | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2040 row_bounds = self.config['find_center']['row_bounds'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2041 if not msnc.is_index_range(row_bounds, 0, self.tomo_recon_stacks[0].shape[0]): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2042 msnc.illegal_value('row_bounds', row_bounds, 'config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2043 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2044 | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2045 # Selecting x bounds (in yz-plane) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2046 tomosum = 0 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2047 #RV FIX := | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2048 [tomosum := tomosum+np.sum(tomo_recon_stack, axis=(0,2)) for tomo_recon_stack in | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2049 self.tomo_recon_stacks] | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2050 combine_stacks = self.config.get('combine_stacks') | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2051 if combine_stacks and 'x_bounds' in combine_stacks: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2052 x_bounds = combine_stacks['x_bounds'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2053 if not msnc.is_index_range(x_bounds, 0, self.tomo_recon_stacks[0].shape[1]): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2054 msnc.illegal_value('x_bounds', x_bounds, 'config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2055 elif not self.test_mode: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2056 msnc.quickPlot(tomosum, title='recon stack sum yz') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2057 if pyip.inputYesNo('\nCurrent image x-bounds: '+ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2058 f'[{x_bounds[0]}, {x_bounds[1]}], use these values ([y]/n)? ', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2059 blank=True) == 'no': | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2060 if pyip.inputYesNo( | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2061 'Do you want to change the image x-bounds ([y]/n)? ', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2062 blank=True) == 'no': | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2063 x_bounds = [0, self.tomo_recon_stacks[0].shape[1]] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2064 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2065 x_bounds = msnc.selectArrayBounds(tomosum, title='recon stack sum yz') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2066 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2067 msnc.quickPlot(tomosum, title='recon stack sum yz') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2068 if pyip.inputYesNo('\nDo you want to change the image x-bounds (y/n)? ') == 'no': | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2069 x_bounds = [0, self.tomo_recon_stacks[0].shape[1]] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2070 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2071 x_bounds = msnc.selectArrayBounds(tomosum, title='recon stack sum yz') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2072 if False and self.test_mode: | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2073 np.savetxt(f'{self.output_folder}/recon_stack_sum_yz.txt', | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2074 tomosum[x_bounds[0]:x_bounds[1]], fmt='%.6e') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2075 if self.save_plots_only: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2076 msnc.clearFig('recon stack sum yz') | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2077 | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2078 # Selecting y bounds (in xz-plane) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2079 tomosum = 0 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2080 #RV FIX := | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2081 [tomosum := tomosum+np.sum(tomo_recon_stack, axis=(0,1)) for tomo_recon_stack in | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2082 self.tomo_recon_stacks] | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2083 if combine_stacks and 'y_bounds' in combine_stacks: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2084 y_bounds = combine_stacks['y_bounds'] | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2085 if not msnc.is_index_range(y_bounds, 0, self.tomo_recon_stacks[0].shape[1]): | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2086 msnc.illegal_value('y_bounds', y_bounds, 'config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2087 elif not self.test_mode: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2088 msnc.quickPlot(tomosum, title='recon stack sum xz') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2089 if pyip.inputYesNo('\nCurrent image y-bounds: '+ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2090 f'[{y_bounds[0]}, {y_bounds[1]}], use these values ([y]/n)? ', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2091 blank=True) == 'no': | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2092 if pyip.inputYesNo( | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2093 'Do you want to change the image y-bounds ([y]/n)? ', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2094 blank=True) == 'no': | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2095 y_bounds = [0, self.tomo_recon_stacks[0].shape[1]] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2096 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2097 y_bounds = msnc.selectArrayBounds(tomosum, title='recon stack sum yz') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2098 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2099 msnc.quickPlot(tomosum, title='recon stack sum xz') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2100 if pyip.inputYesNo('\nDo you want to change the image y-bounds (y/n)? ') == 'no': | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2101 y_bounds = [0, self.tomo_recon_stacks[0].shape[1]] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2102 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2103 y_bounds = msnc.selectArrayBounds(tomosum, title='recon stack sum xz') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2104 if False and self.test_mode: | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2105 np.savetxt(f'{self.output_folder}/recon_stack_sum_xz.txt', | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2106 tomosum[y_bounds[0]:y_bounds[1]], fmt='%.6e') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2107 if self.save_plots_only: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2108 msnc.clearFig('recon stack sum xz') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2109 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2110 # Combine reconstructed tomography stacks | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2111 logging.info(f'Combining reconstructed stacks ...') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2112 t0 = time() | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2113 num_tomo_stacks = stack_info['num'] | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2114 if num_tomo_stacks == 1: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2115 low_bound = row_bounds[0] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2116 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2117 low_bound = 0 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2118 tomo_recon_combined = self.tomo_recon_stacks[0][low_bound:row_bounds[1]:, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2119 x_bounds[0]:x_bounds[1],y_bounds[0]:y_bounds[1]] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2120 if num_tomo_stacks > 2: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2121 tomo_recon_combined = np.concatenate([tomo_recon_combined]+ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2122 [self.tomo_recon_stacks[i][row_bounds[0]:row_bounds[1], | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2123 x_bounds[0]:x_bounds[1],y_bounds[0]:y_bounds[1]] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2124 for i in range(1, num_tomo_stacks-1)]) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2125 if num_tomo_stacks > 1: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2126 tomo_recon_combined = np.concatenate([tomo_recon_combined]+ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2127 [self.tomo_recon_stacks[num_tomo_stacks-1][row_bounds[0]:, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2128 x_bounds[0]:x_bounds[1],y_bounds[0]:y_bounds[1]]]) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2129 logging.info(f'... done in {time()-t0:.2f} seconds!') | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2130 combined_stacks = [stack['index'] for stack in stacks] | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2131 | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2132 # Wrap up if in test_mode | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2133 tomosum = np.sum(tomo_recon_combined, axis=(1,2)) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2134 if self.test_mode: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2135 zoom_perc = self.config['preprocess'].get('zoom_perc', 100) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2136 filename = 'recon combined sum xy' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2137 if zoom_perc is None or zoom_perc == 100: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2138 filename += ' fullres.dat' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2139 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2140 filename += f' {zoom_perc}p.dat' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2141 msnc.quickPlot(tomosum, title='recon combined sum xy', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2142 path=self.output_folder, save_fig=self.save_plots, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2143 save_only=self.save_plots_only) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2144 if False: | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2145 np.savetxt(f'{self.output_folder}/recon_combined_sum_xy.txt', | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2146 tomosum, fmt='%.6e') | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2147 np.savetxt(f'{self.output_folder}/recon_combined.txt', | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2148 tomo_recon_combined[int(tomo_recon_combined.shape[0]/2),:,:], fmt='%.6e') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2149 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2150 # Update config and save to file | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2151 if combine_stacks: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2152 combine_stacks['x_bounds'] = x_bounds | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2153 combine_stacks['y_bounds'] = y_bounds | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2154 combine_stacks['stacks'] = combined_stacks | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2155 else: | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2156 self.config['combine_stacks'] = {'x_bounds' : x_bounds, 'y_bounds' : y_bounds, | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2157 'stacks' : combined_stacks} | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2158 self.cf.saveFile(self.config_out) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2159 return | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2160 | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2161 # Selecting z bounds (in xy-plane) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2162 msnc.quickPlot(tomosum, title='recon combined sum xy') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2163 if pyip.inputYesNo( | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2164 '\nDo you want to change the image z-bounds (y/[n])? ', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2165 blank=True) != 'yes': | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2166 z_bounds = [0, tomo_recon_combined.shape[0]] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2167 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2168 z_bounds = msnc.selectArrayBounds(tomosum, title='recon combined sum xy') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2169 if z_bounds[0] != 0 or z_bounds[1] != tomo_recon_combined.shape[0]: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2170 tomo_recon_combined = tomo_recon_combined[z_bounds[0]:z_bounds[1],:,:] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2171 logging.info(f'tomo_recon_combined.shape = {tomo_recon_combined.shape}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2172 if self.save_plots_only: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2173 msnc.clearFig('recon combined sum xy') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2174 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2175 # Plot center slices | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2176 msnc.quickImshow(tomo_recon_combined[int(tomo_recon_combined.shape[0]/2),:,:], | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2177 title=f'recon combined xslice{int(tomo_recon_combined.shape[0]/2)}', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2178 path=self.output_folder, save_fig=self.save_plots, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2179 save_only=self.save_plots_only) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2180 msnc.quickImshow(tomo_recon_combined[:,int(tomo_recon_combined.shape[1]/2),:], | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2181 title=f'recon combined yslice{int(tomo_recon_combined.shape[1]/2)}', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2182 path=self.output_folder, save_fig=self.save_plots, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2183 save_only=self.save_plots_only) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2184 msnc.quickImshow(tomo_recon_combined[:,:,int(tomo_recon_combined.shape[2]/2)], | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2185 title=f'recon combined zslice{int(tomo_recon_combined.shape[2]/2)}', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2186 path=self.output_folder, save_fig=self.save_plots, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2187 save_only=self.save_plots_only) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2188 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2189 # Save combined reconstructed tomo stacks | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2190 base_name = 'recon combined' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2191 for stack in stacks: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2192 base_name += f' {stack["index"]}' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2193 self._saveTomo(base_name, tomo_recon_combined) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2194 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2195 # Update config and save to file | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2196 if combine_stacks: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2197 combine_stacks['x_bounds'] = x_bounds | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2198 combine_stacks['y_bounds'] = y_bounds | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2199 combine_stacks['z_bounds'] = z_bounds | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2200 combine_stacks['stacks'] = combined_stacks | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2201 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2202 self.config['combine_stacks'] = {'x_bounds' : x_bounds, 'y_bounds' : y_bounds, | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2203 'z_bounds' : z_bounds, 'stacks' : combined_stacks} | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2204 self.cf.saveFile(self.config_out) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2205 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2206 def runTomo(config_file=None, config_dict=None, output_folder='.', log_level='INFO', | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2207 test_mode=False, num_core=-1): | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2208 """Run a tomography analysis. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2209 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2210 # Instantiate Tomo object | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2211 tomo = Tomo(config_file=config_file, output_folder=output_folder, log_level=log_level, | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2212 test_mode=test_mode, num_core=num_core) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2213 if not tomo.is_valid: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2214 raise ValueError('Invalid config and/or detector file provided.') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2215 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2216 # Preprocess the image files | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2217 assert(tomo.config['stack_info']) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2218 num_tomo_stacks = tomo.config['stack_info']['num'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2219 assert(num_tomo_stacks == len(tomo.tomo_stacks)) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2220 preprocessed_stacks = [] | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2221 if not tomo.test_mode: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2222 preprocess = tomo.config.get('preprocess', None) | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2223 if preprocess: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2224 preprocessed_stacks = [stack['index'] for stack in tomo.config['stack_info']['stacks'] | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2225 if stack.get('preprocessed', False)] | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2226 if len(preprocessed_stacks) != num_tomo_stacks: | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2227 tomo.genTomoStacks() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2228 if not tomo.is_valid: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2229 IOError('Unable to load all required image files.') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2230 tomo.cf.saveFile(tomo.config_out) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2231 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2232 # Find centers | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2233 find_center = tomo.config.get('find_center') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2234 if find_center is None or not find_center.get('completed', False): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2235 tomo.findCenters() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2236 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2237 # Check centers | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2238 #if num_tomo_stacks > 1 and not tomo.config.get('check_centers', False): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2239 # tomo.checkCenters() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2240 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2241 # Reconstruct tomography stacks | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2242 assert(tomo.config['stack_info']['stacks']) | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2243 reconstructed_stacks = [stack['index'] for stack in tomo.config['stack_info']['stacks'] | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2244 if stack.get('reconstructed', False)] | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2245 if len(reconstructed_stacks) != num_tomo_stacks: | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2246 tomo.reconstructTomoStacks() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2247 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2248 # Combine reconstructed tomography stacks | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2249 reconstructed_stacks = [stack['index'] for stack in tomo.config['stack_info']['stacks'] | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2250 if stack.get('reconstructed', False)] | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2251 combine_stacks = tomo.config.get('combine_stacks') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2252 if len(reconstructed_stacks) and (combine_stacks is None or | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2253 combine_stacks.get('stacks') != reconstructed_stacks): | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2254 tomo.combineTomoStacks() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2255 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2256 #%%============================================================================ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2257 if __name__ == '__main__': | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2258 | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2259 # Parse command line arguments | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2260 parser = argparse.ArgumentParser( | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2261 description='Tomography reconstruction') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2262 parser.add_argument('-c', '--config', | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2263 default=None, | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2264 help='Input config') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2265 parser.add_argument('-o', '--output_folder', | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2266 default='.', | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2267 help='Output folder') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2268 parser.add_argument('-l', '--log_level', | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2269 default='INFO', | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2270 help='Log level') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2271 parser.add_argument('-t', '--test_mode', | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2272 action='store_true', | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2273 default=False, | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2274 help='Test mode flag') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2275 parser.add_argument('--num_core', | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
2diff
changeset | 2276 type=int, | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2277 default=-1, | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2278 help='Number of cores') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2279 args = parser.parse_args() | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2280 | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2281 if args.config is None: | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2282 if os.path.isfile('config.yaml'): | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2283 args.config = 'config.yaml' | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2284 else: | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2285 args.config = 'config.txt' | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2286 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2287 # Set basic log configuration | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2288 logging_format = '%(asctime)s : %(levelname)s - %(module)s : %(funcName)s - %(message)s' | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2289 if not args.test_mode: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2290 level = getattr(logging, args.log_level.upper(), None) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2291 if not isinstance(level, int): | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2292 raise ValueError(f'Invalid log_level: {args.log_level}') | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2293 logging.basicConfig(format=logging_format, level=level, force=True, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2294 handlers=[logging.StreamHandler()]) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2295 | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2296 logging.debug(f'config = {args.config}') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2297 logging.debug(f'output_folder = {args.output_folder}') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2298 logging.debug(f'log_level = {args.log_level}') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2299 logging.debug(f'test_mode = {args.test_mode}') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2300 logging.debug(f'num_core = {args.num_core}') | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2301 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2302 # Run tomography analysis | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2303 runTomo(config_file=args.config, output_folder=args.output_folder, log_level=args.log_level, | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2304 test_mode=args.test_mode, num_core=args.num_core) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2305 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2306 #%%============================================================================ | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 2307 # input('Press any key to continue') | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 2308 #%%============================================================================ | 
