Source code for bspump.matrix.sessionmatrix

import logging

from .namedmatrix import NamedMatrix, PersistentNamedMatrix

###

L = logging.getLogger(__name__)

###


[docs] class SessionMatrix(NamedMatrix): ConfigDefaults = {"primary_name": "id"} """ Matrix, specific for `SessionAnalyzer`. """
[docs] def __init__(self, app, dtype="float_", id=None, config=None): if not isinstance(dtype, str): dtype = dtype[:] super().__init__(app, dtype=dtype, id=id, config=config) self.PrimaryName = self.Config["primary_name"]
[docs] def store(self, row_name: str, event): """ Store the event in the matrix. The event must prepared so that it matches a data type of the cell (dtype) """ row_index = self.get_row_index(row_name) if row_index is None: return False self.Array[row_index] = event
[docs] def store_event(self, row_index: int, event, keys=None): if keys is None: keys = event.keys() names = self.Array.dtype.names if names is None: L.warning("The matrix does not have correct column-like dtype") raise for key in keys: if key in names: self.Array[row_index][key] = event[key]
[docs] def decode_row(self, row_index: int, keys=None): if keys is None: keys = list(self.Array.dtype.names) if keys is None: L.warning("The matrix does not have correct column-like dtype") raise event = dict(zip(keys, self.Array[row_index][keys])) event[self.PrimaryName] = self.get_row_name(row_index) return event
[docs] class PersistentSessionMatrix(PersistentNamedMatrix): ConfigDefaults = {"primary_name": "id"}
[docs] def __init__(self, app, dtype="float_", id=None, config=None): if not isinstance(dtype, str): dtype = dtype[:] super().__init__(app, dtype=dtype, id=id, config=config) self.PrimaryName = self.Config["primary_name"]
[docs] def store(self, row_name: str, event): """ Store the event in the matrix. The event must prepared so that it matches a data type of the cell (dtype) """ row_index = self.get_row_index(row_name) if row_index is None: return False self.Array[row_index] = event
[docs] def store_event(self, row_index: int, event, keys=None): if keys is None: keys = event.keys() names = self.Array.dtype.names if names is None: L.warning("The matrix does not have correct column-like dtype") raise for key in keys: if key in names: self.Array[row_index][key] = event[key]
[docs] def decode_row(self, row_index: int, keys=None): if keys is None: keys = list(self.Array.dtype.names) if keys is None: L.warning("The matrix does not have correct column-like dtype") raise event = dict(zip(keys, self.Array[row_index][keys])) event[self.PrimaryName] = self.get_row_name(row_index) return event