annotate tools/validation/fix_errors_code.py @ 1:cdcb0ce84a1b

Uploaded
author xuebing
date Fri, 09 Mar 2012 19:45:15 -0500
parents 9071e359b9a3
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
1 # runs after the job (and after the default post-filter)
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
2
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
3 import pkg_resources
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
4 pkg_resources.require( "bx-python" )
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
5
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
6 from galaxy import datatypes, jobs, util
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
7 # needed to reference ParseError types, is this bad?
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
8 from bx.tabular.io import *
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
9 from bx.intervals.io import *
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
10 import sys, tempfile, os
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
11
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
12 def validate(incoming):
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
13 """Validator"""
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
14 #raise Exception, 'not quite right'
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
15 pass
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
16
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
17 def exec_before_job( app, inp_data, out_data, param_dict, tool=None):
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
18 """Build a temp file with errors in it"""
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
19 errors = []
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
20 for name, data in inp_data.items():
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
21 validation_errors = data.validation_errors
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
22 for error in validation_errors:
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
23 # build dummy class
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
24 try:
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
25 temp = eval(error.err_type)()
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
26 except:
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
27 temp = object()
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
28 # stuff attributes
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
29 temp.__dict__ = util.string_to_object( error.attributes )
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
30 errors.append(temp)
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
31 # There *should* only be 1 input, so we assume there is and continue
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
32 # base64 pickel
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
33 errors_str = util.object_to_string( errors )
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
34 # write
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
35 database_tmp = "./database/tmp" # globaly visible path
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
36 error_file = tempfile.NamedTemporaryFile(mode="w", dir=database_tmp, suffix=".b64")
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
37 error_file_name = error_file.name
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
38 error_file.close()
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
39 error_file = open(error_file_name, "w")
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
40 error_file.write(errors_str)
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
41 error_file.close()
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
42 param_dict["errorsfile"] = error_file_name
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
43
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
44
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
45 def exec_after_process( app, inp_data, out_data, param_dict, tool=None, stdout=None, stderr=None):
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
46 # in a perfect world, changes to param_dict would persist
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
47 # for now, unlink from tool
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
48 # os.unlink(param_dict["errorsfile"])
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
49 pass