annotate general.py @ 68:ba5866d0251d draft

"planemo upload for repository https://github.com/rolfverberg/galaxytools commit 3fde3e85030608a8a4d8e59308353b0144314dfe"
author rv43
date Fri, 19 Aug 2022 20:16:56 +0000
parents f31ef7bfb430
children fba792d5f83b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff changeset
316 if inset is not None:
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff 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: 63
diff changeset
318 False for i in inset]):
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
319 illegal_value(inset, 'inset', 'input_int')
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff changeset
340 if inset and v not in inset:
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff changeset
465 print(f'{i}')
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff 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: 63
diff 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: 63
diff changeset
475 def input_menu(items, default=None, header=None):
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff 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: 63
diff changeset
477 for i in items]:
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
478 illegal_value(items, 'items', 'input_menu')
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
479 return None
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
480 if default is not None:
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff 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: 63
diff 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: 63
diff changeset
483 return None
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
484 default_string = f' [{items.index(default)+1}]'
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
485 else:
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
486 default_string = ''
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
487 if header is None:
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff 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: 63
diff changeset
489 else:
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
490 print(f'{header} (1, {len(items)}){default_string}:')
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
491 for i, choice in enumerate(items):
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
492 print(f' {i+1}: {choice}')
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
493 try:
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
494 choice = input()
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
495 if isinstance(choice, str) and not len(choice):
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
496 choice = items.index(default)
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
497 print(f'{choice+1}')
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
498 else:
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
499 choice = literal_eval(choice)
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff 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: 63
diff changeset
501 choice -= 1
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
502 else:
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
503 raise ValueError
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
504 except (ValueError, TypeError, SyntaxError, MemoryError, RecursionError):
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
505 choice = None
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
506 except:
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
507 print('Unexpected error')
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
508 raise
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
509 if choice is None:
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff 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: 63
diff changeset
511 choice = input_menu(items, default)
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
512 return choice
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff 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: 63
diff 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: 63
diff changeset
543 ax.set_title(title)
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff changeset
631 return None, None
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
632 if num_index_ranges_max is not None:
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff 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: 63
diff changeset
634 if title is None:
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
635 title = 'select ranges of data'
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
636 elif not isinstance(title, str):
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
637 illegal(title, 'title')
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
638 title = ''
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff 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: 63
diff changeset
640 illegal(legend, 'legend')
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff changeset
696 # Set up matplotlib figure
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
697 plt.close('all')
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
698 fig, ax = plt.subplots()
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
699 plt.subplots_adjust(bottom=0.2)
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
700 draw_selections(ax)
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
701
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff changeset
706 # Set up confirm / clear range selection buttons
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff 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: 63
diff 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: 63
diff changeset
709 cid_confirm = confirm_b.on_clicked(confirm_selection)
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff 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: 63
diff changeset
712 # Show figure
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff 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: 63
diff changeset
715 # Disconnect callbacks when figure is closed
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
716 fig.canvas.mpl_disconnect(cid_click)
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
717 fig.canvas.mpl_disconnect(cid_release)
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
718 confirm_b.disconnect(cid_confirm)
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff 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):
68
ba5866d0251d "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 3fde3e85030608a8a4d8e59308353b0144314dfe"
rv43
parents: 65
diff changeset
742 illegal_value(path, 'path', 'findImageFiles')
49
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):
68
ba5866d0251d "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 3fde3e85030608a8a4d8e59308353b0144314dfe"
rv43
parents: 65
diff changeset
765 illegal_value(path, 'path', 'findImageFiles')
49
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:
68
ba5866d0251d "planemo upload for repository https://github.com/rolfverberg/galaxytools commit 3fde3e85030608a8a4d8e59308353b0144314dfe"
rv43
parents: 65
diff changeset
774 illegal_value(filetype, 'filetype', 'findImageFiles')
49
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: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff changeset
797 if use_input:
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff changeset
829 elif choice == 1:
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff changeset
845 if choice == 1:
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff changeset
1154 if zoom_flag:
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff 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: 63
diff changeset
1156 break
63
98a83f03d91b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit a9ebbfca439737ae17ddcb0df84408155f964877"
rv43
parents: 56
diff changeset
1157 else:
65
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff changeset
1171 if zoom_flag:
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff 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: 63
diff changeset
1173 break
63
98a83f03d91b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit a9ebbfca439737ae17ddcb0df84408155f964877"
rv43
parents: 56
diff changeset
1174 else:
65
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff changeset
1234 break
63
98a83f03d91b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit a9ebbfca439737ae17ddcb0df84408155f964877"
rv43
parents: 56
diff changeset
1235 else:
65
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff changeset
1256 break
63
98a83f03d91b "planemo upload for repository https://github.com/rolfverberg/galaxytools commit a9ebbfca439737ae17ddcb0df84408155f964877"
rv43
parents: 56
diff changeset
1257 else:
65
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff 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: 63
diff changeset
1365
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
1366 def validate_nested_pars(config, par):
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
1367 par_levels = par.split(':')
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
1368 first_level_par = par_levels[0]
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
1369 try:
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
1370 first_level_par = int(first_level_par)
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
1371 except:
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
1372 pass
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
1373 try:
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
1374 next_level_config = config[first_level_par]
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
1375 if len(par_levels) > 1:
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
1376 next_level_par = ':'.join(par_levels[1:])
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff 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: 63
diff changeset
1378 else:
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
1379 return True
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
1380 except:
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
1381 return False
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
1382
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff 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: 63
diff changeset
1384 if len(pars_missing) > 0:
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff 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: 63
diff changeset
1387 else:
f31ef7bfb430 "planemo upload for repository https://github.com/rolfverberg/galaxytools commit d55db09b45d0b542f966cef17892858bb55d94f7"
rv43
parents: 63
diff changeset
1388 return True