annotate tomo.py @ 61:75dd6e15f628 draft

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