Mercurial > repos > rv43 > tomo
annotate general.py @ 67:87a4acead65c draft
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit f4f59f08b7276e04e63e5761bb228286f4c2da55"
| author | rv43 | 
|---|---|
| date | Thu, 18 Aug 2022 15:40:59 +0000 | 
| parents | f31ef7bfb430 | 
| children | ba5866d0251d | 
| rev | line source | 
|---|---|
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1 #!/usr/bin/env python3 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 2 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 3 # -*- coding: utf-8 -*- | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 4 """ | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 5 Created on Mon Dec 6 15:36:22 2021 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 6 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 7 @author: rv43 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 8 """ | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 9 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 10 import logging | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 11 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 12 import os | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 13 import sys | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 14 import re | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 15 import yaml | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 16 try: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 17 import h5py | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 18 except: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 19 pass | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 20 import numpy as np | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 21 try: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 22 import matplotlib.pyplot as plt | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 23 from matplotlib.widgets import Button | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 24 except: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 25 pass | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 26 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 27 from ast import literal_eval | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 28 from copy import deepcopy | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 29 from time import time | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 30 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 31 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 32 def depth_list(L): return isinstance(L, list) and max(map(depth_list, L))+1 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 33 def depth_tuple(T): return isinstance(T, tuple) and max(map(depth_tuple, T))+1 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 34 def unwrap_tuple(T): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 35 if depth_tuple(T) > 1 and len(T) == 1: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 36 T = unwrap_tuple(*T) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 37 return T | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 38 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 39 def illegal_value(value, name, location=None, exit_flag=False): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 40 if not isinstance(location, str): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 41 location = '' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 42 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 43 location = f'in {location} ' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 44 if isinstance(name, str): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 45 logging.error(f'Illegal value for {name} {location}({value}, {type(value)})') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 46 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 47 logging.error(f'Illegal value {location}({value}, {type(value)})') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 48 if exit_flag: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 49 raise ValueError | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 50 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 51 def is_int(v, v_min=None, v_max=None): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 52 """Value is an integer in range v_min <= v <= v_max. | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 53 """ | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 54 if not isinstance(v, int): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 55 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 56 if v_min is not None and not isinstance(v_min, int): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 57 illegal_value(v_min, 'v_min', 'is_int') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 58 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 59 if v_max is not None and not isinstance(v_max, int): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 60 illegal_value(v_max, 'v_max', 'is_int') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 61 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 62 if v_min is not None and v_max is not None and v_min > v_max: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 63 logging.error(f'Illegal v_min, v_max combination ({v_min}, {v_max})') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 64 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 65 if (v_min is not None and v < v_min) or (v_max is not None and v > v_max): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 66 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 67 return True | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 68 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 69 def is_int_pair(v, v_min=None, v_max=None): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 70 """Value is an integer pair, each in range v_min <= v[i] <= v_max or | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 71 v_min[i] <= v[i] <= v_max[i]. | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 72 """ | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 73 if not (isinstance(v, (tuple, list)) and len(v) == 2 and isinstance(v[0], int) and | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 74 isinstance(v[1], int)): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 75 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 76 if v_min is not None or v_max is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 77 if (v_min is None or isinstance(v_min, int)) and (v_max is None or isinstance(v_max, int)): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 78 if True in [True if not is_int(vi, v_min=v_min, v_max=v_max) else False for vi in v]: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 79 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 80 elif is_int_pair(v_min) and is_int_pair(v_max): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 81 if True in [True if v_min[i] > v_max[i] else False for i in range(2)]: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 82 logging.error(f'Illegal v_min, v_max combination ({v_min}, {v_max})') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 83 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 84 if True in [True if not is_int(v[i], v_min[i], v_max[i]) else False for i in range(2)]: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 85 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 86 elif is_int_pair(v_min) and (v_max is None or isinstance(v_max, int)): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 87 if True in [True if not is_int(v[i], v_min=v_min[i], v_max=v_max) else False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 88 for i in range(2)]: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 89 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 90 elif (v_min is None or isinstance(v_min, int)) and is_int_pair(v_max): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 91 if True in [True if not is_int(v[i], v_min=v_min, v_max=v_max[i]) else False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 92 for i in range(2)]: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 93 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 94 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 95 logging.error(f'Illegal v_min or v_max input ({v_min} {type(v_min)} and '+ | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 96 f'{v_max} {type(v_max)})') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 97 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 98 return True | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 99 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 100 def is_int_series(l, v_min=None, v_max=None): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 101 """Value is a tuple or list of integers, each in range v_min <= l[i] <= v_max. | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 102 """ | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 103 if v_min is not None and not isinstance(v_min, int): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 104 illegal_value(v_min, 'v_min', 'is_int_series') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 105 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 106 if v_max is not None and not isinstance(v_max, int): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 107 illegal_value(v_max, 'v_max', 'is_int_series') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 108 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 109 if not isinstance(l, (tuple, list)): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 110 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 111 if True in [True if not is_int(v, v_min=v_min, v_max=v_max) else False for v in l]: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 112 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 113 return True | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 114 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 115 def is_num(v, v_min=None, v_max=None): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 116 """Value is a number in range v_min <= v <= v_max. | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 117 """ | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 118 if not isinstance(v, (int, float)): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 119 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 120 if v_min is not None and not isinstance(v_min, (int, float)): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 121 illegal_value(v_min, 'v_min', 'is_num') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 122 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 123 if v_max is not None and not isinstance(v_max, (int, float)): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 124 illegal_value(v_max, 'v_max', 'is_num') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 125 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 126 if v_min is not None and v_max is not None and v_min > v_max: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 127 logging.error(f'Illegal v_min, v_max combination ({v_min}, {v_max})') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 128 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 129 if (v_min is not None and v < v_min) or (v_max is not None and v > v_max): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 130 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 131 return True | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 132 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 133 def is_num_pair(v, v_min=None, v_max=None): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 134 """Value is a number pair, each in range v_min <= v[i] <= v_max or | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 135 v_min[i] <= v[i] <= v_max[i]. | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 136 """ | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 137 if not (isinstance(v, (tuple, list)) and len(v) == 2 and isinstance(v[0], (int, float)) and | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 138 isinstance(v[1], (int, float))): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 139 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 140 if v_min is not None or v_max is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 141 if ((v_min is None or isinstance(v_min, (int, float))) and | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 142 (v_max is None or isinstance(v_max, (int, float)))): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 143 if True in [True if not is_num(vi, v_min=v_min, v_max=v_max) else False for vi in v]: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 144 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 145 elif is_num_pair(v_min) and is_num_pair(v_max): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 146 if True in [True if v_min[i] > v_max[i] else False for i in range(2)]: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 147 logging.error(f'Illegal v_min, v_max combination ({v_min}, {v_max})') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 148 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 149 if True in [True if not is_num(v[i], v_min[i], v_max[i]) else False for i in range(2)]: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 150 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 151 elif is_num_pair(v_min) and (v_max is None or isinstance(v_max, (int, float))): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 152 if True in [True if not is_num(v[i], v_min=v_min[i], v_max=v_max) else False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 153 for i in range(2)]: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 154 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 155 elif (v_min is None or isinstance(v_min, (int, float))) and is_num_pair(v_max): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 156 if True in [True if not is_num(v[i], v_min=v_min, v_max=v_max[i]) else False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 157 for i in range(2)]: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 158 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 159 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 160 logging.error(f'Illegal v_min or v_max input ({v_min} {type(v_min)} and '+ | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 161 f'{v_max} {type(v_max)})') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 162 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 163 return True | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 164 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 165 def is_num_series(l, v_min=None, v_max=None): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 166 """Value is a tuple or list of numbers, each in range v_min <= l[i] <= v_max. | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 167 """ | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 168 if v_min is not None and not isinstance(v_min, (int, float)): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 169 illegal_value(v_min, 'v_min', 'is_num_series') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 170 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 171 if v_max is not None and not isinstance(v_max, (int, float)): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 172 illegal_value(v_max, 'v_max', 'is_num_series') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 173 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 174 if not isinstance(l, (tuple, list)): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 175 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 176 if True in [True if not is_num(v, v_min=v_min, v_max=v_max) else False for v in l]: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 177 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 178 return True | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 179 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 180 def is_index(v, v_min=0, v_max=None): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 181 """Value is an array index in range v_min <= v < v_max. | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 182 NOTE v_max IS NOT included! | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 183 """ | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 184 if isinstance(v_max, int): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 185 if v_max <= v_min: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 186 logging.error(f'Illegal v_min, v_max combination ({v_min}, {v_max})') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 187 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 188 v_max -= 1 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 189 return is_int(v, v_min, v_max) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 190 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 191 def is_index_range(v, v_min=0, v_max=None): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 192 """Value is an array index range in range v_min <= v[0] <= v[1] <= v_max. | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 193 NOTE v_max IS included! | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 194 """ | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 195 if not is_int_pair(v): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 196 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 197 if not isinstance(v_min, int): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 198 illegal_value(v_min, 'v_min', 'is_index_range') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 199 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 200 if v_max is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 201 if not isinstance(v_max, int): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 202 illegal_value(v_max, 'v_max', 'is_index_range') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 203 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 204 if v_max < v_min: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 205 logging.error(f'Illegal v_min, v_max combination ({v_min}, {v_max})') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 206 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 207 if not v_min <= v[0] <= v[1] or (v_max is not None and v[1] > v_max): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 208 return False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 209 return True | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 210 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 211 def index_nearest(a, value): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 212 a = np.asarray(a) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 213 if a.ndim > 1: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 214 logging.warning(f'Illegal input array ({a}, {type(a)})') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 215 # Round up for .5 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 216 value *= 1.0+sys.float_info.epsilon | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 217 return (int)(np.argmin(np.abs(a-value))) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 218 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 219 def index_nearest_low(a, value): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 220 a = np.asarray(a) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 221 if a.ndim > 1: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 222 logging.warning(f'Illegal input array ({a}, {type(a)})') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 223 index = int(np.argmin(np.abs(a-value))) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 224 if value < a[index] and index > 0: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 225 index -= 1 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 226 return index | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 227 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 228 def index_nearest_upp(a, value): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 229 a = np.asarray(a) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 230 if a.ndim > 1: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 231 logging.warning(f'Illegal input array ({a}, {type(a)})') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 232 index = int(np.argmin(np.abs(a-value))) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 233 if value > a[index] and index < a.size-1: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 234 index += 1 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 235 return index | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 236 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 237 def round_to_n(x, n=1): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 238 if x == 0.0: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 239 return 0 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 240 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 241 return round(x, n-1-int(np.floor(np.log10(abs(x))))) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 242 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 243 def round_up_to_n(x, n=1): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 244 xr = round_to_n(x, n) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 245 if abs(x/xr) > 1.0: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 246 xr += np.sign(x)*10**(np.floor(np.log10(abs(x)))+1-n) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 247 return xr | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 248 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 249 def trunc_to_n(x, n=1): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 250 xr = round_to_n(x, n) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 251 if abs(xr/x) > 1.0: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 252 xr -= np.sign(x)*10**(np.floor(np.log10(abs(x)))+1-n) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 253 return xr | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 254 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 255 def string_to_list(s): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 256 """Return a list of numbers by splitting/expanding a string on any combination of | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 257 dashes, commas, and/or whitespaces | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 258 e.g: '1, 3, 5-8,12 ' -> [1, 3, 5, 6, 7, 8, 12] | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 259 """ | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 260 if not isinstance(s, str): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 261 illegal_value(s, location='string_to_list') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 262 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 263 if not len(s): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 264 return [] | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 265 try: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 266 list1 = [x for x in re.split('\s+,\s+|\s+,|,\s+|\s+|,', s.strip())] | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 267 except (ValueError, TypeError, SyntaxError, MemoryError, RecursionError): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 268 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 269 try: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 270 l = [] | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 271 for l1 in list1: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 272 l2 = [literal_eval(x) for x in re.split('\s+-\s+|\s+-|-\s+|\s+|-', l1)] | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 273 if len(l2) == 1: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 274 l += l2 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 275 elif len(l2) == 2 and l2[1] > l2[0]: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 276 l += [i for i in range(l2[0], l2[1]+1)] | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 277 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 278 raise ValueError | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 279 except (ValueError, TypeError, SyntaxError, MemoryError, RecursionError): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 280 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 281 return sorted(set(l)) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 282 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 283 def get_trailing_int(string): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 284 indexRegex = re.compile(r'\d+$') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 285 mo = indexRegex.search(string) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 286 if mo is None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 287 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 288 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 289 return int(mo.group()) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 290 | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 291 def input_int(s=None, v_min=None, v_max=None, default=None, inset=None): | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 292 if default is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 293 if not isinstance(default, int): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 294 illegal_value(default, 'default', 'input_int') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 295 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 296 default_string = f' [{default}]' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 297 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 298 default_string = '' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 299 if v_min is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 300 if not isinstance(v_min, int): | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 301 illegal_value(v_min, 'v_min', 'input_int') | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 302 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 303 if default is not None and default < v_min: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 304 logging.error('Illegal v_min, default combination ({v_min}, {default})') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 305 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 306 if v_max is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 307 if not isinstance(v_max, int): | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 308 illegal_value(v_max, 'v_max', 'input_int') | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 309 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 310 if v_min is not None and v_min > v_max: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 311 logging.error(f'Illegal v_min, v_max combination ({v_min}, {v_max})') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 312 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 313 if default is not None and default > v_max: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 314 logging.error('Illegal default, v_max combination ({default}, {v_max})') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 315 return None | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 316 if inset is not None: | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 317 if (not isinstance(inset, (tuple, list)) or False in [True if isinstance(i, int) else | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 318 False for i in inset]): | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 319 illegal_value(inset, 'inset', 'input_int') | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 320 return None | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 321 if v_min is not None and v_max is not None: | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 322 v_range = f' ({v_min}, {v_max})' | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 323 elif v_min is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 324 v_range = f' (>= {v_min})' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 325 elif v_max is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 326 v_range = f' (<= {v_max})' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 327 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 328 v_range = '' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 329 if s is None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 330 print(f'Enter an integer{v_range}{default_string}: ') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 331 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 332 print(f'{s}{v_range}{default_string}: ') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 333 try: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 334 i = input() | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 335 if isinstance(i, str) and not len(i): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 336 v = default | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 337 print(f'{v}') | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 338 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 339 v = literal_eval(i) | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 340 if inset and v not in inset: | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 341 raise ValueError(f'{v} not part of the set {inset}') | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 342 except (ValueError, TypeError, SyntaxError, MemoryError, RecursionError): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 343 v = None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 344 except: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 345 print('Unexpected error') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 346 raise | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 347 if not is_int(v, v_min, v_max): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 348 print('Illegal input, enter a valid integer') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 349 v = input_int(s, v_min, v_max, default) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 350 return v | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 351 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 352 def input_num(s=None, v_min=None, v_max=None, default=None): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 353 if default is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 354 if not isinstance(default, (int, float)): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 355 illegal_value(default, 'default', 'input_num') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 356 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 357 default_string = f' [{default}]' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 358 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 359 default_string = '' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 360 if v_min is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 361 if not isinstance(v_min, (int, float)): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 362 illegal_value(vmin, 'vmin', 'input_num') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 363 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 364 if default is not None and default < v_min: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 365 logging.error('Illegal v_min, default combination ({v_min}, {default})') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 366 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 367 if v_max is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 368 if not isinstance(v_max, (int, float)): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 369 illegal_value(vmax, 'vmax', 'input_num') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 370 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 371 if v_min is not None and v_max < v_min: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 372 logging.error(f'Illegal v_min, v_max combination ({v_min}, {v_max})') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 373 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 374 if default is not None and default > v_max: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 375 logging.error('Illegal default, v_max combination ({default}, {v_max})') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 376 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 377 if v_min is not None and v_max is not None: | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 378 v_range = f' ({v_min}, {v_max})' | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 379 elif v_min is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 380 v_range = f' (>= {v_min})' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 381 elif v_max is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 382 v_range = f' (<= {v_max})' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 383 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 384 v_range = '' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 385 if s is None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 386 print(f'Enter a number{v_range}{default_string}: ') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 387 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 388 print(f'{s}{v_range}{default_string}: ') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 389 try: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 390 i = input() | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 391 if isinstance(i, str) and not len(i): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 392 v = default | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 393 print(f'{v}') | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 394 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 395 v = literal_eval(i) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 396 except (ValueError, TypeError, SyntaxError, MemoryError, RecursionError): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 397 v = None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 398 except: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 399 print('Unexpected error') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 400 raise | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 401 if not is_num(v, v_min, v_max): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 402 print('Illegal input, enter a valid number') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 403 v = input_num(s, v_min, v_max, default) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 404 return v | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 405 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 406 def input_int_list(s=None, v_min=None, v_max=None): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 407 if v_min is not None and not isinstance(v_min, int): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 408 illegal_value(vmin, 'vmin', 'input_int_list') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 409 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 410 if v_max is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 411 if not isinstance(v_max, int): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 412 illegal_value(vmax, 'vmax', 'input_int_list') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 413 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 414 if v_max < v_min: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 415 logging.error(f'Illegal v_min, v_max combination ({v_min}, {v_max})') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 416 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 417 if v_min is not None and v_max is not None: | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 418 v_range = f' (each value in ({v_min}, {v_max}))' | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 419 elif v_min is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 420 v_range = f' (each value >= {v_min})' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 421 elif v_max is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 422 v_range = f' (each value <= {v_max})' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 423 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 424 v_range = '' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 425 if s is None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 426 print(f'Enter a series of integers{v_range}: ') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 427 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 428 print(f'{s}{v_range}: ') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 429 try: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 430 l = string_to_list(input()) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 431 except (ValueError, TypeError, SyntaxError, MemoryError, RecursionError): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 432 l = None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 433 except: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 434 print('Unexpected error') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 435 raise | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 436 if (not isinstance(l, list) or | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 437 True in [True if not is_int(v, v_min, v_max) else False for v in l]): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 438 print('Illegal input: enter a valid set of dash/comma/whitespace separated integers '+ | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 439 'e.g. 2,3,5-8,10') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 440 l = input_int_list(s, v_min, v_max) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 441 return l | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 442 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 443 def input_yesno(s=None, default=None): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 444 if default is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 445 if not isinstance(default, str): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 446 illegal_value(default, 'default', 'input_yesno') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 447 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 448 if default.lower() in 'yes': | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 449 default = 'y' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 450 elif default.lower() in 'no': | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 451 default = 'n' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 452 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 453 illegal_value(default, 'default', 'input_yesno') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 454 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 455 default_string = f' [{default}]' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 456 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 457 default_string = '' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 458 if s is None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 459 print(f'Enter yes or no{default_string}: ') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 460 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 461 print(f'{s}{default_string}: ') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 462 i = input() | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 463 if isinstance(i, str) and not len(i): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 464 i = default | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 465 print(f'{i}') | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 466 if i is not None and i.lower() in 'yes': | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 467 v = True | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 468 elif i is not None and i.lower() in 'no': | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 469 v = False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 470 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 471 print('Illegal input, enter yes or no') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 472 v = input_yesno(s, default) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 473 return v | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 474 | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 475 def input_menu(items, default=None, header=None): | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 476 if not isinstance(items, (tuple, list)) or False in [True if isinstance(i, str) else False | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 477 for i in items]: | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 478 illegal_value(items, 'items', 'input_menu') | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 479 return None | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 480 if default is not None: | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 481 if not (isinstance(default, str) and default in items): | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 482 logging.error(f'Illegal value for default ({default}), must be in {items}') | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 483 return None | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 484 default_string = f' [{items.index(default)+1}]' | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 485 else: | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 486 default_string = '' | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 487 if header is None: | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 488 print(f'Choose one of the following items (1, {len(items)}){default_string}:') | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 489 else: | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 490 print(f'{header} (1, {len(items)}){default_string}:') | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 491 for i, choice in enumerate(items): | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 492 print(f' {i+1}: {choice}') | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 493 try: | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 494 choice = input() | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 495 if isinstance(choice, str) and not len(choice): | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 496 choice = items.index(default) | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 497 print(f'{choice+1}') | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 498 else: | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 499 choice = literal_eval(choice) | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 500 if isinstance(choice, int) and 1 <= choice <= len(items): | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 501 choice -= 1 | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 502 else: | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 503 raise ValueError | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 504 except (ValueError, TypeError, SyntaxError, MemoryError, RecursionError): | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 505 choice = None | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 506 except: | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 507 print('Unexpected error') | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 508 raise | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 509 if choice is None: | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 510 print(f'Illegal choice, enter a number between 1 and {len(items)}') | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 511 choice = input_menu(items, default) | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 512 return choice | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 513 | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 514 def create_mask(x, bounds=None, reverse_mask=False, current_mask=None): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 515 # bounds is a pair of number in the same units a x | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 516 if not isinstance(x, (tuple, list, np.ndarray)) or not len(x): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 517 logging.warning(f'Illegal input array ({x}, {type(x)})') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 518 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 519 if bounds is not None and not is_num_pair(bounds): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 520 logging.warning(f'Illegal bounds parameter ({bounds} {type(bounds)}, input ignored') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 521 bounds = None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 522 if bounds is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 523 if not reverse_mask: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 524 mask = np.logical_and(x > min(bounds), x < max(bounds)) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 525 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 526 mask = np.logical_or(x < min(bounds), x > max(bounds)) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 527 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 528 mask = np.ones(len(x), dtype=bool) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 529 if current_mask is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 530 if not isinstance(current_mask, (tuple, list, np.ndarray)) or len(current_mask) != len(x): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 531 logging.warning(f'Illegal current_mask ({current_mask}, {type(current_mask)}), '+ | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 532 'input ignored') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 533 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 534 mask = np.logical_and(mask, current_mask) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 535 if not True in mask: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 536 logging.warning('Entire data array is masked') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 537 return mask | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 538 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 539 def draw_mask_1d(ydata, xdata=None, current_index_ranges=None, current_mask=None, | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 540 select_mask=True, num_index_ranges_max=None, title=None, legend=None, test_mode=False): | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 541 def draw_selections(ax): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 542 ax.clear() | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 543 ax.set_title(title) | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 544 ax.legend([legend]) | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 545 ax.plot(xdata, ydata, 'k') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 546 for (low, upp) in current_include: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 547 xlow = 0.5*(xdata[max(0, low-1)]+xdata[low]) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 548 xupp = 0.5*(xdata[upp]+xdata[min(num_data-1, upp+1)]) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 549 ax.axvspan(xlow, xupp, facecolor='green', alpha=0.5) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 550 for (low, upp) in current_exclude: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 551 xlow = 0.5*(xdata[max(0, low-1)]+xdata[low]) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 552 xupp = 0.5*(xdata[upp]+xdata[min(num_data-1, upp+1)]) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 553 ax.axvspan(xlow, xupp, facecolor='red', alpha=0.5) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 554 for (low, upp) in selected_index_ranges: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 555 xlow = 0.5*(xdata[max(0, low-1)]+xdata[low]) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 556 xupp = 0.5*(xdata[upp]+xdata[min(num_data-1, upp+1)]) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 557 ax.axvspan(xlow, xupp, facecolor=selection_color, alpha=0.5) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 558 ax.get_figure().canvas.draw() | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 559 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 560 def onclick(event): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 561 if event.inaxes in [fig.axes[0]]: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 562 selected_index_ranges.append(index_nearest_upp(xdata, event.xdata)) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 563 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 564 def onrelease(event): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 565 if len(selected_index_ranges) > 0: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 566 if isinstance(selected_index_ranges[-1], int): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 567 if event.inaxes in [fig.axes[0]]: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 568 event.xdata = index_nearest_low(xdata, event.xdata) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 569 if selected_index_ranges[-1] <= event.xdata: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 570 selected_index_ranges[-1] = (selected_index_ranges[-1], event.xdata) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 571 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 572 selected_index_ranges[-1] = (event.xdata, selected_index_ranges[-1]) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 573 draw_selections(event.inaxes) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 574 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 575 selected_index_ranges.pop(-1) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 576 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 577 def confirm_selection(event): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 578 plt.close() | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 579 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 580 def clear_last_selection(event): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 581 if len(selected_index_ranges): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 582 selected_index_ranges.pop(-1) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 583 draw_selections(ax) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 584 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 585 def update_mask(mask): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 586 for (low, upp) in selected_index_ranges: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 587 selected_mask = np.logical_and(xdata >= xdata[low], xdata <= xdata[upp]) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 588 mask = np.logical_or(mask, selected_mask) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 589 for (low, upp) in unselected_index_ranges: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 590 unselected_mask = np.logical_and(xdata >= xdata[low], xdata <= xdata[upp]) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 591 mask[unselected_mask] = False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 592 return mask | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 593 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 594 def update_index_ranges(mask): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 595 # Update the currently included index ranges (where mask is True) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 596 current_include = [] | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 597 for i, m in enumerate(mask): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 598 if m == True: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 599 if len(current_include) == 0 or type(current_include[-1]) == tuple: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 600 current_include.append(i) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 601 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 602 if len(current_include) > 0 and isinstance(current_include[-1], int): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 603 current_include[-1] = (current_include[-1], i-1) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 604 if len(current_include) > 0 and isinstance(current_include[-1], int): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 605 current_include[-1] = (current_include[-1], num_data-1) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 606 return current_include | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 607 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 608 # Check for valid inputs | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 609 ydata = np.asarray(ydata) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 610 if ydata.ndim > 1: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 611 logging.warning(f'Illegal ydata dimension ({ydata.ndim})') | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 612 return None, None | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 613 num_data = ydata.size | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 614 if xdata is None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 615 xdata = np.arange(num_data) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 616 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 617 xdata = np.asarray(xdata, dtype=np.float64) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 618 if xdata.ndim > 1 or xdata.size != num_data: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 619 logging.warning(f'Illegal xdata shape ({xdata.shape})') | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 620 return None, None | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 621 if not np.all(xdata[:-1] < xdata[1:]): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 622 logging.warning('Illegal xdata: must be monotonically increasing') | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 623 return None, None | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 624 if current_index_ranges is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 625 if not isinstance(current_index_ranges, (tuple, list)): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 626 logging.warning('Illegal current_index_ranges parameter ({current_index_ranges}, '+ | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 627 f'{type(current_index_ranges)})') | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 628 return None, None | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 629 if not isinstance(select_mask, bool): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 630 logging.warning('Illegal select_mask parameter ({select_mask}, {type(select_mask)})') | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 631 return None, None | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 632 if num_index_ranges_max is not None: | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 633 logging.warning('num_index_ranges_max input not yet implemented in draw_mask_1d') | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 634 if title is None: | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 635 title = 'select ranges of data' | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 636 elif not isinstance(title, str): | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 637 illegal(title, 'title') | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 638 title = '' | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 639 if legend is None and not isinstance(title, str): | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 640 illegal(legend, 'legend') | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 641 legend = None | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 642 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 643 if select_mask: | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 644 title = f'Click and drag to {title} you wish to include' | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 645 selection_color = 'green' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 646 else: | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 647 title = f'Click and drag to {title} you wish to exclude' | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 648 selection_color = 'red' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 649 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 650 # Set initial selected mask and the selected/unselected index ranges as needed | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 651 selected_index_ranges = [] | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 652 unselected_index_ranges = [] | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 653 selected_mask = np.full(xdata.shape, False, dtype=bool) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 654 if current_index_ranges is None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 655 if current_mask is None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 656 if not select_mask: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 657 selected_index_ranges = [(0, num_data-1)] | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 658 selected_mask = np.full(xdata.shape, True, dtype=bool) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 659 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 660 selected_mask = np.copy(np.asarray(current_mask, dtype=bool)) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 661 if current_index_ranges is not None and len(current_index_ranges): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 662 current_index_ranges = sorted([(low, upp) for (low, upp) in current_index_ranges]) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 663 for (low, upp) in current_index_ranges: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 664 if low > upp or low >= num_data or upp < 0: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 665 continue | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 666 if low < 0: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 667 low = 0 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 668 if upp >= num_data: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 669 upp = num_data-1 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 670 selected_index_ranges.append((low, upp)) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 671 selected_mask = update_mask(selected_mask) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 672 if current_index_ranges is not None and current_mask is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 673 selected_mask = np.logical_and(current_mask, selected_mask) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 674 if current_mask is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 675 selected_index_ranges = update_index_ranges(selected_mask) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 676 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 677 # Set up range selections for display | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 678 current_include = selected_index_ranges | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 679 current_exclude = [] | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 680 selected_index_ranges = [] | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 681 if not len(current_include): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 682 if select_mask: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 683 current_exclude = [(0, num_data-1)] | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 684 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 685 current_include = [(0, num_data-1)] | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 686 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 687 if current_include[0][0] > 0: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 688 current_exclude.append((0, current_include[0][0]-1)) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 689 for i in range(1, len(current_include)): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 690 current_exclude.append((current_include[i-1][1]+1, current_include[i][0]-1)) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 691 if current_include[-1][1] < num_data-1: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 692 current_exclude.append((current_include[-1][1]+1, num_data-1)) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 693 | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 694 if not test_mode: | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 695 | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 696 # Set up matplotlib figure | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 697 plt.close('all') | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 698 fig, ax = plt.subplots() | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 699 plt.subplots_adjust(bottom=0.2) | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 700 draw_selections(ax) | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 701 | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 702 # Set up event handling for click-and-drag range selection | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 703 cid_click = fig.canvas.mpl_connect('button_press_event', onclick) | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 704 cid_release = fig.canvas.mpl_connect('button_release_event', onrelease) | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 705 | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 706 # Set up confirm / clear range selection buttons | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 707 confirm_b = Button(plt.axes([0.75, 0.05, 0.15, 0.075]), 'Confirm') | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 708 clear_b = Button(plt.axes([0.59, 0.05, 0.15, 0.075]), 'Clear') | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 709 cid_confirm = confirm_b.on_clicked(confirm_selection) | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 710 cid_clear = clear_b.on_clicked(clear_last_selection) | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 711 | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 712 # Show figure | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 713 plt.show(block=True) | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 714 | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 715 # Disconnect callbacks when figure is closed | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 716 fig.canvas.mpl_disconnect(cid_click) | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 717 fig.canvas.mpl_disconnect(cid_release) | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 718 confirm_b.disconnect(cid_confirm) | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 719 clear_b.disconnect(cid_clear) | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 720 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 721 # Swap selection depending on select_mask | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 722 if not select_mask: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 723 selected_index_ranges, unselected_index_ranges = unselected_index_ranges, \ | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 724 selected_index_ranges | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 725 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 726 # Update the mask with the currently selected/unselected x-ranges | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 727 selected_mask = update_mask(selected_mask) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 728 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 729 # Update the currently included index ranges (where mask is True) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 730 current_include = update_index_ranges(selected_mask) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 731 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 732 return selected_mask, current_include | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 733 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 734 def findImageFiles(path, filetype, name=None): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 735 if isinstance(name, str): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 736 name = f' {name} ' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 737 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 738 name = ' ' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 739 # Find available index range | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 740 if filetype == 'tif': | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 741 if not isinstance(path, str) or not os.path.isdir(path): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 742 illegal_value(path, 'path', 'findImageRange') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 743 return -1, 0, [] | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 744 indexRegex = re.compile(r'\d+') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 745 # At this point only tiffs | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 746 files = sorted([f for f in os.listdir(path) if os.path.isfile(os.path.join(path, f)) and | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 747 f.endswith('.tif') and indexRegex.search(f)]) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 748 num_imgs = len(files) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 749 if num_imgs < 1: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 750 logging.warning('No available'+name+'files') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 751 return -1, 0, [] | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 752 first_index = indexRegex.search(files[0]).group() | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 753 last_index = indexRegex.search(files[-1]).group() | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 754 if first_index is None or last_index is None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 755 logging.error('Unable to find correctly indexed'+name+'images') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 756 return -1, 0, [] | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 757 first_index = int(first_index) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 758 last_index = int(last_index) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 759 if num_imgs != last_index-first_index+1: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 760 logging.error('Non-consecutive set of indices for'+name+'images') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 761 return -1, 0, [] | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 762 paths = [os.path.join(path, f) for f in files] | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 763 elif filetype == 'h5': | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 764 if not isinstance(path, str) or not os.path.isfile(path): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 765 illegal_value(path, 'path', 'findImageRange') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 766 return -1, 0, [] | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 767 # At this point only h5 in alamo2 detector style | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 768 first_index = 0 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 769 with h5py.File(path, 'r') as f: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 770 num_imgs = f['entry/instrument/detector/data'].shape[0] | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 771 last_index = num_imgs-1 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 772 paths = [path] | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 773 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 774 illegal_value(filetype, 'filetype', 'findImageRange') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 775 return -1, 0, [] | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 776 logging.debug('\nNumber of available'+name+f'images: {num_imgs}') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 777 logging.debug('Index range of available'+name+f'images: [{first_index}, '+ | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 778 f'{last_index}]') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 779 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 780 return first_index, num_imgs, paths | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 781 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 782 def selectImageRange(first_index, offset, num_imgs, name=None, num_required=None): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 783 if isinstance(name, str): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 784 name = f' {name} ' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 785 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 786 name = ' ' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 787 # Check existing values | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 788 use_input = False | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 789 if (is_int(first_index, 0) and is_int(offset, 0) and is_int(num_imgs, 1)): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 790 if offset < 0: | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 791 use_input = input_yesno(f'\nCurrent{name}first index = {first_index}, '+ | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 792 'use this value (y/n)?', 'y') | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 793 else: | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 794 use_input = input_yesno(f'\nCurrent{name}first index/offset = '+ | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 795 f'{first_index}/{offset}, use these values (y/n)?', 'y') | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 796 if num_required is None: | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 797 if use_input: | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 798 use_input = input_yesno(f'Current number of{name}images = '+ | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 799 f'{num_imgs}, use this value (y/n)? ', 'y') | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 800 if use_input: | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 801 return first_index, offset, num_imgs | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 802 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 803 # Check range against requirements | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 804 if num_imgs < 1: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 805 logging.warning('No available'+name+'images') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 806 return -1, -1, 0 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 807 if num_required is None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 808 if num_imgs == 1: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 809 return first_index, 0, 1 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 810 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 811 if not is_int(num_required, 1): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 812 illegal_value(num_required, 'num_required', 'selectImageRange') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 813 return -1, -1, 0 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 814 if num_imgs < num_required: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 815 logging.error('Unable to find the required'+name+ | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 816 f'images ({num_imgs} out of {num_required})') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 817 return -1, -1, 0 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 818 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 819 # Select index range | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 820 print('\nThe number of available'+name+f'images is {num_imgs}') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 821 if num_required is None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 822 last_index = first_index+num_imgs | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 823 use_all = f'Use all ([{first_index}, {last_index}])' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 824 pick_offset = 'Pick a first index offset and a number of images' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 825 pick_bounds = 'Pick the first and last index' | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 826 choice = input_menu([use_all, pick_offset, pick_bounds], default=pick_offset) | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 827 if not choice: | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 828 offset = 0 | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 829 elif choice == 1: | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 830 offset = input_int('Enter the first index offset', 0, last_index-first_index) | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 831 first_index += offset | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 832 if first_index == last_index: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 833 num_imgs = 1 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 834 else: | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 835 num_imgs = input_int('Enter the number of images', 1, num_imgs-offset) | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 836 else: | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 837 offset = input_int('Enter the first index', first_index, last_index) | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 838 first_index += offset | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 839 num_imgs = input_int('Enter the last index', first_index, last_index)-first_index+1 | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 840 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 841 use_all = f'Use ([{first_index}, {first_index+num_required-1}])' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 842 pick_offset = 'Pick the first index offset' | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 843 choice = input_menu([use_all, pick_offset], pick_offset) | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 844 offset = 0 | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 845 if choice == 1: | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 846 offset = input_int('Enter the first index offset', 0, num_imgs-num_required) | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 847 first_index += offset | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 848 num_imgs = num_required | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 849 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 850 return first_index, offset, num_imgs | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 851 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 852 def loadImage(f, img_x_bounds=None, img_y_bounds=None): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 853 """Load a single image from file. | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 854 """ | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 855 if not os.path.isfile(f): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 856 logging.error(f'Unable to load {f}') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 857 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 858 img_read = plt.imread(f) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 859 if not img_x_bounds: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 860 img_x_bounds = (0, img_read.shape[0]) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 861 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 862 if (not isinstance(img_x_bounds, (tuple, list)) or len(img_x_bounds) != 2 or | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 863 not (0 <= img_x_bounds[0] < img_x_bounds[1] <= img_read.shape[0])): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 864 logging.error(f'inconsistent row dimension in {f}') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 865 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 866 if not img_y_bounds: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 867 img_y_bounds = (0, img_read.shape[1]) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 868 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 869 if (not isinstance(img_y_bounds, list) or len(img_y_bounds) != 2 or | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 870 not (0 <= img_y_bounds[0] < img_y_bounds[1] <= img_read.shape[1])): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 871 logging.error(f'inconsistent column dimension in {f}') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 872 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 873 return img_read[img_x_bounds[0]:img_x_bounds[1],img_y_bounds[0]:img_y_bounds[1]] | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 874 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 875 def loadImageStack(files, filetype, img_offset, num_imgs, num_img_skip=0, | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 876 img_x_bounds=None, img_y_bounds=None): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 877 """Load a set of images and return them as a stack. | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 878 """ | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 879 logging.debug(f'img_offset = {img_offset}') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 880 logging.debug(f'num_imgs = {num_imgs}') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 881 logging.debug(f'num_img_skip = {num_img_skip}') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 882 logging.debug(f'\nfiles:\n{files}\n') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 883 img_stack = np.array([]) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 884 if filetype == 'tif': | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 885 img_read_stack = [] | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 886 i = 1 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 887 t0 = time() | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 888 for f in files[img_offset:img_offset+num_imgs:num_img_skip+1]: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 889 if not i%20: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 890 logging.info(f' loading {i}/{num_imgs}: {f}') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 891 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 892 logging.debug(f' loading {i}/{num_imgs}: {f}') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 893 img_read = loadImage(f, img_x_bounds, img_y_bounds) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 894 img_read_stack.append(img_read) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 895 i += num_img_skip+1 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 896 img_stack = np.stack([img_read for img_read in img_read_stack]) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 897 logging.info(f'... done in {time()-t0:.2f} seconds!') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 898 logging.debug(f'img_stack shape = {np.shape(img_stack)}') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 899 del img_read_stack, img_read | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 900 elif filetype == 'h5': | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 901 if not isinstance(files[0], str) and not os.path.isfile(files[0]): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 902 illegal_value(files[0], 'files[0]', 'loadImageStack') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 903 return img_stack | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 904 t0 = time() | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 905 logging.info(f'Loading {files[0]}') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 906 with h5py.File(files[0], 'r') as f: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 907 shape = f['entry/instrument/detector/data'].shape | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 908 if len(shape) != 3: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 909 logging.error(f'inconsistent dimensions in {files[0]}') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 910 if not img_x_bounds: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 911 img_x_bounds = (0, shape[1]) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 912 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 913 if (not isinstance(img_x_bounds, (tuple, list)) or len(img_x_bounds) != 2 or | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 914 not (0 <= img_x_bounds[0] < img_x_bounds[1] <= shape[1])): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 915 logging.error(f'inconsistent row dimension in {files[0]} {img_x_bounds} '+ | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 916 f'{shape[1]}') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 917 if not img_y_bounds: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 918 img_y_bounds = (0, shape[2]) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 919 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 920 if (not isinstance(img_y_bounds, list) or len(img_y_bounds) != 2 or | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 921 not (0 <= img_y_bounds[0] < img_y_bounds[1] <= shape[2])): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 922 logging.error(f'inconsistent column dimension in {files[0]}') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 923 img_stack = f.get('entry/instrument/detector/data')[ | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 924 img_offset:img_offset+num_imgs:num_img_skip+1, | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 925 img_x_bounds[0]:img_x_bounds[1],img_y_bounds[0]:img_y_bounds[1]] | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 926 logging.info(f'... done in {time()-t0:.2f} seconds!') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 927 else: | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 928 illegal_value(filetype, 'filetype', 'loadImageStack') | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 929 return img_stack | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 930 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 931 def combine_tiffs_in_h5(files, num_imgs, h5_filename): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 932 img_stack = loadImageStack(files, 'tif', 0, num_imgs) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 933 with h5py.File(h5_filename, 'w') as f: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 934 f.create_dataset('entry/instrument/detector/data', data=img_stack) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 935 del img_stack | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 936 return [h5_filename] | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 937 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 938 def clearImshow(title=None): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 939 plt.ioff() | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 940 if title is None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 941 title = 'quick imshow' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 942 elif not isinstance(title, str): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 943 illegal_value(title, 'title', 'clearImshow') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 944 return | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 945 plt.close(fig=title) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 946 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 947 def clearPlot(title=None): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 948 plt.ioff() | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 949 if title is None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 950 title = 'quick plot' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 951 elif not isinstance(title, str): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 952 illegal_value(title, 'title', 'clearPlot') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 953 return | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 954 plt.close(fig=title) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 955 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 956 def quickImshow(a, title=None, path=None, name=None, save_fig=False, save_only=False, | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 957 clear=True, extent=None, show_grid=False, grid_color='w', grid_linewidth=1, **kwargs): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 958 if title is not None and not isinstance(title, str): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 959 illegal_value(title, 'title', 'quickImshow') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 960 return | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 961 if path is not None and not isinstance(path, str): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 962 illegal_value(path, 'path', 'quickImshow') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 963 return | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 964 if not isinstance(save_fig, bool): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 965 illegal_value(save_fig, 'save_fig', 'quickImshow') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 966 return | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 967 if not isinstance(save_only, bool): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 968 illegal_value(save_only, 'save_only', 'quickImshow') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 969 return | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 970 if not isinstance(clear, bool): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 971 illegal_value(clear, 'clear', 'quickImshow') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 972 return | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 973 if not title: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 974 title='quick imshow' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 975 # else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 976 # title = re.sub(r"\s+", '_', title) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 977 if name is None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 978 ttitle = re.sub(r"\s+", '_', title) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 979 if path is None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 980 path = f'{ttitle}.png' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 981 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 982 path = f'{path}/{ttitle}.png' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 983 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 984 if path is None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 985 path = name | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 986 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 987 path = f'{path}/{name}' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 988 if extent is None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 989 extent = (0, a.shape[1], a.shape[0], 0) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 990 if clear: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 991 plt.close(fig=title) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 992 if not save_only: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 993 plt.ion() | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 994 plt.figure(title) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 995 plt.imshow(a, extent=extent, **kwargs) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 996 if show_grid: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 997 ax = plt.gca() | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 998 ax.grid(color=grid_color, linewidth=grid_linewidth) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 999 # if title != 'quick imshow': | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1000 # plt.title = title | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1001 if save_only: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1002 plt.savefig(path) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1003 plt.close(fig=title) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1004 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1005 if save_fig: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1006 plt.savefig(path) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1007 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1008 def quickPlot(*args, xerr=None, yerr=None, vlines=None, title=None, xlim=None, ylim=None, | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1009 xlabel=None, ylabel=None, legend=None, path=None, name=None, show_grid=False, | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1010 save_fig=False, save_only=False, clear=True, block=False, **kwargs): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1011 if title is not None and not isinstance(title, str): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1012 illegal_value(title, 'title', 'quickPlot') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1013 title = None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1014 if xlim is not None and not isinstance(xlim, (tuple, list)) and len(xlim) != 2: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1015 illegal_value(xlim, 'xlim', 'quickPlot') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1016 xlim = None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1017 if ylim is not None and not isinstance(ylim, (tuple, list)) and len(ylim) != 2: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1018 illegal_value(ylim, 'ylim', 'quickPlot') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1019 ylim = None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1020 if xlabel is not None and not isinstance(xlabel, str): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1021 illegal_value(xlabel, 'xlabel', 'quickPlot') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1022 xlabel = None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1023 if ylabel is not None and not isinstance(ylabel, str): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1024 illegal_value(ylabel, 'ylabel', 'quickPlot') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1025 ylabel = None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1026 if legend is not None and not isinstance(legend, (tuple, list)): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1027 illegal_value(legend, 'legend', 'quickPlot') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1028 legend = None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1029 if path is not None and not isinstance(path, str): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1030 illegal_value(path, 'path', 'quickPlot') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1031 return | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1032 if not isinstance(show_grid, bool): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1033 illegal_value(show_grid, 'show_grid', 'quickPlot') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1034 return | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1035 if not isinstance(save_fig, bool): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1036 illegal_value(save_fig, 'save_fig', 'quickPlot') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1037 return | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1038 if not isinstance(save_only, bool): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1039 illegal_value(save_only, 'save_only', 'quickPlot') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1040 return | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1041 if not isinstance(clear, bool): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1042 illegal_value(clear, 'clear', 'quickPlot') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1043 return | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1044 if not isinstance(block, bool): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1045 illegal_value(block, 'block', 'quickPlot') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1046 return | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1047 if title is None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1048 title = 'quick plot' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1049 # else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1050 # title = re.sub(r"\s+", '_', title) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1051 if name is None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1052 ttitle = re.sub(r"\s+", '_', title) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1053 if path is None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1054 path = f'{ttitle}.png' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1055 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1056 path = f'{path}/{ttitle}.png' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1057 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1058 if path is None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1059 path = name | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1060 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1061 path = f'{path}/{name}' | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1062 if clear: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1063 plt.close(fig=title) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1064 args = unwrap_tuple(args) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1065 if depth_tuple(args) > 1 and (xerr is not None or yerr is not None): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1066 logging.warning('Error bars ignored form multiple curves') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1067 if not save_only: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1068 if block: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1069 plt.ioff() | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1070 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1071 plt.ion() | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1072 plt.figure(title) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1073 if depth_tuple(args) > 1: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1074 for y in args: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1075 plt.plot(*y, **kwargs) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1076 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1077 if xerr is None and yerr is None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1078 plt.plot(*args, **kwargs) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1079 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1080 plt.errorbar(*args, xerr=xerr, yerr=yerr, **kwargs) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1081 if vlines is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1082 for v in vlines: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1083 plt.axvline(v, color='r', linestyle='--', **kwargs) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1084 # if vlines is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1085 # for s in tuple(([x, x], list(plt.gca().get_ylim())) for x in vlines): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1086 # plt.plot(*s, color='red', **kwargs) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1087 if xlim is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1088 plt.xlim(xlim) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1089 if ylim is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1090 plt.ylim(ylim) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1091 if xlabel is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1092 plt.xlabel(xlabel) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1093 if ylabel is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1094 plt.ylabel(ylabel) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1095 if show_grid: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1096 ax = plt.gca() | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1097 ax.grid(color='k')#, linewidth=1) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1098 if legend is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1099 plt.legend(legend) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1100 if save_only: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1101 plt.savefig(path) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1102 plt.close(fig=title) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1103 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1104 if save_fig: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1105 plt.savefig(path) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1106 if block: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1107 plt.show(block=block) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1108 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1109 def selectArrayBounds(a, x_low=None, x_upp=None, num_x_min=None, ask_bounds=False, | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1110 title='select array bounds'): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1111 """Interactively select the lower and upper data bounds for a numpy array. | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1112 """ | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1113 if isinstance(a, (tuple, list)): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1114 a = np.array(a) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1115 if not isinstance(a, np.ndarray) or a.ndim != 1: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1116 illegal_value(a.ndim, 'array type or dimension', 'selectArrayBounds') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1117 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1118 len_a = len(a) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1119 if num_x_min is None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1120 num_x_min = 1 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1121 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1122 if num_x_min < 2 or num_x_min > len_a: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1123 logging.warning('Illegal value for num_x_min in selectArrayBounds, input ignored') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1124 num_x_min = 1 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1125 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1126 # Ask to use current bounds | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1127 if ask_bounds and (x_low is not None or x_upp is not None): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1128 if x_low is None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1129 x_low = 0 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1130 if not is_int(x_low, 0, len_a-num_x_min): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1131 illegal_value(x_low, 'x_low', 'selectArrayBounds') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1132 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1133 if x_upp is None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1134 x_upp = len_a | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1135 if not is_int(x_upp, x_low+num_x_min, len_a): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1136 illegal_value(x_upp, 'x_upp', 'selectArrayBounds') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1137 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1138 quickPlot((range(len_a), a), vlines=(x_low,x_upp), title=title) | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1139 if not input_yesno(f'\nCurrent array bounds: [{x_low}, {x_upp}] '+ | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1140 'use these values (y/n)?', 'y'): | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1141 x_low = None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1142 x_upp = None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1143 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1144 clearPlot(title) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1145 return x_low, x_upp | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1146 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1147 if x_low is None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1148 x_min = 0 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1149 x_max = len_a | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1150 x_low_max = len_a-num_x_min | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1151 while True: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1152 quickPlot(range(x_min, x_max), a[x_min:x_max], title=title) | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1153 zoom_flag = input_yesno('Set lower data bound (y) or zoom in (n)?', 'y') | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1154 if zoom_flag: | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1155 x_low = input_int(' Set lower data bound', 0, x_low_max) | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1156 break | 
| 63 
98a83f03d91b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a9ebbfca439737ae17ddcb0df84408155f964877"
 rv43 parents: 
