####

### This NEURON + Python scripts associated with paper:

Ruben A. Tikidji-Hamburyan, Conrad A. Leonik and Carmen C. Canavier
Phase Response Theory Explains Cluster Formation in Sparsely but Strongly Connected Inhibitory Neural Networks and Effects of Jitter due to Sparse Connectivity
J Neurophysiology 2019

To use this scripts you need python libraries:

1. numpy
2. scipy
3. matplotlib and LaTeX for correct graphical interface

Under Ubuntu or any other Debian based Linux, use the following command for installation all required packages: sudo apt-get install python-numpy python-scipy python-matplotlib texlive-full ncurses-dev dvipng You can use yum or zymm under RadHad(C) or SUSE(C) based Linux distributions for installation or consult your distribution package-manager. NOTE: These scripts were NOT tested under Windows(C), MacOS(C) or any other operating systems. Please let me know if you you can run this code under Windows(C), MacOS(C) (Ruben Tikidji-Hamburyan, ruben (dot) tikidji (dot) hamburyan (at) gmail (dot) com)

To run simulations of pure ingibitory I-network:

1. cd PIR-Inetwork
2. nrnivmodl
3. nrngui -nogui -python network.py --help

Last command prints out a short HOWTO and the list of parameters on screen, but does not run simulation. You can use printed parameters to replicate Figures in the paper. ---

