ezmsg.simbiophys.oscillator#

Oscillator/sinusoidal signal generators.

Classes

class SinGenerator(*args, settings=None, **kwargs)[source]#

Bases: BaseClockDrivenUnit[SinGeneratorSettings, SinProducer]

Generates sinusoidal waveforms synchronized to clock ticks.

Receives timing from INPUT_CLOCK (LinearAxis from Clock) and outputs sinusoidal AxisArray on OUTPUT_SIGNAL.

Parameters:

settings (Settings | None)

SETTINGS#

alias of SinGeneratorSettings

class SinGeneratorSettings(fs, n_time=None, n_ch=1, freq=1.0, amp=1.0, phase=0.0)[source]#

Bases: ClockDrivenSettings

Settings for SinGenerator.

Parameters:
n_ch: int = 1#

Number of channels to output.

freq: Union[float, Buffer, _SupportsArray[dtype[Any]], _NestedSequence[_SupportsArray[dtype[Any]]], complex, bytes, str, _NestedSequence[complex | bytes | str]] = 1.0#

The frequency of the sinusoid, in Hz. Scalar or per-channel array.

amp: Union[float, Buffer, _SupportsArray[dtype[Any]], _NestedSequence[_SupportsArray[dtype[Any]]], complex, bytes, str, _NestedSequence[complex | bytes | str]] = 1.0#

The amplitude of the sinusoid. Scalar or per-channel array.

phase: Union[float, Buffer, _SupportsArray[dtype[Any]], _NestedSequence[_SupportsArray[dtype[Any]]], complex, bytes, str, _NestedSequence[complex | bytes | str]] = 0.0#

The initial phase of the sinusoid, in radians. Scalar or per-channel array.

__init__(fs, n_time=None, n_ch=1, freq=1.0, amp=1.0, phase=0.0)#
Parameters:
Return type:

None

fs: float#

Output sampling rate in Hz.

class SinGeneratorState[source]#

Bases: ClockDrivenState

State for SinGenerator.

template: AxisArray | None = None#
ang_freq: ndarray | None = None#
amp: ndarray | None = None#
phase: ndarray | None = None#
class SinProducer(*args, **kwargs)[source]#

Bases: BaseClockDrivenProducer[SinGeneratorSettings, SinGeneratorState]

Generates sinusoidal waveforms synchronized to clock ticks.

Each clock tick produces a block of sinusoidal data based on the sample rate (fs) and chunk size (n_time) settings.

class SpiralGenerator(*args, settings=None, **kwargs)[source]#

Bases: BaseClockDrivenUnit[SpiralGeneratorSettings, SpiralProducer]

Generates 2D spiral motion synchronized to clock ticks.

Receives timing from INPUT_CLOCK (LinearAxis from Clock) and outputs 2D position AxisArray (x, y) on OUTPUT_SIGNAL.

The spiral pattern has both radius and angle varying over time: - Radius oscillates sinusoidally (breathing in/out) - Angle increases linearly (rotation)

Parameters:

settings (Settings | None)

SETTINGS#

alias of SpiralGeneratorSettings

class SpiralGeneratorSettings(fs, n_time=None, r_mean=150.0, r_amp=50.0, radial_freq=0.1, radial_phase=0.0, angular_freq=0.25, angular_phase=0.0)[source]#

Bases: ClockDrivenSettings

Settings for SpiralGenerator.

Generates 2D position (x, y) following a spiral pattern where both the radius and angle change over time.

The parametric equations are:

r(t) = r_mean + r_amp * sin(2*π*radial_freq*t + radial_phase) θ(t) = 2*π*angular_freq*t + angular_phase x(t) = r(t) * cos(θ(t)) y(t) = r(t) * sin(θ(t))

Parameters:
r_mean: float = 150.0#

Mean radius of the spiral.

r_amp: float = 50.0#

Amplitude of the radial oscillation.

radial_freq: float = 0.1#

Frequency of the radial oscillation in Hz.

radial_phase: float = 0.0#

Initial phase of the radial oscillation in radians.

angular_freq: float = 0.25#

Frequency of the angular rotation in Hz.

angular_phase: float = 0.0#

Initial angular phase in radians.

__init__(fs, n_time=None, r_mean=150.0, r_amp=50.0, radial_freq=0.1, radial_phase=0.0, angular_freq=0.25, angular_phase=0.0)#
Parameters:
Return type:

None

fs: float#

Output sampling rate in Hz.

class SpiralGeneratorState[source]#

Bases: ClockDrivenState

State for SpiralGenerator.

template: AxisArray | None = None#
class SpiralProducer(*args, **kwargs)[source]#

Bases: BaseClockDrivenProducer[SpiralGeneratorSettings, SpiralGeneratorState]

Generates spiral motion synchronized to clock ticks.

