Source code for alphatwirl.configure.TableConfigCompleter

# Tai Sakuma <tai.sakuma@gmail.com>
import os
from .TableFileNameComposer import TableFileNameComposer
from ..summary import Count, WeightCalculatorOne

##__________________________________________________________________||
[docs]class TableConfigCompleter(object): """ an example complete config:: tblcfg = { 'keyAttrNames': ('met_pt',), 'binnings': (MockBinning(),), 'keyIndices': None 'valAttrNames' : None, 'valIndices' : None, 'keyOutColumnNames': ('met_pt',), 'valOutColumnNames': ('n', 'nvar'), 'weight': MockWeight(), 'summaryClass': Count, 'sort': True, 'outFile': True, 'outFileName': 'tbl_n_component_met_pt.txt', 'outFilePath': '/tmp/tbl_n_component_met_pt.txt', } """ def __init__(self, defaultSummaryClass = Count, defaultWeight = WeightCalculatorOne(), defaultOutDir = '.', createOutFileName = TableFileNameComposer()): self.defaultSummaryClass = defaultSummaryClass self.defaultWeight = defaultWeight self.defaultOutDir = defaultOutDir self.createOutFileName = createOutFileName def __repr__(self): name_value_pairs = ( ('defaultSummaryClass', self.defaultSummaryClass), ('defaultWeight', self.defaultWeight), ('defaultOutDir', self.defaultOutDir), ('createOutFileName', self.createOutFileName), ) return '{}({})'.format( self.__class__.__name__, ', '.join(['{} = {!r}'.format(n, v) for n, v in name_value_pairs]), )
[docs] def complete(self, tblcfg): ret = tblcfg.copy() if 'keyAttrNames' not in ret: ret['keyAttrNames'] = ( ) if 'binnings' not in ret: ret['binnings'] = None use_defaultSummaryClass = 'summaryClass' not in ret if use_defaultSummaryClass: ret['summaryClass'] = self.defaultSummaryClass if 'keyOutColumnNames' not in ret: ret['keyOutColumnNames'] = ret['keyAttrNames'] if 'keyIndices' not in ret: ret['keyIndices'] = None if 'valAttrNames' not in ret: ret['valAttrNames'] = None if 'valOutColumnNames' not in ret: if use_defaultSummaryClass: ret['valOutColumnNames'] = ('n', 'nvar') else: ret['valOutColumnNames'] = ret['valAttrNames'] if ret['valAttrNames'] is not None else () if 'valIndices' not in ret: ret['valIndices'] = None if 'outFile' not in ret: ret['outFile'] = True if 'weight' not in ret: ret['weight'] = self.defaultWeight if 'sort' not in ret: ret['sort'] = True if 'nevents' not in ret: ret['nevents'] = None if ret['outFile']: if 'outFileName' not in ret: if use_defaultSummaryClass: ret['outFileName'] = self.createOutFileName( ret['keyOutColumnNames'], ret['keyIndices'] ) else: keyOutColumnNames = ret['keyOutColumnNames'] if ret['keyOutColumnNames'] is not None else () keyIndices = ret['keyIndices'] if ret['keyIndices'] is not None else (None, )*len(keyOutColumnNames) valOutColumnNames = ret['valOutColumnNames'] if ret['valOutColumnNames'] is not None else () valIndices = ret['valIndices'] if ret['valIndices'] is not None else (None, )*len(valOutColumnNames) ret['outFileName'] = self.createOutFileName( keyOutColumnNames + valOutColumnNames, keyIndices + valIndices, prefix = 'tbl_{}'.format(ret['summaryClass'].__name__) ) if 'outFilePath' not in ret: ret['outFilePath'] = os.path.join(self.defaultOutDir, ret['outFileName']) return ret
##__________________________________________________________________||