To replicate activity for any parameter set (X synaptic conductance in uS and Y delay in milliseconds) in bifurcation diagram Figure 5 B run:
nrngui -nogui -python network.py /gui=True /preview=True /git=False /ncon=\(\'b\',0.133\) /synapse/weight=X /synapse/delay=Y

For example Figure 4 A1 - two clusters:
nrngui -nogui -python network.py /gui=True /preview=True /git=False /ncon=299,299,40 /synapse/weight=0.006e-2 /synapse/delay=0.8
For example Figure 4 A2 - synchrony:
nrngui -nogui -python network.py /gui=True /preview=True /git=False /ncon=299,299,40 /synapse/weight=0.1e-2 /synapse/delay=3.
For example Figure 4 B1 - two clusters:
nrngui -nogui -python network.py /gui=True /preview=True /git=False /ncon=40 /synapse/weight=0.006e-2 /synapse/delay=0.8
For example Figure 4 B2 - synchrony:
nrngui -nogui -python network.py /gui=True /preview=True /git=False /ncon=40 /synapse/weight=0.1e-2 /synapse/delay=3.
For example Figure 4 B1 - two clusters:
nrngui -nogui -python network.py /gui=True /preview=True /git=False /ncon=\'b\',0.1333 /synapse/weight=0.006e-2 /synapse/delay=0.8
For example Figure 4 B2 - synchrony:
nrngui -nogui -python network.py /gui=True /preview=True /git=False /ncon=\'b\',0.1333 /synapse/weight=0.1e-2 /synapse/delay=3.
For example Figure 5 D1 - transitional:
nrngui -nogui -python network.py /gui=True /preview=True /git=False /ncon=\'b\',0.133 /synapse/weight=0.0025e-2 /synapse/delay=3
For example Figure 5 D2 - asynchrony:
nrngui -nogui -python network.py /gui=True /preview=True /git=False /ncon=\'b\',0.133 /synapse/weight=0.3e-2 /synapse/delay=0.8
For example Figure 6 A - synaptic modulation for delay 2.2ms (simulation is very slow):
nrngui -nogui -python network.py /gui=True /preview=True /git=False /ncon=\'b\',0.1333 /synapse/weight=0.006e-2 /synapse/delay=2.2 /wmod/scale=3.333 /wmod/time-points=\[600,1000\] /corefunc=1 /corefunc=1 /neuron/Istdev=0. /tv=0,1001
For example Figure 6 B - synaptic modulation with noise (simulation is very slow):
nrngui -nogui -python network.py /gui=True /preview=True /git=False /ncon=\'b\',0.1333 /synapse/weight=0.006e-2 /synapse/delay=2.2 /wmod/scale=3.333 /wmod/time-points=\[600,1000\] /corefunc=1 /corefunc=1 /neuron/Istdev=0.2e-2 /tv=0,1001

---

To replicate activity for any parameter set in bifurcation diagram Figure 5A run:
nrngui -nogui -python network.py /gui=True /preview=True /git=False /ncon=\(299,299,40\) /synapse/weight=X /synapse/delay=X

For example
for 2 clusters: nrngui -nogui -python network.py /gui=True /preview=True /git=False /ncon=\(299,299,40\) /synapse/weight=0.006e-2 /synapse/delay=0.8
for synchrony: nrngui -nogui -python network.py /gui=True /preview=True /git=False /ncon=\(299,299,40\) /synapse/weight=0.1e-2 /synapse/delay=3.

To run simulations excitatory/inhibitory E/I-network::

1. cd PIR-EInetwork
2. nrnivmodl
3. nrngui -nogui -python pirping-network.py --help

Again last one will just print out HOWTO. ---

To run simulation for any point in Figure 7B with synaptic conductance = X uS run :
nrngui -nogui -python pirping-network.py -f=PIR-PING-2.2ms-rnd.conf /Connections/II/gmax-mean=X

To replicate exact Figure 7A1 run:
nrngui -nogui -python pirping-network.py -f=example-asyn.conf
To regenerate network with parameters as in Figure 7A1 but with random set of connections and Poisson's processes spikes (regenerated stochasticity) run:
nrngui -nogui -python pirping-network.py -f=PIR-PING-2.2ms-rnd.conf /Connections/II/gmax-mean=1.333521e-5

To replicate exact Figure 7A2 run:
nrngui -nogui -python pirping-network.py -f=example-ping.conf
or with regenerated stochasticity :
nrngui -nogui -python pirping-network.py -f=PIR-PING-2.2ms-rnd.conf /Connections/II/gmax-mean=1.0e-06

To replicate exact Figure 7A3 run:
nrngui -nogui -python pirping-network.py -f=example-2clt.conf
or with regenerated stochasticity :
nrngui -nogui -python pirping-network.py -f=PIR-PING-2.2ms-rnd.conf /Connections/II/gmax-mean=7.498942e-05

To replicate exact Figure 7A4 run:
nrngui -nogui -python pirping-network.py -f=example-sync.conf
or with regenerated stochasticity :
nrngui -nogui -python pirping-network.py -f=PIR-PING-2.2ms-rnd.conf /Connections/II/gmax-mean=1.0e-02

Files in this record:

Directory/File | Description
--- | ---
PIR-Inetwork/ | the I-network model
PIR-Inetwork/network.py | the main model script
PIR-Inetwork/*.mod | NEURON mechanisms for the main model
PIR-EInetwork | the model of EI-network
PIR-EInetwork/pirping-network.py | the main model script
PIR-EInetwork/PIR-PING-2.2ms-rnd.conf | the main parameter set
PIR-EInetwork/example-ping.conf | example of PING mode
PIR-EInetwork/example-2clt.conf | example of 2 cluster mode
PIR-EInetwork/example-asyn.conf | example of asychrony mode
PIR-EInetwork/example-sync.conf | example of synchrony mode
PIR-EInetwork/ECellOlufsen.py | python module for Olufsen et al 2003 module
PIR-EInetwork/ECellOlufsen.mod | required NEURON mechanisms
PIR-EInetwork/HHinh.py | python module for Hodgkin-Huxley model
PIR-EInetwork/SGen.py | artificial spike generator
PIR-EInetwork/vecevent.mod | NEURON module for the spike generator
PIR-EInetwork/simtools | python network generator

Changelog:
2022-05: Updated MOD files to contain valid C++ and be compatible with the upcoming versions 8.2 and 9.0 of NEURON.