Source code for analyzer.modules.common.column_tools
from analyzer.core.analysis_modules import AnalyzerModule
import re
from analyzer.core.columns import addSelection
from analyzer.core.columns import Column
from analyzer.utils.structure_tools import flatten
from analyzer.core.analysis_modules import ParameterSpec, ModuleParameterSpec
import awkward as ak
import itertools as it
from attrs import define, field, evolve
from .axis import RegularAxis
from .histogram_builder import makeHistogram
from analyzer.core.adl import ADLBlock, ADLStatement
import correctionlib
import logging
from analyzer.core.analysis_modules import (
MetadataExpr,
MetadataAnd,
IsRun,
IsSampleType,
)
[docs]
logger = logging.getLogger("analyzer.modules")
@define
[docs]
class Count(AnalyzerModule):
[docs]
def run(self, columns, params):
columns[self.output_col] = ak.num(columns[self.input_col], axis=1)
return columns, []
[docs]
def outputs(self, metadata):
return [self.output_col]
@define
@define
[docs]
class Concatenate(AnalyzerModule):
[docs]
def run(self, columns, params):
columns[self.output_col] = ak.concatenate(
[columns[c] for c in self.input_cols], axis=1
)
return columns, []
[docs]
def outputs(self, metadata):
return [self.output_col]
[docs]
def adlExport(self, metadata):
input_names = [c.adl_name for c in self.input_cols]
union_expr = "union(" + ", ".join(input_names) + ")"
return [
ADLBlock(
block_type="object",
name=self.output_col.adl_name,
statements=[ADLStatement("take", union_expr)]
)
]