Types¶
types ¶
Type definitions for MyoGen with Beartype validation.
This module provides type aliases for physical quantities, neural signals, and data structures used throughout MyoGen simulations. All types include runtime validation constraints using Beartype's vale system to ensure data integrity and dimensional correctness.
Type Categories
- Physical Quantities: Time, angles, electrical properties, lengths, velocities
- Signal Types: Neo-based analog signals and blocks for neural data
- Array Types: NumPy arrays for matrices and multi-dimensional data structures
Quantity__s
module-attribute
¶
Quantity__s: TypeAlias = __make_quantity_type(pq.s)
Physical quantity type for time in seconds.
Quantity__ms
module-attribute
¶
Quantity__ms: TypeAlias = __make_quantity_type(pq.ms)
Physical quantity type for time in milliseconds.
Quantity__rad
module-attribute
¶
Quantity__rad: TypeAlias = __make_quantity_type(pq.rad)
Physical quantity type for angles in radians.
Quantity__deg
module-attribute
¶
Quantity__deg: TypeAlias = __make_quantity_type(pq.deg)
Physical quantity type for angles in degrees.
Quantity__mV
module-attribute
¶
Quantity__mV: TypeAlias = __make_quantity_type(pq.mV)
Physical quantity type for electrical potential in millivolts.
Quantity__uV
module-attribute
¶
Quantity__uV: TypeAlias = __make_quantity_type(pq.uV)
Physical quantity type for electrical potential in microvolts.
Quantity__nA
module-attribute
¶
Quantity__nA: TypeAlias = __make_quantity_type(pq.nA)
Physical quantity type for electrical current in nanoamperes.
Quantity__uS
module-attribute
¶
Quantity__uS: TypeAlias = __make_quantity_type(pq.uS)
Physical quantity type for electrical conductance in microsiemens.
Quantity__S_per_m
module-attribute
¶
Quantity__S_per_m: TypeAlias = __make_quantity_type(pq.S / pq.m)
Physical quantity type for conductivity in siemens per meter.
Quantity__Hz
module-attribute
¶
Quantity__Hz: TypeAlias = __make_quantity_type(pq.Hz)
Physical quantity type for frequency in hertz.
Quantity__pps
module-attribute
¶
Quantity__pps: TypeAlias = __make_quantity_type(pps)
Physical quantity type for firing rate in pulses per second.
Quantity__mm
module-attribute
¶
Quantity__mm: TypeAlias = __make_quantity_type(pq.mm)
Physical quantity type for length in millimeters.
Quantity__m
module-attribute
¶
Quantity__m: TypeAlias = __make_quantity_type(pq.m)
Physical quantity type for length in meters.
Quantity__mm2
module-attribute
¶
Quantity__mm2: TypeAlias = __make_quantity_type(pq.mm ** 2)
Physical quantity type for area in square millimeters.
Quantity__per_mm2
module-attribute
¶
Quantity__per_mm2: TypeAlias = __make_quantity_type(pq.mm ** -2)
Physical quantity type for density per square millimeter.
Quantity__m_per_s
module-attribute
¶
Quantity__m_per_s: TypeAlias = __make_quantity_type(pq.m / pq.s)
Physical quantity type for velocity in meters per second.
Quantity__mm_per_s
module-attribute
¶
Quantity__mm_per_s: TypeAlias = __make_quantity_type(pq.mm / pq.s)
Physical quantity type for velocity in millimeters per second.
CURRENT__AnalogSignal
module-attribute
¶
CURRENT__AnalogSignal = Annotated[AnalogSignal, Is[lambda x: x.units == pq.nA and x.sampling_period.units == pq.s]]
Neo AnalogSignal for input currents in nanoamperes with time in seconds. Shape: (time_points, n_channels)
FORCE__AnalogSignal
module-attribute
¶
FORCE__AnalogSignal = Annotated[AnalogSignal, Is[lambda x: x.units == pq.dimensionless or x.units == pq.N]]
Neo AnalogSignal for force measurements in newtons or dimensionless units. Shape: (time_points, n_channels)
SPIKE_TRAIN__Block
module-attribute
¶
SPIKE_TRAIN__Block = Annotated[Block, Is[lambda x: isinstance(x, Block) and len(x.segments) > 0 and all((hasattr(seg, 'spiketrains')) for seg in (x.segments)) and all((len(seg.spiketrains) > 0) for seg in (x.segments))]]
Neo Block containing spike train data organized by motor unit pools. Structure: segments (motor pools) → spiketrains (individual neurons)
SURFACE_MUAP__Block
module-attribute
¶
SURFACE_MUAP__Block = Annotated[Block, Is[lambda x: isinstance(x, Block) and len(x.groups) > 0 and all(('ElectrodeArray_' in grp.name) for grp in (x.groups)) and all((hasattr(grp, 'segments')) for grp in (x.groups)) and all((len(grp.segments) > 0) for grp in (x.groups)) and all(('MUAP_' in seg.name) for grp in (x.groups) for seg in (grp.segments)) and all((hasattr(seg, 'analogsignals') and len(seg.analogsignals) > 0 and all((hasattr(signal, 'shape')) for signal in (seg.analogsignals)) and all((len(signal.shape) == 2) for signal in (seg.analogsignals))) for grp in (x.groups) for seg in (grp.segments))]]
Neo Block containing surface motor unit action potentials (MUAPs). Structure: groups (electrode arrays) → segments (MUAP indices) → analogsignals (samples × n_electrodes) Grid shape stored in signal annotations['grid_shape'].
SURFACE_EMG__Block
module-attribute
¶
SURFACE_EMG__Block = Annotated[Block, Is[lambda x: isinstance(x, Block) and len(x.groups) > 0 and all((hasattr(grp, 'segments')) for grp in (x.groups)) and all((len(grp.segments) > 0) for grp in (x.groups)) and all((hasattr(seg, 'analogsignals') and len(seg.analogsignals) > 0 and all((hasattr(signal, 'shape')) for signal in (seg.analogsignals)) and all((len(signal.shape) == 2) for signal in (seg.analogsignals))) for grp in (x.groups) for seg in (grp.segments))]]
Neo Block containing surface EMG signals. Structure: groups (electrode arrays) → segments (motor pools) → analogsignals (time × n_electrodes) Grid shape stored in signal annotations['grid_shape'].
INTRAMUSCULAR_MUAP__Block
module-attribute
¶
INTRAMUSCULAR_MUAP__Block = Annotated[Block, Is[lambda x: isinstance(x, Block) and all(('MUAP_' in seg.name) for seg in (x.segments)) and all((hasattr(seg, 'analogsignals') and len(seg.analogsignals) > 0 and all((hasattr(signal, 'shape')) for signal in (seg.analogsignals)) and all((len(signal.shape) == 2) for signal in (seg.analogsignals))) for seg in (x.segments))]]
Neo Block containing intramuscular motor unit action potentials (MUAPs). Structure: segments (MUAP indices) → analogsignals (samples × electrodes)
INTRAMUSCULAR_EMG__Block
module-attribute
¶
INTRAMUSCULAR_EMG__Block = Annotated[Block, Is[lambda x: isinstance(x, Block) and all(('Pool_' in seg.name) for seg in (x.segments)) and all((hasattr(seg, 'analogsignals') and len(seg.analogsignals) > 0 and all((hasattr(signal, 'shape')) for signal in (seg.analogsignals)) and all((len(signal.shape) == 2) for signal in (seg.analogsignals))) for seg in (x.segments))]]
Neo Block containing intramuscular EMG signals. Structure: segments (motor pools) → analogsignals (time × electrodes)
CORTICAL_INPUT__MATRIX
module-attribute
¶
2D floating-point array for cortical input patterns. Shape: (n_motor_units, n_timesteps)
RECRUITMENT_THRESHOLDS__ARRAY
module-attribute
¶
1D array of recruitment threshold values for motor units. Shape: (n_motor_units,)
JOINT_ANGLE__ARRAY
module-attribute
¶
1D array representing joint angle trajectory over time. Shape: (n_timesteps,)