Simulation data recording and analysis function
[!NOTE] For the latest implementation status, please refer to Functional Implementation Status (Remaining Functionality).
Creation date: December 6, 2025
Copyright: 2025 Moonlight Technologies Inc. All Rights Reserved.
Author: Masahiro Aoki
Purpose and use of this document
- Purpose: A summary memo to quickly understand the additions to the simulation recording/analysis function.
- Target audience: Developers, QA/Verification personnel.
- First reading order: Overview → Newly added files → Quick start.
- Related links: Detailed instructions are SIMULATION_RECORDING_GUIDE.md, execution script is
examples/run_zenoh_distributed_brain.py.
overview
A data recording and analysis system for running distributed brain simulations has been added.
Newly added files
Core module
evospikenet/sim_recorder.py- Data recording systemevospikenet/sim_analyzer.py- Data analysis tool
Document
SIMULATION_RECORDING_GUIDE.md- Detailed guideexamples/example_simulation_recording.py- Usage example
Quick start
1. Run the simulation with recording enabled
python examples/run_zenoh_distributed_brain.py \
--node-id pfc-0 \
--module-type pfc \
--enable-recording
2. Analyze recorded data
python evospikenet/sim_analyzer.py ./sim_recordings/sim_20251206_001234
3. Run the sample script
python examples/example_simulation_recording.py
Recorded data
- ✅ Spike data: Spike trains from each layer
- ✅ Membrane potential data: Neuron membrane potential (optional)
- ✅ Weight data: Network weight matrix (optional)
- ✅ Control data: Node state transition
Main features
Recording function
- Optionally enable/disable
- Reduce storage with subsampling
- Supports GZIP compression
- Efficient writing with buffering
Analysis function
- Automatic calculation of firing rate
- Spy cluster plot generation
- Firing rate time series plot
- Automatic summary report generation
Usage example
<!-- from evospikenet.sim_recorder import SimulationRecorder, RecorderConfig -->
# Recording settings
config = RecorderConfig(
enable_recording=True,
record_spikes=True,
record_membrane=True,
session_name="my_experiment"
)
# Start recording
with SimulationRecorder(config) as recorder:
# Simulation execution
for step in range(1000):
# record spike
recorder.record_spike_data(
node_id="pfc-0",
layer_name="lif",
spikes=output_spikes
)
Detailed information
See SIMULATION_RECORDING_GUIDE.md for details.