Source code for iocbio.kinetics.calc.composer
from .generic import AnalyzerGeneric
from .generic import Stats
from collections import OrderedDict
from PyQt5.QtCore import pyqtSignal, QObject
class AnalyzerComposeSignals(QObject):
sigUpdate = pyqtSignal()
[docs]class AnalyzerCompose(AnalyzerGeneric):
"""Generic analyzer consisting of sub-analyzers"""
def __init__(self):
AnalyzerGeneric.__init__(self, None, None)
self.analyzers = OrderedDict()
self.signals = AnalyzerComposeSignals()
def add_analyzer(self, key, analyzer):
self.analyzers[key] = analyzer
self.analyzers[key].signals.sigUpdate.connect(self._update_stats)
self.analyzers[key].signals.sigUpdate.connect(self.signals.sigUpdate)
self._update_stats()
def list_analyzers(self):
return list(self.analyzers.keys())
def fit(self):
for key, a in self.analyzers.items():
a.fit()
def remove(self):
for key, a in self.analyzers.items():
a.remove()
def update(self):
for key, a in self.analyzers.items():
a.update()
def update_data(self, data):
for key, a in self.analyzers.items():
a.update_data(data)
def update_event(self, event_name):
for key, a in self.analyzers.items():
a.update_event(event_name)
def _update_stats(self):
self.stats = {}
for key, a in self.analyzers.items():
for sk, sv in a.stats.items():
self.stats[key + ": " + sk] = Stats(key + ": " + sv.human, sv.unit, sv.value)