ezmsg.simbiophys.cosine_encoder#
Generic cosine-tuning encoder for polar coordinates.
This module provides a generalized cosine-tuning encoder that maps polar coordinates (magnitude, angle) to multiple output channels with configurable preferred directions, baseline, and modulation parameters.
- The encoding formula is:
- output = baseline + modulation * magnitude * cos(angle - preferred_direction)
speed_modulation * magnitude
This implements the offset model from “Decoding arm speed during reaching” (https://ncbi.nlm.nih.gov/pmc/articles/PMC6286377/) with generic terminology suitable for various applications:
Neural firing rate encoding (baseline=10Hz, modulation=20Hz)
LFP spectral parameter modulation (baseline=1.0, modulation=0.5)
Any other cosine-tuning based encoding
- Input:
Polar coordinates (magnitude, angle) as AxisArray with shape (n_samples, 2). Use CoordinateSpaces(mode=CART2POL) upstream to convert from Cartesian.
- Output:
AxisArray with shape (n_samples, output_ch) containing encoded values.
Classes
- class CosineEncoderSettings(model_file=None, output_ch=10, baseline=0.0, modulation=1.0, speed_modulation=0.0, seed=None)[source]#
Bases:
SettingsSettings for CosineEncoder.
Either model_file OR the random generation parameters should be specified. If model_file is provided, parameters are loaded from file. Otherwise, parameters are randomly generated.
- Parameters:
-
model_file:
str|None= None# Path to .npz file with encoder parameters (baseline, modulation, pd, speed_modulation). Also supports legacy neural tuning files with keys (b0, m, pd, bs).
-
modulation:
float= 1.0# Directional modulation depth for all channels (used if model_file is None).
-
speed_modulation:
float= 0.0# Speed modulation (non-directional) for all channels (used if model_file is None).
- class CosineEncoderState[source]#
Bases:
objectState for cosine encoder transformer.
Holds the per-channel encoding parameters. All arrays have shape (1, output_ch) for efficient broadcasting during processing.
- baseline#
Baseline output value for each channel.
- modulation#
Directional modulation depth for each channel.
- pd#
Preferred direction (radians) for each channel.
- speed_modulation#
Speed modulation (non-directional) for each channel.
- ch_axis#
Pre-built channel axis for output messages.
-
ch_axis:
CoordinateAxis|None= None#
- load_from_file(filepath, output_ch=None)[source]#
Load parameters from a .npz file.
The file should contain arrays with keys matching the parameter names. For backwards compatibility with neural tuning files, the following key mappings are supported:
‘b0’ -> baseline
‘m’ -> modulation
‘pd’ -> pd (preferred direction)
‘bs’ -> speed_modulation
- class CosineEncoderTransformer(*args, **kwargs)[source]#
Bases:
BaseStatefulTransformer[CosineEncoderSettings,AxisArray,AxisArray,CosineEncoderState]Transform polar coordinates to multi-channel encoded output.
- Input: AxisArray with shape (n_samples, 2) containing polar coordinates
(magnitude, angle) where magnitude is speed and angle is direction.
Output: AxisArray with shape (n_samples, output_ch) containing encoded values.
- The encoding formula is:
- output = baseline + modulation * magnitude * cos(angle - pd)
speed_modulation * magnitude
This is a generic encoder suitable for various applications including: - Neural firing rate encoding (baseline=10Hz, modulation=20Hz) - LFP spectral parameter modulation (baseline=1.0, modulation=0.5) - Any other cosine-tuning based encoding
- class CosineEncoderUnit(*args, settings=None, **kwargs)[source]#
Bases:
BaseTransformerUnit[CosineEncoderSettings,AxisArray,AxisArray,CosineEncoderTransformer]Unit wrapper for CosineEncoderTransformer.
- Parameters:
settings (Settings | None)
- SETTINGS#
alias of
CosineEncoderSettings
- class CosineEncoderSettings(model_file=None, output_ch=10, baseline=0.0, modulation=1.0, speed_modulation=0.0, seed=None)[source]#
Bases:
SettingsSettings for CosineEncoder.
Either model_file OR the random generation parameters should be specified. If model_file is provided, parameters are loaded from file. Otherwise, parameters are randomly generated.
- Parameters:
-
model_file:
str|None= None# Path to .npz file with encoder parameters (baseline, modulation, pd, speed_modulation). Also supports legacy neural tuning files with keys (b0, m, pd, bs).
-
modulation:
float= 1.0# Directional modulation depth for all channels (used if model_file is None).
-
speed_modulation:
float= 0.0# Speed modulation (non-directional) for all channels (used if model_file is None).
- class CosineEncoderState[source]#
Bases:
objectState for cosine encoder transformer.
Holds the per-channel encoding parameters. All arrays have shape (1, output_ch) for efficient broadcasting during processing.
- baseline#
Baseline output value for each channel.
- modulation#
Directional modulation depth for each channel.
- pd#
Preferred direction (radians) for each channel.
- speed_modulation#
Speed modulation (non-directional) for each channel.
- ch_axis#
Pre-built channel axis for output messages.
-
ch_axis:
CoordinateAxis|None= None#
- load_from_file(filepath, output_ch=None)[source]#
Load parameters from a .npz file.
The file should contain arrays with keys matching the parameter names. For backwards compatibility with neural tuning files, the following key mappings are supported:
‘b0’ -> baseline
‘m’ -> modulation
‘pd’ -> pd (preferred direction)
‘bs’ -> speed_modulation
- class CosineEncoderTransformer(*args, **kwargs)[source]#
Bases:
BaseStatefulTransformer[CosineEncoderSettings,AxisArray,AxisArray,CosineEncoderState]Transform polar coordinates to multi-channel encoded output.
- Input: AxisArray with shape (n_samples, 2) containing polar coordinates
(magnitude, angle) where magnitude is speed and angle is direction.
Output: AxisArray with shape (n_samples, output_ch) containing encoded values.
- The encoding formula is:
- output = baseline + modulation * magnitude * cos(angle - pd)
speed_modulation * magnitude
This is a generic encoder suitable for various applications including: - Neural firing rate encoding (baseline=10Hz, modulation=20Hz) - LFP spectral parameter modulation (baseline=1.0, modulation=0.5) - Any other cosine-tuning based encoding
- class CosineEncoderUnit(*args, settings=None, **kwargs)[source]#
Bases:
BaseTransformerUnit[CosineEncoderSettings,AxisArray,AxisArray,CosineEncoderTransformer]Unit wrapper for CosineEncoderTransformer.
- Parameters:
settings (Settings | None)
- SETTINGS#
alias of
CosineEncoderSettings