Published July 25, 2022 | Version v1.0.0

Simulate Patterns from Synfire Chains

  • 1. Institute of Neuroscience and Medicine (INM-6) and Institute for Advanced Simulation (IAS-6) and JARA-Institute Brain Structure-Function Relationships (INM-10), Jülich Research Centre, Jülich, Germany
  • 2. Faculty of Mathematics and Physics, Charles University, Malostranské nám. 25, 118 00, Prague 1, Czechia

Description

Simulate Patterns from Synfire Chains
Repository containing code necessary to reproduce the results of A. Kleinjohann, D. Berling, T. Tetzlaff, S. Grün (2022). Cortical spatiotemporal spike patterns explained by a model of multiple synfire chains

Executing the Workflow

1. Install [conda](https://docs.conda.io/en/latest/miniconda.html) if not installed already.
2. Install [snakemake](https://snakemake.readthedocs.io/en/stable/) if not installed already.
3. Configure `input_files/parameters.yaml` to choose parameter sets, output directories etc. See `input_files/parameters_template.yaml`. We provide the configurations to generate all the required data for reproducing our figures, see below.
4. Run `snakemake --use-conda --cores N`, where N should be replaced with the number of available CPU cores. Alternatively, `--cores N` can be replaced with `--profile cluster_profile`. We have included an example profile for the [slurm](https://slurm.schedmd.com/overview.html) submission system. You can specify user-specific slurm settings via `slurm_user_config.txt` (see `slurm_user_config_template.txt`). More profiles can be found [here](https://github.com/Snakemake-Profiles).

Running `snakemake` without specifying a target will generate all data (detectability, fit to experimental patterns, scan num_chains instead of just using the optimum) for the specified parameters. Alternatively, you can specify targets manually, e.g. `snakemake detectability`, `snakemake fit`, `snakemake num_chains_scan` or combinations thereof, like `snakemake detectability fit`.

*Warning*: Without parallelisation on a multiprocessor machine/cluster executing the workflow can take a long time.

# Generating Figures

The figures are generated with the iPython notebooks in `ipynbs_plots/`. In order to run a notebook, the following steps are necessary:

1. Install [conda](https://docs.conda.io/en/latest/miniconda.html) if not installed already.
2. Enter the folder which contains the notebooks (`cd ipynbs_plots/`).
3. Install the environment for running the notebooks if not installed already (`conda env create -f notebook_env.yaml -p .conda/`).
4. Activate the environment (`conda activate .conda/`).
5. Start a Jupyter Notebook instance (`jupyter notebook`).
6. Select the notebook you want to execute. For more information on how to work with Jupyter Notebooks, see [the notebook documentation](https://docs.jupyter.org/en/latest/running.html).

The notebooks for Figures 1-3 are self-contained and do not require any additional data. The experimental data for Figure 4 is shipped with this repository under `data/experimental_results.pkl`. The data for the other figures can be generated as follows:

## Generating data for Figure 5

*Configuration Files*: all files in `input_files/configs_fig5/`

For this figure, we only vary one parameter at a time. It is more efficient to do multiple simulations in which only one parameter is varied since we don't need all combinations of all parameter values.

Note that some simulations can be reused for Figure 8.

The simulations for all configurations in this folder have to be run in order to generate the data for Figure 5. Only the detectability data is required, though. E.g. the simulation for scanning the SFC lengths can be invoked with `snakemake detectability --configfile input_files/configs_fig5/scan_l.yaml --use-conda --cores N`. All other parameter scans are analogous to the one for l.

## Generating data for Figure 6 and Figure 7

*Configuration Files*: `input_files/config_fig6-fig7.yaml`

For Figures 6 and 7, we vary all parameters and compute all combinations. We only need the detectability data here. E.g. the simulation for scanning the SFC lengths can be invoked with `snakemake detectability --configfile input_files/config_fig6-fig7.yaml --use-conda --cores N`.

## Generating data for Figure 8 and 9

*Configuration Files*: all files in `input_files/configs_fig8-fig9/`

For Figure 8, we only vary one parameter at a time. It is more efficient to do multiple simulations in which only one parameter is varied since we don't need all combinations of all parameter values.

Note that parts of the simulations for Figure 5 can be reused here, but we need the fit data here, not the detectability data, so it has to be calculated in addition.

The simulations for all configurations in this folder have to be run in order to generate the data for Figure 8. Only the fit data is required, though. E.g. the simulation for scanning the SFC lengths can be invoked with `snakemake fit --configfile input_files/configs_fig8-fig9/scan_l.yaml --use-conda --cores N`.

Additionally, the simulation for scanning num_chains can be run with `snakemake num_chains_scan --configfile input_files/configs_fig8/scan_l.yaml --use-conda --cores 1`. We use a different approach here since the results for different numbers of embedded SFCs can be obtained by resampling from the same simulation if it has enough embedded chains. All other parameter scans are analogous to the one for l explained above. Figure 9 only requires this num_chains_scan, Figure 8 uses the other scans as well.

## Generating data for Figure 10 and 11

*Configuration File*: `input_files/config_fig10-fig11.yaml`

For Figure 10, we vary all parameters and compute all combinations. We only need the fit data here. E.g. the simulation for scanning the SFC lengths can be invoked with `snakemake fit --configfile input_files/config_fig10-fig11.yaml --use-conda --cores N`. The notebook for Figure 11 automatically finds the best fit parameter set in the data for Figure 10.
 

Notes

This project was funded by the Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) - 368482240/GRK2416 and 491111487; by the Helmholtz Association Initiative and Networking Fund under project number ZT-I-0003; and by the Joint-Lab "Supercomputing and Modeling for the Human Brain".

Files

simulate_patterns_from_synfire_chains-1.0.0.zip

Files (3.6 MB)

Name Size
md5:34ee2f5ccd4107b612f083b8a5213238
3.6 MB Preview Download

Additional details

Funding

European Commission
HBP SGA3 - Human Brain Project Specific Grant Agreement 3 945539
European Commission
HBP SGA2 - Human Brain Project Specific Grant Agreement 2 785907