annotate tests/run-tests.py @ 11:566e42c97532

Uploaded tarball. Testing automated tests.
author nick
date Tue, 10 Sep 2013 13:00:28 -0400
parents db6f217dc45a
children 97b772e3a0f1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
1 #!/usr/bin/env python
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
2 import os
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
3 import sys
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
4 import subprocess
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
5
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
6 DATASETS = [
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
7 'artificial',
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
8 'artificial-samples',
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
9 'artificial-nofilt',
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
10 'real',
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
11 'real-mit',
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
12 'real-mit-s',
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
13 'real-nofilt',
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
14 ]
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
15 IN_EXT = '.vcf.in'
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
16 OUT_EXT = '.csv.out'
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
17 ARGS_KEY = '##comment="ARGS='
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
18
11
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
19 XML = {
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
20 'tests_start':' <tests>',
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
21 'test_start': ' <test>',
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
22 'input': ' <param name="input" value="tests/%s" />',
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
23 'param': ' <param name="%s" value="%s" />',
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
24 'output': ' <output name="output" file="tests/%s" />',
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
25 'test_end': ' </test>',
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
26 'tests_end': ' </tests>',
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
27 }
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
28 PARAMS = {
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
29 '-f':'freq',
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
30 '-c':'covg',
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
31 '-H':'header',
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
32 '-s':'stranded',
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
33 '-n':'nofilt',
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
34 '-r':'seed',
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
35 }
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
36 PARAM_ARG = {
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
37 '-f':True,
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
38 '-c':True,
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
39 '-H':False,
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
40 '-s':False,
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
41 '-n':False,
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
42 '-r':True,
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
43 }
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
44
10
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
45 def main():
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
46
11
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
47 do_print_xml = False
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
48 if len(sys.argv) > 1:
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
49 if sys.argv[1] == '-x':
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
50 do_print_xml = True
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
51 else:
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
52 sys.stderr.write("Error: unrecognized option '"+sys.argv[1]+"'\n")
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
53 sys.exit(1)
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
54
10
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
55 test_dir = os.path.dirname(os.path.relpath(sys.argv[0]))
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
56 if test_dir:
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
57 test_dir += os.sep
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
58
11
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
59 if do_print_xml:
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
60 print XML.get('tests_start')
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
61
10
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
62 for dataset in DATASETS:
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
63 infile = test_dir+dataset+IN_EXT
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
64 outfile = test_dir+dataset+OUT_EXT
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
65
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
66 if not os.path.exists(infile):
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
67 sys.stderr.write("Error: file not found: "+infile+"\n")
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
68 continue
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
69 if not os.path.exists(outfile):
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
70 sys.stderr.write("Error: file not found: "+outfile+"\n")
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
71 continue
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
72
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
73 options = read_options(infile)
11
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
74 if do_print_xml:
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
75 print_xml(infile, outfile, options, XML, PARAMS, PARAM_ARG)
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
76 else:
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
77 run_tests(infile, outfile, options)
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
78
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
79 if do_print_xml:
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
80 print XML.get('tests_end')
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
81
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
82
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
83 def run_tests(infile, outfile, options):
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
84 script_cmd = 'allele-counts.py '+options+' -i '+infile
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
85 bash_cmd = 'diff '+outfile+' <('+script_cmd+')'
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
86 print script_cmd
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
87 subprocess.call(['bash', '-c', bash_cmd])
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
88
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
89
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
90 def print_xml(infile, outfile, options_str, xml, params, param_arg):
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
91 infile = os.path.basename(infile)
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
92 outfile = os.path.basename(outfile)
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
93
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
94 options = options_str.split() # on whitespace
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
95
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
96 print xml.get('test_start')
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
97 print xml.get('input') % infile
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
98
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
99 i = 0
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
100 while i < len(options):
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
101 opt = options[i]
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
102 if not params.has_key(opt) or not param_arg.has_key(opt):
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
103 sys.stderr.write("Error: unknown option '"+opt+"' in ARGS list in file "
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
104 +infile+"\n")
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
105 sys.exit(1)
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
106 if param_arg[opt]:
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
107 i+=1
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
108 arg = options[i]
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
109 print xml.get('param') % (params[opt], arg)
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
110 else:
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
111 print xml.get('param') % (params[opt], opt)
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
112 i+=1
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
113
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
114 print xml.get('output') % outfile
566e42c97532 Uploaded tarball.
nick
parents: 10
diff changeset
115 print xml.get('test_end')
10
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
116
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
117
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
118 def read_options(infile):
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
119 with open(infile, 'r') as infilehandle:
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
120 for line in infilehandle:
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
121 line.strip()
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
122 if ARGS_KEY == line[:len(ARGS_KEY)]:
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
123 return line[len(ARGS_KEY):-2]
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
124 return ''
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
125
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
126
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
127 if __name__ == '__main__':
db6f217dc45a Uploaded tarball.
nick
parents:
diff changeset
128 main()