diff --git a/b_asic/signal_generator.py b/b_asic/signal_generator.py index 4fbdc38853170f65ba736a4a508db85ba0c21b37..45706d812e78c1dfca1b4fcf751013c51bb50995 100644 --- a/b_asic/signal_generator.py +++ b/b_asic/signal_generator.py @@ -92,6 +92,8 @@ class Impulse(SignalGenerator): __slots__ = ("_delay",) + _delay: int + def __init__(self, delay: int = 0) -> None: self._delay = delay @@ -114,6 +116,8 @@ class Step(SignalGenerator): __slots__ = ("_delay",) + _delay: int + def __init__(self, delay: int = 0) -> None: self._delay = delay @@ -136,6 +140,8 @@ class Constant(SignalGenerator): __slots__ = ("_constant",) + _constant: complex + def __init__(self, constant: complex = 1.0) -> None: self._constant = constant @@ -158,6 +164,9 @@ class ZeroPad(SignalGenerator): __slots__ = ("_data", "_len") + _data: Sequence[complex] + _len: int + def __init__(self, data: Sequence[complex]) -> None: self._data = data self._len = len(data) @@ -183,7 +192,13 @@ class FromFile(SignalGenerator): Path to input file. """ - def __init__(self, path) -> None: + __slots__ = ("_data", "_len", "_path") + + _path: str + _data: List[Num] + _len: int + + def __init__(self, path: str) -> None: self._path = path data: List[Num] = np.loadtxt(path, dtype=complex).tolist() self._data = data @@ -211,6 +226,11 @@ class Sinusoid(SignalGenerator): The normalized phase offset. """ + __slots__ = ("_frequency", "_phase") + + _frequency: float + _phase: float + def __init__(self, frequency: float, phase: float = 0.0) -> None: self._frequency = frequency self._phase = phase @@ -242,6 +262,12 @@ class Gaussian(SignalGenerator): The standard deviation of the noise. """ + __slots__ = ("_rng", "_seed", "_loc", "_scale") + + _seed: Optional[int] + _loc: float + _scale: float + def __init__( self, seed: Optional[int] = None, loc: float = 0.0, scale: float = 1.0 ) -> None: @@ -281,6 +307,12 @@ class Uniform(SignalGenerator): The upper value of the uniform range. """ + __slots__ = ("_rng", "_seed", "_low", "_high") + + _seed: Optional[int] + _low: float + _high: float + def __init__( self, seed: Optional[int] = None, low: float = -1.0, high: float = 1.0 ) -> None: @@ -321,6 +353,11 @@ class Delay(SignalGenerator): The number of time units to delay the generated signal. """ + __slots__ = ("_delay", "_generator") + + _generator: SignalGenerator + _delay: int + def __init__(self, generator: SignalGenerator, delay: int = 1) -> None: self._generator = generator self._delay = delay @@ -337,6 +374,11 @@ class _AddGenerator(SignalGenerator): Signal generator that adds two signals. """ + __slots__ = ("_a", "_b") + + _a: SignalGenerator + _b: SignalGenerator + def __init__(self, a: SignalGenerator, b: SignalGenerator) -> None: self._a = a self._b = b @@ -353,6 +395,11 @@ class _SubGenerator(SignalGenerator): Signal generator that subtracts two signals. """ + __slots__ = ("_a", "_b") + + _a: SignalGenerator + _b: SignalGenerator + def __init__(self, a: SignalGenerator, b: SignalGenerator) -> None: self._a = a self._b = b @@ -369,6 +416,11 @@ class _MulGenerator(SignalGenerator): Signal generator that multiplies two signals. """ + __slots__ = ("_a", "_b") + + _a: SignalGenerator + _b: SignalGenerator + def __init__(self, a: SignalGenerator, b: SignalGenerator) -> None: self._a = a self._b = b @@ -395,6 +447,11 @@ class _DivGenerator(SignalGenerator): Signal generator that divides two signals. """ + __slots__ = ("_a", "_b") + + _a: SignalGenerator + _b: SignalGenerator + def __init__(self, a: SignalGenerator, b: SignalGenerator) -> None: self._a = a self._b = b @@ -436,6 +493,12 @@ class Upsample(SignalGenerator): The phase of the upsampling. """ + __slots__ = ("_generator", "_factor", "_phase") + + _generator: Union[SignalGenerator, Sequence[complex]] + _factor: int + _phase: int + def __init__( self, data: Union[SignalGenerator, Sequence[complex]], @@ -475,6 +538,12 @@ class Downsample(SignalGenerator): The phase of the downsampling. """ + __slots__ = ("_generator", "_factor", "_phase") + + _generator: Union[SignalGenerator, Sequence[complex]] + _factor: int + _phase: int + def __init__( self, data: Union[SignalGenerator, Sequence[complex]],