Utilities#
Utility functions for spiking neural networks.
This module provides utility functions for loading rate models, generating connectivity parameters, and validating inputs for spiking neural network simulations.
Model Loading#
- load_rate_model(model_path)#
Load a trained rate RNN model from MATLAB .mat file.
Only .mat files are supported as they contain all necessary parameters for accurate rate-to-spike conversion, including connectivity masks, neuron types, and time constants.
- Parameters:
model_path (str) – Path to the .mat model file
- Returns:
Dictionary containing model parameters
- Return type:
dict
- Raises:
FileNotFoundError – If model file doesn’t exist
ValueError – If file is not .mat format or corrupted
Network Configuration#
- spiking.utils.create_connectivity_masks(N: int, P_inh: float = 0.2, som_N: int = 0, apply_dale: bool = True, seed: int | None = None) Tuple[ndarray, ndarray, ndarray, ndarray] [source]#
Create connectivity masks for spiking network simulation.
- Parameters:
N (int) – Number of neurons.
P_inh (float) – Proportion of inhibitory neurons.
som_N (int) – Number of somatostatin neurons.
apply_dale (bool) – Whether to apply Dale’s principle.
seed (int, optional) – Random seed for reproducibility.
- Returns:
inh: Boolean array for inhibitory neurons
exc: Boolean array for excitatory neurons
m: Sign mask matrix for Dale’s principle
som_m: SOM connectivity mask
- Return type:
Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]
Validation Functions#
- spiking.utils.validate_stimulus(u: ndarray, task_type: str = 'go-nogo') bool [source]#
Validate input stimulus format for different tasks.
- Parameters:
u (np.ndarray) – Input stimulus array.
task_type (str) – Type of task (‘go-nogo’, ‘xor’, ‘mante’).
- Returns:
True if stimulus is valid.
- Return type:
bool
- Raises:
ValueError – If stimulus format is invalid.
- spiking.utils.validate_scaling_factor(scaling_factor: float, valid_range: Tuple[float, float] = (1.0, 1000.0)) bool [source]#
Validate scaling factor for rate-to-spike conversion.
- Parameters:
scaling_factor (float) – Scaling factor value.
valid_range (Tuple[float, float]) – Valid range for scaling factor.
- Returns:
True if scaling factor is valid.
- Return type:
bool
- Raises:
ValueError – If scaling factor is invalid.
Analysis and Formatting#
- spiking.utils.format_spike_data(spikes: ndarray, dt: float) Dict[str, ndarray] [source]#
Format spike data for analysis and visualization.
- Parameters:
spikes (np.ndarray) – Binary spike matrix (N_neurons, N_timesteps).
dt (float) – Time step size.
- Returns:
Dictionary containing formatted spike data.
- Return type:
Dict[str, np.ndarray]
Example Usage#
Loading Models:
from spiking.utils import load_rate_model
# Load .mat model file
model_data = load_rate_model('trained_model.mat')
Creating Network Connectivity:
from spiking.utils import create_connectivity_masks
N = 200 # Number of neurons
P_inh = 0.2 # Proportion of inhibitory neurons
inh, exc, m, som_m = create_connectivity_masks(
N, P_inh, som_N=10, apply_dale=True, seed=42
)
Generating LIF Parameters:
from spiking.utils import generate_lif_params
# Default parameters
lif_params = generate_lif_params()
# Custom parameters
lif_params = generate_lif_params(dt=0.0001, downsample=2)
Validating Input:
from spiking.utils import validate_stimulus, validate_scaling_factor
import numpy as np
# Validate Go-NoGo stimulus
u = np.zeros((1, 201)) # 1 input, 201 timesteps
validate_stimulus(u, task_type='go-nogo')
# Validate scaling factor
validate_scaling_factor(50.0, valid_range=(20.0, 100.0))
Analyzing Spikes:
from spiking.utils import format_spike_data
# Format spike data for analysis
spike_data = format_spike_data(spikes, dt=0.00005)
print(f"Total spikes: {spike_data['total_spikes']}")
print(f"Mean firing rate: {np.mean(spike_data['firing_rates']):.2f} Hz")
GPU and Random Seed Management:
from spiking.utils import check_gpu_availability, set_random_seed
# Check GPU availability
gpu_available, device_name = check_gpu_availability()
print(f"GPU: {device_name}")
# Set random seed for reproducibility
set_random_seed(42)
Function Details#
- load_rate_model(model_path)
Load a trained rate RNN model from MATLAB .mat file.
- create_connectivity_masks(N, P_inh, som_N, apply_dale, seed)
Generate connectivity masks for inhibitory/excitatory neurons and SOM types.
- generate_lif_params(dt, downsample)
Create default LIF neuron parameters with customizable time constants.
- validate_stimulus(u, task_type)
Ensure input stimulus matches requirements for specific cognitive tasks.
- format_spike_data(spikes, dt)
Convert binary spike matrix to analysis-ready format with timing information.