Mercurial > repos > rv43 > tomo
annotate msnc_tools.py @ 5:4646c4b174be draft
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d0e6eab79021c009641f6ef14f4aef0898dd5add"
| author | rv43 | 
|---|---|
| date | Wed, 06 Apr 2022 19:20:30 +0000 | 
| parents | f9c52762c32c | 
| children | baf9f5eef128 | 
| 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 # -*- coding: utf-8 -*- | 
| 
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 Created on Mon Dec 6 15:36:22 2021 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 6 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 7 @author: rv43 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 8 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 9 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 10 import logging | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 11 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 12 import os | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 13 import sys | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 14 import re | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 15 import yaml | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 16 import h5py | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 17 try: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 18 import pyinputplus as pyip | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 19 except: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 20 pass | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 21 import numpy as np | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 22 import imageio as img | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 23 import matplotlib.pyplot as plt | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 24 from time import time | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 25 from ast import literal_eval | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 26 try: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 27 from lmfit.models import StepModel, RectangleModel | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 28 except: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 29 pass | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 30 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 31 def depth_list(L): return isinstance(L, list) and max(map(depth_list, L))+1 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 32 def depth_tuple(T): return isinstance(T, tuple) and max(map(depth_tuple, T))+1 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 33 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 34 def is_int(v, v_min=None, v_max=None): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 35 """Value is an integer in range v_min <= v <= v_max. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 36 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 37 if not isinstance(v, int): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 38 return False | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 39 if (v_min is not None and v < v_min) or (v_max is not None and v > v_max): | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 40 return False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 41 return True | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 42 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 43 def is_num(v, v_min=None, v_max=None): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 44 """Value is a number in range v_min <= v <= v_max. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 45 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 46 if not isinstance(v, (int,float)): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 47 return False | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 48 if (v_min is not None and v < v_min) or (v_max is not None and v > v_max): | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 49 return False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 50 return True | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 51 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 52 def is_index(v, v_min=0, v_max=None): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 53 """Value is an array index in range v_min <= v < v_max. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 54 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 55 if not isinstance(v, int): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 56 return False | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 57 if v < v_min or (v_max is not None and v >= v_max): | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 58 return False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 59 return True | 
| 
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 def is_index_range(v, v_min=0, v_max=None): | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 62 """Value is an array index range in range v_min <= v[0] <= v[1] <= v_max. | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 63 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 64 if not (isinstance(v, list) and len(v) == 2 and isinstance(v[0], int) and | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 65 isinstance(v[1], int)): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 66 return False | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 67 if not 0 <= v[0] <= v[1] or (v_max is not None and v[1] > v_max): | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 68 return False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 69 return True | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 70 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 71 def illegal_value(name, value, location=None, exit_flag=False): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 72 if not isinstance(location, str): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 73 location = '' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 74 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 75 location = f'in {location} ' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 76 if isinstance(name, str): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 77 logging.error(f'Illegal value for {name} {location}({value}, {type(value)})') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 78 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 79 logging.error(f'Illegal value {location}({value}, {type(value)})') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 80 if exit_flag: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 81 exit(1) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 82 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 83 def get_trailing_int(string): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 84 indexRegex = re.compile(r'\d+$') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 85 mo = indexRegex.search(string) | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 86 if mo is None: | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 87 return None | 
| 
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 return int(mo.group()) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 90 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 91 def findImageFiles(path, filetype, name=None): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 92 if isinstance(name, str): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 93 name = f' {name} ' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 94 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 95 name = ' ' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 96 # Find available index range | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 97 if filetype == 'tif': | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 98 if not isinstance(path, str) and not os.path.isdir(path): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 99 illegal_value('path', path, 'findImageRange') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 100 return -1, 0, [] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 101 indexRegex = re.compile(r'\d+') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 102 # At this point only tiffs | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 103 files = sorted([f for f in os.listdir(path) if os.path.isfile(os.path.join(path, f)) and | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 104 f.endswith('.tif') and indexRegex.search(f)]) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 105 num_imgs = len(files) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 106 if num_imgs < 1: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 107 logging.warning('No available'+name+'files') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 108 return -1, 0, [] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 109 first_index = indexRegex.search(files[0]).group() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 110 last_index = indexRegex.search(files[-1]).group() | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 111 if first_index is None or last_index is None: | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 112 logging.error('Unable to find correctly indexed'+name+'images') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 113 return -1, 0, [] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 114 first_index = int(first_index) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 115 last_index = int(last_index) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 116 if num_imgs != last_index-first_index+1: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 117 logging.error('Non-consecutive set of indices for'+name+'images') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 118 return -1, 0, [] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 119 paths = [os.path.join(path, f) for f in files] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 120 elif filetype == 'h5': | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 121 if not isinstance(path, str) or not os.path.isfile(path): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 122 illegal_value('path', path, 'findImageRange') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 123 return -1, 0, [] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 124 # At this point only h5 in alamo2 detector style | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 125 first_index = 0 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 126 with h5py.File(path, 'r') as f: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 127 num_imgs = f['entry/instrument/detector/data'].shape[0] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 128 last_index = num_imgs-1 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 129 paths = [path] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 130 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 131 illegal_value('filetype', filetype, 'findImageRange') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 132 return -1, 0, [] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 133 logging.debug('\nNumber of available'+name+f'images: {num_imgs}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 134 logging.debug('Index range of available'+name+f'images: [{first_index}, '+ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 135 f'{last_index}]') | 
| 
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 return first_index, num_imgs, paths | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 138 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 139 def selectImageRange(first_index, offset, num_imgs, name=None, num_required=None): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 140 if isinstance(name, str): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 141 name = f' {name} ' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 142 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 143 name = ' ' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 144 # Check existing values | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 145 use_input = 'no' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 146 if (is_int(first_index, 0) and is_int(offset, 0) and is_int(num_imgs, 1)): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 147 if offset < 0: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 148 use_input = pyip.inputYesNo('\nCurrent'+name+f'first index = {first_index}, '+ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 149 'use this value ([y]/n)? ', blank=True) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 150 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 151 use_input = pyip.inputYesNo('\nCurrent'+name+'first index/offset = '+ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 152 f'{first_index}/{offset}, use these values ([y]/n)? ', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 153 blank=True) | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 154 if num_required is None: | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 155 if use_input != 'no': | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 156 use_input = pyip.inputYesNo('Current number of'+name+'images = '+ | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 157 f'{num_imgs}, use this value ([y]/n)? ', | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 158 blank=True) | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 159 if use_input != 'no': | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 160 return first_index, offset, num_imgs | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 161 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 162 # Check range against requirements | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 163 if num_imgs < 1: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 164 logging.warning('No available'+name+'images') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 165 return -1, -1, 0 | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 166 if num_required is None: | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 167 if num_imgs == 1: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 168 return first_index, 0, 1 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 169 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 170 if not is_int(num_required, 1): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 171 illegal_value('num_required', num_required, 'selectImageRange') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 172 return -1, -1, 0 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 173 if num_imgs < num_required: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 174 logging.error('Unable to find the required'+name+ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 175 f'images ({num_imgs} out of {num_required})') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 176 return -1, -1, 0 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 177 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 178 # Select index range | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 179 print('\nThe number of available'+name+f'images is {num_imgs}') | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 180 if num_required is None: | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 181 last_index = first_index+num_imgs | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 182 use_all = f'Use all ([{first_index}, {last_index}])' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 183 pick_offset = 'Pick a first index offset and a number of images' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 184 pick_bounds = 'Pick the first and last index' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 185 menuchoice = pyip.inputMenu([use_all, pick_offset, pick_bounds], numbered=True) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 186 if menuchoice == use_all: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 187 offset = 0 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 188 elif menuchoice == pick_offset: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 189 offset = pyip.inputInt('Enter the first index offset'+ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 190 f' [0, {last_index-first_index}]: ', min=0, max=last_index-first_index) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 191 first_index += offset | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 192 if first_index == last_index: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 193 num_imgs = 1 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 194 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 195 num_imgs = pyip.inputInt(f'Enter the number of images [1, {num_imgs-offset}]: ', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 196 min=1, max=num_imgs-offset) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 197 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 198 offset = pyip.inputInt(f'Enter the first index [{first_index}, {last_index}]: ', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 199 min=first_index, max=last_index)-first_index | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 200 first_index += offset | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 201 num_imgs = pyip.inputInt(f'Enter the last index [{first_index}, {last_index}]: ', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 202 min=first_index, max=last_index)-first_index+1 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 203 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 204 use_all = f'Use ([{first_index}, {first_index+num_required-1}])' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 205 pick_offset = 'Pick the first index offset' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 206 menuchoice = pyip.inputMenu([use_all, pick_offset], numbered=True) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 207 offset = 0 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 208 if menuchoice == pick_offset: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 209 offset = pyip.inputInt('Enter the first index offset'+ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 210 f'[0, {num_imgs-num_required}]: ', min=0, max=num_imgs-num_required) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 211 first_index += offset | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 212 num_imgs = num_required | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 213 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 214 return first_index, offset, num_imgs | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 215 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 216 def loadImage(f, img_x_bounds=None, img_y_bounds=None): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 217 """Load a single image from file. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 218 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 219 if not os.path.isfile(f): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 220 logging.error(f'Unable to load {f}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 221 return None | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 222 img_read = img.imread(f) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 223 if not img_x_bounds: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 224 img_x_bounds = [0, img_read.shape[0]] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 225 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 226 if (not isinstance(img_x_bounds, list) or len(img_x_bounds) != 2 or | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 227 not (0 <= img_x_bounds[0] < img_x_bounds[1] <= img_read.shape[0])): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 228 logging.error(f'inconsistent row dimension in {f}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 229 return None | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 230 if not img_y_bounds: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 231 img_y_bounds = [0, img_read.shape[1]] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 232 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 233 if (not isinstance(img_y_bounds, list) or len(img_y_bounds) != 2 or | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 234 not (0 <= img_y_bounds[0] < img_y_bounds[1] <= img_read.shape[1])): | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 235 logging.error(f'inconsistent column dimension in {f}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 236 return None | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 237 return img_read[img_x_bounds[0]:img_x_bounds[1],img_y_bounds[0]:img_y_bounds[1]] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 238 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 239 def loadImageStack(files, filetype, img_offset, num_imgs, num_img_skip=0, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 240 img_x_bounds=None, img_y_bounds=None): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 241 """Load a set of images and return them as a stack. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 242 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 243 logging.debug(f'img_offset = {img_offset}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 244 logging.debug(f'num_imgs = {num_imgs}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 245 logging.debug(f'num_img_skip = {num_img_skip}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 246 logging.debug(f'\nfiles:\n{files}\n') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 247 img_stack = np.array([]) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 248 if filetype == 'tif': | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 249 img_read_stack = [] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 250 i = 1 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 251 t0 = time() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 252 for f in files[img_offset:img_offset+num_imgs:num_img_skip+1]: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 253 if not i%20: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 254 logging.info(f' loading {i}/{num_imgs}: {f}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 255 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 256 logging.debug(f' loading {i}/{num_imgs}: {f}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 257 img_read = loadImage(f, img_x_bounds, img_y_bounds) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 258 img_read_stack.append(img_read) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 259 i += num_img_skip+1 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 260 img_stack = np.stack([img_read for img_read in img_read_stack]) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 261 logging.info(f'... done in {time()-t0:.2f} seconds!') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 262 logging.debug(f'img_stack shape = {np.shape(img_stack)}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 263 del img_read_stack, img_read | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 264 elif filetype == 'h5': | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 265 if not isinstance(files[0], str) and not os.path.isfile(files[0]): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 266 illegal_value('files[0]', files[0], 'loadImageStack') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 267 return img_stack | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 268 t0 = time() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 269 with h5py.File(files[0], 'r') as f: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 270 shape = f['entry/instrument/detector/data'].shape | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 271 if len(shape) != 3: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 272 logging.error(f'inconsistent dimensions in {files[0]}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 273 if not img_x_bounds: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 274 img_x_bounds = [0, shape[1]] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 275 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 276 if (not isinstance(img_x_bounds, list) or len(img_x_bounds) != 2 or | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 277 not (0 <= img_x_bounds[0] < img_x_bounds[1] <= shape[1])): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 278 logging.error(f'inconsistent row dimension in {files[0]}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 279 if not img_y_bounds: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 280 img_y_bounds = [0, shape[2]] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 281 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 282 if (not isinstance(img_y_bounds, list) or len(img_y_bounds) != 2 or | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 283 not (0 <= img_y_bounds[0] < img_y_bounds[1] <= shape[2])): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 284 logging.error(f'inconsistent column dimension in {files[0]}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 285 img_stack = f.get('entry/instrument/detector/data')[ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 286 img_offset:img_offset+num_imgs:num_img_skip+1, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 287 img_x_bounds[0]:img_x_bounds[1],img_y_bounds[0]:img_y_bounds[1]] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 288 logging.info(f'... done in {time()-t0:.2f} seconds!') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 289 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 290 illegal_value('filetype', filetype, 'findImageRange') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 291 return img_stack | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 292 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 293 def clearFig(title): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 294 if not isinstance(title, str): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 295 illegal_value('title', title, 'clearFig') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 296 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 297 plt.close(fig=re.sub(r"\s+", '_', title)) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 298 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 299 def quickImshow(a, title=None, path=None, name=None, save_fig=False, save_only=False, | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
1diff
changeset | 300 clear=True, extent=None, show_grid=False, grid_color='w', grid_linewidth=1, **kwargs): | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 301 if title is not None and not isinstance(title, str): | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 302 illegal_value('title', title, 'quickImshow') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 303 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 304 if path is not None and not isinstance(path, str): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 305 illegal_value('path', path, 'quickImshow') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 306 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 307 if not isinstance(save_fig, bool): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 308 illegal_value('save_fig', save_fig, 'quickImshow') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 309 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 310 if not isinstance(save_only, bool): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 311 illegal_value('save_only', save_only, 'quickImshow') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 312 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 313 if not isinstance(clear, bool): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 314 illegal_value('clear', clear, 'quickImshow') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 315 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 316 if not title: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 317 title='quick_imshow' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 318 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 319 title = re.sub(r"\s+", '_', title) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 320 if name is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 321 if path is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 322 path = f'{title}.png' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 323 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 324 path = f'{path}/{title}.png' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 325 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 326 if path is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 327 path = name | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 328 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 329 path = f'{path}/{name}' | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
1diff
changeset | 330 if extent is None: | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
1diff
changeset | 331 extent = (0, a.shape[1], a.shape[0], 0) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 332 if clear: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 333 plt.close(fig=title) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 334 if save_only: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 335 plt.figure(title) | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
1diff
changeset | 336 plt.imshow(a, extent=extent, **kwargs) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
1diff
changeset | 337 if show_grid: | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
1diff
changeset | 338 ax = plt.gca() | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
1diff
changeset | 339 ax.grid(color=grid_color, linewidth=grid_linewidth) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 340 plt.savefig(path) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 341 plt.close(fig=title) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 342 #plt.imsave(f'{title}.png', a, **kwargs) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 343 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 344 plt.ion() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 345 plt.figure(title) | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
1diff
changeset | 346 plt.imshow(a, extent=extent, **kwargs) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
1diff
changeset | 347 if show_grid: | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
1diff
changeset | 348 ax = plt.gca() | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
1diff
changeset | 349 ax.grid(color=grid_color, linewidth=grid_linewidth) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 350 if save_fig: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 351 plt.savefig(path) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 352 plt.pause(1) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 353 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 354 def quickPlot(*args, title=None, path=None, name=None, save_fig=False, save_only=False, | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
1diff
changeset | 355 clear=True, show_grid=False, **kwargs): | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 356 if title is not None and not isinstance(title, str): | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 357 illegal_value('title', title, 'quickPlot') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 358 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 359 if path is not None and not isinstance(path, str): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 360 illegal_value('path', path, 'quickPlot') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 361 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 362 if not isinstance(save_fig, bool): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 363 illegal_value('save_fig', save_fig, 'quickPlot') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 364 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 365 if not isinstance(save_only, bool): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 366 illegal_value('save_only', save_only, 'quickPlot') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 367 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 368 if not isinstance(clear, bool): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 369 illegal_value('clear', clear, 'quickPlot') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 370 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 371 if not title: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 372 title = 'quick_plot' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 373 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 374 title = re.sub(r"\s+", '_', title) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 375 if name is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 376 if path is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 377 path = f'{title}.png' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 378 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 379 path = f'{path}/{title}.png' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 380 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 381 if path is None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 382 path = name | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 383 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 384 path = f'{path}/{name}' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 385 if clear: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 386 plt.close(fig=title) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 387 if save_only: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 388 plt.figure(title) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 389 if depth_tuple(args) > 1: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 390 for y in args: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 391 plt.plot(*y, **kwargs) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 392 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 393 plt.plot(*args, **kwargs) | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
1diff
changeset | 394 if show_grid: | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
1diff
changeset | 395 ax = plt.gca() | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
1diff
changeset | 396 ax.grid(color='k')#, linewidth=1) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 397 plt.savefig(path) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 398 plt.close(fig=title) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 399 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 400 plt.ion() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 401 plt.figure(title) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 402 if depth_tuple(args) > 1: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 403 for y in args: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 404 plt.plot(*y, **kwargs) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 405 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 406 plt.plot(*args, **kwargs) | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
1diff
changeset | 407 if show_grid: | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
1diff
changeset | 408 ax = plt.gca() | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
1diff
changeset | 409 ax.grid(color='k')#, linewidth=1) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 410 if save_fig: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 411 plt.savefig(path) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 412 plt.pause(1) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 413 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 414 def selectArrayBounds(a, x_low=None, x_upp=None, num_x_min=None, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 415 title='select array bounds'): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 416 """Interactively select the lower and upper data bounds for a numpy array. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 417 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 418 if not isinstance(a, np.ndarray) or a.ndim != 1: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 419 logging.error('Illegal array type or dimension in selectArrayBounds') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 420 return None | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 421 x_low_save = x_low | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 422 x_upp_save = x_upp | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 423 num_x_min_save = num_x_min | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 424 if num_x_min is None: | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 425 num_x_min = 1 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 426 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 427 if num_x_min < 2 or num_x_min > a.size: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 428 logging.warning('Illegal input for num_x_min in selectArrayBounds, input ignored') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 429 num_x_min = 1 | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 430 if x_low is None: | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 431 x_min = 0 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 432 x_max = a.size | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 433 x_low_max = a.size-num_x_min | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 434 while True: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 435 quickPlot(range(x_min, x_max), a[x_min:x_max], title=title) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 436 zoom_flag = pyip.inputInt('Set lower data bound (0) or zoom in (1)?: ', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 437 min=0, max=1) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 438 if zoom_flag: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 439 x_min = pyip.inputInt(f' Set lower zoom index [0, {x_low_max}]: ', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 440 min=0, max=x_low_max) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 441 x_max = pyip.inputInt(f' Set upper zoom index [{x_min+1}, {x_low_max+1}]: ', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 442 min=x_min+1, max=x_low_max+1) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 443 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 444 x_low = pyip.inputInt(f' Set lower data bound [0, {x_low_max}]: ', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 445 min=0, max=x_low_max) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 446 break | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 447 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 448 if not is_int(x_low, 0, a.size-num_x_min): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 449 illegal_value('x_low', x_low, 'selectArrayBounds') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 450 return None | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 451 if x_upp is None: | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 452 x_min = x_low+num_x_min | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 453 x_max = a.size | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 454 x_upp_min = x_min | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 455 while True: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 456 quickPlot(range(x_min, x_max), a[x_min:x_max], title=title) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 457 zoom_flag = pyip.inputInt('Set upper data bound (0) or zoom in (1)?: ', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 458 min=0, max=1) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 459 if zoom_flag: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 460 x_min = pyip.inputInt(f' Set upper zoom index [{x_upp_min}, {a.size-1}]: ', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 461 min=x_upp_min, max=a.size-1) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 462 x_max = pyip.inputInt(f' Set upper zoom index [{x_min+1}, {a.size}]: ', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 463 min=x_min+1, max=a.size) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 464 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 465 x_upp = pyip.inputInt(f' Set upper data bound [{x_upp_min}, {a.size}]: ', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 466 min=x_upp_min, max=a.size) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 467 break | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 468 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 469 if not is_int(x_upp, x_low+num_x_min, a.size): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 470 illegal_value('x_upp', x_upp, 'selectArrayBounds') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 471 return None | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 472 bounds = [x_low, x_upp] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 473 print(f'lower bound = {x_low} (inclusive)\nupper bound = {x_upp} (exclusive)]') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 474 #quickPlot(range(bounds[0], bounds[1]), a[bounds[0]:bounds[1]], title=title) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 475 quickPlot((range(a.size), a), ([bounds[0], bounds[0]], [a.min(), a.max()], 'r-'), | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 476 ([bounds[1], bounds[1]], [a.min(), a.max()], 'r-'), title=title) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 477 if pyip.inputYesNo('Accept these bounds ([y]/n)?: ', blank=True) == 'no': | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 478 bounds = selectArrayBounds(a, x_low_save, x_upp_save, num_x_min_save, title=title) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 479 return bounds | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 480 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 481 def selectImageBounds(a, axis, low=None, upp=None, num_min=None, | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 482 title='select array bounds'): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 483 """Interactively select the lower and upper data bounds for a 2D numpy array. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 484 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 485 if not isinstance(a, np.ndarray) or a.ndim != 2: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 486 logging.error('Illegal array type or dimension in selectImageBounds') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 487 return None | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 488 if axis < 0 or axis >= a.ndim: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 489 illegal_value('axis', axis, 'selectImageBounds') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 490 return None | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 491 low_save = low | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 492 upp_save = upp | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 493 num_min_save = num_min | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 494 if num_min is None: | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 495 num_min = 1 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 496 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 497 if num_min < 2 or num_min > a.shape[axis]: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 498 logging.warning('Illegal input for num_min in selectImageBounds, input ignored') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 499 num_min = 1 | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 500 if low is None: | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 501 min_ = 0 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 502 max_ = a.shape[axis] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 503 low_max = a.shape[axis]-num_min | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 504 while True: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 505 if axis: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 506 quickImshow(a[:,min_:max_], title=title, aspect='auto', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 507 extent=[min_,max_,a.shape[0],0]) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 508 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 509 quickImshow(a[min_:max_,:], title=title, aspect='auto', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 510 extent=[0,a.shape[1], max_,min_]) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 511 zoom_flag = pyip.inputInt('Set lower data bound (0) or zoom in (1)?: ', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 512 min=0, max=1) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 513 if zoom_flag: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 514 min_ = pyip.inputInt(f' Set lower zoom index [0, {low_max}]: ', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 515 min=0, max=low_max) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 516 max_ = pyip.inputInt(f' Set upper zoom index [{min_+1}, {low_max+1}]: ', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 517 min=min_+1, max=low_max+1) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 518 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 519 low = pyip.inputInt(f' Set lower data bound [0, {low_max}]: ', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 520 min=0, max=low_max) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 521 break | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 522 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 523 if not is_int(low, 0, a.shape[axis]-num_min): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 524 illegal_value('low', low, 'selectImageBounds') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 525 return None | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 526 if upp is None: | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 527 min_ = low+num_min | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 528 max_ = a.shape[axis] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 529 upp_min = min_ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 530 while True: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 531 if axis: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 532 quickImshow(a[:,min_:max_], title=title, aspect='auto', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 533 extent=[min_,max_,a.shape[0],0]) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 534 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 535 quickImshow(a[min_:max_,:], title=title, aspect='auto', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 536 extent=[0,a.shape[1], max_,min_]) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 537 zoom_flag = pyip.inputInt('Set upper data bound (0) or zoom in (1)?: ', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 538 min=0, max=1) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 539 if zoom_flag: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 540 min_ = pyip.inputInt(f' Set upper zoom index [{upp_min}, {a.shape[axis]-1}]: ', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 541 min=upp_min, max=a.shape[axis]-1) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 542 max_ = pyip.inputInt(f' Set upper zoom index [{min_+1}, {a.shape[axis]}]: ', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 543 min=min_+1, max=a.shape[axis]) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 544 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 545 upp = pyip.inputInt(f' Set upper data bound [{upp_min}, {a.shape[axis]}]: ', | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 546 min=upp_min, max=a.shape[axis]) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 547 break | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 548 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 549 if not is_int(upp, low+num_min, a.shape[axis]): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 550 illegal_value('upp', upp, 'selectImageBounds') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 551 return None | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 552 bounds = [low, upp] | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
1diff
changeset | 553 a_tmp = np.copy(a) | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
1diff
changeset | 554 a_tmp_max = a.max() | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 555 if axis: | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
1diff
changeset | 556 a_tmp[:,bounds[0]] = a_tmp_max | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
1diff
changeset | 557 a_tmp[:,bounds[1]-1] = a_tmp_max | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 558 else: | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
1diff
changeset | 559 a_tmp[bounds[0],:] = a_tmp_max | 
| 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
1diff
changeset | 560 a_tmp[bounds[1]-1,:] = a_tmp_max | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 561 print(f'lower bound = {low} (inclusive)\nupper bound = {upp} (exclusive)') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 562 quickImshow(a_tmp, title=title) | 
| 3 
f9c52762c32c
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7dce44d576e4149f31bdc2ee4dce0bb6962badb6"
 rv43 parents: 
