from csv import * from Controller import * from Tkinter import * # Needed for class Var class FloatVar: def __init__(self, name, L): self.list = L self.name = StringVar() self.name.set(name) self.nVal = StringVar() self.minVal = DoubleVar() self.maxVal = DoubleVar() self.rangeVal = DoubleVar() self.meanVal = DoubleVar() self.medianVal = DoubleVar() self.modeVal = DoubleVar() self.varianceVal = DoubleVar() self.stdDevVal = DoubleVar() self.set(name, L) def set(self, name, L2): self.list = L2 L = filter(isNumeric, L2) if (len(L) < 1): self.nVal.set("No Numeric Entries") self.minVal.set(0) self.maxVal.set(0) self.meanVal.set(0) self.medianVal.set(0) self.rangeVal.set(0) self.varianceVal.set(0) self.stdDevVal.set(0) else: self.nVal.set(str(len(L)) + " of " + str(len(L2))) self.minVal.set(min(L)) self.maxVal.set(max(L)) self.rangeVal.set(max(L) - min(L)) self.meanVal.set(mean(L)) self.medianVal.set(median(L)) self.varianceVal.set(variance(L)) self.stdDevVal.set(variance(L)**0.5) self.name.set(name) self.modeVal.set(mode(L2)) return 1 def buildList(fn): fileHandle = open ( fn, 'r' ) sniff = Sniffer() readFile = reader(fileHandle, dialect='excel') L = [] for row in readFile: if (len(row) > 0): # Ignore empty lines L.append(row) L2 = [] for i in range(0, len(L[0])): L2.append([]) for j in range(0, len(L)): if isNumeric(L[j][i]): L2[i].append(float(L[j][i])) else: L2[i].append(L[j][i]) fileHandle.seek(0) if not(sniff.has_header(fileHandle.read())): for i in range(len(L2)): L2[i].insert(0, "Field " + str(i)) # Insert temp field names fileHandle.close() return L2 def readListFromStdin(): nums = [] atof = string.atof nums = map(atof, sys.stdin.readlines()) return nums