annotate plotter.py @ 0:a6f0d355b05f draft

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