annotate tomo_setup.py @ 49:26f99fdd8d61 draft

"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
author rv43
date Thu, 28 Jul 2022 16:05:24 +0000
parents ef5c2f7b49ec
children 79c216516ef9
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')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
22 parser.add_argument('-i', '--inputfiles',
49
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
23 nargs='+',
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
24 default='inputfiles.txt',
49
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
25 help='Input file datasets or collections')
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
26 parser.add_argument('-c', '--config',
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
27 help='Input config')
49
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
28 parser.add_argument('-l', '--log',
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
29 type=argparse.FileType('w'),
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
30 default=sys.stdout,
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
31 help='Log file')
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
32 parser.add_argument('-t', '--inputfile_types',
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
33 nargs='+',
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
34 default='collection',
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
35 help='Input files type (collection or a list of set types: dark, bright, or data)')
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
36 parser.add_argument('--theta_range',
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
37 help='Theta range (lower bound, upper bound, number of angles)')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
38 parser.add_argument('--output_config',
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
39 help='Output config')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
40 parser.add_argument('--output_data',
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
41 help='Preprocessed tomography data')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
42 parser.add_argument('tomo_ranges', metavar='N', type=int, nargs='+')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
43 args = parser.parse_args()
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
44
15
1bcca1f2adb4 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 38c19bf5addbc46f45d598f981bb1a48f7bca691"
rv43
parents: 2
diff changeset
45 # Starting memory monitoring
1bcca1f2adb4 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 38c19bf5addbc46f45d598f981bb1a48f7bca691"
rv43
parents: 2
diff changeset
46 tracemalloc.start()
1bcca1f2adb4 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 38c19bf5addbc46f45d598f981bb1a48f7bca691"
rv43
parents: 2
diff changeset
47
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
48 # Set basic log configuration
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
49 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
50 log_level = 'INFO'
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
51 level = getattr(logging, log_level.upper(), None)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
52 if not isinstance(level, int):
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
53 raise ValueError(f'Invalid log_level: {log_level}')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
54 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
55 handlers=[logging.StreamHandler()])
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
56
2
b8977c98800b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 0c40fb274acc13ebf7054379bb49ed13acec918e"
rv43
parents: 0
diff changeset
57 logging.debug(f'config = {args.config}')
49
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
58 logging.debug(f'inputfiles = {args.inputfiles}')
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
59 logging.debug(f'inputfile_types = {args.inputfile_types}')
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
60 logging.debug(f'log = {args.log}')
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
61 logging.debug(f'is log stdout? {args.log is sys.stdout}')
2
b8977c98800b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 0c40fb274acc13ebf7054379bb49ed13acec918e"
rv43
parents: 0
diff changeset
62 logging.debug(f'theta_range = {args.theta_range.split()}')
b8977c98800b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 0c40fb274acc13ebf7054379bb49ed13acec918e"
rv43
parents: 0
diff changeset
63 logging.debug(f'output_config = {args.output_config}')
b8977c98800b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 0c40fb274acc13ebf7054379bb49ed13acec918e"
rv43
parents: 0
diff changeset
64 logging.debug(f'output_data = {args.output_data}')
b8977c98800b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 0c40fb274acc13ebf7054379bb49ed13acec918e"
rv43
parents: 0
diff changeset
65 logging.debug(f'tomoranges = {args.tomo_ranges}')
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
66
49
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
67 # Check input file type
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
68 if isinstance(args.inputfile_types, str) and args.inputfile_types == 'collection':
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
69 input_as_collection = True
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
70 elif isinstance(args.inputfile_types, list):
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
71 input_as_collection = False
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
72 else:
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
73 raise ValueError(f'Invalid args.inputfile_types: {args.inputfile_types} '+
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
74 f'{type(args.inputfile_types)}')
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
75
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
76 datasets = []
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
77 collections = []
49
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
78 if input_as_collection:
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
79 # Read input file collections and collect data files info
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
80 with open(args.inputfiles) as cf:
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
81 for line in cf:
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
82 if not line.strip() or line.startswith('#'):
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
83 continue
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
84 fields = [x.strip() for x in line.split('\t')]
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
85 filepath = fields[0]
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
86 element_identifier = fields[1] if len(fields) > 1 else fields[0].split('/')[-1]
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
87 datasets.append({'element_identifier' : fields[1], 'filepath' : filepath})
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
88 logging.debug(f'datasets:\n{datasets}')
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
89
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
90 # Read and sort data files
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
91 for dataset in datasets:
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
92 element_identifier = [x.strip() for x in dataset['element_identifier'].split('_')]
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
93 if len(element_identifier) > 1:
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
94 name = element_identifier[0]
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
95 else:
49
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
96 name = 'other'
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
97 filepath = dataset['filepath']
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
98 if not len(collections):
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
99 collections = [{'name' : name, 'filepaths' : [filepath]}]
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
100 else:
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
101 collection = [c for c in collections if c['name'] == name]
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
102 if len(collection):
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
103 collection[0]['filepaths'].append(filepath)
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
104 else:
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
105 collection = {'name' : name, 'filepaths' : [filepath]}
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
106 collections.append(collection)
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
107 else:
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
108 # Collect input file datasets info
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
109 collections = [{'name' : filetype, 'filepaths' : [filepath]}
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
110 for filetype, filepath in zip(args.inputfile_types, args.inputfiles)]
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
111 logging.debug(f'collections:\n{collections}')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
112 if len(args.tomo_ranges) != 2*len(collections):
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
113 raise ValueError('Inconsistent tomo ranges size.')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
114
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
115 # Instantiate Tomo object
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
116 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
117 log_stream=args.log, galaxy_flag=True)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
118 if not tomo.is_valid:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
119 raise ValueError('Invalid config file provided.')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
120 logging.debug(f'config:\n{tomo.config}')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
121
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
122 # Set theta inputs
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
123 theta_range = args.theta_range.split()
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
124 config_theta_range = tomo.config.get('theta_range')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
125 if config_theta_range is None:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
126 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
127 '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
128 else:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
129 config_theta_range['start'] = float(theta_range[0])
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
130 config_theta_range['end'] = float(theta_range[1])
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
131 config_theta_range['num'] = int(theta_range[2])
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
132
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
133 # Find dark field files
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
134 dark_field = tomo.config['dark_field']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
135 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
136 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
137 logging.warning('Unable to obtain dark field files')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
138 assert(dark_field['data_path'] is None)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
139 assert(dark_field['img_start'] == -1)
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
140 assert(not dark_field['num'])
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
141 tdf_files = [None]
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
142 num_collections = 0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
143 else:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
144 dark_field['img_offset'] = args.tomo_ranges[0]
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
145 dark_field['num'] = args.tomo_ranges[1]
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
146 num_collections = 1
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
147
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
148 # Find bright field files
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
149 bright_field = tomo.config['bright_field']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
150 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
151 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
152 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
153 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
154 exit('Unable to obtain bright field files')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
155 num_collections += 1
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
156
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
157 # Find tomography files
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
158 stack_info = tomo.config['stack_info']
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
159 if stack_info['num'] != len(collections) - num_collections:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
160 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
161 tomo_stack_files = []
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
162 for stack in stack_info['stacks']:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
163 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
164 stack['num'] = args.tomo_ranges[2*num_collections+1]
49
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
165 if input_as_collection:
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
166 tomo_files = [c['filepaths'] for c in collections
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
167 if c['name'] == f'set{stack["index"]}']
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
168 else:
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
169 assert(collections[num_collections]['name'] == 'data')
26f99fdd8d61 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
rv43
parents: 41
diff changeset
170 tomo_files = [collections[num_collections]['filepaths']]
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
171 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
172 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
173 tomo_stack_files.append(tomo_files[0])
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
174 num_collections += 1
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
175
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
176 # Preprocess the image files
15
1bcca1f2adb4 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 38c19bf5addbc46f45d598f981bb1a48f7bca691"
rv43
parents: 2
diff changeset
177 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
178 '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
179 tomo.genTomoStacks(galaxy_param)
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
180 if not tomo.is_valid:
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
181 IOError('Unable to load all required image files.')
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
182
15
1bcca1f2adb4 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 38c19bf5addbc46f45d598f981bb1a48f7bca691"
rv43
parents: 2
diff changeset
183 # Displaying memory usage
1bcca1f2adb4 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 38c19bf5addbc46f45d598f981bb1a48f7bca691"
rv43
parents: 2
diff changeset
184 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
185
1bcca1f2adb4 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 38c19bf5addbc46f45d598f981bb1a48f7bca691"
rv43
parents: 2
diff changeset
186 # stopping memory monitoring
1bcca1f2adb4 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 38c19bf5addbc46f45d598f981bb1a48f7bca691"
rv43
parents: 2
diff changeset
187 tracemalloc.stop()
1bcca1f2adb4 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 38c19bf5addbc46f45d598f981bb1a48f7bca691"
rv43
parents: 2
diff changeset
188
0
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
189 if __name__ == "__main__":
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
190 __main__()
cb1b0d757704 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
rv43
parents:
diff changeset
191