Mercurial > repos > peterjc > mira4_assembler
annotate tools/mira4/mira4_validator.py @ 15:b0ffe0e7282b draft
Uploaded v0.0.2 preview 7, fixed bash syntax error
author | peterjc |
---|---|
date | Thu, 20 Feb 2014 05:07:19 -0500 |
parents | 626d5cfd01aa |
children |
rev | line source |
---|---|
6
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
1 #Called from the Galaxy Tool XML file |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
2 #import sys |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
3 |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
4 def validate_input(trans, error_map, param_values, page_param_map): |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
5 """Validates the min_size/max_size user input, before execution.""" |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
6 err_list = [] |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
7 for read_group in param_values["read_group"]: |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
8 err = dict() |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
9 segments = read_group["segments"] |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
10 if str(segments["type"]) != "paired": |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
11 err_list.append(dict()) |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
12 continue |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
13 |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
14 min_size = str(segments["min_size"]).strip() |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
15 max_size = str(segments["max_size"]).strip() |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
16 #sys.stderr.write("DEBUG min_size=%r, max_size=%r\n" % (min_size, max_size)) |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
17 |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
18 #Somehow Galaxy seems to turn an empty field into string "None"... |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
19 if min_size=="None": |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
20 min_size = "" |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
21 if max_size=="None": |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
22 max_size = "" |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
23 |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
24 if min_size=="" and max_size=="": |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
25 #Both missing is good |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
26 pass |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
27 elif min_size=="": |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
28 err["min_size"] = "Minimum size required if maximum size given" |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
29 elif max_size=="": |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
30 err["max_size"] = "Maximum size required if minimum size given" |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
31 |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
32 if min_size: |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
33 try: |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
34 min_size_int = int(min_size) |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
35 if min_size_int < 0: |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
36 err["min_size"] = "Minumum size must not be negative (%i)" % min_size_int |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
37 min_size = None # Avoid doing comparison below |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
38 except ValueError: |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
39 err["min_size"] = "Minimum size is not an integer (%s)" % min_size |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
40 min_size = None # Avoid doing comparison below |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
41 |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
42 if max_size: |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
43 try: |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
44 max_size_int = int(max_size) |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
45 if max_size_int< 0: |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
46 err["max_size"] = "Maximum size must not be negative (%i)" % max_size_int |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
47 max_size = None # Avoid doing comparison below |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
48 except ValueError: |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
49 err["max_size"] = "Maximum size is not an integer (%s)" % max_size |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
50 max_size = None # Avoid doing comparison below |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
51 |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
52 if min_size and max_size and min_size_int > max_size_int: |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
53 msg = "Minimum size must be less than maximum size (%i vs %i)" % (min_size_int, max_size_int) |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
54 err["min_size"] = msg |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
55 err["max_size"] = msg |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
56 |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
57 if err: |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
58 err_list.append({"segments":err}) |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
59 else: |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
60 err_list.append(dict()) |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
61 |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
62 if any(err_list): |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
63 #Return an error map only if any readgroup gave errors |
626d5cfd01aa
Uploaded v0.0.1 preview 6, support for fragment length (using mira4_validator.py)
peterjc
parents:
diff
changeset
|
64 error_map["read_group"] = err_list |