Source code for alphatwirl.summary.Reader

# Tai Sakuma <tai.sakuma@gmail.com>
import logging

from .WeightCalculatorOne import WeightCalculatorOne

##__________________________________________________________________||
[docs]class Reader(object):
[docs] def __init__(self, keyValComposer, summarizer, nextKeyComposer=None, weightCalculator=WeightCalculatorOne(), nevents=None): self.keyValComposer = keyValComposer self.summarizer = summarizer self.weightCalculator = weightCalculator self.nextKeyComposer = nextKeyComposer self.nevents = nevents self.ievent = 0
def __repr__(self): return '{}(keyValComposer={!r}, summarizer={!r}, weightCalculator={!r}, nextKeyComposer={!r}, nevents={!r})'.format( self.__class__.__name__, self.keyValComposer, self.summarizer, self.weightCalculator, self.nextKeyComposer, self.nevents ) def begin(self, event): self.keyValComposer.begin(event) def event(self, event): if self.nevents is not None and self.nevents <= self.ievent: return self.ievent += 1 try: keyvals = self.keyValComposer(event) except Exception as e: logger = logging.getLogger(__name__) logger.error(e) logger.error(self) raise weight = self.weightCalculator(event) for key, val in keyvals: self.summarizer.add(key=key, val=val, weight=weight) def end(self): if self.nextKeyComposer is None: return for key in sorted(self.summarizer.keys()): nextKeys = self.nextKeyComposer(key) for nextKey in nextKeys: self.summarizer.add_key(nextKey) def merge(self, other): self.summarizer += other.summarizer def results(self): return self.summarizer
##__________________________________________________________________||