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