Mercurial > repos > rv43 > tomo
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 |
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 |