Mercurial > repos > rv43 > chess_tomo
annotate workflow/run_tomo.py @ 10:0f553c8d7b98 draft
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
| author | rv43 |
|---|---|
| date | Mon, 20 Mar 2023 19:30:19 +0000 |
| parents | 1dbb29320ce8 |
| children | 9c48ef48c604 |
| rev | line source |
|---|---|
|
4
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1 #!/usr/bin/env python3 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
2 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
3 import logging |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
4 logger = logging.getLogger(__name__) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
5 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
6 import numpy as np |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
7 try: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
8 import numexpr as ne |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
9 except: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
10 pass |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
11 try: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
12 import scipy.ndimage as spi |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
13 except: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
14 pass |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
15 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
16 from multiprocessing import cpu_count |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
17 from nexusformat.nexus import * |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
18 from os import mkdir |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
19 from os import path as os_path |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
20 try: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
21 from skimage.transform import iradon |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
22 except: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
23 pass |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
24 try: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
25 from skimage.restoration import denoise_tv_chambolle |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
26 except: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
27 pass |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
28 from time import time |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
29 try: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
30 import tomopy |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
31 except: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
32 pass |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
33 from yaml import safe_load, safe_dump |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
34 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
35 try: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
36 from msnctools.fit import Fit |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
37 except: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
38 from fit import Fit |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
39 try: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
40 from msnctools.general import illegal_value, is_int, is_int_pair, is_num, is_index_range, \ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
41 input_int, input_num, input_yesno, input_menu, draw_mask_1d, select_image_bounds, \ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
42 select_one_image_bound, clear_imshow, quick_imshow, clear_plot, quick_plot |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
43 except: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
44 from general import illegal_value, is_int, is_int_pair, is_num, is_index_range, \ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
45 input_int, input_num, input_yesno, input_menu, draw_mask_1d, select_image_bounds, \ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
46 select_one_image_bound, clear_imshow, quick_imshow, clear_plot, quick_plot |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
47 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
48 try: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
49 from workflow.models import import_scanparser, FlatField, TomoField, TomoWorkflow |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
50 from workflow.__version__ import __version__ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
51 except: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
52 pass |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
53 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
54 num_core_tomopy_limit = 24 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
55 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
56 def nxcopy(nxobject:NXobject, exclude_nxpaths:list[str]=[], nxpath_prefix:str='') -> NXobject: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
57 '''Function that returns a copy of a nexus object, optionally exluding certain child items. |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
58 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
59 :param nxobject: the original nexus object to return a "copy" of |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
60 :type nxobject: nexusformat.nexus.NXobject |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
61 :param exlude_nxpaths: a list of paths to child nexus objects that |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
62 should be exluded from the returned "copy", defaults to `[]` |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
63 :type exclude_nxpaths: list[str], optional |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
64 :param nxpath_prefix: For use in recursive calls from inside this |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
65 function only! |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
66 :type nxpath_prefix: str |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
67 :return: a copy of `nxobject` with some children optionally exluded. |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
68 :rtype: NXobject |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
69 ''' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
70 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
71 nxobject_copy = nxobject.__class__() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
72 if not len(nxpath_prefix): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
73 if 'default' in nxobject.attrs: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
74 nxobject_copy.attrs['default'] = nxobject.attrs['default'] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
75 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
76 for k, v in nxobject.attrs.items(): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
77 nxobject_copy.attrs[k] = v |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
78 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
79 for k, v in nxobject.items(): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
80 nxpath = os_path.join(nxpath_prefix, k) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
81 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
82 if nxpath in exclude_nxpaths: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
83 continue |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
84 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
85 if isinstance(v, NXgroup): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
86 nxobject_copy[k] = nxcopy(v, exclude_nxpaths=exclude_nxpaths, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
87 nxpath_prefix=os_path.join(nxpath_prefix, k)) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
88 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
89 nxobject_copy[k] = v |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
90 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
91 return(nxobject_copy) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
92 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
93 class set_numexpr_threads: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
94 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
95 def __init__(self, num_core): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
96 if num_core is None or num_core < 1 or num_core > cpu_count(): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
97 self.num_core = cpu_count() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
98 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
99 self.num_core = num_core |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
100 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
101 def __enter__(self): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
102 self.num_core_org = ne.set_num_threads(self.num_core) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
103 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
104 def __exit__(self, exc_type, exc_value, traceback): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
105 ne.set_num_threads(self.num_core_org) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
106 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
107 class Tomo: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
108 """Processing tomography data with misalignment. |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
109 """ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
110 def __init__(self, galaxy_flag=False, num_core=-1, output_folder='.', save_figs=None, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
111 test_mode=False): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
112 """Initialize with optional config input file or dictionary |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
113 """ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
114 if not isinstance(galaxy_flag, bool): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
115 raise ValueError(f'Invalid parameter galaxy_flag ({galaxy_flag})') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
116 self.galaxy_flag = galaxy_flag |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
117 self.num_core = num_core |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
118 if self.galaxy_flag: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
119 if output_folder != '.': |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
120 logger.warning('Ignoring output_folder in galaxy mode') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
121 self.output_folder = '.' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
122 if test_mode != False: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
123 logger.warning('Ignoring test_mode in galaxy mode') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
124 self.test_mode = False |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
125 if save_figs is not None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
126 logger.warning('Ignoring save_figs in galaxy mode') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
127 save_figs = 'only' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
128 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
129 self.output_folder = os_path.abspath(output_folder) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
130 if not os_path.isdir(output_folder): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
131 mkdir(os_path.abspath(output_folder)) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
132 if not isinstance(test_mode, bool): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
133 raise ValueError(f'Invalid parameter test_mode ({test_mode})') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
134 self.test_mode = test_mode |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
135 if save_figs is None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
136 save_figs = 'no' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
137 self.test_config = {} |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
138 if self.test_mode: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
139 if save_figs != 'only': |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
140 logger.warning('Ignoring save_figs in test mode') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
141 save_figs = 'only' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
142 if save_figs == 'only': |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
143 self.save_only = True |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
144 self.save_figs = True |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
145 elif save_figs == 'yes': |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
146 self.save_only = False |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
147 self.save_figs = True |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
148 elif save_figs == 'no': |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
149 self.save_only = False |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
150 self.save_figs = False |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
151 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
152 raise ValueError(f'Invalid parameter save_figs ({save_figs})') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
153 if self.save_only: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
154 self.block = False |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
155 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
156 self.block = True |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
157 if self.num_core == -1: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
158 self.num_core = cpu_count() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
159 if not is_int(self.num_core, gt=0, log=False): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
160 raise ValueError(f'Invalid parameter num_core ({num_core})') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
161 if self.num_core > cpu_count(): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
162 logger.warning(f'num_core = {self.num_core} is larger than the number of available ' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
163 f'processors and reduced to {cpu_count()}') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
164 self.num_core= cpu_count() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
165 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
166 def read(self, filename): |
|
9
1dbb29320ce8
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
8
diff
changeset
|
167 logger.info(f'looking for {filename}') |
|
4
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
168 extension = os_path.splitext(filename)[1] |
|
8
c99fc6a32869
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
6
diff
changeset
|
169 if extension == '.yml' or extension == '.yaml' or self.galaxy_flag and extension == '.dat': |
|
4
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
170 with open(filename, 'r') as f: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
171 config = safe_load(f) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
172 # if len(config) > 1: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
173 # raise ValueError(f'Multiple root entries in {filename} not yet implemented') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
174 # if len(list(config.values())[0]) > 1: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
175 # raise ValueError(f'Multiple sample maps in {filename} not yet implemented') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
176 return(config) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
177 elif extension == '.nxs': |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
178 with NXFile(filename, mode='r') as nxfile: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
179 nxroot = nxfile.readfile() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
180 return(nxroot) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
181 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
182 raise ValueError(f'Invalid filename extension ({extension})') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
183 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
184 def write(self, data, filename): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
185 extension = os_path.splitext(filename)[1] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
186 if extension == '.yml' or extension == '.yaml': |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
187 with open(filename, 'w') as f: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
188 safe_dump(data, f) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
189 elif extension == '.nxs': |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
190 data.save(filename, mode='w') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
191 elif extension == '.nc': |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
192 data.to_netcdf(os_path=filename) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
193 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
194 raise ValueError(f'Invalid filename extension ({extension})') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
195 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
196 def gen_reduced_data(self, data, img_x_bounds=None): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
197 """Generate the reduced tomography images. |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
198 """ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
199 logger.info('Generate the reduced tomography images') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
200 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
201 # Create plot galaxy path directory if needed |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
202 if self.galaxy_flag and not os_path.exists('tomo_reduce_plots'): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
203 mkdir('tomo_reduce_plots') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
204 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
205 if isinstance(data, dict): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
206 # Create Nexus format object from input dictionary |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
207 wf = TomoWorkflow(**data) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
208 if len(wf.sample_maps) > 1: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
209 raise ValueError(f'Multiple sample maps not yet implemented') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
210 # print(f'\nwf:\n{wf}\n') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
211 nxroot = NXroot() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
212 t0 = time() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
213 for sample_map in wf.sample_maps: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
214 logger.info(f'Start constructing the {sample_map.title} map.') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
215 import_scanparser(sample_map.station) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
216 sample_map.construct_nxentry(nxroot, include_raw_data=False) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
217 logger.info(f'Constructed all sample maps in {time()-t0:.2f} seconds.') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
218 nxentry = nxroot[nxroot.attrs['default']] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
219 # Get test mode configuration info |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
220 if self.test_mode: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
221 self.test_config = data['sample_maps'][0]['test_mode'] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
222 elif isinstance(data, NXroot): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
223 nxentry = data[data.attrs['default']] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
224 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
225 raise ValueError(f'Invalid parameter data ({data})') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
226 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
227 # Create an NXprocess to store data reduction (meta)data |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
228 reduced_data = NXprocess() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
229 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
230 # Generate dark field |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
231 if 'dark_field' in nxentry['spec_scans']: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
232 reduced_data = self._gen_dark(nxentry, reduced_data) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
233 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
234 # Generate bright field |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
235 reduced_data = self._gen_bright(nxentry, reduced_data) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
236 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
237 # Set vertical detector bounds for image stack |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
238 img_x_bounds = self._set_detector_bounds(nxentry, reduced_data, img_x_bounds=img_x_bounds) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
239 logger.info(f'img_x_bounds = {img_x_bounds}') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
240 reduced_data['img_x_bounds'] = img_x_bounds |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
241 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
242 # Set zoom and/or theta skip to reduce memory the requirement |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
243 zoom_perc, num_theta_skip = self._set_zoom_or_skip() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
244 if zoom_perc is not None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
245 reduced_data.attrs['zoom_perc'] = zoom_perc |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
246 if num_theta_skip is not None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
247 reduced_data.attrs['num_theta_skip'] = num_theta_skip |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
248 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
249 # Generate reduced tomography fields |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
250 reduced_data = self._gen_tomo(nxentry, reduced_data) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
251 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
252 # Create a copy of the input Nexus object and remove raw and any existing reduced data |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
253 if isinstance(data, NXroot): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
254 exclude_items = [f'{nxentry._name}/reduced_data/data', |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
255 f'{nxentry._name}/instrument/detector/data', |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
256 f'{nxentry._name}/instrument/detector/image_key', |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
257 f'{nxentry._name}/instrument/detector/sequence_number', |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
258 f'{nxentry._name}/sample/rotation_angle', |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
259 f'{nxentry._name}/sample/x_translation', |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
260 f'{nxentry._name}/sample/z_translation', |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
261 f'{nxentry._name}/data/data', |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
262 f'{nxentry._name}/data/image_key', |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
263 f'{nxentry._name}/data/rotation_angle', |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
264 f'{nxentry._name}/data/x_translation', |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
265 f'{nxentry._name}/data/z_translation'] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
266 nxroot = nxcopy(data, exclude_nxpaths=exclude_items) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
267 nxentry = nxroot[nxroot.attrs['default']] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
268 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
269 # Add the reduced data NXprocess |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
270 nxentry.reduced_data = reduced_data |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
271 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
272 if 'data' not in nxentry: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
273 nxentry.data = NXdata() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
274 nxentry.attrs['default'] = 'data' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
275 nxentry.data.makelink(nxentry.reduced_data.data.tomo_fields, name='reduced_data') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
276 nxentry.data.makelink(nxentry.reduced_data.rotation_angle, name='rotation_angle') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
277 nxentry.data.attrs['signal'] = 'reduced_data' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
278 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
279 return(nxroot) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
280 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
281 def find_centers(self, nxroot, center_rows=None, center_stack_index=None): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
282 """Find the calibrated center axis info |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
283 """ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
284 logger.info('Find the calibrated center axis info') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
285 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
286 if not isinstance(nxroot, NXroot): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
287 raise ValueError(f'Invalid parameter nxroot ({nxroot})') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
288 nxentry = nxroot[nxroot.attrs['default']] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
289 if not isinstance(nxentry, NXentry): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
290 raise ValueError(f'Invalid nxentry ({nxentry})') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
291 if self.galaxy_flag: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
292 if center_rows is not None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
293 center_rows = tuple(center_rows) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
294 if not is_int_pair(center_rows): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
295 raise ValueError(f'Invalid parameter center_rows ({center_rows})') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
296 elif center_rows is not None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
297 logger.warning(f'Ignoring parameter center_rows ({center_rows})') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
298 center_rows = None |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
299 if self.galaxy_flag: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
300 if center_stack_index is not None and not is_int(center_stack_index, ge=0): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
301 raise ValueError(f'Invalid parameter center_stack_index ({center_stack_index})') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
302 elif center_stack_index is not None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
303 logger.warning(f'Ignoring parameter center_stack_index ({center_stack_index})') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
304 center_stack_index = None |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
305 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
306 # Create plot galaxy path directory and path if needed |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
307 if self.galaxy_flag: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
308 if not os_path.exists('tomo_find_centers_plots'): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
309 mkdir('tomo_find_centers_plots') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
310 path = 'tomo_find_centers_plots' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
311 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
312 path = self.output_folder |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
313 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
314 # Check if reduced data is available |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
315 if ('reduced_data' not in nxentry or 'reduced_data' not in nxentry.data): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
316 raise KeyError(f'Unable to find valid reduced data in {nxentry}.') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
317 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
318 # Select the image stack to calibrate the center axis |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
319 # reduced data axes order: stack,theta,row,column |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
320 # Note: Nexus cannot follow a link if the data it points to is too big, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
321 # so get the data from the actual place, not from nxentry.data |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
322 tomo_fields_shape = nxentry.reduced_data.data.tomo_fields.shape |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
323 if len(tomo_fields_shape) != 4 or any(True for dim in tomo_fields_shape if not dim): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
324 raise KeyError('Unable to load the required reduced tomography stack') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
325 num_tomo_stacks = tomo_fields_shape[0] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
326 if num_tomo_stacks == 1: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
327 center_stack_index = 0 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
328 default = 'n' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
329 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
330 if self.test_mode: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
331 center_stack_index = self.test_config['center_stack_index']-1 # make offset 0 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
332 elif self.galaxy_flag: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
333 if center_stack_index is None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
334 center_stack_index = int(num_tomo_stacks/2) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
335 if center_stack_index >= num_tomo_stacks: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
336 raise ValueError(f'Invalid parameter center_stack_index ({center_stack_index})') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
337 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
338 center_stack_index = input_int('\nEnter tomography stack index to calibrate the ' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
339 'center axis', ge=1, le=num_tomo_stacks, default=int(1+num_tomo_stacks/2)) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
340 center_stack_index -= 1 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
341 default = 'y' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
342 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
343 # Get thetas (in degrees) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
344 thetas = np.asarray(nxentry.reduced_data.rotation_angle) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
345 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
346 # Get effective pixel_size |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
347 if 'zoom_perc' in nxentry.reduced_data: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
348 eff_pixel_size = 100.*(nxentry.instrument.detector.x_pixel_size/ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
349 nxentry.reduced_data.attrs['zoom_perc']) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
350 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
351 eff_pixel_size = nxentry.instrument.detector.x_pixel_size |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
352 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
353 # Get cross sectional diameter |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
354 cross_sectional_dim = tomo_fields_shape[3]*eff_pixel_size |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
355 logger.debug(f'cross_sectional_dim = {cross_sectional_dim}') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
356 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
357 # Determine center offset at sample row boundaries |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
358 logger.info('Determine center offset at sample row boundaries') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
359 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
360 # Lower row center |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
361 if self.test_mode: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
362 lower_row = self.test_config['lower_row'] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
363 elif self.galaxy_flag: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
364 if center_rows is None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
365 lower_row = 0 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
366 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
367 lower_row = min(center_rows) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
368 if not 0 <= lower_row < tomo_fields_shape[2]-1: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
369 raise ValueError(f'Invalid parameter center_rows ({center_rows})') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
370 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
371 lower_row = select_one_image_bound( |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
372 nxentry.reduced_data.data.tomo_fields[center_stack_index,0,:,:], 0, bound=0, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
373 title=f'theta={round(thetas[0], 2)+0}', |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
374 bound_name='row index to find lower center', default=default, raise_error=True) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
375 logger.debug('Finding center...') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
376 t0 = time() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
377 lower_center_offset = self._find_center_one_plane( |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
378 #np.asarray(nxentry.reduced_data.data.tomo_fields[center_stack_index,:,lower_row,:]), |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
379 nxentry.reduced_data.data.tomo_fields[center_stack_index,:,lower_row,:], |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
380 lower_row, thetas, eff_pixel_size, cross_sectional_dim, path=path, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
381 num_core=self.num_core) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
382 logger.debug(f'... done in {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
383 logger.debug(f'lower_row = {lower_row:.2f}') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
384 logger.debug(f'lower_center_offset = {lower_center_offset:.2f}') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
385 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
386 # Upper row center |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
387 if self.test_mode: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
388 upper_row = self.test_config['upper_row'] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
389 elif self.galaxy_flag: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
390 if center_rows is None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
391 upper_row = tomo_fields_shape[2]-1 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
392 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
393 upper_row = max(center_rows) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
394 if not lower_row < upper_row < tomo_fields_shape[2]: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
395 raise ValueError(f'Invalid parameter center_rows ({center_rows})') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
396 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
397 upper_row = select_one_image_bound( |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
398 nxentry.reduced_data.data.tomo_fields[center_stack_index,0,:,:], 0, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
399 bound=tomo_fields_shape[2]-1, title=f'theta={round(thetas[0], 2)+0}', |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
400 bound_name='row index to find upper center', default=default, raise_error=True) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
401 logger.debug('Finding center...') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
402 t0 = time() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
403 upper_center_offset = self._find_center_one_plane( |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
404 #np.asarray(nxentry.reduced_data.data.tomo_fields[center_stack_index,:,upper_row,:]), |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
405 nxentry.reduced_data.data.tomo_fields[center_stack_index,:,upper_row,:], |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
406 upper_row, thetas, eff_pixel_size, cross_sectional_dim, path=path, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
407 num_core=self.num_core) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
408 logger.debug(f'... done in {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
409 logger.debug(f'upper_row = {upper_row:.2f}') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
410 logger.debug(f'upper_center_offset = {upper_center_offset:.2f}') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
411 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
412 center_config = {'lower_row': lower_row, 'lower_center_offset': lower_center_offset, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
413 'upper_row': upper_row, 'upper_center_offset': upper_center_offset} |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
414 if num_tomo_stacks > 1: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
415 center_config['center_stack_index'] = center_stack_index+1 # save as offset 1 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
416 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
417 # Save test data to file |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
418 if self.test_mode: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
419 with open(f'{self.output_folder}/center_config.yaml', 'w') as f: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
420 safe_dump(center_config, f) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
421 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
422 return(center_config) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
423 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
424 def reconstruct_data(self, nxroot, center_info, x_bounds=None, y_bounds=None): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
425 """Reconstruct the tomography data. |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
426 """ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
427 logger.info('Reconstruct the tomography data') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
428 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
429 if not isinstance(nxroot, NXroot): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
430 raise ValueError(f'Invalid parameter nxroot ({nxroot})') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
431 nxentry = nxroot[nxroot.attrs['default']] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
432 if not isinstance(nxentry, NXentry): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
433 raise ValueError(f'Invalid nxentry ({nxentry})') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
434 if not isinstance(center_info, dict): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
435 raise ValueError(f'Invalid parameter center_info ({center_info})') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
436 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
437 # Create plot galaxy path directory and path if needed |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
438 if self.galaxy_flag: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
439 if not os_path.exists('tomo_reconstruct_plots'): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
440 mkdir('tomo_reconstruct_plots') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
441 path = 'tomo_reconstruct_plots' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
442 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
443 path = self.output_folder |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
444 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
445 # Check if reduced data is available |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
446 if ('reduced_data' not in nxentry or 'reduced_data' not in nxentry.data): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
447 raise KeyError(f'Unable to find valid reduced data in {nxentry}.') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
448 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
449 # Create an NXprocess to store image reconstruction (meta)data |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
450 nxprocess = NXprocess() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
451 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
452 # Get rotation axis rows and centers |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
453 lower_row = center_info.get('lower_row') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
454 lower_center_offset = center_info.get('lower_center_offset') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
455 upper_row = center_info.get('upper_row') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
456 upper_center_offset = center_info.get('upper_center_offset') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
457 if (lower_row is None or lower_center_offset is None or upper_row is None or |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
458 upper_center_offset is None): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
459 raise KeyError(f'Unable to find valid calibrated center axis info in {center_info}.') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
460 center_slope = (upper_center_offset-lower_center_offset)/(upper_row-lower_row) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
461 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
462 # Get thetas (in degrees) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
463 thetas = np.asarray(nxentry.reduced_data.rotation_angle) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
464 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
465 # Reconstruct tomography data |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
466 # reduced data axes order: stack,theta,row,column |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
467 # reconstructed data order in each stack: row/z,x,y |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
468 # Note: Nexus cannot follow a link if the data it points to is too big, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
469 # so get the data from the actual place, not from nxentry.data |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
470 if 'zoom_perc' in nxentry.reduced_data: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
471 res_title = f'{nxentry.reduced_data.attrs["zoom_perc"]}p' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
472 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
473 res_title = 'fullres' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
474 load_error = False |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
475 num_tomo_stacks = nxentry.reduced_data.data.tomo_fields.shape[0] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
476 tomo_recon_stacks = num_tomo_stacks*[np.array([])] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
477 for i in range(num_tomo_stacks): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
478 # Convert reduced data stack from theta,row,column to row,theta,column |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
479 logger.debug(f'Reading reduced data stack {i+1}...') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
480 t0 = time() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
481 tomo_stack = np.asarray(nxentry.reduced_data.data.tomo_fields[i]) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
482 logger.debug(f'... done in {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
483 if len(tomo_stack.shape) != 3 or any(True for dim in tomo_stack.shape if not dim): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
484 raise ValueError(f'Unable to load tomography stack {i+1} for reconstruction') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
485 tomo_stack = np.swapaxes(tomo_stack, 0, 1) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
486 assert(len(thetas) == tomo_stack.shape[1]) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
487 assert(0 <= lower_row < upper_row < tomo_stack.shape[0]) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
488 center_offsets = [lower_center_offset-lower_row*center_slope, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
489 upper_center_offset+(tomo_stack.shape[0]-1-upper_row)*center_slope] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
490 t0 = time() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
491 logger.debug(f'Running _reconstruct_one_tomo_stack on {self.num_core} cores ...') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
492 tomo_recon_stack = self._reconstruct_one_tomo_stack(tomo_stack, thetas, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
493 center_offsets=center_offsets, num_core=self.num_core, algorithm='gridrec') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
494 logger.debug(f'... done in {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
495 logger.info(f'Reconstruction of stack {i+1} took {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
496 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
497 # Combine stacks |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
498 tomo_recon_stacks[i] = tomo_recon_stack |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
499 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
500 # Resize the reconstructed tomography data |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
501 # reconstructed data order in each stack: row/z,x,y |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
502 if self.test_mode: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
503 x_bounds = self.test_config.get('x_bounds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
504 y_bounds = self.test_config.get('y_bounds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
505 z_bounds = None |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
506 elif self.galaxy_flag: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
507 if x_bounds is not None and not is_int_pair(x_bounds, ge=0, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
508 lt=tomo_recon_stacks[0].shape[1]): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
509 raise ValueError(f'Invalid parameter x_bounds ({x_bounds})') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
510 if y_bounds is not None and not is_int_pair(y_bounds, ge=0, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
511 lt=tomo_recon_stacks[0].shape[1]): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
512 raise ValueError(f'Invalid parameter y_bounds ({y_bounds})') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
513 z_bounds = None |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
514 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
515 x_bounds, y_bounds, z_bounds = self._resize_reconstructed_data(tomo_recon_stacks) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
516 if x_bounds is None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
517 x_range = (0, tomo_recon_stacks[0].shape[1]) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
518 x_slice = int(x_range[1]/2) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
519 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
520 x_range = (min(x_bounds), max(x_bounds)) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
521 x_slice = int((x_bounds[0]+x_bounds[1])/2) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
522 if y_bounds is None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
523 y_range = (0, tomo_recon_stacks[0].shape[2]) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
524 y_slice = int(y_range[1]/2) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
525 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
526 y_range = (min(y_bounds), max(y_bounds)) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
527 y_slice = int((y_bounds[0]+y_bounds[1])/2) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
528 if z_bounds is None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
529 z_range = (0, tomo_recon_stacks[0].shape[0]) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
530 z_slice = int(z_range[1]/2) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
531 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
532 z_range = (min(z_bounds), max(z_bounds)) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
533 z_slice = int((z_bounds[0]+z_bounds[1])/2) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
534 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
535 # Plot a few reconstructed image slices |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
536 if num_tomo_stacks == 1: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
537 basetitle = 'recon' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
538 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
539 basetitle = f'recon stack {i+1}' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
540 for i, stack in enumerate(tomo_recon_stacks): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
541 title = f'{basetitle} {res_title} xslice{x_slice}' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
542 quick_imshow(stack[z_range[0]:z_range[1],x_slice,y_range[0]:y_range[1]], |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
543 title=title, path=path, save_fig=self.save_figs, save_only=self.save_only, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
544 block=self.block) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
545 title = f'{basetitle} {res_title} yslice{y_slice}' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
546 quick_imshow(stack[z_range[0]:z_range[1],x_range[0]:x_range[1],y_slice], |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
547 title=title, path=path, save_fig=self.save_figs, save_only=self.save_only, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
548 block=self.block) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
549 title = f'{basetitle} {res_title} zslice{z_slice}' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
550 quick_imshow(stack[z_slice,x_range[0]:x_range[1],y_range[0]:y_range[1]], |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
551 title=title, path=path, save_fig=self.save_figs, save_only=self.save_only, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
552 block=self.block) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
553 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
554 # Save test data to file |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
555 # reconstructed data order in each stack: row/z,x,y |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
556 if self.test_mode: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
557 for i, stack in enumerate(tomo_recon_stacks): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
558 np.savetxt(f'{self.output_folder}/recon_stack_{i+1}.txt', |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
559 stack[z_slice,x_range[0]:x_range[1],y_range[0]:y_range[1]], fmt='%.6e') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
560 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
561 # Add image reconstruction to reconstructed data NXprocess |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
562 # reconstructed data order in each stack: row/z,x,y |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
563 nxprocess.data = NXdata() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
564 nxprocess.attrs['default'] = 'data' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
565 for k, v in center_info.items(): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
566 nxprocess[k] = v |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
567 if x_bounds is not None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
568 nxprocess.x_bounds = x_bounds |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
569 if y_bounds is not None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
570 nxprocess.y_bounds = y_bounds |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
571 if z_bounds is not None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
572 nxprocess.z_bounds = z_bounds |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
573 nxprocess.data['reconstructed_data'] = np.asarray([stack[z_range[0]:z_range[1], |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
574 x_range[0]:x_range[1],y_range[0]:y_range[1]] for stack in tomo_recon_stacks]) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
575 nxprocess.data.attrs['signal'] = 'reconstructed_data' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
576 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
577 # Create a copy of the input Nexus object and remove reduced data |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
578 exclude_items = [f'{nxentry._name}/reduced_data/data', f'{nxentry._name}/data/reduced_data'] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
579 nxroot_copy = nxcopy(nxroot, exclude_nxpaths=exclude_items) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
580 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
581 # Add the reconstructed data NXprocess to the new Nexus object |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
582 nxentry_copy = nxroot_copy[nxroot_copy.attrs['default']] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
583 nxentry_copy.reconstructed_data = nxprocess |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
584 if 'data' not in nxentry_copy: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
585 nxentry_copy.data = NXdata() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
586 nxentry_copy.attrs['default'] = 'data' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
587 nxentry_copy.data.makelink(nxprocess.data.reconstructed_data, name='reconstructed_data') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
588 nxentry_copy.data.attrs['signal'] = 'reconstructed_data' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
589 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
590 return(nxroot_copy) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
591 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
592 def combine_data(self, nxroot, x_bounds=None, y_bounds=None): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
593 """Combine the reconstructed tomography stacks. |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
594 """ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
595 logger.info('Combine the reconstructed tomography stacks') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
596 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
597 if not isinstance(nxroot, NXroot): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
598 raise ValueError(f'Invalid parameter nxroot ({nxroot})') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
599 nxentry = nxroot[nxroot.attrs['default']] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
600 if not isinstance(nxentry, NXentry): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
601 raise ValueError(f'Invalid nxentry ({nxentry})') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
602 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
603 # Create plot galaxy path directory and path if needed |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
604 if self.galaxy_flag: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
605 if not os_path.exists('tomo_combine_plots'): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
606 mkdir('tomo_combine_plots') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
607 path = 'tomo_combine_plots' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
608 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
609 path = self.output_folder |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
610 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
611 # Check if reconstructed image data is available |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
612 if ('reconstructed_data' not in nxentry or 'reconstructed_data' not in nxentry.data): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
613 raise KeyError(f'Unable to find valid reconstructed image data in {nxentry}.') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
614 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
615 # Create an NXprocess to store combined image reconstruction (meta)data |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
616 nxprocess = NXprocess() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
617 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
618 # Get the reconstructed data |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
619 # reconstructed data order: stack,row(z),x,y |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
620 # Note: Nexus cannot follow a link if the data it points to is too big, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
621 # so get the data from the actual place, not from nxentry.data |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
622 num_tomo_stacks = nxentry.reconstructed_data.data.reconstructed_data.shape[0] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
623 if num_tomo_stacks == 1: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
624 logger.info('Only one stack available: leaving combine_data') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
625 return(None) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
626 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
627 # Combine the reconstructed stacks |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
628 # (load one stack at a time to reduce risk of hitting Nexus data access limit) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
629 t0 = time() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
630 logger.debug(f'Combining the reconstructed stacks ...') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
631 tomo_recon_combined = np.asarray(nxentry.reconstructed_data.data.reconstructed_data[0]) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
632 if num_tomo_stacks > 2: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
633 tomo_recon_combined = np.concatenate([tomo_recon_combined]+ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
634 [nxentry.reconstructed_data.data.reconstructed_data[i] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
635 for i in range(1, num_tomo_stacks-1)]) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
636 if num_tomo_stacks > 1: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
637 tomo_recon_combined = np.concatenate([tomo_recon_combined]+ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
638 [nxentry.reconstructed_data.data.reconstructed_data[num_tomo_stacks-1]]) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
639 logger.debug(f'... done in {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
640 logger.info(f'Combining the reconstructed stacks took {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
641 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
642 # Resize the combined tomography data stacks |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
643 # combined data order: row/z,x,y |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
644 if self.test_mode: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
645 x_bounds = None |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
646 y_bounds = None |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
647 z_bounds = self.test_config.get('z_bounds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
648 elif self.galaxy_flag: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
649 if x_bounds is not None and not is_int_pair(x_bounds, ge=0, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
650 lt=tomo_recon_stacks[0].shape[1]): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
651 raise ValueError(f'Invalid parameter x_bounds ({x_bounds})') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
652 if y_bounds is not None and not is_int_pair(y_bounds, ge=0, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
653 lt=tomo_recon_stacks[0].shape[1]): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
654 raise ValueError(f'Invalid parameter y_bounds ({y_bounds})') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
655 z_bounds = None |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
656 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
657 x_bounds, y_bounds, z_bounds = self._resize_reconstructed_data(tomo_recon_combined, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
658 z_only=True) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
659 if x_bounds is None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
660 x_range = (0, tomo_recon_combined.shape[1]) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
661 x_slice = int(x_range[1]/2) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
662 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
663 x_range = x_bounds |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
664 x_slice = int((x_bounds[0]+x_bounds[1])/2) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
665 if y_bounds is None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
666 y_range = (0, tomo_recon_combined.shape[2]) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
667 y_slice = int(y_range[1]/2) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
668 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
669 y_range = y_bounds |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
670 y_slice = int((y_bounds[0]+y_bounds[1])/2) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
671 if z_bounds is None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
672 z_range = (0, tomo_recon_combined.shape[0]) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
673 z_slice = int(z_range[1]/2) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
674 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
675 z_range = z_bounds |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
676 z_slice = int((z_bounds[0]+z_bounds[1])/2) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
677 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
678 # Plot a few combined image slices |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
679 quick_imshow(tomo_recon_combined[z_range[0]:z_range[1],x_slice,y_range[0]:y_range[1]], |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
680 title=f'recon combined xslice{x_slice}', path=path, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
681 save_fig=self.save_figs, save_only=self.save_only, block=self.block) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
682 quick_imshow(tomo_recon_combined[z_range[0]:z_range[1],x_range[0]:x_range[1],y_slice], |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
683 title=f'recon combined yslice{y_slice}', path=path, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
684 save_fig=self.save_figs, save_only=self.save_only, block=self.block) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
685 quick_imshow(tomo_recon_combined[z_slice,x_range[0]:x_range[1],y_range[0]:y_range[1]], |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
686 title=f'recon combined zslice{z_slice}', path=path, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
687 save_fig=self.save_figs, save_only=self.save_only, block=self.block) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
688 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
689 # Save test data to file |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
690 # combined data order: row/z,x,y |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
691 if self.test_mode: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
692 np.savetxt(f'{self.output_folder}/recon_combined.txt', tomo_recon_combined[ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
693 z_slice,x_range[0]:x_range[1],y_range[0]:y_range[1]], fmt='%.6e') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
694 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
695 # Add image reconstruction to reconstructed data NXprocess |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
696 # combined data order: row/z,x,y |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
697 nxprocess.data = NXdata() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
698 nxprocess.attrs['default'] = 'data' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
699 if x_bounds is not None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
700 nxprocess.x_bounds = x_bounds |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
701 if y_bounds is not None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
702 nxprocess.y_bounds = y_bounds |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
703 if z_bounds is not None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
704 nxprocess.z_bounds = z_bounds |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
705 nxprocess.data['combined_data'] = tomo_recon_combined |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
706 nxprocess.data.attrs['signal'] = 'combined_data' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
707 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
708 # Create a copy of the input Nexus object and remove reconstructed data |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
709 exclude_items = [f'{nxentry._name}/reconstructed_data/data', |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
710 f'{nxentry._name}/data/reconstructed_data'] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
711 nxroot_copy = nxcopy(nxroot, exclude_nxpaths=exclude_items) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
712 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
713 # Add the combined data NXprocess to the new Nexus object |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
714 nxentry_copy = nxroot_copy[nxroot_copy.attrs['default']] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
715 nxentry_copy.combined_data = nxprocess |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
716 if 'data' not in nxentry_copy: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
717 nxentry_copy.data = NXdata() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
718 nxentry_copy.attrs['default'] = 'data' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
719 nxentry_copy.data.makelink(nxprocess.data.combined_data, name='combined_data') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
720 nxentry_copy.data.attrs['signal'] = 'combined_data' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
721 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
722 return(nxroot_copy) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
723 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
724 def _gen_dark(self, nxentry, reduced_data): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
725 """Generate dark field. |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
726 """ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
727 # Get the dark field images |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
728 image_key = nxentry.instrument.detector.get('image_key', None) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
729 if image_key and 'data' in nxentry.instrument.detector: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
730 field_indices = [index for index, key in enumerate(image_key) if key == 2] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
731 tdf_stack = nxentry.instrument.detector.data[field_indices,:,:] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
732 # RV the default NXtomo form does not accomodate bright or dark field stacks |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
733 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
734 dark_field_scans = nxentry.spec_scans.dark_field |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
735 dark_field = FlatField.construct_from_nxcollection(dark_field_scans) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
736 prefix = str(nxentry.instrument.detector.local_name) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
737 tdf_stack = dark_field.get_detector_data(prefix) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
738 if isinstance(tdf_stack, list): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
739 assert(len(tdf_stack) == 1) # TODO |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
740 tdf_stack = tdf_stack[0] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
741 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
742 # Take median |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
743 if tdf_stack.ndim == 2: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
744 tdf = tdf_stack |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
745 elif tdf_stack.ndim == 3: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
746 tdf = np.median(tdf_stack, axis=0) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
747 del tdf_stack |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
748 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
749 raise ValueError(f'Invalid tdf_stack shape ({tdf_stack.shape})') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
750 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
751 # Remove dark field intensities above the cutoff |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
752 #RV tdf_cutoff = None |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
753 tdf_cutoff = tdf.min()+2*(np.median(tdf)-tdf.min()) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
754 logger.debug(f'tdf_cutoff = {tdf_cutoff}') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
755 if tdf_cutoff is not None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
756 if not is_num(tdf_cutoff, ge=0): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
757 logger.warning(f'Ignoring illegal value of tdf_cutoff {tdf_cutoff}') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
758 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
759 tdf[tdf > tdf_cutoff] = np.nan |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
760 logger.debug(f'tdf_cutoff = {tdf_cutoff}') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
761 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
762 # Remove nans |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
763 tdf_mean = np.nanmean(tdf) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
764 logger.debug(f'tdf_mean = {tdf_mean}') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
765 np.nan_to_num(tdf, copy=False, nan=tdf_mean, posinf=tdf_mean, neginf=0.) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
766 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
767 # Plot dark field |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
768 if self.galaxy_flag: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
769 quick_imshow(tdf, title='dark field', path='tomo_reduce_plots', save_fig=self.save_figs, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
770 save_only=self.save_only) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
771 elif not self.test_mode: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
772 quick_imshow(tdf, title='dark field', path=self.output_folder, save_fig=self.save_figs, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
773 save_only=self.save_only) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
774 clear_imshow('dark field') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
775 # quick_imshow(tdf, title='dark field', block=True) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
776 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
777 # Add dark field to reduced data NXprocess |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
778 reduced_data.data = NXdata() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
779 reduced_data.data['dark_field'] = tdf |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
780 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
781 return(reduced_data) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
782 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
783 def _gen_bright(self, nxentry, reduced_data): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
784 """Generate bright field. |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
785 """ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
786 # Get the bright field images |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
787 image_key = nxentry.instrument.detector.get('image_key', None) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
788 if image_key and 'data' in nxentry.instrument.detector: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
789 field_indices = [index for index, key in enumerate(image_key) if key == 1] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
790 tbf_stack = nxentry.instrument.detector.data[field_indices,:,:] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
791 # RV the default NXtomo form does not accomodate bright or dark field stacks |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
792 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
793 bright_field_scans = nxentry.spec_scans.bright_field |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
794 bright_field = FlatField.construct_from_nxcollection(bright_field_scans) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
795 prefix = str(nxentry.instrument.detector.local_name) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
796 tbf_stack = bright_field.get_detector_data(prefix) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
797 if isinstance(tbf_stack, list): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
798 assert(len(tbf_stack) == 1) # TODO |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
799 tbf_stack = tbf_stack[0] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
800 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
801 # Take median if more than one image |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
802 """Median or mean: It may be best to try the median because of some image |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
803 artifacts that arise due to crinkles in the upstream kapton tape windows |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
804 causing some phase contrast images to appear on the detector. |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
805 One thing that also may be useful in a future implementation is to do a |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
806 brightfield adjustment on EACH frame of the tomo based on a ROI in the |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
807 corner of the frame where there is no sample but there is the direct X-ray |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
808 beam because there is frame to frame fluctuations from the incoming beam. |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
809 We don’t typically account for them but potentially could. |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
810 """ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
811 if tbf_stack.ndim == 2: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
812 tbf = tbf_stack |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
813 elif tbf_stack.ndim == 3: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
814 tbf = np.median(tbf_stack, axis=0) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
815 del tbf_stack |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
816 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
817 raise ValueError(f'Invalid tbf_stack shape ({tbf_stacks.shape})') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
818 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
819 # Subtract dark field |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
820 if 'data' in reduced_data and 'dark_field' in reduced_data.data: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
821 tbf -= reduced_data.data.dark_field |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
822 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
823 logger.warning('Dark field unavailable') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
824 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
825 # Set any non-positive values to one |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
826 # (avoid negative bright field values for spikes in dark field) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
827 tbf[tbf < 1] = 1 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
828 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
829 # Plot bright field |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
830 if self.galaxy_flag: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
831 quick_imshow(tbf, title='bright field', path='tomo_reduce_plots', |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
832 save_fig=self.save_figs, save_only=self.save_only) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
833 elif not self.test_mode: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
834 quick_imshow(tbf, title='bright field', path=self.output_folder, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
835 save_fig=self.save_figs, save_only=self.save_only) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
836 clear_imshow('bright field') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
837 # quick_imshow(tbf, title='bright field', block=True) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
838 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
839 # Add bright field to reduced data NXprocess |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
840 if 'data' not in reduced_data: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
841 reduced_data.data = NXdata() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
842 reduced_data.data['bright_field'] = tbf |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
843 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
844 return(reduced_data) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
845 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
846 def _set_detector_bounds(self, nxentry, reduced_data, img_x_bounds=None): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
847 """Set vertical detector bounds for each image stack. |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
848 Right now the range is the same for each set in the image stack. |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
849 """ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
850 if self.test_mode: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
851 return(tuple(self.test_config['img_x_bounds'])) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
852 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
853 # Get the first tomography image and the reference heights |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
854 image_key = nxentry.instrument.detector.get('image_key', None) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
855 if image_key and 'data' in nxentry.instrument.detector: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
856 field_indices = [index for index, key in enumerate(image_key) if key == 0] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
857 first_image = np.asarray(nxentry.instrument.detector.data[field_indices[0],:,:]) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
858 theta = float(nxentry.sample.rotation_angle[field_indices[0]]) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
859 z_translation_all = nxentry.sample.z_translation[field_indices] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
860 vertical_shifts = sorted(list(set(z_translation_all))) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
861 num_tomo_stacks = len(vertical_shifts) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
862 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
863 tomo_field_scans = nxentry.spec_scans.tomo_fields |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
864 tomo_fields = TomoField.construct_from_nxcollection(tomo_field_scans) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
865 vertical_shifts = tomo_fields.get_vertical_shifts() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
866 if not isinstance(vertical_shifts, list): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
867 vertical_shifts = [vertical_shifts] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
868 prefix = str(nxentry.instrument.detector.local_name) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
869 t0 = time() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
870 first_image = tomo_fields.get_detector_data(prefix, tomo_fields.scan_numbers[0], 0) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
871 logger.debug(f'Getting first image took {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
872 num_tomo_stacks = len(tomo_fields.scan_numbers) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
873 theta = tomo_fields.theta_range['start'] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
874 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
875 # Select image bounds |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
876 title = f'tomography image at theta={round(theta, 2)+0}' |
|
5
543dba81eb15
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
4
diff
changeset
|
877 if img_x_bounds is not None: |
|
6
05335876d167
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
5
diff
changeset
|
878 if is_int_pair(img_x_bounds) and img_x_bounds[0] == -1 and img_x_bounds[1] == -1: |
|
5
543dba81eb15
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
4
diff
changeset
|
879 img_x_bounds = None |
|
6
05335876d167
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
5
diff
changeset
|
880 elif not is_index_range(img_x_bounds, ge=0, le=first_image.shape[0]): |
|
05335876d167
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
5
diff
changeset
|
881 raise ValueError(f'Invalid parameter img_x_bounds ({img_x_bounds})') |
|
4
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
882 if nxentry.instrument.source.attrs['station'] in ('id1a3', 'id3a'): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
883 pixel_size = nxentry.instrument.detector.x_pixel_size |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
884 # Try to get a fit from the bright field |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
885 tbf = np.asarray(reduced_data.data.bright_field) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
886 tbf_shape = tbf.shape |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
887 x_sum = np.sum(tbf, 1) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
888 x_sum_min = x_sum.min() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
889 x_sum_max = x_sum.max() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
890 fit = Fit.fit_data(x_sum, 'rectangle', x=np.array(range(len(x_sum))), form='atan', |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
891 guess=True) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
892 parameters = fit.best_values |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
893 x_low_fit = parameters.get('center1', None) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
894 x_upp_fit = parameters.get('center2', None) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
895 sig_low = parameters.get('sigma1', None) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
896 sig_upp = parameters.get('sigma2', None) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
897 have_fit = fit.success and x_low_fit is not None and x_upp_fit is not None and \ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
898 sig_low is not None and sig_upp is not None and \ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
899 0 <= x_low_fit < x_upp_fit <= x_sum.size and \ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
900 (sig_low+sig_upp)/(x_upp_fit-x_low_fit) < 0.1 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
901 if have_fit: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
902 # Set a 5% margin on each side |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
903 margin = 0.05*(x_upp_fit-x_low_fit) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
904 x_low_fit = max(0, x_low_fit-margin) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
905 x_upp_fit = min(tbf_shape[0], x_upp_fit+margin) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
906 if num_tomo_stacks == 1: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
907 if have_fit: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
908 # Set the default range to enclose the full fitted window |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
909 x_low = int(x_low_fit) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
910 x_upp = int(x_upp_fit) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
911 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
912 # Center a default range of 1 mm (RV: can we get this from the slits?) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
913 num_x_min = int((1.0-0.5*pixel_size)/pixel_size) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
914 x_low = int(0.5*(tbf_shape[0]-num_x_min)) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
915 x_upp = x_low+num_x_min |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
916 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
917 # Get the default range from the reference heights |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
918 delta_z = vertical_shifts[1]-vertical_shifts[0] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
919 for i in range(2, num_tomo_stacks): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
920 delta_z = min(delta_z, vertical_shifts[i]-vertical_shifts[i-1]) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
921 logger.debug(f'delta_z = {delta_z}') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
922 num_x_min = int((delta_z-0.5*pixel_size)/pixel_size) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
923 logger.debug(f'num_x_min = {num_x_min}') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
924 if num_x_min > tbf_shape[0]: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
925 logger.warning('Image bounds and pixel size prevent seamless stacking') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
926 if have_fit: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
927 # Center the default range relative to the fitted window |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
928 x_low = int(0.5*(x_low_fit+x_upp_fit-num_x_min)) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
929 x_upp = x_low+num_x_min |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
930 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
931 # Center the default range |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
932 x_low = int(0.5*(tbf_shape[0]-num_x_min)) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
933 x_upp = x_low+num_x_min |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
934 if self.galaxy_flag: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
935 img_x_bounds = (x_low, x_upp) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
936 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
937 tmp = np.copy(tbf) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
938 tmp_max = tmp.max() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
939 tmp[x_low,:] = tmp_max |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
940 tmp[x_upp-1,:] = tmp_max |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
941 quick_imshow(tmp, title='bright field') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
942 tmp = np.copy(first_image) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
943 tmp_max = tmp.max() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
944 tmp[x_low,:] = tmp_max |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
945 tmp[x_upp-1,:] = tmp_max |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
946 quick_imshow(tmp, title=title) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
947 del tmp |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
948 quick_plot((range(x_sum.size), x_sum), |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
949 ([x_low, x_low], [x_sum_min, x_sum_max], 'r-'), |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
950 ([x_upp, x_upp], [x_sum_min, x_sum_max], 'r-'), |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
951 title='sum over theta and y') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
952 print(f'lower bound = {x_low} (inclusive)') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
953 print(f'upper bound = {x_upp} (exclusive)]') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
954 accept = input_yesno('Accept these bounds (y/n)?', 'y') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
955 clear_imshow('bright field') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
956 clear_imshow(title) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
957 clear_plot('sum over theta and y') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
958 if accept: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
959 img_x_bounds = (x_low, x_upp) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
960 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
961 while True: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
962 mask, img_x_bounds = draw_mask_1d(x_sum, title='select x data range', |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
963 legend='sum over theta and y') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
964 if len(img_x_bounds) == 1: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
965 break |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
966 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
967 print(f'Choose a single connected data range') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
968 img_x_bounds = tuple(img_x_bounds[0]) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
969 if (num_tomo_stacks > 1 and img_x_bounds[1]-img_x_bounds[0]+1 < |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
970 int((delta_z-0.5*pixel_size)/pixel_size)): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
971 logger.warning('Image bounds and pixel size prevent seamless stacking') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
972 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
973 if num_tomo_stacks > 1: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
974 raise NotImplementedError('Selecting image bounds for multiple stacks on FMB') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
975 # For FMB: use the first tomography image to select range |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
976 # RV: revisit if they do tomography with multiple stacks |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
977 x_sum = np.sum(first_image, 1) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
978 x_sum_min = x_sum.min() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
979 x_sum_max = x_sum.max() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
980 if self.galaxy_flag: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
981 if img_x_bounds is None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
982 img_x_bounds = (0, first_image.shape[0]) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
983 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
984 quick_imshow(first_image, title=title) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
985 print('Select vertical data reduction range from first tomography image') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
986 img_x_bounds = select_image_bounds(first_image, 0, title=title) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
987 clear_imshow(title) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
988 if img_x_bounds is None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
989 raise ValueError('Unable to select image bounds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
990 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
991 # Plot results |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
992 if self.galaxy_flag: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
993 path = 'tomo_reduce_plots' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
994 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
995 path = self.output_folder |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
996 x_low = img_x_bounds[0] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
997 x_upp = img_x_bounds[1] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
998 tmp = np.copy(first_image) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
999 tmp_max = tmp.max() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1000 tmp[x_low,:] = tmp_max |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1001 tmp[x_upp-1,:] = tmp_max |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1002 quick_imshow(tmp, title=title, path=path, save_fig=self.save_figs, save_only=self.save_only, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1003 block=self.block) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1004 del tmp |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1005 quick_plot((range(x_sum.size), x_sum), |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1006 ([x_low, x_low], [x_sum_min, x_sum_max], 'r-'), |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1007 ([x_upp, x_upp], [x_sum_min, x_sum_max], 'r-'), |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1008 title='sum over theta and y', path=path, save_fig=self.save_figs, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1009 save_only=self.save_only, block=self.block) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1010 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1011 return(img_x_bounds) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1012 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1013 def _set_zoom_or_skip(self): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1014 """Set zoom and/or theta skip to reduce memory the requirement for the analysis. |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1015 """ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1016 # if input_yesno('\nDo you want to zoom in to reduce memory requirement (y/n)?', 'n'): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1017 # zoom_perc = input_int(' Enter zoom percentage', ge=1, le=100) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1018 # else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1019 # zoom_perc = None |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1020 zoom_perc = None |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1021 # if input_yesno('Do you want to skip thetas to reduce memory requirement (y/n)?', 'n'): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1022 # num_theta_skip = input_int(' Enter the number skip theta interval', ge=0, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1023 # lt=num_theta) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1024 # else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1025 # num_theta_skip = None |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1026 num_theta_skip = None |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1027 logger.debug(f'zoom_perc = {zoom_perc}') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1028 logger.debug(f'num_theta_skip = {num_theta_skip}') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1029 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1030 return(zoom_perc, num_theta_skip) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1031 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1032 def _gen_tomo(self, nxentry, reduced_data): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1033 """Generate tomography fields. |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1034 """ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1035 # Get full bright field |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1036 tbf = np.asarray(reduced_data.data.bright_field) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1037 tbf_shape = tbf.shape |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1038 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1039 # Get image bounds |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1040 img_x_bounds = tuple(reduced_data.get('img_x_bounds', (0, tbf_shape[0]))) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1041 img_y_bounds = tuple(reduced_data.get('img_y_bounds', (0, tbf_shape[1]))) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1042 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1043 # Get resized dark field |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1044 # if 'dark_field' in data: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1045 # tbf = np.asarray(reduced_data.data.dark_field[ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1046 # img_x_bounds[0]:img_x_bounds[1],img_y_bounds[0]:img_y_bounds[1]]) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1047 # else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1048 # logger.warning('Dark field unavailable') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1049 # tdf = None |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1050 tdf = None |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1051 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1052 # Resize bright field |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1053 if img_x_bounds != (0, tbf.shape[0]) or img_y_bounds != (0, tbf.shape[1]): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1054 tbf = tbf[img_x_bounds[0]:img_x_bounds[1],img_y_bounds[0]:img_y_bounds[1]] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1055 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1056 # Get the tomography images |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1057 image_key = nxentry.instrument.detector.get('image_key', None) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1058 if image_key and 'data' in nxentry.instrument.detector: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1059 field_indices_all = [index for index, key in enumerate(image_key) if key == 0] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1060 z_translation_all = nxentry.sample.z_translation[field_indices_all] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1061 z_translation_levels = sorted(list(set(z_translation_all))) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1062 num_tomo_stacks = len(z_translation_levels) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1063 tomo_stacks = num_tomo_stacks*[np.array([])] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1064 horizontal_shifts = [] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1065 vertical_shifts = [] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1066 thetas = None |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1067 tomo_stacks = [] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1068 for i, z_translation in enumerate(z_translation_levels): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1069 field_indices = [field_indices_all[index] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1070 for index, z in enumerate(z_translation_all) if z == z_translation] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1071 horizontal_shift = list(set(nxentry.sample.x_translation[field_indices])) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1072 assert(len(horizontal_shift) == 1) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1073 horizontal_shifts += horizontal_shift |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1074 vertical_shift = list(set(nxentry.sample.z_translation[field_indices])) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1075 assert(len(vertical_shift) == 1) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1076 vertical_shifts += vertical_shift |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1077 sequence_numbers = nxentry.instrument.detector.sequence_number[field_indices] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1078 if thetas is None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1079 thetas = np.asarray(nxentry.sample.rotation_angle[field_indices]) \ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1080 [sequence_numbers] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1081 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1082 assert(all(thetas[i] == nxentry.sample.rotation_angle[field_indices[index]] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1083 for i, index in enumerate(sequence_numbers))) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1084 assert(list(set(sequence_numbers)) == [i for i in range(len(sequence_numbers))]) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1085 if list(sequence_numbers) == [i for i in range(len(sequence_numbers))]: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1086 tomo_stack = np.asarray(nxentry.instrument.detector.data[field_indices]) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1087 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1088 raise ValueError('Unable to load the tomography images') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1089 tomo_stacks.append(tomo_stack) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1090 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1091 tomo_field_scans = nxentry.spec_scans.tomo_fields |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1092 tomo_fields = TomoField.construct_from_nxcollection(tomo_field_scans) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1093 horizontal_shifts = tomo_fields.get_horizontal_shifts() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1094 vertical_shifts = tomo_fields.get_vertical_shifts() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1095 prefix = str(nxentry.instrument.detector.local_name) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1096 t0 = time() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1097 tomo_stacks = tomo_fields.get_detector_data(prefix) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1098 logger.debug(f'Getting tomography images took {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1099 logger.debug(f'Getting all images took {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1100 thetas = np.linspace(tomo_fields.theta_range['start'], tomo_fields.theta_range['end'], |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1101 tomo_fields.theta_range['num']) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1102 if not isinstance(tomo_stacks, list): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1103 horizontal_shifts = [horizontal_shifts] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1104 vertical_shifts = [vertical_shifts] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1105 tomo_stacks = [tomo_stacks] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1106 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1107 reduced_tomo_stacks = [] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1108 if self.galaxy_flag: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1109 path = 'tomo_reduce_plots' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1110 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1111 path = self.output_folder |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1112 for i, tomo_stack in enumerate(tomo_stacks): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1113 # Resize the tomography images |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1114 # Right now the range is the same for each set in the image stack. |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1115 if img_x_bounds != (0, tbf.shape[0]) or img_y_bounds != (0, tbf.shape[1]): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1116 t0 = time() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1117 tomo_stack = tomo_stack[:,img_x_bounds[0]:img_x_bounds[1], |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1118 img_y_bounds[0]:img_y_bounds[1]].astype('float64') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1119 logger.debug(f'Resizing tomography images took {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1120 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1121 # Subtract dark field |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1122 if tdf is not None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1123 t0 = time() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1124 with set_numexpr_threads(self.num_core): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1125 ne.evaluate('tomo_stack-tdf', out=tomo_stack) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1126 logger.debug(f'Subtracting dark field took {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1127 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1128 # Normalize |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1129 t0 = time() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1130 with set_numexpr_threads(self.num_core): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1131 ne.evaluate('tomo_stack/tbf', out=tomo_stack, truediv=True) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1132 logger.debug(f'Normalizing took {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1133 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1134 # Remove non-positive values and linearize data |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1135 t0 = time() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1136 cutoff = 1.e-6 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1137 with set_numexpr_threads(self.num_core): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1138 ne.evaluate('where(tomo_stack<cutoff, cutoff, tomo_stack)', out=tomo_stack) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1139 with set_numexpr_threads(self.num_core): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1140 ne.evaluate('-log(tomo_stack)', out=tomo_stack) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1141 logger.debug('Removing non-positive values and linearizing data took '+ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1142 f'{time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1143 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1144 # Get rid of nans/infs that may be introduced by normalization |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1145 t0 = time() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1146 np.where(np.isfinite(tomo_stack), tomo_stack, 0.) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1147 logger.debug(f'Remove nans/infs took {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1148 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1149 # Downsize tomography stack to smaller size |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1150 # TODO use theta_skip as well |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1151 tomo_stack = tomo_stack.astype('float32') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1152 if not self.test_mode: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1153 if len(tomo_stacks) == 1: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1154 title = f'red fullres theta {round(thetas[0], 2)+0}' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1155 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1156 title = f'red stack {i+1} fullres theta {round(thetas[0], 2)+0}' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1157 quick_imshow(tomo_stack[0,:,:], title=title, path=path, save_fig=self.save_figs, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1158 save_only=self.save_only, block=self.block) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1159 # if not self.block: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1160 # clear_imshow(title) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1161 if False and zoom_perc != 100: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1162 t0 = time() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1163 logger.debug(f'Zooming in ...') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1164 tomo_zoom_list = [] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1165 for j in range(tomo_stack.shape[0]): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1166 tomo_zoom = spi.zoom(tomo_stack[j,:,:], 0.01*zoom_perc) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1167 tomo_zoom_list.append(tomo_zoom) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1168 tomo_stack = np.stack([tomo_zoom for tomo_zoom in tomo_zoom_list]) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1169 logger.debug(f'... done in {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1170 logger.info(f'Zooming in took {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1171 del tomo_zoom_list |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1172 if not self.test_mode: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1173 title = f'red stack {zoom_perc}p theta {round(thetas[0], 2)+0}' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1174 quick_imshow(tomo_stack[0,:,:], title=title, path=path, save_fig=self.save_figs, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1175 save_only=self.save_only, block=self.block) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1176 # if not self.block: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1177 # clear_imshow(title) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1178 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1179 # Save test data to file |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1180 if self.test_mode: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1181 # row_index = int(tomo_stack.shape[0]/2) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1182 # np.savetxt(f'{self.output_folder}/red_stack_{i+1}.txt', tomo_stack[row_index,:,:], |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1183 # fmt='%.6e') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1184 row_index = int(tomo_stack.shape[1]/2) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1185 np.savetxt(f'{self.output_folder}/red_stack_{i+1}.txt', tomo_stack[:,row_index,:], |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1186 fmt='%.6e') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1187 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1188 # Combine resized stacks |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1189 reduced_tomo_stacks.append(tomo_stack) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1190 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1191 # Add tomo field info to reduced data NXprocess |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1192 reduced_data['rotation_angle'] = thetas |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1193 reduced_data['x_translation'] = np.asarray(horizontal_shifts) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1194 reduced_data['z_translation'] = np.asarray(vertical_shifts) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1195 reduced_data.data['tomo_fields'] = np.asarray(reduced_tomo_stacks) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1196 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1197 if tdf is not None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1198 del tdf |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1199 del tbf |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1200 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1201 return(reduced_data) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1202 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1203 def _find_center_one_plane(self, sinogram, row, thetas, eff_pixel_size, cross_sectional_dim, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1204 path=None, tol=0.1, num_core=1): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1205 """Find center for a single tomography plane. |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1206 """ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1207 # Try automatic center finding routines for initial value |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1208 # sinogram index order: theta,column |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1209 # need column,theta for iradon, so take transpose |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1210 sinogram = np.asarray(sinogram) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1211 sinogram_T = sinogram.T |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1212 center = sinogram.shape[1]/2 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1213 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1214 # Try using Nghia Vo’s method |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1215 t0 = time() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1216 if num_core > num_core_tomopy_limit: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1217 logger.debug(f'Running find_center_vo on {num_core_tomopy_limit} cores ...') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1218 tomo_center = tomopy.find_center_vo(sinogram, ncore=num_core_tomopy_limit) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1219 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1220 logger.debug(f'Running find_center_vo on {num_core} cores ...') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1221 tomo_center = tomopy.find_center_vo(sinogram, ncore=num_core) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1222 logger.debug(f'... done in {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1223 logger.info(f'Finding the center using Nghia Vo’s method took {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1224 center_offset_vo = tomo_center-center |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1225 logger.info(f'Center at row {row} using Nghia Vo’s method = {center_offset_vo:.2f}') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1226 t0 = time() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1227 logger.debug(f'Running _reconstruct_one_plane on {self.num_core} cores ...') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1228 recon_plane = self._reconstruct_one_plane(sinogram_T, tomo_center, thetas, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1229 eff_pixel_size, cross_sectional_dim, False, num_core) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1230 logger.debug(f'... done in {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1231 logger.info(f'Reconstructing row {row} took {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1232 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1233 title = f'edges row{row} center offset{center_offset_vo:.2f} Vo' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1234 self._plot_edges_one_plane(recon_plane, title, path=path) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1235 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1236 # Try using phase correlation method |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1237 # if input_yesno('Try finding center using phase correlation (y/n)?', 'n'): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1238 # t0 = time() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1239 # logger.debug(f'Running find_center_pc ...') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1240 # tomo_center = tomopy.find_center_pc(sinogram, sinogram, tol=0.1, rotc_guess=tomo_center) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1241 # error = 1. |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1242 # while error > tol: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1243 # prev = tomo_center |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1244 # tomo_center = tomopy.find_center_pc(sinogram, sinogram, tol=tol, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1245 # rotc_guess=tomo_center) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1246 # error = np.abs(tomo_center-prev) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1247 # logger.debug(f'... done in {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1248 # logger.info('Finding the center using the phase correlation method took '+ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1249 # f'{time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1250 # center_offset = tomo_center-center |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1251 # print(f'Center at row {row} using phase correlation = {center_offset:.2f}') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1252 # t0 = time() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1253 # logger.debug(f'Running _reconstruct_one_plane on {self.num_core} cores ...') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1254 # recon_plane = self._reconstruct_one_plane(sinogram_T, tomo_center, thetas, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1255 # eff_pixel_size, cross_sectional_dim, False, num_core) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1256 # logger.debug(f'... done in {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1257 # logger.info(f'Reconstructing row {row} took {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1258 # |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1259 # title = f'edges row{row} center_offset{center_offset:.2f} PC' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1260 # self._plot_edges_one_plane(recon_plane, title, path=path) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1261 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1262 # Select center location |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1263 # if input_yesno('Accept a center location (y) or continue search (n)?', 'y'): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1264 if True: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1265 # center_offset = input_num(' Enter chosen center offset', ge=-center, le=center, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1266 # default=center_offset_vo) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1267 center_offset = center_offset_vo |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1268 del sinogram_T |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1269 del recon_plane |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1270 return float(center_offset) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1271 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1272 # perform center finding search |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1273 while True: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1274 center_offset_low = input_int('\nEnter lower bound for center offset', ge=-center, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1275 le=center) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1276 center_offset_upp = input_int('Enter upper bound for center offset', |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1277 ge=center_offset_low, le=center) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1278 if center_offset_upp == center_offset_low: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1279 center_offset_step = 1 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1280 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1281 center_offset_step = input_int('Enter step size for center offset search', ge=1, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1282 le=center_offset_upp-center_offset_low) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1283 num_center_offset = 1+int((center_offset_upp-center_offset_low)/center_offset_step) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1284 center_offsets = np.linspace(center_offset_low, center_offset_upp, num_center_offset) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1285 for center_offset in center_offsets: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1286 if center_offset == center_offset_vo: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1287 continue |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1288 t0 = time() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1289 logger.debug(f'Running _reconstruct_one_plane on {num_core} cores ...') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1290 recon_plane = self._reconstruct_one_plane(sinogram_T, center_offset+center, thetas, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1291 eff_pixel_size, cross_sectional_dim, False, num_core) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1292 logger.debug(f'... done in {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1293 logger.info(f'Reconstructing center_offset {center_offset} took '+ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1294 f'{time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1295 title = f'edges row{row} center_offset{center_offset:.2f}' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1296 self._plot_edges_one_plane(recon_plane, title, path=path) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1297 if input_int('\nContinue (0) or end the search (1)', ge=0, le=1): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1298 break |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1299 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1300 del sinogram_T |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1301 del recon_plane |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1302 center_offset = input_num(' Enter chosen center offset', ge=-center, le=center) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1303 return float(center_offset) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1304 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1305 def _reconstruct_one_plane(self, tomo_plane_T, center, thetas, eff_pixel_size, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1306 cross_sectional_dim, plot_sinogram=True, num_core=1): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1307 """Invert the sinogram for a single tomography plane. |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1308 """ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1309 # tomo_plane_T index order: column,theta |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1310 assert(0 <= center < tomo_plane_T.shape[0]) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1311 center_offset = center-tomo_plane_T.shape[0]/2 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1312 two_offset = 2*int(np.round(center_offset)) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1313 two_offset_abs = np.abs(two_offset) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1314 max_rad = int(0.55*(cross_sectional_dim/eff_pixel_size)) # 10% slack to avoid edge effects |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1315 if max_rad > 0.5*tomo_plane_T.shape[0]: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1316 max_rad = 0.5*tomo_plane_T.shape[0] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1317 dist_from_edge = max(1, int(np.floor((tomo_plane_T.shape[0]-two_offset_abs)/2.)-max_rad)) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1318 if two_offset >= 0: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1319 logger.debug(f'sinogram range = [{two_offset+dist_from_edge}, {-dist_from_edge}]') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1320 sinogram = tomo_plane_T[two_offset+dist_from_edge:-dist_from_edge,:] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1321 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1322 logger.debug(f'sinogram range = [{dist_from_edge}, {two_offset-dist_from_edge}]') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1323 sinogram = tomo_plane_T[dist_from_edge:two_offset-dist_from_edge,:] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1324 if not self.galaxy_flag and plot_sinogram: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1325 quick_imshow(sinogram.T, f'sinogram center offset{center_offset:.2f}', aspect='auto', |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1326 path=self.output_folder, save_fig=self.save_figs, save_only=self.save_only, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1327 block=self.block) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1328 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1329 # Inverting sinogram |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1330 t0 = time() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1331 recon_sinogram = iradon(sinogram, theta=thetas, circle=True) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1332 logger.debug(f'Inverting sinogram took {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1333 del sinogram |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1334 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1335 # Performing Gaussian filtering and removing ring artifacts |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1336 recon_parameters = None#self.config.get('recon_parameters') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1337 if recon_parameters is None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1338 sigma = 1.0 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1339 ring_width = 15 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1340 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1341 sigma = recon_parameters.get('gaussian_sigma', 1.0) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1342 if not is_num(sigma, ge=0.0): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1343 logger.warning(f'Invalid gaussian_sigma ({sigma}) in _reconstruct_one_plane, '+ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1344 'set to a default value of 1.0') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1345 sigma = 1.0 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1346 ring_width = recon_parameters.get('ring_width', 15) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1347 if not is_int(ring_width, ge=0): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1348 logger.warning(f'Invalid ring_width ({ring_width}) in _reconstruct_one_plane, '+ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1349 'set to a default value of 15') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1350 ring_width = 15 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1351 t0 = time() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1352 recon_sinogram = spi.gaussian_filter(recon_sinogram, sigma, mode='nearest') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1353 recon_clean = np.expand_dims(recon_sinogram, axis=0) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1354 del recon_sinogram |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1355 recon_clean = tomopy.misc.corr.remove_ring(recon_clean, rwidth=ring_width, ncore=num_core) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1356 logger.debug(f'Filtering and removing ring artifacts took {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1357 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1358 return recon_clean |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1359 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1360 def _plot_edges_one_plane(self, recon_plane, title, path=None): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1361 vis_parameters = None#self.config.get('vis_parameters') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1362 if vis_parameters is None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1363 weight = 0.1 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1364 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1365 weight = vis_parameters.get('denoise_weight', 0.1) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1366 if not is_num(weight, ge=0.0): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1367 logger.warning(f'Invalid weight ({weight}) in _plot_edges_one_plane, '+ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1368 'set to a default value of 0.1') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1369 weight = 0.1 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1370 edges = denoise_tv_chambolle(recon_plane, weight=weight) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1371 vmax = np.max(edges[0,:,:]) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1372 vmin = -vmax |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1373 if path is None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1374 path = self.output_folder |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1375 quick_imshow(edges[0,:,:], f'{title} coolwarm', path=path, cmap='coolwarm', |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1376 save_fig=self.save_figs, save_only=self.save_only, block=self.block) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1377 quick_imshow(edges[0,:,:], f'{title} gray', path=path, cmap='gray', vmin=vmin, vmax=vmax, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1378 save_fig=self.save_figs, save_only=self.save_only, block=self.block) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1379 del edges |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1380 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1381 def _reconstruct_one_tomo_stack(self, tomo_stack, thetas, center_offsets=[], num_core=1, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1382 algorithm='gridrec'): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1383 """Reconstruct a single tomography stack. |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1384 """ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1385 # tomo_stack order: row,theta,column |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1386 # input thetas must be in degrees |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1387 # centers_offset: tomography axis shift in pixels relative to column center |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1388 # RV should we remove stripes? |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1389 # https://tomopy.readthedocs.io/en/latest/api/tomopy.prep.stripe.html |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1390 # RV should we remove rings? |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1391 # https://tomopy.readthedocs.io/en/latest/api/tomopy.misc.corr.html |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1392 # RV: Add an option to do (extra) secondary iterations later or to do some sort of convergence test? |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1393 if not len(center_offsets): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1394 centers = np.zeros((tomo_stack.shape[0])) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1395 elif len(center_offsets) == 2: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1396 centers = np.linspace(center_offsets[0], center_offsets[1], tomo_stack.shape[0]) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1397 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1398 if center_offsets.size != tomo_stack.shape[0]: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1399 raise ValueError('center_offsets dimension mismatch in reconstruct_one_tomo_stack') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1400 centers = center_offsets |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1401 centers += tomo_stack.shape[2]/2 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1402 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1403 # Get reconstruction parameters |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1404 recon_parameters = None#self.config.get('recon_parameters') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1405 if recon_parameters is None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1406 sigma = 2.0 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1407 secondary_iters = 0 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1408 ring_width = 15 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1409 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1410 sigma = recon_parameters.get('stripe_fw_sigma', 2.0) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1411 if not is_num(sigma, ge=0): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1412 logger.warning(f'Invalid stripe_fw_sigma ({sigma}) in '+ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1413 '_reconstruct_one_tomo_stack, set to a default value of 2.0') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1414 ring_width = 15 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1415 secondary_iters = recon_parameters.get('secondary_iters', 0) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1416 if not is_int(secondary_iters, ge=0): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1417 logger.warning(f'Invalid secondary_iters ({secondary_iters}) in '+ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1418 '_reconstruct_one_tomo_stack, set to a default value of 0 (skip them)') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1419 ring_width = 0 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1420 ring_width = recon_parameters.get('ring_width', 15) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1421 if not is_int(ring_width, ge=0): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1422 logger.warning(f'Invalid ring_width ({ring_width}) in _reconstruct_one_plane, '+ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1423 'set to a default value of 15') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1424 ring_width = 15 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1425 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1426 # Remove horizontal stripe |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1427 t0 = time() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1428 if num_core > num_core_tomopy_limit: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1429 logger.debug('Running remove_stripe_fw on {num_core_tomopy_limit} cores ...') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1430 tomo_stack = tomopy.prep.stripe.remove_stripe_fw(tomo_stack, sigma=sigma, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1431 ncore=num_core_tomopy_limit) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1432 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1433 logger.debug(f'Running remove_stripe_fw on {num_core} cores ...') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1434 tomo_stack = tomopy.prep.stripe.remove_stripe_fw(tomo_stack, sigma=sigma, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1435 ncore=num_core) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1436 logger.debug(f'... tomopy.prep.stripe.remove_stripe_fw took {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1437 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1438 # Perform initial image reconstruction |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1439 logger.debug('Performing initial image reconstruction') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1440 t0 = time() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1441 logger.debug(f'Running recon on {num_core} cores ...') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1442 tomo_recon_stack = tomopy.recon(tomo_stack, np.radians(thetas), centers, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1443 sinogram_order=True, algorithm=algorithm, ncore=num_core) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1444 logger.debug(f'... done in {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1445 logger.info(f'Performing initial image reconstruction took {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1446 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1447 # Run optional secondary iterations |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1448 if secondary_iters > 0: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1449 logger.debug(f'Running {secondary_iters} secondary iterations') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1450 #options = {'method':'SIRT_CUDA', 'proj_type':'cuda', 'num_iter':secondary_iters} |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1451 #RV: doesn't work for me: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1452 #"Error: CUDA error 803: system has unsupported display driver/cuda driver combination." |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1453 #options = {'method':'SIRT', 'proj_type':'linear', 'MinConstraint': 0, 'num_iter':secondary_iters} |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1454 #SIRT did not finish while running overnight |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1455 #options = {'method':'SART', 'proj_type':'linear', 'num_iter':secondary_iters} |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1456 options = {'method':'SART', 'proj_type':'linear', 'MinConstraint': 0, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1457 'num_iter':secondary_iters} |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1458 t0 = time() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1459 logger.debug(f'Running recon on {num_core} cores ...') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1460 tomo_recon_stack = tomopy.recon(tomo_stack, np.radians(thetas), centers, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1461 init_recon=tomo_recon_stack, options=options, sinogram_order=True, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1462 algorithm=tomopy.astra, ncore=num_core) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1463 logger.debug(f'... done in {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1464 logger.info(f'Performing secondary iterations took {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1465 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1466 # Remove ring artifacts |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1467 t0 = time() |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1468 tomopy.misc.corr.remove_ring(tomo_recon_stack, rwidth=ring_width, out=tomo_recon_stack, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1469 ncore=num_core) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1470 logger.debug(f'Removing ring artifacts took {time()-t0:.2f} seconds') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1471 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1472 return tomo_recon_stack |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1473 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1474 def _resize_reconstructed_data(self, data, z_only=False): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1475 """Resize the reconstructed tomography data. |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1476 """ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1477 # Data order: row(z),x,y or stack,row(z),x,y |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1478 if isinstance(data, list): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1479 for stack in data: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1480 assert(stack.ndim == 3) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1481 num_tomo_stacks = len(data) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1482 tomo_recon_stacks = data |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1483 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1484 assert(data.ndim == 3) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1485 num_tomo_stacks = 1 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1486 tomo_recon_stacks = [data] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1487 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1488 if z_only: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1489 x_bounds = None |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1490 y_bounds = None |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1491 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1492 # Selecting x bounds (in yz-plane) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1493 tomosum = 0 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1494 [tomosum := tomosum+np.sum(tomo_recon_stacks[i], axis=(0,2)) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1495 for i in range(num_tomo_stacks)] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1496 select_x_bounds = input_yesno('\nDo you want to change the image x-bounds (y/n)?', 'y') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1497 if not select_x_bounds: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1498 x_bounds = None |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1499 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1500 accept = False |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1501 index_ranges = None |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1502 while not accept: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1503 mask, x_bounds = draw_mask_1d(tomosum, current_index_ranges=index_ranges, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1504 title='select x data range', legend='recon stack sum yz') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1505 while len(x_bounds) != 1: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1506 print('Please select exactly one continuous range') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1507 mask, x_bounds = draw_mask_1d(tomosum, title='select x data range', |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1508 legend='recon stack sum yz') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1509 x_bounds = x_bounds[0] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1510 # quick_plot(tomosum, vlines=x_bounds, title='recon stack sum yz') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1511 # print(f'x_bounds = {x_bounds} (lower bound inclusive, upper bound '+ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1512 # 'exclusive)') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1513 # accept = input_yesno('Accept these bounds (y/n)?', 'y') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1514 accept = True |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1515 logger.debug(f'x_bounds = {x_bounds}') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1516 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1517 # Selecting y bounds (in xz-plane) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1518 tomosum = 0 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1519 [tomosum := tomosum+np.sum(tomo_recon_stacks[i], axis=(0,1)) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1520 for i in range(num_tomo_stacks)] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1521 select_y_bounds = input_yesno('\nDo you want to change the image y-bounds (y/n)?', 'y') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1522 if not select_y_bounds: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1523 y_bounds = None |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1524 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1525 accept = False |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1526 index_ranges = None |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1527 while not accept: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1528 mask, y_bounds = draw_mask_1d(tomosum, current_index_ranges=index_ranges, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1529 title='select x data range', legend='recon stack sum xz') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1530 while len(y_bounds) != 1: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1531 print('Please select exactly one continuous range') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1532 mask, y_bounds = draw_mask_1d(tomosum, title='select x data range', |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1533 legend='recon stack sum xz') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1534 y_bounds = y_bounds[0] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1535 # quick_plot(tomosum, vlines=y_bounds, title='recon stack sum xz') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1536 # print(f'y_bounds = {y_bounds} (lower bound inclusive, upper bound '+ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1537 # 'exclusive)') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1538 # accept = input_yesno('Accept these bounds (y/n)?', 'y') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1539 accept = True |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1540 logger.debug(f'y_bounds = {y_bounds}') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1541 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1542 # Selecting z bounds (in xy-plane) (only valid for a single image stack) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1543 if num_tomo_stacks != 1: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1544 z_bounds = None |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1545 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1546 tomosum = 0 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1547 [tomosum := tomosum+np.sum(tomo_recon_stacks[i], axis=(1,2)) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1548 for i in range(num_tomo_stacks)] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1549 select_z_bounds = input_yesno('Do you want to change the image z-bounds (y/n)?', 'n') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1550 if not select_z_bounds: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1551 z_bounds = None |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1552 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1553 accept = False |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1554 index_ranges = None |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1555 while not accept: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1556 mask, z_bounds = draw_mask_1d(tomosum, current_index_ranges=index_ranges, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1557 title='select x data range', legend='recon stack sum xy') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1558 while len(z_bounds) != 1: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1559 print('Please select exactly one continuous range') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1560 mask, z_bounds = draw_mask_1d(tomosum, title='select x data range', |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1561 legend='recon stack sum xy') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1562 z_bounds = z_bounds[0] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1563 # quick_plot(tomosum, vlines=z_bounds, title='recon stack sum xy') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1564 # print(f'z_bounds = {z_bounds} (lower bound inclusive, upper bound '+ |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1565 # 'exclusive)') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1566 # accept = input_yesno('Accept these bounds (y/n)?', 'y') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1567 accept = True |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1568 logger.debug(f'z_bounds = {z_bounds}') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1569 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1570 return(x_bounds, y_bounds, z_bounds) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1571 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1572 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1573 def run_tomo(input_file:str, output_file:str, modes:list[str], center_file=None, num_core=-1, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1574 output_folder='.', save_figs='no', test_mode=False) -> None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1575 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1576 if test_mode: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1577 logging_format = '%(asctime)s : %(levelname)s - %(module)s : %(funcName)s - %(message)s' |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1578 level = logging.getLevelName('INFO') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1579 logging.basicConfig(filename=f'{output_folder}/tomo.log', filemode='w', |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1580 format=logging_format, level=level, force=True) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1581 logger.info(f'input_file = {input_file}') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1582 logger.info(f'center_file = {center_file}') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1583 logger.info(f'output_file = {output_file}') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1584 logger.debug(f'modes= {modes}') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1585 logger.debug(f'num_core= {num_core}') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1586 logger.info(f'output_folder = {output_folder}') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1587 logger.info(f'save_figs = {save_figs}') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1588 logger.info(f'test_mode = {test_mode}') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1589 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1590 # Check for correction modes |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1591 legal_modes = ['reduce_data', 'find_center', 'reconstruct_data', 'combine_data', 'all'] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1592 if modes is None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1593 modes = ['all'] |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1594 if not all(True if mode in legal_modes else False for mode in modes): |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1595 raise ValueError(f'Invalid parameter modes ({modes})') |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1596 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1597 # Instantiate Tomo object |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1598 tomo = Tomo(num_core=num_core, output_folder=output_folder, save_figs=save_figs, |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1599 test_mode=test_mode) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1600 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1601 # Read input file |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1602 data = tomo.read(input_file) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1603 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1604 # Generate reduced tomography images |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1605 if 'reduce_data' in modes or 'all' in modes: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1606 data = tomo.gen_reduced_data(data) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1607 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1608 # Find rotation axis centers for the tomography stacks. |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1609 center_data = None |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1610 if 'find_center' in modes or 'all' in modes: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1611 center_data = tomo.find_centers(data) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1612 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1613 # Reconstruct tomography stacks |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1614 if 'reconstruct_data' in modes or 'all' in modes: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1615 if center_data is None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1616 # Read input file |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1617 center_data = tomo.read(center_file) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1618 data = tomo.reconstruct_data(data, center_data) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1619 center_data = None |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1620 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1621 # Combine reconstructed tomography stacks |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1622 if 'combine_data' in modes or 'all' in modes: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1623 data = tomo.combine_data(data) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1624 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1625 # Write output file |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1626 if data is not None and not test_mode: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1627 if center_data is None: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1628 data = tomo.write(data, output_file) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1629 else: |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1630 data = tomo.write(center_data, output_file) |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1631 |
|
9aa288729b9a
planemo upload for repository https://github.com/rolfverberg/galaxytools commit f8c4bdb31c20c468045ad5e6eb255a293244bc6c-dirty
rv43
parents:
diff
changeset
|
1632 logger.info(f'Completed modes: {modes}') |
