import re # Regular expressions - for removing comments
import odict #ordered dictionary
-def main():
-
- if (len(sys.argv) != 2):
- sys.stderr.write(sys.argv[0] + " - Require 1 argument (filename)\n")
- return 1
+import Gnuplot, Gnuplot.funcutils
+
+gnuplot = Gnuplot.Gnuplot()
- input_file = open(sys.argv[1], "r")
- data = odict.odict([])
+def GetData(filename):
+ input_file = open(filename, "r")
+ data = []
for line in input_file:
line = re.sub("#.*", "", line).strip("\r\n ")
if len(line) == 0:
continue
- line = line.split("\t")
- #sys.stdout.write(str(line))
- if float(line[1]) in data:
- data[float(line[1])].append(float(line[2]))
- else:
- data[float(line[1])] = [float(line[2])]
+ data.append(map(lambda e : float(e), line.split("\t")))
+ return data
-
- for dac in data.keys():
- avg = sum(data[dac], 0.0) / len(data[dac])
- data[dac] = avg
+def GetTCS(data):
+ result = []
+ n = 0
+ dI = 0
+ dE = 0
+ for i in range(2, len(data)-1):
+ dE = data[i+1][1] - data[i-1][1]
+ if (dE != 0):
+ n = 0
+ dI = 0
+
+ n += 1
+ dI += data[i+1][2] - data[i-1][2]
+ if (dE != 0):
+ result.append([data[i][1], dI / (n * dE)])
+ return result
+def Plot(*args):
+ gnuplot.plot(args)
+
+def FitTCS(data):
+
- result = []
- for i in range(0, len(data.keys())-1):
- dE = data.keys()[i+1] - data.keys()[i]
- dI = data[data.keys()[i+1]] - data[data.keys()[i]]
- result.append((data.keys()[i], dI/dE))
- sys.stdout.write(str(data.keys()[i]) + "\t" + str(data[data.keys()[i]]) + "\t" + str(dI/dE) + "\n")
- #for dac in data:
- # sys.stdout.write(str(dac) + "\t" + str(data[dac]) + "\n")
+def main():
+
+ if (len(sys.argv) < 2):
+ sys.stderr.write(sys.argv[0] + " - Require arguments (filename)\n")
+ return 1
+ tcs = []
+ gnuplot("set style data lp")
+ for i in range(1, len(sys.argv)):
+ tcs.append(GetTCS(GetData(sys.argv[i])))
+ if (len(tcs[i-1]) > 0):
+ gnuplot.replot(tcs[i-1])
+
+
+ print("Press enter to exit")
+ sys.stdin.readline()
+
return 0