annotate msnc_tools.py @ 38:c09b8ee8f68f draft

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