Synaptic information transfer in computer models of neocortical columns (Neymotin et al. 2010)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:136095
"... We sought to measure how the activity of the network alters information flow from inputs to output patterns. Information handling by the network reflected the degree of internal connectivity. ... With greater connectivity strength, the recurrent network translated activity and information due to contribution of activity from intrinsic network dynamics. ... At still higher internal synaptic strength, the network corrupted the external information, producing a state where little external information came through. The association of increased information retrieved from the network with increased gamma power supports the notion of gamma oscillations playing a role in information processing."
Reference:
1 . Neymotin SA, Jacobs KM, Fenton AA, Lytton WW (2011) Synaptic information transfer in computer models of neocortical columns. J Comput Neurosci 30:69-84 [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: Neocortex;
Cell Type(s): Neocortex L5/6 pyramidal GLU cell; Neocortex L2/3 pyramidal GLU cell; Neocortex V1 interneuron basket PV GABA cell; Neocortex fast spiking (FS) interneuron; Neocortex spiny stellate cell; Neocortex spiking regular (RS) neuron; Neocortex spiking low threshold (LTS) neuron;
Channel(s): I Na,t; I A; I K;
Gap Junctions:
Receptor(s): GabaA; AMPA; NMDA;
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Activity Patterns; Information transfer;
Implementer(s): Lytton, William [bill.lytton at downstate.edu]; Neymotin, Sam [Samuel.Neymotin at nki.rfmh.org];
Search NeuronDB for information about:  Neocortex L5/6 pyramidal GLU cell; Neocortex L2/3 pyramidal GLU cell; Neocortex V1 interneuron basket PV GABA cell; GabaA; AMPA; NMDA; I Na,t; I A; I K;
/
ncdemo
readme.txt
A.mod
AMPA.mod *
AMPAr.mod
clampex.mod *
cp.mod *
cp2.mod *
field.mod
GABAa.mod
GABAar.mod
GABAb.mod
GABAbr.mod
H.mod
Iahp.mod *
Ican.mod *
IL.mod
IL3.mod *
infot.mod *
intf_.mod
intfsw.mod *
kdr2.mod *
kmbg.mod
misc.mod *
naf2.mod *
nap.mod *
NMDA.mod *
NMDAr.mod
nthh.mod *
ntIh.mod *
ntt.mod *
OFThpo.mod
OFThresh.mod
pregencv.mod
stats.mod
updown.mod *
vecst.mod
bg_cvode.inc
misc.h *
mosinit.hoc
netcon.inc *
netrand.inc
ofc.inc
                            
: $Id: clampex.mod,v 1.2 1998/12/18 21:04:46 adam Exp $

NEURON {
	POINT_PROCESS ClampExData
}

ASSIGNED {
	pointer
}

VERBATIM
#ifndef NRN_VERSION_GTEQ_8_2_0
extern double chkarg();
#endif

typedef struct CEXData {
#if 1
	char header[1024];
#else
	float parm_[80];
	char comment_[77];
	char labels[5][16];
	char reserve1[35];
	char cond_pulse[64];
	long parm_extension[16];
	float adc_ext_offset[16];
	float adc_ext_gain[16];
	float adc_disp_amp[16];
	float adc_disp_offset[16];
	char  adc_units[16][8];
#endif
	short* data;
}CEXData;
#define CEXD CEXData* cexd = (CEXData*)((unsigned long)pointer);
	
static void reverse(char* b, int n) {
	int i, j, v_;
	for (i=0, j=n-1; i<j; ++i, --j) {
		v_ = b[i];
		b[i] = b[j];
		b[j] = v_;
	}
}

static void header_endian(char* h) {
	char* b;
	int i;
	b = h;
	for (i=0; i < 80; ++i) {/* parameters */
		reverse(b, 4);
		b += 4;
	}
	b += (77 + 80 + 35 + 64);
	for (i=0; i < 16; ++i) {/* parameter extension */
		reverse(b, 4);
		b += 4;
	}
	for (i=0; i < 64; ++i) {
		reverse(b, 4);
		b += 4;
	}
}

static double get_parm(int i, char* h) {
	char* b;
	float* f;
	long* n;
	b = h;
	if (i <= 80) {
		f = (float*)b;
		return (double)f[i-1];
	}
	b += 320 + 77 + 80 + 35 + 64;
	if (i <= 96) {
		f = (float*)b;
		return (double)f[i- 81];
	}
	b += 64;
	if (i <= 160) {
		f = (float*)b;
		return (double)f[i - 97];
	}
	return 0.;
}
		
ENDVERBATIM

CONSTRUCTOR {
	VERBATIM	
	FILE* fin;
	int endian = 0;
	int samples, episodes;
	CEXData* cexd;
	char* fname;
	fname = gargstr(2);
//	printf("fname = %s\n", fname);
	fin = fopen(fname, "rb");
	if (!fin) {
		printf("can't open %s for reading\n", fname);
	}
	cexd = (CEXData*)emalloc(sizeof(CEXData));
	pointer = (double) ((unsigned long)cexd);
	fread(cexd->header, 1024, 1, fin);
	cexd->data = 0;
	if (get_parm(1, cexd->header) != 1.) {
		header_endian(cexd->header);
		endian = 1;
	}
	if (get_parm(1, cexd->header) != 1.) {
		printf("%s is not a CLAMPEX file\n", fname);
	}
	samples = (int)get_parm(3, cexd->header);
	episodes = (int)get_parm(4, cexd->header);
	cexd->data = (short*)emalloc(samples*episodes*sizeof(short));
	fread(cexd->data, samples*episodes, sizeof(short), fin);
	fclose(fin);
	if (endian) {
		int i;
		for (i=0; i < samples*episodes; ++i) {
			reverse((char*)(cexd->data + i), 2);
		}
	}
	ENDVERBATIM
}


DESTRUCTOR {
	VERBATIM
	CEXD
	if (cexd->data) {
		free(cexd->data);
	}
	free(cexd);
	ENDVERBATIM
}

FUNCTION parm() {
	VERBATIM
	CEXD
	int i;
	i = (int)chkarg(1, 1., 160.);
	_lparm = get_parm(i, cexd->header);
	ENDVERBATIM
}

PROCEDURE datavec() {
	VERBATIM
	#ifndef NRN_VERSION_GTEQ_8_2_0
	double* hoc_pgetarg();
	#endif

	int ntrace, trace, i, length;
	double* pd;
	short* tr;
	CEXD
	length = (int)get_parm(3, cexd->header);
	ntrace = (int)get_parm(4, cexd->header);
	trace = (int)chkarg(1, 0., (double)(ntrace - 1));
	tr = cexd->data + length*trace;
	pd = hoc_pgetarg(2);
	for (i = 0; i < length; ++i) {
		pd[i] = (double)tr[i];
	}
	ENDVERBATIM
}

FUNCTION timestep() {
	VERBATIM
	CEXD
	_ltimestep = get_parm(14, cexd->header)*.001;
	ENDVERBATIM
}

FUNCTION gain() {
	VERBATIM
	CEXD
	_lgain = get_parm(113, cexd->header);
	ENDVERBATIM
}

PROCEDURE get_comment() {
	VERBATIM
	char buf[80];
	CEXD
	strncpy(buf, cexd->header + 320, 77);
	buf[77] = '\0';
	printf("%s\n", buf);
	ENDVERBATIM
}
PROCEDURE get_label() {
	VERBATIM
	char buf[80];
	CEXD
	int i = (int)chkarg(1, 1., 5.);
	strncpy(buf, cexd->header + (320 + 77  +(i-1)*16), 16);
	buf[16] = '\0';
	printf("%s\n", buf);
	ENDVERBATIM
}
PROCEDURE get_cpulse() {
	VERBATIM
	char buf[80];
	CEXD
	strncpy(buf, cexd->header + 320 + 77 + 80 + 35, 64);
	buf[64] = '\0';
	printf("%s\n", buf);
	ENDVERBATIM
}
PROCEDURE get_adcunit() {
	VERBATIM
	char buf[80];
	CEXD
	int i = (int)chkarg(1, 1., 16.);
	strncpy(buf, cexd->header + (320 + 77 + 80 + 35 + 6*64 + (i-1)*8), 8);
	buf[8] = '\0';
	printf("%s\n", buf);
	ENDVERBATIM
}