Each clock tick produces a block of 2D position data (x, y) following a spiral pattern where both radius and angle change over time.

class SpiralGeneratorSettings(fs, n_time=None, r_mean=150.0, r_amp=50.0, radial_freq=0.1, radial_phase=0.0, angular_freq=0.25, angular_phase=0.0)[source]#

Bases: ClockDrivenSettings

Settings for SpiralGenerator.

Generates 2D position (x, y) following a spiral pattern where both the radius and angle change over time.

The parametric equations are:

r(t) = r_mean + r_amp * sin(2*π*radial_freq*t + radial_phase) θ(t) = 2*π*angular_freq*t + angular_phase x(t) = r(t) * cos(θ(t)) y(t) = r(t) * sin(θ(t))

Parameters:
r_mean: float = 150.0#

Mean radius of the spiral.

r_amp: float = 50.0#

Amplitude of the radial oscillation.

radial_freq: float = 0.1#

Frequency of the radial oscillation in Hz.

radial_phase: float = 0.0#

Initial phase of the radial oscillation in radians.

angular_freq: float = 0.25#

Frequency of the angular rotation in Hz.

angular_phase: float = 0.0#

Initial angular phase in radians.

__init__(fs, n_time=None, r_mean=150.0, r_amp=50.0, radial_freq=0.1, radial_phase=0.0, angular_freq=0.25, angular_phase=0.0)#
Parameters:
Return type:

None

fs: float#

Output sampling rate in Hz.

class SpiralGeneratorState[source]#

Bases: ClockDrivenState

State for SpiralGenerator.

template: AxisArray | None = None#
class SpiralProducer(*args, **kwargs)[source]#

Bases: BaseClockDrivenProducer[SpiralGeneratorSettings, SpiralGeneratorState]

Generates spiral motion synchronized to clock ticks.

Each clock tick produces a block of 2D position data (x, y) following a spiral pattern where both radius and angle change over time.

class SpiralGenerator(*args, settings=None, **kwargs)[source]#

Bases: BaseClockDrivenUnit[SpiralGeneratorSettings, SpiralProducer]

Generates 2D spiral motion synchronized to clock ticks.

Receives timing from INPUT_CLOCK (LinearAxis from Clock) and outputs 2D position AxisArray (x, y) on OUTPUT_SIGNAL.

The spiral pattern has both radius and angle varying over time: - Radius oscillates sinusoidally (breathing in/out) - Angle increases linearly (rotation)

Parameters:

settings (Settings | None)

SETTINGS#

alias of SpiralGeneratorSettings

class SinGeneratorSettings(fs, n_time=None, n_ch=1, freq=1.0, amp=1.0, phase=0.0)[source]#

Bases: ClockDrivenSettings

Settings for SinGenerator.

Parameters:
n_ch: int = 1#

Number of channels to output.

freq: Union[float, Buffer, _SupportsArray[dtype[Any]], _NestedSequence[_SupportsArray[dtype[Any]]], complex, bytes, str, _NestedSequence[complex | bytes | str]] = 1.0#

The frequency of the sinusoid, in Hz. Scalar or per-channel array.

amp: Union[float, Buffer, _SupportsArray[dtype[Any]], _NestedSequence[_SupportsArray[dtype[Any]]], complex, bytes, str, _NestedSequence[complex | bytes | str]] = 1.0#

The amplitude of the sinusoid. Scalar or per-channel array.

phase: Union[float, Buffer, _SupportsArray[dtype[Any]], _NestedSequence[_SupportsArray[dtype[Any]]], complex, bytes, str, _NestedSequence[complex | bytes | str]] = 0.0#

The initial phase of the sinusoid, in radians. Scalar or per-channel array.

__init__(fs, n_time=None, n_ch=1, freq=1.0, amp=1.0, phase=0.0)#
Parameters:
Return type:

None

fs: float#

Output sampling rate in Hz.

class SinGeneratorState[source]#

Bases: ClockDrivenState

State for SinGenerator.

template: AxisArray | None = None#
ang_freq: ndarray | None = None#
amp: ndarray | None = None#
phase: ndarray | None = None#
class SinProducer(*args, **kwargs)[source]#

Bases: BaseClockDrivenProducer[SinGeneratorSettings, SinGeneratorState]

Generates sinusoidal waveforms synchronized to clock ticks.

Each clock tick produces a block of sinusoidal data based on the sample rate (fs) and chunk size (n_time) settings.

class SinGenerator(*args, settings=None, **kwargs)[source]#

Bases: BaseClockDrivenUnit[SinGeneratorSettings, SinProducer]

Generates sinusoidal waveforms synchronized to clock ticks.

Receives timing from INPUT_CLOCK (LinearAxis from Clock) and outputs sinusoidal AxisArray on OUTPUT_SIGNAL.

Parameters:

settings (Settings | None)

SETTINGS#

alias of SinGeneratorSettings