56diff
changeset | 1157 else: | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1158 x_min = input_int(' Set lower zoom index', 0, x_low_max) | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1159 x_max = input_int(' Set upper zoom index', x_min+1, x_low_max+1) | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1160 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1161 if not is_int(x_low, 0, len_a-num_x_min): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1162 illegal_value(x_low, 'x_low', 'selectArrayBounds') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1163 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1164 if x_upp is None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1165 x_min = x_low+num_x_min | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1166 x_max = len_a | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1167 x_upp_min = x_min | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1168 while True: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1169 quickPlot(range(x_min, x_max), a[x_min:x_max], title=title) | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1170 zoom_flag = input_yesno('Set upper data bound (y) or zoom in (n)?', 'y') | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1171 if zoom_flag: | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1172 x_upp = input_int(' Set upper data bound', x_upp_min, len_a) | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1173 break | 
| 63 
98a83f03d91b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a9ebbfca439737ae17ddcb0df84408155f964877"
 rv43 parents: 
56diff
changeset | 1174 else: | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1175 x_min = input_int(' Set upper zoom index', x_upp_min, len_a-1) | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1176 x_max = input_int(' Set upper zoom index', x_min+1, len_a) | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1177 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1178 if not is_int(x_upp, x_low+num_x_min, len_a): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1179 illegal_value(x_upp, 'x_upp', 'selectArrayBounds') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1180 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1181 print(f'lower bound = {x_low} (inclusive)\nupper bound = {x_upp} (exclusive)]') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1182 quickPlot((range(len_a), a), vlines=(x_low,x_upp), title=title) | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1183 if not input_yesno('Accept these bounds (y/n)?', 'y'): | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1184 x_low, x_upp = selectArrayBounds(a, None, None, num_x_min, title=title) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1185 clearPlot(title) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1186 return x_low, x_upp | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1187 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1188 def selectImageBounds(a, axis, low=None, upp=None, num_min=None, | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1189 title='select array bounds'): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1190 """Interactively select the lower and upper data bounds for a 2D numpy array. | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1191 """ | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1192 if isinstance(a, np.ndarray): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1193 if a.ndim != 2: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1194 illegal_value(a.ndim, 'array dimension', 'selectImageBounds') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1195 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1196 elif isinstance(a, (tuple, list)): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1197 if len(a) != 2: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1198 illegal_value(len(a), 'array dimension', 'selectImageBounds') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1199 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1200 if len(a[0]) != len(a[1]) or not (isinstance(a[0], (tuple, list, np.ndarray)) and | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1201 isinstance(a[1], (tuple, list, np.ndarray))): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1202 logging.error(f'Illegal array type in selectImageBounds ({type(a[0])} {type(a[1])})') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1203 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1204 a = np.array(a) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1205 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1206 illegal_value(a, 'array type', 'selectImageBounds') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1207 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1208 if axis < 0 or axis >= a.ndim: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1209 illegal_value(axis, 'axis', 'selectImageBounds') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1210 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1211 low_save = low | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1212 upp_save = upp | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1213 num_min_save = num_min | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1214 if num_min is None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1215 num_min = 1 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1216 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1217 if num_min < 2 or num_min > a.shape[axis]: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1218 logging.warning('Illegal input for num_min in selectImageBounds, input ignored') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1219 num_min = 1 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1220 if low is None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1221 min_ = 0 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1222 max_ = a.shape[axis] | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1223 low_max = a.shape[axis]-num_min | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1224 while True: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1225 if axis: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1226 quickImshow(a[:,min_:max_], title=title, aspect='auto', | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1227 extent=[min_,max_,a.shape[0],0]) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1228 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1229 quickImshow(a[min_:max_,:], title=title, aspect='auto', | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1230 extent=[0,a.shape[1], max_,min_]) | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1231 zoom_flag = input_yesno('Set lower data bound (y) or zoom in (n)?', 'y') | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1232 if zoom_flag: | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1233 low = input_int(' Set lower data bound', 0, low_max) | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1234 break | 
| 63 
98a83f03d91b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a9ebbfca439737ae17ddcb0df84408155f964877"
 rv43 parents: 
