Theory and simulation of integrate-and-fire neurons driven by shot noise (Droste & Lindner 2017)

 Download zip file 
Help downloading and running models
This archive contains source code for the paper "Exact analytical results for integrate-and-fire neurons driven by excitatory shot noise" by Droste and Lindner, 2017. Specifically, it contains a Python implementation of the analytical formulas derived in that paper (allowing to calculate firing rate, CV and stationary voltage distribution of general integrate-and-fire neurons driven by excitatory shot noise, as well as power spectrum and rate-response of leaky integrate-and-fire neurons with such input) and C++ code implementing a Monte-Carlo simulation to estimate these quantities. A sample Jupyter notebook to play around with the analytics is included, as are scripts to reproduce the figures from the paper.
1 . Droste F, Lindner B (2017) Exact analytical results for integrate-and-fire neurons driven by excitatory shot noise J. Comp. Neurosci.
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type:
Brain Region(s)/Organism:
Cell Type(s): Abstract integrate-and-fire leaky neuron; Abstract theta neuron;
Gap Junctions:
Simulation Environment: C or C++ program; Python;
Model Concept(s):
Implementer(s): Droste, Felix [fedro at];

import argparse
import os, glob, sys
import json

import param_scan.parameter_sets as ps
import param_scan.simulation_run as si
from import load_run
import param_scan.dict_comparison as dc
from textwrap import TextWrapper
import shutil

parser = argparse.ArgumentParser(description='bla')
parser.add_argument('run', metavar='run', type=str,
parser.add_argument('-n', '--name', dest='dir_name', type=str, help='name the view', default=None)
parser.add_argument('-c', '--constraints', dest='constr', type=str, default="{}",
                   help='json string of constraints')
parser.add_argument('--hide', dest='hide', type=str, nargs='+', default=[], help="arguments that should not be shown")

args = parser.parse_args()
rfn =
print args.constr
constr_dict = json.loads(args.constr)
print args.dir_name
if args.dir_name is not None:
    dir_name = args.dir_name
    dir_name = rfn + ".view"

rfn, r = load_run(rfn)

psets = ps.unroll(r["parameters"])

if os.path.exists(dir_name):
    except OSError:

if len(psets) > 1:

common_prms = dc.get_common(psets)

for p in psets:
    if not dc.is_subtree(constr_dict, p):
    d = dc.get_difference_to_common(p, common_prms)
    link_trgt = r["data_dir"] + "/" + si.get_prefix(r["sim"], p, r["uniqueness"])
    link_name = " ".join("%s=%s" % (str(k), str(v)) for k, v in d.items() if not k in args.hide)
    if len(psets) > 1:
        os.symlink(link_trgt, dir_name + "/" + link_name)
        os.symlink(link_trgt, dir_name)