annotate plotter.py @ 0:f4e143b7eb06 draft

Imported from capsule None
author devteam
date Mon, 28 Jul 2014 11:30:28 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
1 #!/usr/bin/env python
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
2
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
3 # python histogram input_file output_file column bins
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
4 import sys, os
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
5 import matplotlib; matplotlib.use('Agg')
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
6
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
7 from pylab import *
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
8
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
9 assert sys.version_info[:2] >= ( 2, 4 )
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
10
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
11 def stop_err(msg):
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
12 sys.stderr.write(msg)
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
13 sys.exit()
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
14
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
15 if __name__ == '__main__':
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
16 # parse the arguments
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
17
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
18 if len(sys.argv) != 6:
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
19 stop_err('Usage: python histogram.py input_file column bins output_file style')
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
20 sys.exit()
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
21
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
22 mode = sys.argv[5]
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
23 HIST = mode == 'hist'
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
24 try:
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
25 col = int(float(sys.argv[2]))
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
26 if HIST:
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
27 bin = int(float(sys.argv[3]))
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
28 else:
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
29 # hack, this parameter is the plotting style for scatter plots
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
30 if sys.argv[3] == 'P':
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
31 style = 'o'
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
32 elif sys.argv[3] == 'LP':
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
33 style = 'o-'
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
34 else:
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
35 style = '-'
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
36
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
37 except:
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
38 msg = 'Parameter were not numbers %s, %s' % (sys.argv[3], sys.argv[4])
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
39 stop_err(msg)
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
40
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
41 # validate arguments
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
42 inp_file = sys.argv[1]
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
43 out_file = sys.argv[4]
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
44
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
45 if HIST:
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
46 print "Histogram on column %s (%s bins)" % (col, bin)
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
47 else:
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
48 print "Scatterplot on column %s" % (col)
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
49
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
50 xcol= col -1
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
51 # read the file
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
52 values = []
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
53 try:
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
54 count = 0
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
55 for line in file(inp_file):
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
56 count += 1
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
57 line = line.strip()
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
58 if line and line[0] != '#':
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
59 values.append(float(line.split()[xcol]))
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
60 except Exception, e:
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
61 stop_err('%s' % e)
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
62 stop_err("Non numerical data at line %d, column %d" % (count, col) )
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
63
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
64 # plot the data
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
65
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
66 if HIST:
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
67 n, bins, patches = hist(values, bins=bin, normed=0)
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
68 else:
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
69 plot(values, style)
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
70
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
71 xlabel('values')
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
72 ylabel('counts')
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
73
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
74 if HIST:
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
75 title('Histogram of values over column %s (%s bins)' % (col, len(bins)) )
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
76 else:
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
77 title('Scatterplot over column %s' % col )
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
78 grid(True)
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
79
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
80 # the plotter detects types by file extension
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
81 png_out = out_file + '.png' # force it to png
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
82 savefig(png_out)
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
83
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
84 # shuffle it back and clean up
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
85 data = file(png_out, 'rb').read()
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
86 fp = open(out_file, 'wb')
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
87 fp.write(data)
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
88 fp.close()
f4e143b7eb06 Imported from capsule None
devteam
parents:
diff changeset
89 os.remove(png_out)