Source code for sigfeat.base.source

"""Implements abstract Source base class"""

import abc
import six
from .parameter import ParameterMixin, Parameter
from .metadata import MetadataMixin


[docs]@six.add_metaclass(abc.ABCMeta) class Source(ParameterMixin, MetadataMixin): """Base Source Class. The parameters are mandatory for all kinds of sources. Every source must implement a ``.generate()`` method returning a generator that yields the signal blocks. Source must have samplerate and channels as metadata. Parameters ---------- blocksize : int overlap : int samplerate : scalar channels : int """ blocksize = Parameter(default=1024) overlap = Parameter(default=0) def __init__(self, **parameters): self.unroll_parameters(parameters) self.add_metadata('samplerate', None) self.add_metadata('channels', None) self.fetch_metadata_as_attrs() def __iter__(self): return self.generate()
[docs] @abc.abstractmethod def generate(self): """Override this method. It must yield ``data``. Usually ``data = (block, index)`` """ return NotImplemented