A NN with synaptic depression for testing the effects of connectivity on dynamics (Jacob et al 2019)

 Download zip file 
Help downloading and running models
Accession:261623
Here we used a 10,000 neuron model. The neurons are a mixture of excitatory and inhibitory integrate-and-fire neurons connected with synapses that exhibit synaptic depression. Three different connectivity paradigms were tested to look for spontaneous transition between interictal spiking and seizure: uniform, small-world network, and scale-free. All three model types are included here.
Reference:
1 . Jacob T, Lillis KP, Wang Z, Swiercz W, Rahmati N, Staley KJ (2019) A Proposed Mechanism for Spontaneous Transitions between Interictal and Ictal Activity. J Neurosci 39:557-575 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Connectionist Network;
Brain Region(s)/Organism: Mouse; Hippocampus;
Cell Type(s): Abstract integrate-and-fire neuron;
Channel(s): I_K,Na;
Gap Junctions:
Receptor(s): GabaA; Glutamate;
Gene(s):
Transmitter(s): Gaba; Glutamate;
Simulation Environment: C or C++ program;
Model Concept(s): Connectivity matrix; Epilepsy;
Implementer(s): Jacob, Theju ;
Search NeuronDB for information about:  GabaA; Glutamate; I_K,Na; Gaba; Glutamate;
#include <iostream>
#include <algorithm>
#include <vector>
#include <random>
#include <time.h>
#include <omp.h>
#define _USE_MATH_DEFINES
#include <math.h>

using namespace std;

#ifdef WIN32
	#define drand48() ((double)rand()/(RAND_MAX));
#endif

//extern double factorial(double no);
//global variable, to scale the glutamate initial distribution
extern double distribution_max;
struct Param {
		double ExTgk,ExB,ExTth,ExTe1,ExTe2,ExTi1,ExTi2;
		double InTgk,InB,InTth,InTe1,InTe2,InTi1,InTi2;
		double TauRelease, TauReplenish, SpontRelease, Neighborhood;
		int NRmax;

};

struct Synapse{
	//indicate if the synapse is excitatory
	bool excitatory;
	//indices of presynaptic neuron
	int row, clm;
	//synaptic weight
	double weight;
	//vector of psps
	vector<double> psps;
	//glutamate release parameters:
	//NRmax: max releasable vesicles, NR: available releasable vesicles
	//PR: probability of release of releasable vesicle
	//tau: refill time constant
	double NRmax;
	double NR;
	vector <double> PR;
	double tau;
};

class Neuron{
	//parameters from the MacGregor Neuron Model. 
	//for details, refer: "A Model for Repetitive Firing in Neurons", MacGregor, R. J. and Oliver, R. M., Kybernetik, 1974.
	double Tmem, Th0;
	double mTmem, mTgk, mTh, mTCa;
	double dcGk, dcCa, Ge, Gi, GiGeRatio;
	double Vr, Ek, Ei, Ee;
	double c, CM, CS, Ca;	
	int P;
	vector<double> Ge_table, Gi_table, firing_Prob, glutamate_Prob;
public:
	double Tgk, Tth, Gk, B;
	double Te1, Te2, Ti1, Ti2; 
	double TauRelease, TauReplenish, SpontRelease;
	double E, Th, glutamate, gaba, glutamate_pr;
	int row, clm, S;
	bool excitatory;
	Neuron();
	int Inhibitory();
	int computePotential(vector<Synapse> &preSynapses, double SC, int time);
	int glutamateinitialize(vector<Synapse> &preSynapses,Neuron **NeuronLayer);
	int glutamaterelease(vector<Synapse> &preSynapses,Neuron **NeuronLayer, int iterations);
};

Loading data, please wait...