Utilities#
Utility functions for spiking neural networks.
Note
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.
- 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#
Validation Functions#
Analysis and Formatting#
Example Usage#
Loading Models:
from spiking.utils import load_rate_model
# Load .mat model file
model_data = load_rate_model('models/go-nogo/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)