Source code for ezmsg.event.sparse
from dataclasses import replace
import typing
import numpy as np
import ezmsg.core as ez
from ezmsg.sigproc.base import GenAxisArray
from ezmsg.util.generator import consumer
from ezmsg.util.messages.axisarray import AxisArray
[docs]
@consumer
def to_dense() -> typing.Generator[AxisArray, AxisArray, None]:
msg_out = AxisArray(np.array([]), dims=[""])
while True:
msg_in: AxisArray = yield msg_out
if hasattr(msg_in.data, "todense"):
msg_out = replace(msg_in, data=msg_in.data.todense())
else:
msg_out = msg_in
[docs]
class DensifySettings(ez.Settings):
pass
[docs]
class Densify(GenAxisArray):
""":obj:`Unit` for :obj:`bandpower`."""
SETTINGS = DensifySettings
[docs]
def construct_generator(self):
self.STATE.gen = to_dense()