Source code for bspump.matrix.matrixexportcsvgenerator

import collections
import logging

from ..abc.generator import Generator
from .sessionmatrix import SessionMatrix
from .timewindowmatrix import TimeWindowMatrix


L = logging.getLogger(__name__)


[docs] class TimeWindowMatrixExportCSVGenerator(Generator):
[docs] def process(self, context, event): assert isinstance(event, TimeWindowMatrix) def generate(time_window_matrix): for i in range(time_window_matrix.Array.shape[0]): row_id = time_window_matrix.get_row_name(i) if row_id is None: continue for j in range(0, time_window_matrix.Dimensions[0]): event = collections.OrderedDict() event["id"] = row_id event["timestamp"] = ( time_window_matrix.Start + j * time_window_matrix.Resolution ) for k in range(0, time_window_matrix.Dimensions[1]): field_name = "value_{}".format(k) event[field_name] = time_window_matrix.Array[i, j, k] yield event return generate(event)
[docs] class SessionMatrixExportCSVGenerator(Generator):
[docs] def process(self, context, event): assert isinstance(event, SessionMatrix) def generate(session_matrix): for i in range(0, session_matrix.Array.shape[0]): event = collections.OrderedDict() row_id = session_matrix.get_row_name(i) if row_id is None: continue event["id"] = row_id for name in session_matrix.Array.dtype.names: if session_matrix.Array.dtype[name].shape == (): event[name] = session_matrix.Array[name][i] else: for j in range(0, session_matrix.Array.dtype[name].shape[0]): for k in range( 0, session_matrix.Array.dtype[name].shape[1] ): field_name = "{}_{}_{}".format(name, j, k) if session_matrix.Array.dtype[name].subdtype[ 0 ].kind in ["f", "u", "i", "b"]: value = "{0:.10f}".format( session_matrix.Array[name][i, j, k] ) else: value = session_matrix.Array[name][i, j, k] event[field_name] = value yield event return generate(event)