annotate tomo.py @ 3:f9c52762c32c draft

"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
author rv43
date Tue, 05 Apr 2022 18:23:54 +0000
parents b8977c98800b
children 845270a96464
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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: 0
diff 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: 0
diff 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: 2
diff 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: 0
diff 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: 0
diff 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: 0
diff changeset
41 self.num_core = num_core
3
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff 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: 0
diff 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: 2
diff 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: 0
diff 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: 0
diff 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: 0
diff 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: 0
diff 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: 0
diff 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: 0
diff 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: 0
diff 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: 0
diff changeset
432 if num_core == -1:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
433 self.num_core = mp.cpu_count()
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
434 else:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff 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: 0
diff changeset
443 format=logging_format, level=logging.INFO, force=True)
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff 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: 0
diff 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: 0
diff 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: 1
diff 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: 0
diff changeset
534 logging.debug(f'config_file = {config_file}')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
535 logging.debug(f'config_dict = {config_dict}')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
536 logging.debug(f'config_out = {self.config_out}')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
537 logging.debug(f'output_folder = {self.output_folder}')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
538 logging.debug(f'log_stream = {log_stream}')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
539 logging.debug(f'log_level = {log_level}')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
540 logging.debug(f'galaxy_flag = {self.galaxy_flag}')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff 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: 0
diff 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: 2
diff changeset
653 if self.galaxy_flag:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff 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: 2
diff changeset
655 save_fig=True, save_only=True)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff 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: 2
diff changeset
687 if self.galaxy_flag:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff 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: 2
diff changeset
689 save_fig=True, save_only=True)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff 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: 0
diff 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: 0
diff changeset
703 if img_x_bounds[0] < 0:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff 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: 0
diff changeset
705 img_x_bounds[0] = 0
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff 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: 0
diff 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: 0
diff 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: 2
diff changeset
749 x_sum_min = x_sum.min()
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff 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: 2
diff 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: 2
diff 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: 2
diff 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: 2
diff 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: 2
diff 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: 2
diff changeset
786 tmp = np.copy(tomo_stack[0,:,:])
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
787 tmp_max = tmp.max()
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
788 tmp[img_x_bounds[0],:] = tmp_max
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
789 tmp[img_x_bounds[1]-1,:] = tmp_max
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
790 msnc.quickImshow(tmp, title=title)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
791 del tmp
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
792 x_sum_min = x_sum.min()
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff 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: 2
diff 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: 2
diff 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: 2
diff changeset
816 x_sum_min = x_sum.min()
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff 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: 2
diff changeset
820 tmp = np.copy(self.tbf)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
821 tmp_max = tmp.max()
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
822 tmp[img_x_bounds[0],:] = tmp_max
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
823 tmp[img_x_bounds[1]-1,:] = tmp_max
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
824 title = 'Bright field'
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
825 msnc.quickImshow(tmp, title=title)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff 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: 2
diff 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: 2
diff 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: 2
diff changeset
846 tmp = np.copy(self.tbf)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
847 tmp_max = tmp.max()
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
848 tmp[x_low,:] = tmp_max
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
849 tmp[x_upp-1,:] = tmp_max
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
850 title = 'Bright field'
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
851 msnc.quickImshow(tmp, title=title)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff 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: 2
diff 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: 2
diff 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: 2
diff 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: 0
diff changeset
1001 zoom_perc = 100
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff 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: 0
diff changeset
1006 zoom_perc = preprocess.get('zoom_perc', 100)
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff 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: 0
diff 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: 0
diff 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: 0
diff 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: 0
diff 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: 0
diff 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: 0
diff 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: 0
diff 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: 0
diff 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: 0
diff changeset
1100 stack.pop('reconstructed', 'reconstructed not found')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1101 find_center = self.config.get('find_center')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1102 if find_center:
3
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1103 find_center.pop('completed', 'completed not found')
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1104 if self.test_mode:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff 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: 0
diff 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: 2
diff 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: 0
diff 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: 2
diff 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: 2
diff 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: 2
diff changeset
1157 if self.galaxy_flag:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff 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: 2
diff changeset
1159 cmap='gray', vmin=vmin, vmax=vmax)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1160 else:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff 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: 2
diff 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: 2
diff 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: 2
diff 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: 2
diff 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,
3
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1169 tol=0.1, num_core=1, recon_pngname=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: 2
diff 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
3
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1180 if self.test_mode or self.galaxy_flag:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1181 logging.info(f'Center at row {row} using Nghia Vo’s method = {center_offset_vo:.2f}')
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1182 if self.test_mode:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1183 del sinogram_T
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1184 return float(center_offset_vo)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1185 else:
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1186 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: 2
diff changeset
1187 if recon_pngname:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1188 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
1189 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: 2
diff changeset
1190 eff_pixel_size, cross_sectional_dim, False, num_core)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1191 if self.galaxy_flag:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1192 assert(isinstance(recon_pngname, str))
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1193 title = os.path.basename(recon_pngname)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1194 self._plotEdgesOnePlane(recon_plane, title, name=recon_pngname)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1195 del sinogram_T
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1196 del recon_plane
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1197 return float(center_offset_vo)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1198 else:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1199 title = f'edges row{row} center_offset_vo{center_offset_vo:.2f}'
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1200 self._plotEdgesOnePlane(recon_plane, title)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1201 if (pyip.inputYesNo('Try finding center using phase correlation '+
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1202 '(y/[n])? ', blank=True) == 'yes'):
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1203 tomo_center = tomopy.find_center_pc(sinogram, sinogram, tol=0.1,
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1204 rotc_guess=tomo_center)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1205 error = 1.
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1206 while error > tol:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1207 prev = tomo_center
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1208 tomo_center = tomopy.find_center_pc(sinogram, sinogram, tol=tol,
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1209 rotc_guess=tomo_center)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1210 error = np.abs(tomo_center-prev)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1211 center_offset = tomo_center-center
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1212 print(f'Center at row {row} using phase correlation = {center_offset:.2f}')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1213 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: 2
diff changeset
1214 eff_pixel_size, cross_sectional_dim, False, num_core)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1215 title = f'edges row{row} center_offset{center_offset:.2f}'
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1216 self._plotEdgesOnePlane(recon_plane, title)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1217 if (pyip.inputYesNo('Accept a center location ([y]) or continue '+
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1218 'search (n)? ', blank=True) != 'no'):
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1219 del sinogram_T
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1220 del recon_plane
3
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1221 center_offset = pyip.inputNum(
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1222 f' Enter chosen center offset [{-int(center)}, {int(center)}] '+
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1223 f'([{center_offset_vo}])): ', blank=True)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1224 if center_offset == '':
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1225 center_offset = center_offset_vo
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1226 return float(center_offset)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1227
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1228 while True:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1229 center_offset_low = pyip.inputInt('\nEnter lower bound for center offset '+
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1230 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
1231 center_offset_upp = pyip.inputInt('Enter upper bound for center offset '+
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1232 f'[{center_offset_low}, {int(center)}]: ',
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1233 min=center_offset_low, max=int(center))
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1234 if center_offset_upp == center_offset_low:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1235 center_offset_step = 1
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1236 else:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1237 center_offset_step = pyip.inputInt('Enter step size for center offset search '+
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1238 f'[1, {center_offset_upp-center_offset_low}]: ',
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1239 min=1, max=center_offset_upp-center_offset_low)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1240 for center_offset in range(center_offset_low, center_offset_upp+center_offset_step,
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1241 center_offset_step):
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1242 logging.info(f'center_offset = {center_offset}')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1243 recon_plane = self._reconstructOnePlane(sinogram_T, center_offset+center,
3
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1244 thetas_deg, eff_pixel_size, cross_sectional_dim, False, num_core)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1245 title = f'edges row{row} center_offset{center_offset}'
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1246 self._plotEdgesOnePlane(recon_plane, title)
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1247 if pyip.inputInt('\nContinue (0) or end the search (1): ', min=0, max=1):
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1248 break
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1249
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1250 del sinogram_T
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1251 del recon_plane
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1252 center_offset = pyip.inputNum(f' Enter chosen center offset '+
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1253 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
1254 return float(center_offset)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1255
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1256 def _reconstructOneTomoStack(self, tomo_stack, thetas, row_bounds=None,
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1257 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
1258 run_secondary_sirt=False, secondary_iter=100):
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1259 """reconstruct a single tomography stack.
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1260 """
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1261 # stack order: row,theta,column
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1262 # thetas must be in radians
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1263 # 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
1264 # RV should we remove stripes?
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1265 # 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
1266 # RV should we remove rings?
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1267 # 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
1268 # 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
1269 if row_bounds is None:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1270 row_bounds = [0, tomo_stack.shape[0]]
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1271 else:
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1272 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
1273 raise ValueError('Illegal row bounds in reconstructOneTomoStack')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1274 if thetas.size != tomo_stack.shape[1]:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1275 raise ValueError('theta dimension mismatch in reconstructOneTomoStack')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1276 if not len(center_offsets):
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1277 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
1278 elif len(center_offsets) == 2:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1279 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
1280 row_bounds[1]-row_bounds[0])
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1281 else:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1282 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
1283 raise ValueError('center_offsets dimension mismatch in reconstructOneTomoStack')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1284 centers = center_offsets
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1285 centers += tomo_stack.shape[2]/2
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1286 if True:
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1287 tomo_stack = tomopy.prep.stripe.remove_stripe_fw(
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1288 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
1289 else:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1290 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
1291 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: 0
diff changeset
1292 algorithm=algorithm, ncore=num_core)
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1293 if run_secondary_sirt and secondary_iter > 0:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1294 #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
1295 #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
1296 # cuda driver combination."
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1297 #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
1298 #SIRT did not finish while running overnight
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1299 #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: 0
diff changeset
1300 options = {'method':'SART', 'proj_type':'linear', 'MinConstraint': 0,
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1301 'num_iter':secondary_iter}
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1302 tomo_recon_stack = tomopy.recon(tomo_stack, thetas, centers,
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1303 init_recon=tomo_recon_stack, options=options, sinogram_order=True,
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1304 algorithm=tomopy.astra, ncore=num_core)
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1305 if True:
3
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1306 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: 2
diff changeset
1307 ncore=num_core)
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1308 return tomo_recon_stack
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1309
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1310 def findImageFiles(self):
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1311 """Find all available image files.
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1312 """
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1313 self.is_valid = True
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1314
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1315 # Find dark field images
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1316 dark_field = self.config['dark_field']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1317 img_start, num_imgs, dark_files = msnc.findImageFiles(
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1318 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
1319 if img_start < 0 or num_imgs < 1:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1320 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
1321 if dark_field['data_path']:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1322 self.is_valid = False
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1323 img_start_old = dark_field.get('img_start')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1324 num_imgs_old = dark_field.get('num')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1325 if num_imgs_old is None:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1326 dark_field['num'] = num_imgs
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1327 else:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1328 if num_imgs_old > num_imgs:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1329 logging.error('Inconsistent number of availaible dark field images')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1330 if dark_field['data_path']:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1331 self.is_valid = False
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1332 if img_start_old is None:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1333 dark_field['img_start'] = img_start
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1334 else:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1335 if img_start_old < img_start:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1336 logging.error('Inconsistent image start index for dark field images')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1337 if dark_field['data_path']:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1338 self.is_valid = False
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1339 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
1340 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
1341
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1342 # Find bright field images
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1343 bright_field = self.config['bright_field']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1344 img_start, num_imgs, bright_files = msnc.findImageFiles(
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1345 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
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 bright field images')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1348 self.is_valid = False
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1349 img_start_old = bright_field.get('img_start')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1350 num_imgs_old = bright_field.get('num')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1351 if num_imgs_old is None:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1352 bright_field['num'] = num_imgs
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1353 else:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1354 if num_imgs_old > num_imgs:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1355 logging.error('Inconsistent number of availaible bright field images')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1356 self.is_valid = False
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1357 if img_start_old is None:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1358 bright_field['img_start'] = img_start
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1359 else:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1360 if img_start_old < img_start:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1361 logging.warning('Inconsistent image start index for bright field images')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1362 self.is_valid = False
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1363 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
1364 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
1365
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1366 # Find tomography images
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1367 tomo_stack_files = []
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1368 for stack in self.config['stack_info']['stacks']:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1369 index = stack['index']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1370 img_start, num_imgs, tomo_files = msnc.findImageFiles(
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1371 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
1372 if img_start < 0 or num_imgs < 1:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1373 logging.error('Unable to find suitable tomography images')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1374 self.is_valid = False
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1375 img_start_old = stack.get('img_start')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1376 num_imgs_old = stack.get('num')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1377 if num_imgs_old is None:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1378 stack['num'] = num_imgs
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1379 else:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1380 if num_imgs_old > num_imgs:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1381 logging.error('Inconsistent number of availaible tomography images')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1382 self.is_valid = False
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1383 if img_start_old is None:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1384 stack['img_start'] = img_start
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1385 else:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1386 if img_start_old < img_start:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1387 logging.warning('Inconsistent image start index for tomography images')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1388 self.is_valid = False
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1389 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
1390 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
1391 tomo_stack_files.append(tomo_files)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1392 del tomo_files
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1393
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1394 # Safe updated config
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1395 if self.is_valid:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1396 self.cf.saveFile(self.config_out)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1397
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1398 return dark_files, bright_files, tomo_stack_files
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1399
3
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1400 def loadTomoStacks(self, input_name):
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1401 """Load tomography stacks (only for Galaxy).
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1402 """
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1403 assert(self.galaxy_flag)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1404 t0 = time()
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1405 logging.info(f'Loading preprocessed tomography stack from {input_name} ...')
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1406 stack_info = self.config['stack_info']
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1407 stacks = stack_info.get('stacks')
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1408 assert(len(self.tomo_stacks) == stack_info['num'])
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1409 with np.load(input_name) as f:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1410 for i,stack in enumerate(stacks):
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1411 self.tomo_stacks[i] = f[f'set_{stack["index"]}']
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1412 logging.info(f'loaded stack {i}: index = {stack["index"]}, shape = '+
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1413 f'{self.tomo_stacks[i].shape}')
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1414 logging.info(f'... done in {time()-t0:.2f} seconds!')
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1415
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1416 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
1417 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
1418 detectorbounds_pngname=None, output_name=None):
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1419 """Preprocess tomography images.
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 # 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
1422 # 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
1423 stack_info = self.config['stack_info']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1424 stacks = stack_info['stacks']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1425 num_tomo_stacks = stack_info['num']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1426 assert(num_tomo_stacks == len(self.tomo_stacks))
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1427 available_stacks = [False]*num_tomo_stacks
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1428 if self.galaxy_flag:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1429 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
1430 assert(isinstance(tbf_files, list))
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1431 assert(isinstance(tomo_stack_files, list))
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1432 assert(num_tomo_stacks == len(tomo_stack_files))
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1433 assert(isinstance(dark_field_pngname, str))
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1434 assert(isinstance(bright_field_pngname, str))
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1435 assert(isinstance(tomo_field_pngname, str))
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1436 assert(isinstance(detectorbounds_pngname, str))
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1437 assert(isinstance(output_name, str))
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1438 else:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1439 if tdf_files:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1440 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
1441 if tbf_files:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1442 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
1443 if tomo_stack_files:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1444 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
1445 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
1446 if not self.is_valid:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1447 return
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1448 for i,stack in enumerate(stacks):
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1449 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
1450 self.tomo_stacks[i], available_stacks[i] = \
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1451 self._loadTomo('red stack', stack['index'])
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1452 if dark_field_pngname:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1453 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
1454 if bright_field_pngname:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1455 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
1456 if tomo_field_pngname:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1457 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
1458 if detectorbounds_pngname:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1459 logging.warning('Ignoring detectorbounds_pngname in genTomoStacks '+
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1460 '(only used in Galaxy)')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1461 if output_name:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1462 logging.warning('Ignoring output_name in genTomoStacks '+
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1463 '(only used in Galaxy)')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1464
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1465 # Preprocess any unloaded stacks
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1466 if False in available_stacks:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1467 logging.debug('Preprocessing tomography images')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1468
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1469 # Check required image files (skip in Galaxy)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1470 if not self.galaxy_flag:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1471 self._selectImageRanges(available_stacks)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1472 if not self.is_valid:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1473 return
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1474
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1475 # Generate dark field
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1476 if tdf_files:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1477 self._genDark(tdf_files, dark_field_pngname)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1478
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1479 # Generate bright field
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1480 self._genBright(tbf_files, bright_field_pngname)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1481
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1482 # Set vertical detector bounds for image stack
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1483 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
1484
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1485 # 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
1486 self._setZoomOrSkip()
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1487
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1488 # Generate tomography fields
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1489 self._genTomo(tomo_stack_files, available_stacks)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1490
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1491 # Save tomography stack to file
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1492 if self.galaxy_flag:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1493 t0 = time()
2
b8977c98800b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 0c40fb274acc13ebf7054379bb49ed13acec918e"
rv43
parents: 1
diff changeset
1494 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
1495 save_stacks = {f'set_{stack["index"]}':tomo_stack
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1496 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
1497 np.savez(output_name, **save_stacks)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1498 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
1499
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1500 del available_stacks
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 # 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
1503 preprocess = self.config.get('preprocess')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1504 if preprocess is None:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1505 img_x_bounds = [0, self.tbf.shape[0]]
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1506 else:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1507 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
1508 pixel_size = self.config['detector']['pixel_size']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1509 if pixel_size is None:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1510 raise ValueError('Detector pixel size unavailable')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1511 pixel_size *= img_x_bounds[0]
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1512 for stack in stacks:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1513 stack['ref_height'] = stack['ref_height']+pixel_size
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1514 self.cf.saveFile(self.config_out)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1515
3
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1516 def findCenters(self, row_bounds=None, center_rows=None, recon_low_pngname=None,
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1517 recon_upp_pngname=None, num_core=None):
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1518 """Find rotation axis centers for the tomography stacks.
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1519 """
3
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1520 if num_core is None:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1521 num_core = self.num_core
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1522 logging.debug('Find centers for tomography stacks')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1523 stacks = self.config['stack_info']['stacks']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1524 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: 0
diff changeset
1525 logging.debug('Available stacks: {available_stacks}')
3
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1526 if self.galaxy_flag:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1527 assert(isinstance(row_bounds, list) and len(row_bounds) == 2)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1528 assert(isinstance(center_rows, list) and len(center_rows) == 2)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1529 assert(isinstance(recon_low_pngname, str))
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1530 assert(isinstance(recon_upp_pngname, str))
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1531 else:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1532 if row_bounds:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1533 logging.warning('Ignoring row_bounds in findCenters (only for Galaxy)')
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1534 row_bounds = None
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1535 if center_rows:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1536 logging.warning('Ignoring center_rows in findCenters (only for Galaxy)')
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1537 center_rows = None
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1538 if recon_low_pngname:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1539 logging.warning('Ignoring recon_low_pngname in findCenters (only for Galaxy)')
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1540 recon_low_pngname = None
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1541 if recon_upp_pngname:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1542 logging.warning('Ignoring recon_upp_pngname in findCenters (only for Galaxy)')
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1543 recon_upp_pngname = None
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1544
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1545 # Check for valid available center stack index
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1546 find_center = self.config.get('find_center')
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1547 center_stack_index = None
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1548 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
1549 center_stack_index = find_center['center_stack_index']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1550 if (not isinstance(center_stack_index, int) or
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1551 center_stack_index not in available_stacks):
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1552 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
1553 else:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1554 if self.test_mode:
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1555 assert(find_center.get('completed', False) == False)
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1556 else:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1557 print('\nFound calibration center offset info for stack '+
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1558 f'{center_stack_index}')
3
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1559 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: 2
diff changeset
1560 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: 0
diff changeset
1561 return
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1562
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1563 # Load the required preprocessed stack
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1564 # preprocessed stack order: row,theta,column
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1565 num_tomo_stacks = self.config['stack_info']['num']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1566 assert(len(stacks) == num_tomo_stacks)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1567 assert(len(self.tomo_stacks) == num_tomo_stacks)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1568 if num_tomo_stacks == 1:
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1569 if not center_stack_index:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1570 center_stack_index = stacks[0]['index']
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1571 elif center_stack_index != stacks[0]['index']:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1572 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
1573 if not self.tomo_stacks[0].size:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1574 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
1575 required=True)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1576 center_stack = self.tomo_stacks[0]
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1577 if not center_stack.size:
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1578 stacks[0]['preprocessed'] = False
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1579 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
1580 assert(stacks[0].get('preprocessed', False) == True)
3
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1581 elif self.galaxy_flag:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1582 logging.error('CHECK/FIX FOR GALAXY')
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1583 #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
1584 else:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1585 while True:
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1586 if not center_stack_index:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1587 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: 0
diff changeset
1588 f'rotation axis centers {available_stacks}: ')
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1589 while center_stack_index not in available_stacks:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1590 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
1591 f'rotation axis centers {available_stacks}: ')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1592 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
1593 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
1594 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
1595 'red stack', center_stack_index, required=True)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1596 center_stack = self.tomo_stacks[tomo_stack_index]
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1597 if not center_stack.size:
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1598 stacks[tomo_stack_index]['preprocessed'] = False
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1599 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
1600 'preprocessed tomography stack, pick another one')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1601 else:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1602 break
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1603 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
1604 if find_center is None:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1605 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: 0
diff changeset
1606 find_center = self.config['find_center']
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1607 else:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1608 find_center['center_stack_index'] = center_stack_index
3
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1609 if not self.galaxy_flag:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1610 row_bounds = find_center.get('row_bounds', None)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1611 center_rows = [find_center.get('lower_row', None),
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1612 find_center.get('upper_row', None)]
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1613
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1614 # Set thetas (in degrees)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1615 theta_range = self.config['theta_range']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1616 theta_start = theta_range['start']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1617 theta_end = theta_range['end']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1618 num_theta = theta_range['num']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1619 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
1620 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
1621 endpoint=False)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1622
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1623 # Get non-overlapping sample row boundaries
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1624 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
1625 pixel_size = self.config['detector']['pixel_size']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1626 if pixel_size is None:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1627 raise ValueError('Detector pixel size unavailable')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1628 eff_pixel_size = 100.*pixel_size/zoom_perc
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1629 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
1630 if num_tomo_stacks == 1:
3
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1631 accept = 'yes'
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1632 if not self.test_mode and not self.galaxy_flag:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1633 accept = 'no'
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1634 print('\nSelect bounds for image reconstruction')
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1635 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: 2
diff changeset
1636 a_tmp = np.copy(center_stack[:,0,:])
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1637 a_tmp_max = a_tmp.max()
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1638 a_tmp[row_bounds[0],:] = a_tmp_max
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1639 a_tmp[row_bounds[1]-1,:] = a_tmp_max
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1640 print(f'lower bound = {row_bounds[0]} (inclusive)')
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1641 print(f'upper bound = {row_bounds[1]} (exclusive)')
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1642 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: 2
diff changeset
1643 aspect='auto')
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1644 del a_tmp
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1645 accept = pyip.inputYesNo('Accept these bounds ([y]/n)?: ', blank=True)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1646 if accept == 'no':
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1647 (n1, n2) = msnc.selectImageBounds(center_stack[:,0,:], 0,
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1648 title=f'center stack theta={theta_start}')
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1649 else:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1650 n1 = row_bounds[0]
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1651 n2 = row_bounds[1]
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1652 else:
3
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1653 logging.error('CHECK/FIX FOR GALAXY')
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1654 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
1655 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
1656 tomo_ref_heights[1])/eff_pixel_size)/2)
3
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1657 n2 = center_stack.shape[0]-n1
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1658 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
1659 if not center_stack.size:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1660 RuntimeError('Center stack not loaded')
3
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1661 if not self.test_mode and not self.galaxy_flag:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1662 tmp = center_stack[:,0,:]
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1663 tmp_max = tmp.max()
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1664 tmp[n1,:] = tmp_max
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1665 tmp[n2-1,:] = tmp_max
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1666 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: 2
diff changeset
1667 tmp[center_rows[0],:] = tmp_max
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1668 tmp[center_rows[1]-1,:] = tmp_max
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1669 extent = [0, tmp.shape[1], tmp.shape[0], 0]
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1670 msnc.quickImshow(tmp, title=f'center stack theta={theta_start}',
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1671 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: 2
diff changeset
1672 save_only=self.save_plots_only, aspect='auto')
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1673 del tmp
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1674 #extent = [0, center_stack.shape[2], n2, n1]
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1675 #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: 2
diff changeset
1676 # 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: 2
diff changeset
1677 # 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
1678
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1679 # Get cross sectional diameter in mm
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1680 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
1681 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
1682
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1683 # Determine center offset at sample row boundaries
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1684 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
1685
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1686 # Lower row center
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1687 use_row = 'no'
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1688 use_center = 'no'
3
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1689 row = center_rows[0]
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1690 if msnc.is_int(row, n1, n2-2):
3
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1691 if self.test_mode or self.galaxy_flag:
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1692 assert(row is not None)
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1693 use_row = 'yes'
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1694 else:
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1695 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: 0
diff changeset
1696 use_row = pyip.inputYesNo('\nCurrent row index for lower center = '
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1697 f'{row}, use this value ([y]/n)? ', blank=True)
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1698 if self.save_plots_only:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1699 msnc.clearFig(f'theta={theta_start}')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1700 if use_row != 'no':
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1701 center_offset = find_center.get('lower_center_offset')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1702 if msnc.is_num(center_offset):
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1703 use_center = pyip.inputYesNo('Current lower center offset = '+
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1704 f'{center_offset}, use this value ([y]/n)? ', blank=True)
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1705 if use_center == 'no':
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1706 if use_row == 'no':
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1707 if not self.test_mode:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1708 msnc.quickImshow(center_stack[:,0,:], title=f'theta={theta_start}',
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1709 aspect='auto')
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1710 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
1711 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
1712 if row == '':
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1713 row = n1
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1714 if self.save_plots_only:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1715 msnc.clearFig(f'theta={theta_start}')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1716 # center_stack order: row,theta,column
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1717 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: 2
diff changeset
1718 eff_pixel_size, cross_sectional_dim, num_core=num_core,
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1719 recon_pngname=recon_low_pngname)
0
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 # Update config and save to file
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1722 find_center['row_bounds'] = [n1, n2]
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1723 find_center['lower_row'] = row
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1724 find_center['lower_center_offset'] = center_offset
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1725 self.cf.saveFile(self.config_out)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1726 lower_row = row
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1727
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1728 # Upper row center
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1729 use_row = 'no'
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1730 use_center = 'no'
3
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1731 row = center_rows[1]
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1732 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: 2
diff changeset
1733 if self.test_mode or self.galaxy_flag:
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1734 assert(row is not None)
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1735 use_row = 'yes'
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1736 else:
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1737 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: 0
diff changeset
1738 use_row = pyip.inputYesNo('\nCurrent row index for upper center = '
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1739 f'{row}, use this value ([y]/n)? ', blank=True)
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1740 if self.save_plots_only:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1741 msnc.clearFig(f'theta={theta_start}')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1742 if use_row != 'no':
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1743 center_offset = find_center.get('upper_center_offset')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1744 if msnc.is_num(center_offset):
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1745 use_center = pyip.inputYesNo('Current upper center offset = '+
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1746 f'{center_offset}, use this value ([y]/n)? ', blank=True)
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1747 if use_center == 'no':
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1748 if use_row == 'no':
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1749 if not self.test_mode:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1750 msnc.quickImshow(center_stack[:,0,:], title=f'theta={theta_start}',
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1751 aspect='auto')
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1752 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
1753 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
1754 if row == '':
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1755 row = n2-1
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1756 if self.save_plots_only:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1757 msnc.clearFig(f'theta={theta_start}')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1758 # center_stack order: row,theta,column
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1759 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: 2
diff changeset
1760 eff_pixel_size, cross_sectional_dim, num_core=num_core,
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1761 recon_pngname=recon_upp_pngname)
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1762 logging.info(f'upper_center_offset = {center_offset}')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1763 del center_stack
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1764
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1765 # Update config and save to file
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1766 find_center['upper_row'] = row
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1767 find_center['upper_center_offset'] = center_offset
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1768 find_center['completed'] = True
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1769 self.cf.saveFile(self.config_out)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1770
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1771 def checkCenters(self):
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1772 """Check centers for the tomography stacks.
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1773 """
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1774 #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
1775 return
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1776 logging.debug('Check centers for tomography stacks')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1777 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
1778 if center_stack_index is None:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1779 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
1780 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
1781 lower_row = self.config.get('lower_row')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1782 if lower_row is None:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1783 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
1784 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
1785 if lower_center_offset is None:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1786 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
1787 upper_row = self.config.get('upper_row')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1788 if upper_row is None:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1789 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
1790 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
1791 if upper_center_offset is None:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1792 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
1793 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
1794 shift = upper_center_offset-lower_center_offset
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1795 if lower_row == 0:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1796 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
1797 else:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1798 lower_row -= 1
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1799 lower_center_offset -= center_slope
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1800
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1801 # stack order: stack,row,theta,column
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1802 if center_stack_index:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1803 stack1 = self.tomo_stacks[center_stack_index-1]
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1804 stack2 = self.tomo_stacks[center_stack_index]
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1805 if not stack1.size:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1806 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
1807 elif not stack2.size:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1808 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
1809 else:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1810 assert(0 <= lower_row < stack2.shape[0])
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1811 assert(0 <= upper_row < stack1.shape[0])
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1812 plane1 = stack1[upper_row,:]
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1813 plane2 = stack2[lower_row,:]
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1814 for i in range(-2, 3):
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1815 shift_i = shift+2*i
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1816 plane1_shifted = spi.shift(plane2, [0, shift_i])
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1817 msnc.quickPlot((plane1[0,:],), (plane1_shifted[0,:],),
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1818 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
1819 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
1820 save_only=self.save_plots_only)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1821 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
1822 stack1 = self.tomo_stacks[center_stack_index]
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1823 stack2 = self.tomo_stacks[center_stack_index+1]
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1824 if not stack1.size:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1825 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
1826 elif not stack2.size:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1827 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
1828 else:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1829 assert(0 <= lower_row < stack2.shape[0])
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1830 assert(0 <= upper_row < stack1.shape[0])
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1831 plane1 = stack1[upper_row,:]
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1832 plane2 = stack2[lower_row,:]
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1833 for i in range(-2, 3):
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1834 shift_i = -shift+2*i
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1835 plane1_shifted = spi.shift(plane2, [0, shift_i])
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1836 msnc.quickPlot((plane1[0,:],), (plane1_shifted[0,:],),
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1837 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
1838 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
1839 save_only=self.save_plots_only)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1840 del plane1, plane2, plane1_shifted
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1841
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1842 # Update config file
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1843 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
1844
3
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1845 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
1846 """Reconstruct tomography stacks.
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1847 """
3
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1848 if num_core is None:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1849 num_core = self.num_core
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1850 logging.debug('Reconstruct tomography stacks')
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1851 stacks = self.config['stack_info']['stacks']
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1852 assert(len(self.tomo_stacks) == self.config['stack_info']['num'])
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1853 assert(len(self.tomo_stacks) == len(stacks))
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1854 assert(len(self.tomo_recon_stacks) == len(stacks))
3
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1855 if self.galaxy_flag:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1856 assert(isinstance(output_name, str))
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1857 else:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1858 if output_name:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1859 logging.warning('Ignoring output_name in reconstructTomoStacks '+
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1860 '(only used in Galaxy)')
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1861
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1862 # Get rotation axis rows and centers
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1863 find_center = self.config['find_center']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1864 lower_row = find_center.get('lower_row')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1865 if lower_row is None:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1866 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
1867 return
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1868 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
1869 if lower_center_offset is None:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1870 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
1871 return
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1872 upper_row = find_center.get('upper_row')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1873 if upper_row is None:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1874 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
1875 return
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1876 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
1877 if upper_center_offset is None:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1878 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
1879 return
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1880 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
1881 assert(lower_row < upper_row)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1882 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
1883
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1884 # Set thetas (in radians)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1885 theta_range = self.config['theta_range']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1886 theta_start = theta_range['start']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1887 theta_end = theta_range['end']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1888 num_theta = theta_range['num']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1889 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
1890 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
1891 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
1892
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1893 # Reconstruct tomo stacks
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1894 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
1895 if zoom_perc == 100:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1896 basetitle = 'recon stack full'
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1897 else:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1898 basetitle = f'recon stack {zoom_perc}p'
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1899 load_error = False
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1900 stacks = self.config['stack_info']['stacks']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1901 for i,stack in enumerate(stacks):
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1902 # Check if stack can be loaded
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1903 # 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
1904 # 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
1905 index = stack['index']
3
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1906 if not self.galaxy_flag:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1907 available = False
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1908 if stack.get('reconstructed', False):
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1909 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: 2
diff changeset
1910 if self.tomo_recon_stacks[i].size or available:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1911 if self.tomo_stacks[i].size:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1912 self.tomo_stacks[i] = np.array([])
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1913 assert(stack.get('preprocessed', False) == True)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1914 assert(stack.get('reconstructed', False) == True)
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1915 continue
3
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1916 stack['reconstructed'] = False
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1917 if not self.tomo_stacks[i].size:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1918 self.tomo_stacks[i], available = self._loadTomo('red stack', index,
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1919 required=True)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1920 if not self.tomo_stacks[i].size:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1921 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: 2
diff changeset
1922 stack[i]['preprocessed'] = False
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1923 load_error = True
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1924 continue
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1925 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: 2
diff changeset
1926 center_offsets = [lower_center_offset-lower_row*center_slope,
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1927 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: 2
diff changeset
1928 t0 = time()
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1929 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: 2
diff changeset
1930 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: 2
diff changeset
1931 algorithm='gridrec', run_secondary_sirt=True, secondary_iter=25)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1932 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: 2
diff changeset
1933 if not self.test_mode and not self.galaxy_flag:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1934 row_slice = int(self.tomo_stacks[i].shape[0]/2)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1935 title = f'{basetitle} {index} slice{row_slice}'
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1936 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: 2
diff changeset
1937 path=self.output_folder, save_fig=self.save_plots,
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1938 save_only=self.save_plots_only)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1939 msnc.quickPlot(self.tomo_recon_stacks[i]
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1940 [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: 2
diff changeset
1941 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: 2
diff changeset
1942 path=self.output_folder, save_fig=self.save_plots,
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1943 save_only=self.save_plots_only)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1944 self._saveTomo('recon stack', self.tomo_recon_stacks[i], index)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1945 # else:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1946 # np.savetxt(self.output_folder+f'recon_stack_{index}.txt',
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1947 # self.tomo_recon_stacks[i][row_slice,:,:], fmt='%.6e')
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1948 self.tomo_stacks[i] = np.array([])
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1949
3
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1950 # Update config and save to file
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1951 stack['reconstructed'] = True
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1952 combine_stacks = self.config.get('combine_stacks')
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1953 if combine_stacks and index in combine_stacks.get('stacks', []):
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1954 combine_stacks['stacks'].remove(index)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1955 self.cf.saveFile(self.config_out)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1956
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1957 # Save reconstructed tomography stack to file
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1958 if self.galaxy_flag:
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1959 t0 = time()
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1960 logging.info(f'Saving reconstructed tomography stack to {output_name} ...')
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1961 save_stacks = {f'set_{stack["index"]}':tomo_stack
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1962 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: 2
diff changeset
1963 np.savez(output_name, **save_stacks)
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
1964 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
1965
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1966 def combineTomoStacks(self):
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1967 """Combine the reconstructed tomography stacks.
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1968 """
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1969 # stack order: stack,row(z),x,y
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1970 logging.debug('Combine reconstructed tomography stacks')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1971 # Load any unloaded reconstructed stacks
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1972 stack_info = self.config['stack_info']
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1973 stacks = stack_info['stacks']
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1974 for i,stack in enumerate(stacks):
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1975 available = False
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1976 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
1977 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
1978 stack['index'], required=True)
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1979 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
1980 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: 0
diff changeset
1981 stack['reconstructed'] = False
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1982 return
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1983 if i:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1984 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
1985 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
1986 logging.error('Incompatible reconstructed tomography stack dimensions')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1987 return
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1988
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1989 # Get center stack boundaries
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1990 row_bounds = self.config['find_center']['row_bounds']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1991 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
1992 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
1993 return
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1994
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1995 # Selecting x bounds (in yz-plane)
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1996 tomosum = 0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1997 #RV FIX :=
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
1998 [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: 0
diff changeset
1999 self.tomo_recon_stacks]
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2000 combine_stacks = self.config.get('combine_stacks')
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2001 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
2002 x_bounds = combine_stacks['x_bounds']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2003 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
2004 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
2005 elif not self.test_mode:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2006 msnc.quickPlot(tomosum, title='recon stack sum yz')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2007 if pyip.inputYesNo('\nCurrent image x-bounds: '+
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2008 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
2009 blank=True) == 'no':
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2010 if pyip.inputYesNo(
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2011 '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
2012 blank=True) == 'no':
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2013 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
2014 else:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2015 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
2016 else:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2017 msnc.quickPlot(tomosum, title='recon stack sum yz')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2018 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
2019 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
2020 else:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2021 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
2022 if False and self.test_mode:
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2023 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
2024 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
2025 if self.save_plots_only:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2026 msnc.clearFig('recon stack sum yz')
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2027
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2028 # Selecting y bounds (in xz-plane)
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2029 tomosum = 0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2030 #RV FIX :=
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2031 [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: 0
diff changeset
2032 self.tomo_recon_stacks]
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2033 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
2034 y_bounds = combine_stacks['y_bounds']
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2035 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
2036 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
2037 elif not self.test_mode:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2038 msnc.quickPlot(tomosum, title='recon stack sum xz')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2039 if pyip.inputYesNo('\nCurrent image y-bounds: '+
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2040 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
2041 blank=True) == 'no':
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2042 if pyip.inputYesNo(
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2043 '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
2044 blank=True) == 'no':
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2045 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
2046 else:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2047 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
2048 else:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2049 msnc.quickPlot(tomosum, title='recon stack sum xz')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2050 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
2051 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
2052 else:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2053 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
2054 if False and self.test_mode:
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2055 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
2056 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
2057 if self.save_plots_only:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2058 msnc.clearFig('recon stack sum xz')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2059
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2060 # Combine reconstructed tomography stacks
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2061 logging.info(f'Combining reconstructed stacks ...')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2062 t0 = time()
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2063 num_tomo_stacks = stack_info['num']
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2064 if num_tomo_stacks == 1:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2065 low_bound = row_bounds[0]
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 low_bound = 0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2068 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
2069 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
2070 if num_tomo_stacks > 2:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2071 tomo_recon_combined = np.concatenate([tomo_recon_combined]+
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2072 [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
2073 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
2074 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
2075 if num_tomo_stacks > 1:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2076 tomo_recon_combined = np.concatenate([tomo_recon_combined]+
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2077 [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
2078 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
2079 logging.info(f'... done in {time()-t0:.2f} seconds!')
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2080 combined_stacks = [stack['index'] for stack in stacks]
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2081
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2082 # Wrap up if in test_mode
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2083 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
2084 if self.test_mode:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2085 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
2086 filename = 'recon combined sum xy'
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2087 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
2088 filename += ' fullres.dat'
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2089 else:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2090 filename += f' {zoom_perc}p.dat'
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2091 msnc.quickPlot(tomosum, title='recon combined sum xy',
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2092 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
2093 save_only=self.save_plots_only)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2094 if False:
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2095 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
2096 tomosum, fmt='%.6e')
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2097 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
2098 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
2099
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2100 # Update config and save to file
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2101 if combine_stacks:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2102 combine_stacks['x_bounds'] = x_bounds
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2103 combine_stacks['y_bounds'] = y_bounds
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2104 combine_stacks['stacks'] = combined_stacks
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2105 else:
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2106 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: 0
diff changeset
2107 'stacks' : combined_stacks}
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2108 self.cf.saveFile(self.config_out)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2109 return
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2110
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2111 # Selecting z bounds (in xy-plane)
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2112 msnc.quickPlot(tomosum, title='recon combined sum xy')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2113 if pyip.inputYesNo(
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2114 '\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
2115 blank=True) != 'yes':
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2116 z_bounds = [0, tomo_recon_combined.shape[0]]
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2117 else:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2118 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
2119 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
2120 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
2121 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
2122 if self.save_plots_only:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2123 msnc.clearFig('recon combined sum xy')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2124
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2125 # Plot center slices
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2126 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
2127 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
2128 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
2129 save_only=self.save_plots_only)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2130 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
2131 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
2132 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
2133 save_only=self.save_plots_only)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2134 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
2135 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
2136 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
2137 save_only=self.save_plots_only)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2138
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2139 # Save combined reconstructed tomo stacks
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2140 base_name = 'recon combined'
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2141 for stack in stacks:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2142 base_name += f' {stack["index"]}'
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2143 self._saveTomo(base_name, tomo_recon_combined)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2144
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2145 # Update config and save to file
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2146 if combine_stacks:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2147 combine_stacks['x_bounds'] = x_bounds
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2148 combine_stacks['y_bounds'] = y_bounds
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2149 combine_stacks['z_bounds'] = z_bounds
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2150 combine_stacks['stacks'] = combined_stacks
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2151 else:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2152 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: 0
diff changeset
2153 'z_bounds' : z_bounds, 'stacks' : combined_stacks}
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2154 self.cf.saveFile(self.config_out)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2155
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2156 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: 0
diff changeset
2157 test_mode=False, num_core=-1):
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2158 """Run a tomography analysis.
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2159 """
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2160 # Instantiate Tomo object
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2161 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: 0
diff changeset
2162 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
2163 if not tomo.is_valid:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2164 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
2165
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2166 # Preprocess the image files
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2167 assert(tomo.config['stack_info'])
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2168 num_tomo_stacks = tomo.config['stack_info']['num']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2169 assert(num_tomo_stacks == len(tomo.tomo_stacks))
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2170 preprocessed_stacks = []
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2171 if not tomo.test_mode:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2172 preprocess = tomo.config.get('preprocess', None)
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2173 if preprocess:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2174 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: 0
diff changeset
2175 if stack.get('preprocessed', False)]
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2176 if len(preprocessed_stacks) != num_tomo_stacks:
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2177 tomo.genTomoStacks()
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2178 if not tomo.is_valid:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2179 IOError('Unable to load all required image files.')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2180 tomo.cf.saveFile(tomo.config_out)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2181
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2182 # Find centers
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2183 find_center = tomo.config.get('find_center')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2184 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
2185 tomo.findCenters()
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2186
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2187 # Check centers
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2188 #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
2189 # tomo.checkCenters()
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2190
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2191 # Reconstruct tomography stacks
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2192 assert(tomo.config['stack_info']['stacks'])
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2193 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: 0
diff changeset
2194 if stack.get('reconstructed', False)]
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2195 if len(reconstructed_stacks) != num_tomo_stacks:
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2196 tomo.reconstructTomoStacks()
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2197
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2198 # Combine reconstructed tomography stacks
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2199 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: 0
diff changeset
2200 if stack.get('reconstructed', False)]
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2201 combine_stacks = tomo.config.get('combine_stacks')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2202 if len(reconstructed_stacks) and (combine_stacks is None or
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2203 combine_stacks.get('stacks') != reconstructed_stacks):
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2204 tomo.combineTomoStacks()
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 #%%============================================================================
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2207 if __name__ == '__main__':
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2208
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2209 # Parse command line arguments
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2210 parser = argparse.ArgumentParser(
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2211 description='Tomography reconstruction')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2212 parser.add_argument('-c', '--config',
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2213 default=None,
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2214 help='Input config')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2215 parser.add_argument('-o', '--output_folder',
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2216 default='.',
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2217 help='Output folder')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2218 parser.add_argument('-l', '--log_level',
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2219 default='INFO',
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2220 help='Log level')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2221 parser.add_argument('-t', '--test_mode',
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2222 action='store_true',
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2223 default=False,
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2224 help='Test mode flag')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2225 parser.add_argument('--num_core',
3
f9c52762c32c "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
rv43
parents: 2
diff changeset
2226 type=int,
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2227 default=-1,
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2228 help='Number of cores')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2229 args = parser.parse_args()
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2230
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2231 if args.config is None:
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2232 if os.path.isfile('config.yaml'):
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2233 args.config = 'config.yaml'
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2234 else:
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2235 args.config = 'config.txt'
0
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 # Set basic log configuration
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2238 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: 0
diff changeset
2239 if not args.test_mode:
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2240 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
2241 if not isinstance(level, int):
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2242 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
2243 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
2244 handlers=[logging.StreamHandler()])
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2245
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2246 logging.debug(f'config = {args.config}')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2247 logging.debug(f'output_folder = {args.output_folder}')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2248 logging.debug(f'log_level = {args.log_level}')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2249 logging.debug(f'test_mode = {args.test_mode}')
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2250 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
2251
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2252 # Run tomography analysis
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2253 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: 0
diff changeset
2254 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
2255
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2256 #%%============================================================================
1
e4778148df6b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
rv43
parents: 0
diff changeset
2257 # input('Press any key to continue')
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2258 #%%============================================================================