-------------------------------------------------------------------------------- This archive contains source code for the paper "Exact analytical results for integrate-and-fire neurons driven by excitatory shot noise" by Felix Droste and Benjamin Lindner -------------------------------------------------------------------------------- General requirements: --------------------- While the core of the code implementing analytics and simulation is not platform specific, most of the glue-scripts tying it all together basically assume a Unix-like system. It should work fine on any reasonably modern Linux distribution. There are basically two things you can do here ---------------------------------------------- 1. Play around with the analytics for shot noise driven IF neurons and use their (Python) implementation 2. Completely reproduce all the figures shown in the paper The first option should be rather quick to get up and running, the second has a few more dependencies and running the simulations can take some time 1. Play around with the (Python) implementation of the analytics ---------------------------------------------------------------- Requirements: - Python - scipy (tested with 0.18.1; with 0.14.0, the code for the EIF does not work due to a bug with numerical integration) - numpy (tested with 1.11.3) - mpmath (tested with 0.19) To get started, there is a jupyter notebook with some examples (to get jupyter, as well as the requirements above, installing Anaconda (https://www.continuum.io/downloads) is probably the easiest way. Run it as jupyter notebook shotnoise_examples.ipynb There are two small C libraries used to speed up parts of the Python code. For how to compile them, see analytics/specfunc/specfunc.c analytics/shot_noise_driven/eif_phi/eif_phi.c These only concern parts, you can run the jupyter notebook without compiling them and it should guide you accordingly. 2. Completely reproduce all the figures shown in the paper ---------------------------------------------------------- There are more requirements here and many more scripts, although most of them are just glue to deal with managing parameter sets and identifying which version of which simulation was used to create which data Requirements: - Python - a C++ compiler - scipy (tested with 0.18.1; with 0.14.0, the code for the EIF does not work due to a bug with numerical integration) - numpy (tested with 1.11.3) - mpmath (tested with 0.19) - xmgrace (although it should be straightforward to port the scripts to something like matplotlib) - CMake - git - fftw3 - gsl (the gnu scientific library) - boost_program_options 1. Compile the helper libraries for the python (see above) 2. Run the simulations: Run bash run_simulations.sh This should take care of compiling and running the simulations. Note that on my laptop, this takes somewhat under half an hour (the lion share of which is burned on the simulations for the susceptibility) Note that to run e.g. the susceptibility calculations with better statistics or more data points, it makes sense to run them on a cluster. If you happen to have a HTCondor cluster available, you may want to change "run_simulations.sh" so that it calls the "run_simulation" script with the parameter "-s condor" and modify "param_scan/submitters.py" for your setup. 3. Generate plots: Run bash generate_plots.sh This may also take a couple of minutes. In the end, each node in the directory hirarchy under "plots/" should contain one "plot.pdf" that corresponds to a figure in the paper Note that the grace-plotting functionality is based on a modified version of pygrace by Michael McKerns If you are interested in how any of the behind-the-scenes stuff works, please email me 12. 4. 2017, Felix Droste - fedro@posteo.net