1diff
changeset | 563 del a_tmp | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 564 if pyip.inputYesNo('Accept these bounds ([y]/n)?: ', blank=True) == 'no': | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 565 bounds = selectImageBounds(a, axis, low=low_save, upp=upp_save, num_min=num_min_save, | 
| 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 566 title=title) | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 567 return bounds | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 568 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 569 def fitStep(x=None, y=None, model='step', form='arctan'): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 570 if not isinstance(y, np.ndarray) or y.ndim != 1: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 571 logging.error('Illegal array type or dimension for y in fitStep') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 572 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 573 if isinstance(x, type(None)): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 574 x = np.array(range(y.size)) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 575 elif not isinstance(x, np.ndarray) or x.ndim != 1 or x.size != y.size: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 576 logging.error('Illegal array type or dimension for x in fitStep') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 577 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 578 if not isinstance(model, str) or not model in ('step', 'rectangle'): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 579 illegal_value('model', model, 'fitStepModel') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 580 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 581 if not isinstance(form, str) or not form in ('linear', 'atan', 'arctan', 'erf', 'logistic'): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 582 illegal_value('form', form, 'fitStepModel') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 583 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 584 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 585 if model == 'step': | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 586 mod = StepModel(form=form) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 587 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 588 mod = RectangleModel(form=form) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 589 pars = mod.guess(y, x=x) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 590 out = mod.fit(y, pars, x=x) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 591 #print(out.fit_report()) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 592 #quickPlot((x,y),(x,out.best_fit)) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 593 return out.best_values | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 594 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 595 class Config: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 596 """Base class for processing a config file or dictionary. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 597 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 598 def __init__(self, config_file=None, config_dict=None): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 599 self.config = {} | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 600 self.load_flag = False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 601 self.suffix = None | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 602 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 603 # Load config file | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 604 if config_file is not None and config_dict is not None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 605 logging.warning('Ignoring config_dict (both config_file and config_dict are specified)') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 606 if config_file is not None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 607 self.loadFile(config_file) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 608 elif config_dict is not None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 609 self.loadDict(config_dict) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 610 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 611 def loadFile(self, config_file): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 612 """Load a config file. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 613 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 614 if self.load_flag: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 615 logging.warning('Overwriting any previously loaded config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 616 self.config = {} | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 617 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 618 # Ensure config file exists | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 619 if not os.path.isfile(config_file): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 620 logging.error(f'Unable to load {config_file}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 621 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 622 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 623 # Load config file | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 624 self.suffix = os.path.splitext(config_file)[1] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 625 if self.suffix == '.yml' or self.suffix == '.yaml': | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 626 with open(config_file, 'r') as f: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 627 self.config = yaml.safe_load(f) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 628 elif self.suffix == '.txt': | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 629 with open(config_file, 'r') as f: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 630 lines = f.read().splitlines() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 631 self.config = {item[0].strip():literal_eval(item[1].strip()) for item in | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 632 [line.split('#')[0].split('=') for line in lines if '=' in line.split('#')[0]]} | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 633 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 634 logging.error(f'Illegal config file extension: {self.suffix}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 635 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 636 # Make sure config file was correctly loaded | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 637 if isinstance(self.config, dict): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 638 self.load_flag = True | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 639 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 640 logging.error(f'Unable to load dictionary from config file: {config_file}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 641 self.config = {} | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 642 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 643 def loadDict(self, config_dict): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 644 """Takes a dictionary and places it into self.config. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 645 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 646 exit('loadDict not tested yet, what format do we follow: txt or yaml?') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 647 if self.load_flag: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 648 logging.warning('Overwriting the previously loaded config file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 649 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 650 if isinstance(config_dict, dict): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 651 self.config = config_dict | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 652 self.load_flag = True | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 653 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 654 logging.error(f'Illegal dictionary config object: {config_dict}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 655 self.config = {} | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 656 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 657 def saveFile(self, config_file): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 658 """Save the config file (as a yaml file only right now). | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 659 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 660 suffix = os.path.splitext(config_file)[1] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 661 if suffix != '.yml' and suffix != '.yaml': | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 662 logging.error(f'Illegal config file extension: {suffix}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 663 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 664 # Check if config file exists | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 665 if os.path.isfile(config_file): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 666 logging.info(f'Updating {config_file}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 667 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 668 logging.info(f'Saving {config_file}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 669 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 670 # Save config file | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 671 with open(config_file, 'w') as f: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 672 yaml.dump(self.config, f) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 673 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 674 def validate(self, pars_required, pars_missing=None): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 675 """Returns False if any required first level keys are missing. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 676 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 677 if not self.load_flag: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 678 logging.error('Load a config file prior to calling Config.validate') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 679 pars = [p for p in pars_required if p not in self.config] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 680 if isinstance(pars_missing, list): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 681 pars_missing.extend(pars) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 682 elif pars_missing is not None: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 683 illegal_value('pars_missing', pars_missing, 'Config.validate') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 684 if len(pars) > 0: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 685 return False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 686 return True | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 687 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 688 #RV FIX this is for a txt file, obsolete? | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 689 # def update_txt(self, config_file, key, value, search_string=None, header=None): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 690 # if not self.load_flag: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 691 # logging.error('Load a config file prior to calling Config.update') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 692 # | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 693 # if not os.path.isfile(config_file): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 694 # logging.error(f'Unable to load {config_file}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 695 # lines = [] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 696 # else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 697 # with open(config_file, 'r') as f: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 698 # lines = f.read().splitlines() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 699 # config = {item[0].strip():literal_eval(item[1].strip()) for item in | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 700 # [line.split('#')[0].split('=') for line in lines if '=' in line.split('#')[0]]} | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 701 # if not isinstance(key, str): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 702 # illegal_value('key', key, 'Config.update') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 703 # return config | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 704 # if isinstance(value, str): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 705 # newline = f"{key} = '{value}'" | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 706 # else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 707 # newline = f'{key} = {value}' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 708 # if key in config.keys(): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 709 # # Update key with value | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 710 # for index,line in enumerate(lines): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 711 # if '=' in line: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 712 # item = line.split('#')[0].split('=') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 713 # if item[0].strip() == key: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 714 # lines[index] = newline | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 715 # break | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 716 # else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 717 # # Insert new key/value pair | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 718 # if search_string is not None: | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 719 # if isinstance(search_string, str): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 720 # search_string = [search_string] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 721 # elif not isinstance(search_string, (tuple, list)): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 722 # illegal_value('search_string', search_string, 'Config.update') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 723 # search_string = None | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 724 # update_flag = False | 
| 1 
e4778148df6b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 7bc44bd6a5a7d503fc4d6f6fb67b3a04a631430b"
 rv43 parents: 
