Source code of simulations and analyses from Maith, O., Dinkelbach, H. Ü., Baladron, J., Vitay, J., & Hamker, F. H. (2022). BOLD Monitoring in the Neural Simulator ANNarchy. Frontiers in Neuroinformatics.
- Oliver Maith (oliver.maith@informatik.tu-chemnitz.de)
- Helge Ülo Dinkelbach (helge.dinkelbach@gmail.com)
- dataRaw/
- folder for generated data
- results/
- folder structure for generated results
- srcAna/
- BOLDfromDifferentSources_ANA.py
- main analysis script, analyze data generated with
BOLDfromDifferentSources
in srcSim/simulations.py - loads data from dataRaw/, creates plots etc., saves results in results/BOLDfromDifferentSources/
- in
'__main__'
, define which plots are created
- main analysis script, analyze data generated with
- Fig_Balloon_model_data_ANA.py
- analyze data generated with srcSim/Fig_Balloon_model_data.py
- loads data from dataRaw/, saves results in results/Fig_Balloon_model_data/
- BOLD_comp_time.py
- analyze data generated with
BOLDfromDifferentSources
in srcSim/simulations.py (params["measure_time"]==True
) - loads data from dataRaw/, saves results in results/Fig_comp_time/
- analyze data generated with
- extras.py
- some extra functions available for importing
- initialTestofBOLD_ANA.py
- analyze data generated with
initialTestofBOLD
in srcSim/simulations.py
- analyze data generated with
- test.py
- just placeholder for any testing
- BOLDfromDifferentSources_ANA.py
- srcSim/
- Fig_Balloon_model_data.py
- BOLD monitoring using a self-defined source signal (rectangular pulse)
- extras.py
- some extra functions available for importing
- get_weightDist.py
- for adjusting the weight distributions manually to obtain a good fit (visual comparison) between simulated and experimental distributions of post-synaptic potentials
- generate 1000 RS and FS cortical neurons
- send 1 input spike
- compares (Figures) distribution of caused EPSPs in neurons with distribution of EPSPs from Song et al. (2005)
- model.py
- defintion of model (populations, projections)
- different model versions (defined by
params['optimizeRates']
in srcSim/parameters.py)'v1'
: used during optimization, model input = membrane currents, variable number of synapses for projections, self-defined input current distribution'v1post'
: version'v1'
but used after optimization (optimized parameters loaded)'v2'
: used during optimization, model input = Poisson neurons, fixed number of synapses for projections, scaled projection strengthes'v2post'
: version'v2'
but used after optimization (optimized parameters loaded), version used to generate results of the work
- model_neuronmodels.py
- defintion of neuron models and additional BOLD models
- optimize_rates.py
- two modes, optimize and test (script arguments)
- works with model version
'v1'
- optimize mode:
- optimizes parameters (input current distribution and number of afferent synapses of all neurons)
- goodness of fit: simulated mean firing rate distribution vs. distribution similar to the firing rate distributions shown in Buzsáki & Mizuseki (2014)
- saves fitted parameters and loss
- test mode:
- load fitted params and prints loss
- simulator optionally generates plots to also visually compare firing rate distributions
- optimize_ratesv2.py
- improved version of optimize_rates.py
- works with model version
'v2'
- here scaling factors of the projection strengthes are optimized
- parameters.py
- parameters which are used globally
- run_parallel.sh
- shell script for running python files
- simulations.py
- main simulation script
- runs simulations with the cortical model and records signals of various BOLD monitors
- data saved in dataRaw/
- during simulation input is increased depending on the script arguments
- argument 1,
input_factor
: defines how strong the increase of the firing rate of the input Poisson neurons is - argument 2,
stimulus
: defines length of simulation and timing of stimulus increase - argument 3,
simID
: simply a simulation ID for saving the data
- argument 1,
- test.py
- python file for testing anything
- test2.py
- python file for testing anything
- Fig_Balloon_model_data.py
Description of the results generated in Python. For several figures, additional image processing software was used to create the final figures.
Result | analysis | simulation | comment |
---|---|---|---|
Figure 1 | Fig_Balloon_model_data_ANA.py | Fig_Balloon_model_data.py | lineplots are generated individually in folder results/Fig_Balloon_model_data/ |
Figure 3 | BOLD_fig3.py | plot is directly generated by the simulation script BOLD_fig3.py | |
Figure 4 | BOLDfromDifferentSources_ANA.py (function rate_distribution ) |
simulations.py (standard arguments), get_weightDist.py | two plots are generated, weight distribution plot is directly generated by the simulation script get_weightDist.py |
Figure 5 | BOLDfromDifferentSources_ANA.py (function with_vs_without_normalization ) |
simulations.py X 1 Y | X = input_factor = 1--resting, 5--pulse; Y = simID = (0--39) |
Figure 6 | BOLDfromDifferntSources_ANA.py (function pulses_visualization ) |
simulations.py 5 1 Y | Y = simID = (0--39), lineplots are generated individually |
Figure 7 | BOLDfromDifferntSources_ANA.py (function make_sustained_input_plot ) |
simulations.py 1.2 3 Y | Y = simID = (0--39), lineplots are generated individually |
Figure 8 | BOLD_comp_time.py | simulations.py 1 0 1 1, simulations.py 1 0 1 2 | vary number of neurons in parameters.py, params["measure_time"]==True is necessary |
Figure S1 | BOLDfromDifferntSources_ANA.py (function make_sustained_input_plot ) |
simulations.py 1.2 3 Y | Y = simID = (0--39), Figure 7 and S1 are generated together, lineplots are generated individually |
- GNU/Linux
- ANNarchy >= 4.7