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: 
2diff
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: 
2diff
changeset | 16 #from memory_profiler import profile | 
| 
1bcca1f2adb4
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 38c19bf5addbc46f45d598f981bb1a48f7bca691"
 rv43 parents: 
2diff
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: 
2diff
changeset | 41 # Starting memory monitoring | 
| 
1bcca1f2adb4
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 38c19bf5addbc46f45d598f981bb1a48f7bca691"
 rv43 parents: 
2diff
changeset | 42 tracemalloc.start() | 
| 
1bcca1f2adb4
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 38c19bf5addbc46f45d598f981bb1a48f7bca691"
 rv43 parents: 
2diff
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: 
0diff
changeset | 53 logging.debug(f'config = {args.config}') | 
| 
b8977c98800b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 0c40fb274acc13ebf7054379bb49ed13acec918e"
 rv43 parents: 
0diff
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: 
0diff
changeset | 55 logging.debug(f'output_config = {args.output_config}') | 
| 
b8977c98800b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 0c40fb274acc13ebf7054379bb49ed13acec918e"
 rv43 parents: 
0diff
changeset | 56 logging.debug(f'output_data = {args.output_data}') | 
| 
b8977c98800b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 0c40fb274acc13ebf7054379bb49ed13acec918e"
 rv43 parents: 
0diff
changeset | 57 logging.debug(f'log = {args.log}') | 
| 
b8977c98800b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 0c40fb274acc13ebf7054379bb49ed13acec918e"
 rv43 parents: 
0diff
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: 
0diff
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: 
2diff
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: 
15diff
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: 
2diff
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: 
2diff
changeset | 158 # Displaying memory usage | 
| 
1bcca1f2adb4
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 38c19bf5addbc46f45d598f981bb1a48f7bca691"
 rv43 parents: 
2diff
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: 
2diff
changeset | 160 | 
| 
1bcca1f2adb4
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 38c19bf5addbc46f45d598f981bb1a48f7bca691"
 rv43 parents: 
2diff
changeset | 161 # stopping memory monitoring | 
| 
1bcca1f2adb4
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 38c19bf5addbc46f45d598f981bb1a48f7bca691"
 rv43 parents: 
2diff
changeset | 162 tracemalloc.stop() | 
| 
1bcca1f2adb4
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 38c19bf5addbc46f45d598f981bb1a48f7bca691"
 rv43 parents: 
2diff
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 | 
