This repository contains a minimal leaky integrate-and-fire (LIF) simulator for the adult fly (Drosophila) connectome. The simulator is implemented in a single C++ file (main.cpp) and is driven by CSV connectome data.
Use the provided Makefile:
makeThis produces an executable named main. To enable Apache Arrow support pass
USE_ARROW=1 (requires Arrow C++ libraries with pkg-config files).
Emscripten can build the simulator to WebAssembly. Install em++ and run:
make webThe generated web/ directory contains main.js, main.wasm, and a small
index.html that runs the example dataset in your browser.
Run the simulator by providing a connectome CSV file and lists of active and silent neurons. When built with Arrow support you may provide a Parquet file instead:
./main --csv connectome.csv --active active.txt --silent silent.txt --t 1000To load a Parquet file when Arrow support is enabled use:
./main --parquet Connectivity_783.parquet --active active.txt --silent silent.txt --t 1000The output spike times are written to spikes.bin, and basic statistics are printed to stderr.
The test/ directory contains small example files (test_connectome.csv, active.txt, silent.txt) that can be used for quick runs or automated tests. A unit test (test/test_submodule.py) demonstrates how to use data from the optional Drosophila_brain_model submodule.
Large connectome data can be pulled in via the Drosophila_brain_model submodule. Clone with submodules enabled:
git clone --recurse-submodules <repo url>The project includes a Python test that checks the simulator with a small subset of the data. Install the Python dependencies and run:
pip install -r requirements.txt # pandas and pyarrow are required
pytestBuild and run the Google Benchmark suite to measure performance:
make bench
./bench --benchmark_out=benchmark.json --benchmark_out_format=jsonThis project is provided for educational purposes and comes with no warranty.