+ return result
+
+def Average(data_sets, u=1):
+ avg = odict.odict()
+ for t in data_sets:
+ for p in t:
+ if p[0] in avg:
+ avg[p[0]][0] += p[u]
+ avg[p[0]][1] += 1
+ else:
+ avg.update({p[0] : [p[u], 1]})
+
+ for a in avg.keys():
+ avg[a] = float(avg[a][0]) / float(avg[a][1])
+ return sorted(avg.items(), key = lambda e : e[0])
+
+def Plot(*args):
+ gnuplot.plot(args)
+
+def FitTCS(data):
+ pass
+
+def FullWidthAtHalfMax(data, u=1):
+ maxval = max(data, key = lambda e : e[u])
+ peak = data.index(maxval)
+ maxval = maxval[0]
+ lhs = None
+ rhs = None
+ for i in range(1, len(data)/2):
+ if lhs == None:
+ if (peak-i > 0 and data[peak-i] < 0.50*maxval):
+ lhs = data[peak-i][u]
+ if rhs == None:
+ if (peak+i < len(data) and data[peak+i] < 0.50*maxval):
+ rhs = peak+i
+ if lhs != None and rhs != None:
+ break
+ if rhs == None or lhs == None:
+ return abs(data[len(data)-1][0] - data[0][0])
+ else:
+ return abs(rhs - lhs)
+
+def SaveData(filename, data):
+ out = open(filename, "w", 0)
+ for a in data:
+ out.write(str(a[0]) + "\t" + str(a[1]) + "\n")
+
+
+def main():
+ if (len(sys.argv) < 2):
+ sys.stderr.write(sys.argv[0] + " - Require arguments (filename)\n")