Generating oscillatory bursts from a network of regular spiking neurons (Shao et al. 2009)

 Download zip file 
Help downloading and running models
Accession:120783
Avian nucleus isthmi pars parvocellularis (Ipc) neurons are reciprocally connected with the tectal layer 10 (L10) neurons and respond with oscillatory bursts to visual stimulation. To elucidate mechanisms of oscillatory bursting in this network of regularly spiking neurons, we investigated an experimentally constrained model of coupled leaky integrate-and-fire neurons with spike-rate adaptation. The model reproduces the observed Ipc oscillatory bursting in response to simulated visual stimulation.
Reference:
1 . Shao J, Lai D, Meyer U, Luksch H, Wessel R (2009) Generating oscillatory bursts from a network of regular spiking neurons without inhibition. J Comput Neurosci 27:591-606 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism:
Cell Type(s):
Channel(s):
Gap Junctions:
Receptor(s): AMPA;
Gene(s):
Transmitter(s): Acetylcholine; Glutamate;
Simulation Environment: C or C++ program;
Model Concept(s): Bursting; Oscillations; Vision;
Implementer(s): Lai, Dihui [dlai at artsci.wustl.edu];
Search NeuronDB for information about:  AMPA; Acetylcholine; Glutamate;
#include "Sys.h"
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <ctime>
#include "DataType.h"
#include "rng.h"

