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"}]
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()
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()
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))
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
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']}]
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 __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 __init__(self): self.stat = RunningStat() self.timeStat = RunningStat() self.lastRecordingTime = 0 self.averagePoints = 10 self.errorBars = 'Min Max'
def __setstate__(self, state): self.__dict__.update(state) self.stat = RunningStatHistogram() self.timeStat = RunningStat()
def __init__(self): self.stat = RunningStatHistogram() self.timeStat = RunningStat() self.lastRecordingTime = 0 self.MaxRecordingInterval = Q(300, 's')
def resize(self, length): self.beginResetModel() del self.stats[0:] self.stats += [RunningStat() for _ in range(length)] self.endResetModel()