comparison tools/mira4_0/mira4_validator.py @ 4:1713289d9908 draft default tip

v0.0.11 tweak for use with bioconda dependencies
author peterjc
date Thu, 10 Aug 2017 11:09:10 -0400
parents 4eb32a3d67d1
children
comparison
equal deleted inserted replaced
3:a4f602cc3aa9 4:1713289d9908
1 #Called from the Galaxy Tool XML file 1 # Called from the Galaxy Tool XML file
2 #import sys 2 # import sys
3
3 4
4 def validate_input(trans, error_map, param_values, page_param_map): 5 def validate_input(trans, error_map, param_values, page_param_map):
5 """Validates the min_size/max_size user input, before execution.""" 6 """Validates the min_size/max_size user input, before execution."""
6 err_list = [] 7 err_list = []
7 for read_group in param_values["read_group"]: 8 for read_group in param_values["read_group"]:
11 err_list.append(dict()) 12 err_list.append(dict())
12 continue 13 continue
13 14
14 min_size = str(segments["min_size"]).strip() 15 min_size = str(segments["min_size"]).strip()
15 max_size = str(segments["max_size"]).strip() 16 max_size = str(segments["max_size"]).strip()
16 #sys.stderr.write("DEBUG min_size=%r, max_size=%r\n" % (min_size, max_size)) 17 # sys.stderr.write("DEBUG min_size=%r, max_size=%r\n" % (min_size, max_size))
17 18
18 #Somehow Galaxy seems to turn an empty field into string "None"... 19 # Somehow Galaxy seems to turn an empty field into string "None"...
19 if min_size=="None": 20 if min_size == "None":
20 min_size = "" 21 min_size = ""
21 if max_size=="None": 22 if max_size == "None":
22 max_size = "" 23 max_size = ""
23 24
24 if min_size=="" and max_size=="": 25 if min_size == "" and max_size == "":
25 #Both missing is good 26 # Both missing is good
26 pass 27 pass
27 elif min_size=="": 28 elif min_size == "":
28 err["min_size"] = "Minimum size required if maximum size given" 29 err["min_size"] = "Minimum size required if maximum size given"
29 elif max_size=="": 30 elif max_size == "":
30 err["max_size"] = "Maximum size required if minimum size given" 31 err["max_size"] = "Maximum size required if minimum size given"
31 32
32 if min_size: 33 if min_size:
33 try: 34 try:
34 min_size_int = int(min_size) 35 min_size_int = int(min_size)
35 if min_size_int < 0: 36 if min_size_int < 0:
36 err["min_size"] = "Minumum size must not be negative (%i)" % min_size_int 37 err["min_size"] = "Minumum size must not be negative (%i)" % min_size_int
37 min_size = None # Avoid doing comparison below 38 min_size = None # Avoid doing comparison below
38 except ValueError: 39 except ValueError:
39 err["min_size"] = "Minimum size is not an integer (%s)" % min_size 40 err["min_size"] = "Minimum size is not an integer (%s)" % min_size
40 min_size = None # Avoid doing comparison below 41 min_size = None # Avoid doing comparison below
41 42
42 if max_size: 43 if max_size:
43 try: 44 try:
44 max_size_int = int(max_size) 45 max_size_int = int(max_size)
45 if max_size_int< 0: 46 if max_size_int < 0:
46 err["max_size"] = "Maximum size must not be negative (%i)" % max_size_int 47 err["max_size"] = "Maximum size must not be negative (%i)" % max_size_int
47 max_size = None # Avoid doing comparison below 48 max_size = None # Avoid doing comparison below
48 except ValueError: 49 except ValueError:
49 err["max_size"] = "Maximum size is not an integer (%s)" % max_size 50 err["max_size"] = "Maximum size is not an integer (%s)" % max_size
50 max_size = None # Avoid doing comparison below 51 max_size = None # Avoid doing comparison below
51 52
52 if min_size and max_size and min_size_int > max_size_int: 53 if min_size and max_size and min_size_int > max_size_int:
53 msg = "Minimum size must be less than maximum size (%i vs %i)" % (min_size_int, max_size_int) 54 msg = "Minimum size must be less than maximum size (%i vs %i)" % (min_size_int, max_size_int)
54 err["min_size"] = msg 55 err["min_size"] = msg
55 err["max_size"] = msg 56 err["max_size"] = msg
56 57
57 if err: 58 if err:
58 err_list.append({"segments":err}) 59 err_list.append({"segments": err})
59 else: 60 else:
60 err_list.append(dict()) 61 err_list.append(dict())
61 62
62 if any(err_list): 63 if any(err_list):
63 #Return an error map only if any readgroup gave errors 64 # Return an error map only if any readgroup gave errors
64 error_map["read_group"] = err_list 65 error_map["read_group"] = err_list