56diff
changeset | 1235 else: | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1236 min_ = input_int(' Set lower zoom index', 0, low_max) | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1237 max_ = input_int(' Set upper zoom index', min_+1, low_max+1) | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1238 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1239 if not is_int(low, 0, a.shape[axis]-num_min): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1240 illegal_value(low, 'low', 'selectImageBounds') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1241 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1242 if upp is None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1243 min_ = low+num_min | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1244 max_ = a.shape[axis] | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1245 upp_min = min_ | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1246 while True: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1247 if axis: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1248 quickImshow(a[:,min_:max_], title=title, aspect='auto', | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1249 extent=[min_,max_,a.shape[0],0]) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1250 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1251 quickImshow(a[min_:max_,:], title=title, aspect='auto', | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1252 extent=[0,a.shape[1], max_,min_]) | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1253 zoom_flag = input_yesno('Set upper data bound (y) or zoom in (n)?', 'y') | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1254 if zoom_flag: | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1255 upp = input_int(' Set upper data bound', upp_min, a.shape[axis]) | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1256 break | 
| 63 
98a83f03d91b
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit a9ebbfca439737ae17ddcb0df84408155f964877"
 rv43 parents: 
56diff
changeset | 1257 else: | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1258 min_ = input_int(' Set upper zoom index', upp_min, a.shape[axis]-1) | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1259 max_ = input_int(' Set upper zoom index', min_+1, a.shape[axis]) | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1260 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1261 if not is_int(upp, low+num_min, a.shape[axis]): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1262 illegal_value(upp, 'upp', 'selectImageBounds') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1263 return None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1264 bounds = (low, upp) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1265 a_tmp = np.copy(a) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1266 a_tmp_max = a.max() | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1267 if axis: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1268 a_tmp[:,bounds[0]] = a_tmp_max | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1269 a_tmp[:,bounds[1]-1] = a_tmp_max | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1270 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1271 a_tmp[bounds[0],:] = a_tmp_max | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1272 a_tmp[bounds[1]-1,:] = a_tmp_max | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1273 print(f'lower bound = {low} (inclusive)\nupper bound = {upp} (exclusive)') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1274 quickImshow(a_tmp, title=title) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1275 del a_tmp | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1276 if not input_yesno('Accept these bounds (y/n)?', 'y'): | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1277 bounds = selectImageBounds(a, axis, low=low_save, upp=upp_save, num_min=num_min_save, | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1278 title=title) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1279 return bounds | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1280 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1281 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1282 class Config: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1283 """Base class for processing a config file or dictionary. | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1284 """ | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1285 def __init__(self, config_file=None, config_dict=None): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1286 self.config = {} | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1287 self.load_flag = False | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1288 self.suffix = None | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1289 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1290 # Load config file | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1291 if config_file is not None and config_dict is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1292 logging.warning('Ignoring config_dict (both config_file and config_dict are specified)') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1293 if config_file is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1294 self.loadFile(config_file) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1295 elif config_dict is not None: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1296 self.loadDict(config_dict) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1297 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1298 def loadFile(self, config_file): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1299 """Load a config file. | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1300 """ | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1301 if self.load_flag: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1302 logging.warning('Overwriting any previously loaded config file') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1303 self.config = {} | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1304 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1305 # Ensure config file exists | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1306 if not os.path.isfile(config_file): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1307 logging.error(f'Unable to load {config_file}') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1308 return | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1309 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1310 # Load config file (for now for Galaxy, allow .dat extension) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1311 self.suffix = os.path.splitext(config_file)[1] | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1312 if self.suffix == '.yml' or self.suffix == '.yaml' or self.suffix == '.dat': | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1313 with open(config_file, 'r') as f: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1314 self.config = yaml.safe_load(f) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1315 elif self.suffix == '.txt': | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1316 with open(config_file, 'r') as f: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1317 lines = f.read().splitlines() | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1318 self.config = {item[0].strip():literal_eval(item[1].strip()) for item in | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1319 [line.split('#')[0].split('=') for line in lines if '=' in line.split('#')[0]]} | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1320 else: | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1321 illegal_value(self.suffix, 'config file extension', 'Config.loadFile') | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1322 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1323 # Make sure config file was correctly loaded | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1324 if isinstance(self.config, dict): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1325 self.load_flag = True | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1326 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1327 logging.error(f'Unable to load dictionary from config file: {config_file}') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1328 self.config = {} | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1329 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1330 def loadDict(self, config_dict): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1331 """Takes a dictionary and places it into self.config. | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1332 """ | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1333 if self.load_flag: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1334 logging.warning('Overwriting the previously loaded config file') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1335 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1336 if isinstance(config_dict, dict): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1337 self.config = config_dict | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1338 self.load_flag = True | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1339 else: | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1340 illegal_value(config_dict, 'dictionary config object', 'Config.loadDict') | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1341 self.config = {} | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1342 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1343 def saveFile(self, config_file): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1344 """Save the config file (as a yaml file only right now). | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1345 """ | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1346 suffix = os.path.splitext(config_file)[1] | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1347 if suffix != '.yml' and suffix != '.yaml': | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1348 illegal_value(suffix, 'config file extension', 'Config.saveFile') | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1349 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1350 # Check if config file exists | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1351 if os.path.isfile(config_file): | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1352 logging.info(f'Updating {config_file}') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1353 else: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1354 logging.info(f'Saving {config_file}') | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1355 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1356 # Save config file | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1357 with open(config_file, 'w') as f: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1358 yaml.safe_dump(self.config, f) | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1359 | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1360 def validate(self, pars_required, pars_missing=None): | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1361 """Returns False if any required keys are missing. | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1362 """ | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1363 if not self.load_flag: | 
| 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1364 logging.error('Load a config file prior to calling Config.validate') | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1365 | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1366 def validate_nested_pars(config, par): | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1367 par_levels = par.split(':') | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1368 first_level_par = par_levels[0] | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1369 try: | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1370 first_level_par = int(first_level_par) | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1371 except: | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1372 pass | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1373 try: | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1374 next_level_config = config[first_level_par] | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1375 if len(par_levels) > 1: | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1376 next_level_par = ':'.join(par_levels[1:]) | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1377 return validate_nested_pars(next_level_config, next_level_par) | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1378 else: | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1379 return True | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1380 except: | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1381 return False | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1382 | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1383 pars_missing = [p for p in pars_required if not validate_nested_pars(self.config, p)] | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1384 if len(pars_missing) > 0: | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1385 logging.error(f'Missing item(s) in configuration: {", ".join(pars_missing)}') | 
| 49 
26f99fdd8d61
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 4f7738d02f4a3fd91373f43937ed311b6fe11a12"
 rv43 parents: diff
changeset | 1386 return False | 
| 65 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1387 else: | 
| 
f31ef7bfb430
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
 rv43 parents: 
63diff
changeset | 1388 return True | 
