<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">from MinMax import *
from math import log

class SimStorage:

    def __init__(self, strDir):
        self.strMyDoc = "C:\\Documents and Settings\\Mike\\My Documents\\"
        if(strDir == ""):
            strDir = "213_hw\\poisson\\"
        self.strMyDir = self.strMyDoc+strDir
        self.m_scales = [100.0, 100.0, 100.0]

    def __clamper(self, val):
        if(val &gt; self.fClamp):
            return self.fClamp
        if(val &lt; -self.fClamp):
            return -self.fClamp
        return val

    def __NearPow__(self):
	return lambda fVal: 10**int(log(fVal)/log(10))
        
    def convertData(self, strPrefix, strNumber):
        self.m_scales = [100.0, 100.0, 100.0]
        xFile = open(self.strMyDir+"x."+strNumber)
        xVals = map(lambda strX: float(strX), xFile.readlines())
        xFile.close()
        yFile = open(self.strMyDir+"y."+strNumber)
        yVals = map(lambda strY: float(strY), yFile.readlines())
        yFile.close()
        datFile = open(self.strMyDir+strPrefix+"."+strNumber)
        datVals = map(lambda strX: float(strX), datFile.readlines())
        self.datVals = datVals
        datFile.close()
        self.formattedTriples = map(lambda j: map(lambda i: [xVals[i], yVals[j], datVals[j*len(xVals)+i]], range(0, len(xVals))), range(0, len(yVals)))
        self.currTriples = reduce(lambda x,y: x+y, self.formattedTriples, [])
        self.myMinMax = MinMax(3)
        reduce(lambda x,y: x.accumVal(y), self.currTriples, self.myMinMax)
        print 'Ranges are '+`self.myMinMax.getRange()`
        self.nX = len(xVals)
        self.nY = len(yVals)
        print 'nX is '+`self.nX`
        print 'nY is '+`self.nY`
        return

    def convertDataClamp(self, strPrefix, strNumber, fClamp):
        self.m_scales = [100.0, 100.0, 100.0]
        self.fClamp = fClamp
        xFile = open(self.strMyDir+"x."+strNumber)
        xVals = map(lambda strX: float(strX), xFile.readlines())
        xFile.close()
        yFile = open(self.strMyDir+"y."+strNumber)
        yVals = map(lambda strY: float(strY), yFile.readlines())
        yFile.close()
        datFile = open(self.strMyDir+strPrefix+"."+strNumber)
        datVals = map(lambda strX: float(strX), datFile.readlines())
        datVals = map(lambda val: self.__clamper(val), datVals)
        datFile.close()
        self.formattedTriples = map(lambda j: map(lambda i: [xVals[i], yVals[j], datVals[i*len(yVals)+j]], range(0, len(xVals))), range(0, len(yVals)))
        self.currTriples = reduce(lambda x,y: x+y, self.formattedTriples, [])
        self.myMinMax = MinMax(3)
        reduce(lambda x,y: x.accumVal(y), self.currTriples, self.myMinMax)
        print 'Ranges are '+`self.myMinMax.getRange()`
        self.nX = len(xVals)
        self.nY = len(yVals)
        return

    def merge(self, mergeWith):
        tmp1 = self.formattedTriples
        tmp2 = mergeWith.formattedTriples
        l1, l2 = len(tmp1), len(tmp1[0])
        tmp1 = map(lambda i: map(lambda j: tmp1[i][j]+tmp2[i][j][2:], range(0, l2)), range(0, l1))
        self.formattedTriples = tmp1
        self.currTriples = reduce(lambda x,y: x+y, self.formattedTriples, [])
        self.myMinMax = MinMax(len(self.currTriples[0]))
        reduce(lambda x,y: x.accumVal(y), self.currTriples, self.myMinMax)
        print 'Ranges are '+`self.myMinMax.getRange()`
        return self


                               
            
</pre></body></html>