annotate tomo_setup.py @ 59:feb2a5fc7c76 draft

"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
author rv43
date Tue, 16 Aug 2022 16:55:50 +0000
parents bead50a4eadc
children 52db7707ff48
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
1 #!/usr/bin/env python3
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
2
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
3 import logging
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
4
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
5 import os
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
6 import sys
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
7 import re
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
8 import yaml
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
9 import argparse
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
10 import numpy as np
15
1bcca1f2adb4 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 38c19bf5addbc46f45d598f981bb1a48f7bca691"
rv43
parents: 2
diff changeset
11 import tracemalloc
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
12
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
13 from tomo import Tomo
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
14
15
1bcca1f2adb4 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 38c19bf5addbc46f45d598f981bb1a48f7bca691"
rv43
parents: 2
diff changeset
15 #from memory_profiler import profile
1bcca1f2adb4 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 38c19bf5addbc46f45d598f981bb1a48f7bca691"
rv43
parents: 2
diff changeset
16 #@profile
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
17 def __main__():
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
18
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
19 # Parse command line arguments
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
20 parser = argparse.ArgumentParser(
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
21 description='Setup tomography reconstruction')
59
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
22 parser.add_argument('--inputconfig',
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
23 default='inputconfig.txt',
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
24 help='Input config from tool form')
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
25 parser.add_argument('--inputfiles',
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
26 default='inputfiles.txt',
59
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
27 help='Input file collections')
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
28 parser.add_argument('-c', '--config',
59
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
29 help='Input config file')
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
30 parser.add_argument('--num_theta',
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
31 help='Number of theta angles')
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
32 parser.add_argument('--theta_range',
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
33 help='Theta range (lower bound, upper bound)')
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
34 parser.add_argument('--output_config',
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
35 help='Output config')
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
36 parser.add_argument('--output_data',
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
37 help='Preprocessed tomography data')
49
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
38 parser.add_argument('-l', '--log',
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
39 type=argparse.FileType('w'),
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
40 default=sys.stdout,
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
41 help='Log file')
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
42 args = parser.parse_args()
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
43
15
1bcca1f2adb4 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 38c19bf5addbc46f45d598f981bb1a48f7bca691"
rv43
parents: 2
diff changeset
44 # Starting memory monitoring
1bcca1f2adb4 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 38c19bf5addbc46f45d598f981bb1a48f7bca691"
rv43
parents: 2
diff changeset
45 tracemalloc.start()
1bcca1f2adb4 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 38c19bf5addbc46f45d598f981bb1a48f7bca691"
rv43
parents: 2
diff changeset
46
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
47 # Set basic log configuration
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
48 logging_format = '%(asctime)s : %(levelname)s - %(module)s : %(funcName)s - %(message)s'
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
49 log_level = 'INFO'
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
50 level = getattr(logging, log_level.upper(), None)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
51 if not isinstance(level, int):
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
52 raise ValueError(f'Invalid log_level: {log_level}')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
53 logging.basicConfig(format=logging_format, level=level, force=True,
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
54 handlers=[logging.StreamHandler()])
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
55
59
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
56 logging.info(f'config = {args.config}')
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
57 logging.info(f'num_theta = {args.num_theta}')
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
58 if args.theta_range is None:
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
59 logging.info(f'theta_range = {args.theta_range}')
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
60 else:
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
61 logging.info(f'theta_range = {args.theta_range.split()}')
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
62 logging.info(f'output_config = {args.output_config}')
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
63 logging.info(f'output_data = {args.output_data}')
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
64 logging.info(f'log = {args.log}')
49
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
65 logging.debug(f'is log stdout? {args.log is sys.stdout}')
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
66
59
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
67 # Read tool config input
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
68 inputconfig = []
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
69 with open(args.inputconfig) as f:
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
70 inputconfig = [line.strip() for line in f if line.strip() and not line.startswith('#')]
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
71 assert(len(inputconfig) >= 6)
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
72 config_type = inputconfig[0]
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
73 input_type = inputconfig[1]
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
74 num_stack = int(inputconfig[2])
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
75 stack_types = [x.strip() for x in inputconfig[3].split()]
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
76 num_imgs = [int(x.strip()) for x in inputconfig[4].split()]
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
77 img_offsets = [int(x.strip()) for x in inputconfig[5].split()]
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
78 if config_type == 'config_manual':
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
79 assert(len(inputconfig) == 7)
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
80 ref_heights = [float(x.strip()) for x in inputconfig[6].split()]
49
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
81 else:
59
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
82 ref_heights = None
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
83 logging.info(f'config_type = {config_type} {type(config_type)}')
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
84 logging.info(f'input_type = {input_type} {type(input_type)}')
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
85 logging.info(f'num_stack = {num_stack} {type(num_stack)}')
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
86 logging.info(f'stack_types = {stack_types} {type(stack_types)}')
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
87 logging.info(f'num_imgs = {num_imgs} {type(num_imgs)}')
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
88 logging.info(f'img_offsets = {img_offsets} {type(img_offsets)}')
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
89 logging.info(f'ref_heights = {ref_heights} {type(ref_heights)}')
49
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
90
59
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
91 # Read input files and collect data files info
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
92 datasets = []
59
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
93 with open(args.inputfiles) as f:
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
94 for line in f:
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
95 if not line.strip() or line.startswith('#'):
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
96 continue
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
97 fields = [x.strip() for x in line.split('\t')]
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
98 filepath = fields[0]
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
99 element_identifier = fields[1] if len(fields) > 1 else fields[0].split('/')[-1]
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
100 datasets.append({'element_identifier' : fields[1], 'filepath' : filepath})
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
101 logging.debug(f'datasets:\n{datasets}')
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
102 print(f'datasets:\n{datasets}')
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
103
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
104 # Read and sort data files
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
105 collections = []
59
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
106 for dataset in datasets:
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
107 element_identifier = [x.strip() for x in dataset['element_identifier'].split('_')]
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
108 if len(element_identifier) > 1:
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
109 name = element_identifier[0]
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
110 else:
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
111 name = 'other'
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
112 filepath = dataset['filepath']
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
113 print(f'element_identifier = {element_identifier} {len(element_identifier)}')
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
114 print(f'name = {name}')
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
115 print(f'filepath = {filepath}')
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
116 if not len(collections):
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
117 collections = [{'name' : name, 'filepaths' : [filepath]}]
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
118 else:
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
119 collection = [c for c in collections if c['name'] == name]
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
120 if len(collection):
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
121 collection[0]['filepaths'].append(filepath)
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
122 else:
59
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
123 collection = {'name' : name, 'filepaths' : [filepath]}
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
124 collections.append(collection)
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
125 logging.debug(f'collections:\n{collections}')
59
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
126 print(f'collections:\n{collections}')
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
127 return
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
128
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
129 # Instantiate Tomo object
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
130 tomo = Tomo(config_file=args.config, config_out=args.output_config, log_level=log_level,
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
131 log_stream=args.log, galaxy_flag=True)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
132 if not tomo.is_valid:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
133 raise ValueError('Invalid config file provided.')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
134 logging.debug(f'config:\n{tomo.config}')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
135
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
136 # Set theta inputs
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
137 theta_range = args.theta_range.split()
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
138 config_theta_range = tomo.config.get('theta_range')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
139 if config_theta_range is None:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
140 config_tomo.config['theta_range'] = {'start' : float(theta_range[0]),
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
141 'end' : float(theta_range[1]), 'num' : int(theta_range[2])}
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
142 else:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
143 config_theta_range['start'] = float(theta_range[0])
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
144 config_theta_range['end'] = float(theta_range[1])
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
145 config_theta_range['num'] = int(theta_range[2])
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
146
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
147 # Find dark field files
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
148 dark_field = tomo.config['dark_field']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
149 tdf_files = [c['filepaths'] for c in collections if c['name'] == 'tdf']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
150 if len(tdf_files) != 1 or len(tdf_files[0]) < 1:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
151 logging.warning('Unable to obtain dark field files')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
152 assert(dark_field['data_path'] is None)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
153 assert(dark_field['img_start'] == -1)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
154 assert(not dark_field['num'])
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
155 tdf_files = [None]
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
156 num_collections = 0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
157 else:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
158 dark_field['img_offset'] = args.tomo_ranges[0]
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
159 dark_field['num'] = args.tomo_ranges[1]
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
160 num_collections = 1
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
161
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
162 # Find bright field files
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
163 bright_field = tomo.config['bright_field']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
164 bright_field['img_offset'] = args.tomo_ranges[2*num_collections]
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
165 bright_field['num'] = args.tomo_ranges[2*num_collections+1]
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
166 tbf_files = [c['filepaths'] for c in collections if c['name'] == 'tbf']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
167 if len(tbf_files) != 1 or len(tbf_files[0]) < 1:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
168 exit('Unable to obtain bright field files')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
169 num_collections += 1
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
170
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
171 # Find tomography files
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
172 stack_info = tomo.config['stack_info']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
173 if stack_info['num'] != len(collections) - num_collections:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
174 raise ValueError('Inconsistent number of tomography data image sets')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
175 tomo_stack_files = []
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
176 for stack in stack_info['stacks']:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
177 stack['img_offset'] = args.tomo_ranges[2*num_collections]
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
178 stack['num'] = args.tomo_ranges[2*num_collections+1]
59
feb2a5fc7c76 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 9a07ab3099737ee0d99e82739b55048f89c36bc6"
rv43
parents: 55
diff changeset
179 tomo_files = [c['filepaths'] for c in collections if c['name'] == f'set{stack["index"]}']
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
180 if len(tomo_files) != 1 or len(tomo_files[0]) < 1:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
181 exit(f'Unable to obtain tomography images for set {stack["index"]}')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
182 tomo_stack_files.append(tomo_files[0])
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
183 num_collections += 1
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
184
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
185 # Preprocess the image files
15
1bcca1f2adb4 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 38c19bf5addbc46f45d598f981bb1a48f7bca691"
rv43
parents: 2
diff changeset
186 galaxy_param = {'tdf_files' : tdf_files[0], 'tbf_files' : tbf_files[0],
41
ef5c2f7b49ec "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 0d207c80e38a6019595ebe178f5678372b75f3e7"
rv43
parents: 15
diff changeset
187 'tomo_stack_files' : tomo_stack_files, 'output_name' : args.output_data}
15
1bcca1f2adb4 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 38c19bf5addbc46f45d598f981bb1a48f7bca691"
rv43
parents: 2
diff changeset
188 tomo.genTomoStacks(galaxy_param)
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
189 if not tomo.is_valid:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
190 IOError('Unable to load all required image files.')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
191
15
1bcca1f2adb4 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 38c19bf5addbc46f45d598f981bb1a48f7bca691"
rv43
parents: 2
diff changeset
192 # Displaying memory usage
1bcca1f2adb4 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 38c19bf5addbc46f45d598f981bb1a48f7bca691"
rv43
parents: 2
diff changeset
193 logging.info(f'Memory usage: {tracemalloc.get_traced_memory()}')
1bcca1f2adb4 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 38c19bf5addbc46f45d598f981bb1a48f7bca691"
rv43
parents: 2
diff changeset
194
1bcca1f2adb4 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 38c19bf5addbc46f45d598f981bb1a48f7bca691"
rv43
parents: 2
diff changeset
195 # stopping memory monitoring
1bcca1f2adb4 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 38c19bf5addbc46f45d598f981bb1a48f7bca691"
rv43
parents: 2
diff changeset
196 tracemalloc.stop()
1bcca1f2adb4 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 38c19bf5addbc46f45d598f981bb1a48f7bca691"
rv43
parents: 2
diff changeset
197
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
198 if __name__ == "__main__":
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
199 __main__()
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
200