예제 #1
0
class DynamicDecimation:
    name = 'Dynamic'
    def __init__(self):
        self.stat = RunningStatHistogram()
        self.timeStat = RunningStat()
        self.lastRecordingTime = 0
        self.MaxRecordingInterval = Q(300, 's')
        
    def decimate(self, takentime, value, callback):
        self.stat.add( value )
        self.timeStat.add( takentime )
        if takentime-self.lastRecordingTime > self.MaxRecordingInterval.m_as('s') or len(self.stat.histogram)>2:
            self.lastRecordingTime = takentime
            meanVal, minVal, maxVal = self.stat.mean, self.stat.min, self.stat.max
            timeVal = self.timeStat.mean 
            self.stat.clear()
            self.timeStat.clear()
            callback( (timeVal, meanVal, minVal, maxVal) )
    
    def __getstate__(self):
        odict = self.__dict__.copy()
        del odict['stat']
        del odict['timeStat']
        return odict
    
    def __setstate__(self, state):
        self.__dict__.update(state)
        self.stat = RunningStatHistogram()
        self.timeStat = RunningStat()
        
    def paramDef(self):
        return [{'name': 'max gap', 'type': 'magnitude', 'object': self, 'field': 'MaxRecordingInterval', 'value': self.MaxRecordingInterval, 'tip': "max time without recording"}]
예제 #2
0
class AverageView(Form, Base):
    def __init__(self, config, parentname, parent=None, zero=0):
        Form.__init__(self)
        Base.__init__(self, parent)
        self.config = config
        self.configname = 'AverageView.' + parentname
        self.stat = RunningStat(zero)

    def setupUi(self, parent):
        Form.setupUi(self, parent)
        # History and Dictionary
        self.clearButton.clicked.connect(self.onClear)
        self.update()

    def update(self):
        """"update the output
        """
        self.countLabel.setText(str(self.stat.count))
        mean, stderr = self.stat.mean, self.stat.stderr
        self.averageLabel.setText(str(roundToStdDev(mean, stderr)))
        self.stddevLabel.setText(str(roundToNDigits(stderr, 2)))

    def onClear(self):
        self.stat.clear()
        self.update()

    def add(self, value):
        """add value to the mean and stddev or stderr
        """
        self.stat.add(value)
        self.update()
예제 #3
0
class AverageView(Form, Base ):
    def __init__(self,config,parentname,parent=None,zero=0):
        Form.__init__(self)
        Base.__init__(self, parent)
        self.config = config
        self.configname = 'AverageView.'+parentname
        self.stat = RunningStat(zero)

    def setupUi(self, parent):
        Form.setupUi(self, parent)
        # History and Dictionary
        self.clearButton.clicked.connect( self.onClear )
        self.update()
    
    def update(self):
        """"update the output
        """
        self.countLabel.setText( str(self.stat.count) )
        mean, stderr = self.stat.mean, self.stat.stderr
        self.averageLabel.setText( str(roundToStdDev(mean, stderr)) )
        self.stddevLabel.setText( str(roundToNDigits(stderr, 2)) )
    
    def onClear(self):
        self.stat.clear()
        self.update()
        
    def add(self, value):
        """add value to the mean and stddev or stderr
        """
        self.stat.add(value)
        self.update()
예제 #4
0
 def onAverageChanged(self, state ):
     self.settings.average = state == QtCore.Qt.Checked
     self.stat = [RunningStat()] * 4
     if not self.settings.average:
         self.numPointsLabel.setText("")
     else:
         self.numPointsLabel.setText("{0} points".format(self.stat[0].count))
예제 #5
0
 def __init__(self, config, name, parent=None):
     DedicatedDisplayForm.__init__(self)
     DedicatedDisplayBase.__init__(self, parent)
     self.config = config
     self.name = name
     self._values = [0]*8
     self.configName = "DedicatedDisplay." + self.name
     self.settings = self.config.get(self.configName, Settings())
     self.stat = [RunningStat()] * 4
예제 #6
0
class Average:
    name = "Average"
    def __init__(self):
        self.stat = RunningStat()
        self.timeStat = RunningStat()
        self.lastRecordingTime = 0
        self.averagePoints = 10
        self.errorBars = 'Min Max'
        
    def decimate(self, takentime, value, callback):
        self.stat.add( value )
        self.timeStat.add( takentime )
        if self.stat.count>=self.averagePoints:
            self.lastRecordingTime = takentime
            self.doCallback(callback)
            
    def doCallback(self, callback):
        if self.errorBars == 'Stddev':
            e = self.stat.stddev
            meanVal, minVal, maxVal = self.stat.mean, self.stat.mean-e, self.stat.mean+e
        elif self.errorBars == 'Stderr':
            e = self.stat.stderr
            meanVal, minVal, maxVal = self.stat.mean, self.stat.mean-e, self.stat.mean+e
        else:   
            meanVal, minVal, maxVal = self.stat.mean, self.stat.min, self.stat.max
        timeVal = self.timeStat.mean 
        self.stat.clear()
        self.timeStat.clear()
        callback( (timeVal, meanVal, minVal, maxVal) )
    
    def __getstate__(self):
        odict = self.__dict__.copy()
        del odict['stat']
        del odict['timeStat']
        return odict
    
    def __setstate__(self, state):
        self.__dict__.update(state)
        self.stat = RunningStat()
        self.timeStat = RunningStat()
        
    def paramDef(self):
        return [{'name': 'points', 'type': 'int', 'object': self, 'field': 'averagePoints', 'value': self.averagePoints, 'tip': "points to average"},
                {'name': 'Error bars', 'type': 'list', 'object': self, 'field': 'errorBars', 'value': self.errorBars, 'tip': 'what is shown as error bars', 'values': ['Min Max', 'Stddev', 'Stderr']}]
예제 #7
0
 def __init__(self, config, parentname, parent=None, zero=0):
     Form.__init__(self)
     Base.__init__(self, parent)
     self.config = config
     self.configname = 'AverageView.' + parentname
     self.stat = RunningStat(zero)
예제 #8
0
 def __init__(self,config,parentname,parent=None,zero=0):
     Form.__init__(self)
     Base.__init__(self, parent)
     self.config = config
     self.configname = 'AverageView.'+parentname
     self.stat = RunningStat(zero)
예제 #9
0
 def __init__(self):
     self.stat = RunningStat()
     self.timeStat = RunningStat()
     self.lastRecordingTime = 0
     self.averagePoints = 10
     self.errorBars = 'Min Max'
예제 #10
0
 def __setstate__(self, state):
     self.__dict__.update(state)
     self.stat = RunningStatHistogram()
     self.timeStat = RunningStat()
예제 #11
0
 def __init__(self):
     self.stat = RunningStatHistogram()
     self.timeStat = RunningStat()
     self.lastRecordingTime = 0
     self.MaxRecordingInterval = Q(300, 's')
예제 #12
0
 def resize(self, length):
     self.beginResetModel()
     del self.stats[0:]
     self.stats += [RunningStat() for _ in range(length)]
     self.endResetModel()