0diff
changeset | 725 # if search_string is not None: | 
| 0 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 726 # indices = [[index for index,line in enumerate(lines) if item in line] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 727 # for item in search_string] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 728 # for i,index in enumerate(indices): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 729 # if index: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 730 # if len(search_string) > 1 and key < search_string[i]: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 731 # lines.insert(index[0], newline) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 732 # else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 733 # lines.insert(index[0]+1, newline) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 734 # update_flag = True | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 735 # break | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 736 # if not update_flag: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 737 # if isinstance(header, str): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 738 # lines += ['', header, newline] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 739 # else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 740 # lines += ['', newline] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 741 # # Write updated config file | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 742 # with open(config_file, 'w') as f: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 743 # for line in lines: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 744 # f.write(f'{line}\n') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 745 # # Update loaded config | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 746 # config['key'] = value | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 747 # | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 748 #RV update and bring into Config if needed again | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 749 #def search(config_file, search_string): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 750 # if not os.path.isfile(config_file): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 751 # logging.error(f'Unable to load {config_file}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 752 # return False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 753 # with open(config_file, 'r') as f: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 754 # lines = f.read() | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 755 # if search_string in lines: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 756 # return True | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 757 # return False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 758 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 759 class Detector: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 760 """Class for processing a detector info file or dictionary. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 761 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 762 def __init__(self, detector_id): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 763 self.detector = {} | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 764 self.load_flag = False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 765 self.validate_flag = False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 766 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 767 # Load detector file | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 768 self.loadFile(detector_id) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 769 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 770 def loadFile(self, detector_id): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 771 """Load a detector file. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 772 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 773 if self.load_flag: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 774 logging.warning('Overwriting the previously loaded detector file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 775 self.detector = {} | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 776 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 777 # Ensure detector file exists | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 778 if not isinstance(detector_id, str): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 779 illegal_value('detector_id', detector_id, 'Detector.loadFile') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 780 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 781 detector_file = f'{detector_id}.yaml' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 782 if not os.path.isfile(detector_file): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 783 detector_file = self.config['detector_id']+'.yaml' | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 784 if not os.path.isfile(detector_file): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 785 logging.error(f'Unable to load detector info file for {detector_id}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 786 return | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 787 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 788 # Load detector file | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 789 with open(detector_file, 'r') as f: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 790 self.detector = yaml.safe_load(f) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 791 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 792 # Make sure detector file was correctly loaded | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 793 if isinstance(self.detector, dict): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 794 self.load_flag = True | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 795 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 796 logging.error(f'Unable to load dictionary from detector file: {detector_file}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 797 self.detector = {} | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 798 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 799 def validate(self): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 800 """Returns False if any config parameters is illegal or missing. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 801 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 802 if not self.load_flag: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 803 logging.error('Load a detector file prior to calling Detector.validate') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 804 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 805 # Check for required first-level keys | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 806 pars_required = ['detector', 'lens_magnification'] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 807 pars_missing = [p for p in pars_required if p not in self.detector] | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 808 if len(pars_missing) > 0: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 809 logging.error(f'Missing item(s) in detector file: {", ".join(pars_missing)}') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 810 return False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 811 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 812 is_valid = True | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 813 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 814 # Check detector pixel config keys | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 815 pixels = self.detector['detector'].get('pixels') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 816 if not pixels: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 817 pars_missing.append('detector:pixels') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 818 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 819 rows = pixels.get('rows') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 820 if not rows: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 821 pars_missing.append('detector:pixels:rows') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 822 columns = pixels.get('columns') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 823 if not columns: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 824 pars_missing.append('detector:pixels:columns') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 825 size = pixels.get('size') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 826 if not size: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 827 pars_missing.append('detector:pixels:size') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 828 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 829 if not len(pars_missing): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 830 self.validate_flag = True | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 831 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 832 is_valid = False | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 833 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 834 return is_valid | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 835 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 836 def getPixelSize(self): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 837 """Returns the detector pixel size. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 838 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 839 if not self.validate_flag: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 840 logging.error('Validate detector file info prior to calling Detector.getPixelSize') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 841 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 842 lens_magnification = self.detector.get('lens_magnification') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 843 if not isinstance(lens_magnification, (int,float)) or lens_magnification <= 0.: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 844 illegal_value('lens_magnification', lens_magnification, 'detector file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 845 return 0 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 846 pixel_size = self.detector['detector'].get('pixels').get('size') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 847 if isinstance(pixel_size, (int,float)): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 848 if pixel_size <= 0.: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 849 illegal_value('pixel_size', pixel_size, 'detector file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 850 return 0 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 851 pixel_size /= lens_magnification | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 852 elif isinstance(pixel_size, list): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 853 if ((len(pixel_size) > 2) or | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 854 (len(pixel_size) == 2 and pixel_size[0] != pixel_size[1])): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 855 illegal_value('pixel size', pixel_size, 'detector file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 856 return 0 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 857 elif not is_num(pixel_size[0], 0.): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 858 illegal_value('pixel size', pixel_size, 'detector file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 859 return 0 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 860 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 861 pixel_size = pixel_size[0]/lens_magnification | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 862 else: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 863 illegal_value('pixel size', pixel_size, 'detector file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 864 return 0 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 865 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 866 return pixel_size | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 867 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 868 def getDimensions(self): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 869 """Returns the detector pixel dimensions. | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 870 """ | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 871 if not self.validate_flag: | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 872 logging.error('Validate detector file info prior to calling Detector.getDimensions') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 873 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 874 pixels = self.detector['detector'].get('pixels') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 875 num_rows = pixels.get('rows') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 876 if not is_int(num_rows, 1): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 877 illegal_value('rows', num_rows, 'detector file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 878 return (0, 0) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 879 num_columns = pixels.get('columns') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 880 if not is_int(num_columns, 1): | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 881 illegal_value('columns', num_columns, 'detector file') | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 882 return (0, 0) | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 883 | 
| 
cb1b0d757704
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 2da52c7db6def807073a1d437a00e0e2a8e7e72e"
 rv43 parents: diff
changeset | 884 return num_rows, num_columns | 
