ventilationtimeseries
Overview
Represents the processing of ventilation time series data for further computations.
This class is designed to handle, manipulate, and process ventilation time series data provided as input. It validates the data, ensures it conforms to the expected formats, and executes transformations or auxiliary methods as necessary. It inherits from the AuxiliaryMethod base class and relies heavily on specific keys and ventilation structures for its operations.
Key facts
Method key:
VentilationTimeSeries
Requirements
Required keys (specify in objects)
ventilation_column
Optional keys (specify in objects)
idarea[m2]height[m]
Required data (specify in data)
ventilation[W K-1]
Optional data (specify in data)
None
Outputs
Summary metrics
None
Timeseries columns
None
Public methods
generate
def generate(self, obj, data): ventilation = obj.get(O.VENTILATION) is_numeric = False try: ventilation = float(ventilation) is_numeric = True except ValueError: pass if is_numeric and not isinstance(ventilation, str): return VentilationConstant().generate(obj, data) return self.run(**self.get_input_data(obj, data))
get_input_data
def get_input_data(self, obj, data): ventilation_key = obj.get(O.VENTILATION) ventilation_ts = data.get(ventilation_key) input_data = { O.ID: obj.get(O.ID, None), O.AREA: obj.get(O.AREA, Const.DEFAULT_AREA.value), O.HEIGHT: obj.get(O.HEIGHT, Const.DEFAULT_HEIGHT.value), O.VENTILATION_COL: obj.get(O.VENTILATION_COL, None), O.VENTILATION: ventilation_ts, O.VENTILATION_FACTOR: obj.get(O.VENTILATION_FACTOR, DEFAULT_VENTILATION_FACTOR), } return input_data
run
def run(self, **kwargs): object_id = kwargs[O.ID] area = kwargs[O.AREA] height = kwargs[O.HEIGHT] ventilation = kwargs[O.VENTILATION] col = kwargs[O.VENTILATION_COL] col = col if isinstance(col, str) else str(object_id) unit = col.split("[")[-1].split("]")[0] try: ts = ventilation.loc[:, col] except KeyError as err: raise Warning( f"Neither explicit (column name) or implicit (column id) are specified." f"Given input column: {col}" ) from err match unit: case "1/h": ventilation = ts * area * height * AIR_DENSITY * HEAT_CAPACITY / 3600 case "m3/h": ventilation = ts * AIR_DENSITY * HEAT_CAPACITY / 3600 case "W/K": ventilation = ts case _: log.warning('No unit given. "1/h" assumed as unit.') ventilation = ts * area * height * AIR_DENSITY * HEAT_CAPACITY / 3600 # Match the dtype of the constant/inactive paths so downstream # consumers (e.g. the R1C1 numba wrapper) get a zero-copy view. return pd.DataFrame({O.VENTILATION: ventilation.astype(np.float32, copy=False)}, index=ventilation.index)