using namespace std;
int main()
{
	int i=0,j=0,k=0;
	ofstream scout("scores.txt", ios::app);
	RNG randgen;
	

	double r=0;	
	double Noisd=0.18;
	VecDP wMatPar(4);	wMatPar(0)=1.0;	wMatPar(1)=50;	wMatPar(2)=1.0;	wMatPar(3)=50;	
	VecDP IpcSponPar(2); IpcSponPar(0)=0.0; IpcSponPar(1)=1.5;
	VecDP L10SponPar(2); L10SponPar(0)=0.0; L10SponPar(1)=0.1;				//default parameters
	VecDP IpcAdapPar(2); IpcAdapPar(0)=1.1; IpcAdapPar(1)=60;
	VecDP L10AdapPar(2); L10AdapPar(0)=0.6; L10AdapPar(1)=50;

	double Ipcsd=0.0, L10sd=0.0;				//Ipc spontaneous activity
	double IpcTsra=14, IpcDgsra=0.0;
	double L10Tsra=15, L10Dgsra=0.0;
	int WidthL10Ipc=0, WidthIpcL10=0;			//width 
	
	double smat[10][10];

	for(i=0;i<10;i++)
		for(j=0;j<10;j++)
			smat[i][j]=0;

	//for (k=0;k<5;k++){					//Ipc sra time const vs Ipc Dgsra
	//	IpcTsra=0;
	//	for (i=0;i<10;i++){
	//		IpcTsra+=14;				//varying the Ipc Sra time constant
	//		IpcAdapPar(1)=IpcTsra;										
	//		IpcDgsra=-0.4;	
	//		for(j=0;j<10; j++){
	//			
	//			IpcDgsra+=0.4;
	//			IpcAdapPar(0)=IpcDgsra;			//varying the Ipc Dgsra

	//			Sys IshmTec(250.0, 199, 1, 0.18, 0.0, 0.0, 0.0, 1.0, 0.0, Noisd, 1.0, 80, 100);
	//			//Sys(_T, _ISPOT1, _ISPOT2, _AMP1, _AMP2, _Anos1, _Anos2, _nctrl1,_nctrl2, _nsd1, _nsd2, _SIG1, _SIG2)
	//			r=IshmTec.score(wMatPar, L10SponPar, IpcSponPar, IpcAdapPar, L10AdapPar, randgen);
	//			smat[i][j]+=r;
	//			scout<<r<<"\t";
	//			cout<<IpcTsra<<"\t"<<IpcDgsra<<"\t"<<r<<"\t"<<smat[i][j]<<endl;
	//		}
	//		scout<<"\n";
	//	}
	//	scout<<"\n";
	//}
	

	//for(i=0;i<10;i++){
	//	for(j=0;j<10;j++){
	//		scout<<smat[i][j]<<"\t";
	//	}
	//	scout<<"\n";
	//}
	//scout.close();

	


	//for (k=0;k<5;k++){					//L10 to Ipc width varying and input noise sd varying
	//	WidthL10Ipc=0;
	//	for (i=0;i<10;i++){
	//		WidthL10Ipc+=10;				//varying the width weight matrix L10->Ipc
	//		wMatPar(1)=WidthL10Ipc;			//changing the passing parameters width of L10->Ipc
	//		Noisd=-0.03;	
	//		for(j=0;j<10; j++){
	//			
	//			Noisd+=0.03;

	//			Sys IshmTec(250.0, 199, 1, 0.18, 0.0, 0.0, 0.0, 1.0, 0.0, Noisd, 1.0, 80, 100);
	//			//Sys(_T, _ISPOT1, _ISPOT2, _AMP1, _AMP2, _Anos1, _Anos2, _nctrl1,_nctrl2, _nsd1, _nsd2, _SIG1, _SIG2)
	//			r=IshmTec.score(wMatPar, L10SponPar, IpcSponPar, IpcAdapPar, L10AdapPar, randgen);
	//			smat[i][j]+=r;
	//			scout<<r<<"\t";
	//			cout<<wMatPar(1)<<"\t"<<Noisd<<"\t"<<r<<"\t"<<smat[i][j]<<endl;
	//		}
	//		scout<<"\n";
	//	}
	//	scout<<"\n";
	//}

	//for(i=0;i<10;i++){
	//	for(j=0;j<10;j++){
	//		scout<<smat[i][j]<<"\t";
	//	}
	//	scout<<"\n";
	//}
	//scout.close();

	
	//for (k=0;k<5;k++){						//L10 to Ipc width varying and Ipc spontaneous activity varying
	//	WidthL10Ipc=0;
	//	for (i=0;i<10;i++){
	//		WidthL10Ipc+=10;				//varying the width weight matrix L10->Ipc
	//		wMatPar(1)=WidthL10Ipc;			//changing the passing parameters width of L10->Ipc
	//		Ipcsd=-0.3;	
	//		for(j=0;j<10; j++){				
	//			Ipcsd+=0.3;
	//			IpcSponPar(1)=Ipcsd;

	//			Sys IshmTec(250.0, 199, 1, 0.18, 0.0, 0.0, 0.0, 1.0, 0.0, Noisd, 1.0, 80, 100);
	//			//Sys(_T, _ISPOT1, _ISPOT2, _AMP1, _AMP2, _Anos1, _Anos2, _nctrl1,_nctrl2, _nsd1, _nsd2, _SIG1, _SIG2)
	//			r=IshmTec.score(wMatPar, L10SponPar, IpcSponPar,IpcAdapPar,L10AdapPar, randgen);
	//			smat[i][j]+=r;
	//			scout<<r<<"\t";
	//			cout<<wMatPar(1)<<"\t"<<IpcSponPar(1)<<"\t"<<r<<"\t"<<smat[i][j]<<endl;
	//		}
	//		scout<<"\n";
	//	}
	//	scout<<"\n";
	//}

	//for(i=0;i<10;i++){
	//	for(j=0;j<10;j++){
	//		scout<<smat[i][j]<<"\t";
	//	}
	//	scout<<"\n";
	//}
	//scout.close();

	//for (k=0;k<5;k++){						//L10 to Ipc width varying and Ipc to L10 Width varying
	//	WidthL10Ipc=0;
	//	for (i=0;i<10;i++){
	//		WidthL10Ipc+=10;				//varying the width weight matrix L10->Ipc
	//		wMatPar(1)=WidthL10Ipc;			//changing the passing parameters width of L10->Ipc
	//		WidthIpcL10=0;	
	//		for(j=0;j<10; j++){				
	//			WidthIpcL10+=10;
	//			wMatPar(3)=WidthIpcL10;	
	//			
	//			Sys IshmTec(250.0, 199, 1, 0.18, 0.0, 0.0, 0.0, 1.0, 0.0, Noisd, 1.0, 80, 100);
	//			//Sys(_T, _ISPOT1, _ISPOT2, _AMP1, _AMP2, _Anos1, _Anos2, _nctrl1,_nctrl2, _nsd1, _nsd2, _SIG1, _SIG2)
	//			r=IshmTec.score(wMatPar, L10SponPar, IpcSponPar, IpcAdapPar, L10AdapPar, randgen);
	//			smat[i][j]+=r;
	//			scout<<r<<"\t";
	//			cout<<wMatPar(1)<<"\t"<<wMatPar(3)<<"\t"<<r<<"\t"<<smat[i][j]<<endl;
	//		}
	//		scout<<"\n";
	//	}
	//	scout<<"\n";
	//}
	//for(i=0;i<10;i++){
	//	for(j=0;j<10;j++){
	//		scout<<smat[i][j]<<"\t";
	//	}
	//	scout<<"\n";
	//}
	//scout.close();


	//for (k=0;k<5;k++){						//L10 to Ipc width varying and L10 spontaneous activity varying
	//	WidthL10Ipc=0;
	//	for (i=0;i<10;i++){
	//		WidthL10Ipc+=10;				//varying the width weight matrix L10->Ipc
	//		wMatPar(1)=WidthL10Ipc;			//changing the passing parameters width of L10->Ipc
	//		L10sd=0.0;	
	//		for(j=0;j<10; j++){				
	//			L10sd+=0.25;
	//			L10SponPar(1)=L10sd;

	//			Sys IshmTec(250.0, 199, 1, 0.18, 0.0, 0.0, 0.0, 1.0, 0.0, Noisd, 1.0, 80, 100);
	//			//Sys(_T, _ISPOT1, _ISPOT2, _AMP1, _AMP2, _Anos1, _Anos2, _nctrl1,_nctrl2, _nsd1, _nsd2, _SIG1, _SIG2)
	//			r=IshmTec.score(wMatPar, L10SponPar, IpcSponPar, IpcAdapPar,L10AdapPar, randgen);
	//			smat[i][j]+=r;
	//			scout<<r<<"\t";
	//			cout<<wMatPar(1)<<"\t"<<L10SponPar(1)<<"\t"<<r<<"\t"<<smat[i][j]<<endl;
	//		}
	//		scout<<"\n";
	//	}
	//	scout<<"\n";
	//}
	//for(i=0;i<10;i++){
	//	for(j=0;j<10;j++){
	//		scout<<smat[i][j]<<"\t";
	//	}
	//	scout<<"\n";
	//}
	//scout.close();



		Sys IshmTec(250.0, 199, 1, 0.18, 0.0, 0.0, 0.0, 1.0, 0.0, Noisd, 1.0, 80, 100);
		//r=IshmTec.score(wMatPar,L10SponPar, IpcSponPar, IpcAdapPar,L10AdapPar, randgen);
		IshmTec.disp(wMatPar,L10SponPar, IpcSponPar, IpcAdapPar,L10AdapPar, randgen);
		



}