Modelling reduced excitability in aged CA1 neurons as a Ca-dependent process (Markaki et al. 2005)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:119266
"We use a multi-compartmental model of a CA1 pyramidal cell to study changes in hippocampal excitability that result from aging-induced alterations in calcium-dependent membrane mechanisms. The model incorporates N- and L-type calcium channels which are respectively coupled to fast and slow afterhyperpolarization potassium channels. Model parameters are calibrated using physiological data. Computer simulations reproduce the decreased excitability of aged CA1 cells, which results from increased internal calcium accumulation, subsequently larger postburst slow afterhyperpolarization, and enhanced spike frequency adaptation. We find that aging-induced alterations in CA1 excitability can be modelled with simple coupling mechanisms that selectively link specific types of calcium channels to specific calcium-dependent potassium channels."
Reference:
1 . Markaki M, Orphanoudakis S, Poirazi P (2005) Modelling reduced excitability in aged CA1 neurons as a calcium-dependent process Neurocomputing 65-66:305-314
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell;
Brain Region(s)/Organism: Hippocampus;
Cell Type(s): Hippocampus CA1 pyramidal cell;
Channel(s): I Na,p; I Na,t; I L high threshold; I N; I A; I K; I M; I K,Ca; I R;
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Activity Patterns; Aging/Alzheimer`s;
Implementer(s):
Search NeuronDB for information about:  Hippocampus CA1 pyramidal cell; I Na,p; I Na,t; I L high threshold; I N; I A; I K; I M; I K,Ca; I R;
/
CA1_Aged
lib
basic_graphics.hoc *
basic-graphics.hoc *
choose-secs.hoc *
current-balance.hoc
cut-sections.hoc *
deduce-ratio.hoc *
find-gmax.hoc *
GABA_shiftsyn.hoc *
GABA_shiftsyn_bg.hoc *
ken.h *
map-segments-to-3d.hoc *
maxmin.hoc *
mod_func.c *
newshiftsyn *
newshiftsyn.c *
num-rec.h *
salloc.hoc *
shiftsyn-init_bg.hoc *
shiftsyn-initA.hoc *
spikecount.hoc *
tune-epsps.hoc *
vector-distance.hoc *
verbose-system.hoc *
                            
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <malloc.h>
/*#include "/home/niebur/tools/graphics/xview/header.h"*/

#ifndef MAX
#define MAX(a,b) ((a) > (b) ? (a) : (b))
#endif
#ifndef MIN
#define MIN(a,b) ((a) > (b) ? (b) : (a))
#endif
#define SQU(a) ((a)*(a))
#define SQUARE(a) ((a)*(a))
#define CUBE(a) ((a)*(a)*(a))
#define RINT(x) ( ((x) > 0) ?  \
( ((x) - ((int)(x))) < 0.5 ? ((int)(x)) : ((int)(x)+1) ) :  \
( ((x) - ((int)(x))) > (-0.5) ? ((int)(x)) : ((int)(x)-1) ) )
#ifndef PI
#define PI 3.14159265359
#endif
#define ABS(x) ( (x) > 0. ? (x) : (-(x)) )
#define EXP(x) (exp((double)(x)))
#define SQRT(x) ( ((x)<0.) ? FUNCERROR("sqrt",((double)x)) : sqrt((double)(x)))
#define LOG(x) ( ((x)<0.) ? FUNCERROR("log",((double)x)) : log((double)(x)))
#define LOG10(x) ( ((x)<0.) ? FUNCERROR("log10",((double)x)) : log10((double)(x)))
#define POW(x,y) ( ((x)<0.) ? ( ((y) == (int)(y)) ? \
 pow((double)(x),(double)(y)) :  FUNC2ERROR("pow",(double)(x),(double)(y)) ) \
 : pow((double)(x),(double)(y)) )
#define COS(x) (cos((double)(x)))
#define SIN(x) (sin((double)(x)))
#define TAN(x) (tan((double)(x)))
#define APRECISION 0.000000000001
#define ALIMIT(x,y) ( ABS(x) > (y) ? ((x) > 0 ? (y) : (-(y))) : (x) )
#define ACOS(x) ( (ABS(x) > (1. + APRECISION)) ? \
 FUNCERROR("acos",((double)(x))) : acos(ALIMIT((x),(1.-APRECISION))))
#define ASIN(x) ( (ABS(x) > (1. + APRECISION)) ? \
 FUNCERROR("asin",((double)(x))) : asin(ALIMIT((x),(1.-APRECISION))))
#define ATAN(x) (atan((double)(x)))
#define ATAN2(y,x) (atan2((double)y,(double)x))

#define FUNCERROR(func,dub) (fprintf(stderr,"Warning! Function %s failed: argument = %g; source file %s, line %d;\n", \
 func,dub,__FILE__,__LINE__))
#define FUNC2ERROR(func,dub1,dub2) (fprintf(stderr,"Warning: Function %s failed: arguments = %g, %g; source file %s, line %d\n", \
 func,dub1,dub2,__FILE__,__LINE__))

#ifdef DEBUG
#define DPRINTF(x) printf x ; fflush(stdout)  /* use as DPRINTF((" ", )), i.e. two parens */
#else
#define DPRINTF(x)  /* do nothing */
#endif

#define OPENFILE(fpr,fname,fmode,action){\
if((fpr = fopen(fname,fmode)) == NULL) {\
	char errorstring[120];\
	sprintf(errorstring, "Couldn't open file %s, mode %s; source file %s, line %d", fname, fmode, __FILE__, __LINE__);\
	perror(errorstring);\
	action;\
}\
}

#define READFILE(pointer, ptype, numread, fname, action){\
if (1) {\
	int readcount;\
	if ( (readcount = fread(pointer, sizeof(ptype), (unsigned)(numread), fname)) < numread ) { \
		char errorstring[120];\
		sprintf(errorstring, "fread fails; read %d, wanted %d; source file %s, line %d", \
		readcount, numread, __FILE__, __LINE__);\
		perror(errorstring);\
		action;\
	}\
}\
}

#define WRITEFILE(pointer, ptype, numwrite, fname, action){\
if (1) {\
	int writecount;\
	if ( (writecount = fwrite(pointer, sizeof(ptype), (unsigned)(numwrite), fname)) < numwrite ) { \
		char errorstring[120];\
		sprintf(errorstring, "fwrite fails; wrote %d, wanted %d; source file %s, line %d", \
		writecount, numwrite, __FILE__, __LINE__);\
		perror(errorstring);\
		action;\
	}\
}\
}

#define ALLOCATE(pointer, ptype, numelements, action){\
if ( (pointer = \
(ptype *)calloc((unsigned)numelements,(unsigned)sizeof(ptype))) == NULL) { \
	char errorstring[120];\
	sprintf(errorstring, "calloc fails; source file %s, line %d", \
	__FILE__, __LINE__);\
	perror(errorstring);\
	action;\
}\
}

/*  CONMATRIX: contiguous matrix pmat[nrow][ncol] 
    mtype is int, double, etc; declare: mtype **pmat, *parray 
    pmat[i][j] will then refer to correct matrix element,
    which is parray[i*ncol + j] 
*/

#define CONMATRIX(pmat, parray, mtype, nrow, ncol){\
if (1) {\
	int rowcount;\
	ALLOCATE(parray,mtype,((nrow)*(ncol)), exit(-1));\
	ALLOCATE(pmat,mtype *,(nrow),exit(-1));\
	for(rowcount=0; rowcount< (nrow); rowcount++) {\
		pmat[rowcount]= &parray[rowcount*(ncol)];\
	}\
}\
}

/* CONTHREE: contiguous three-index object pmat[n1][n2][n3] 
   mtype ***pmat, **ptemp, *parray 
   pmat[i][j][k] will then refer to correct matrix element,
   which is ptemp[i*n2 + j][k] = parray[i*n2*n3 + j*n3 + k]
*/
   
#define CONTHREE(pmat, ptemp, parray, mtype, n1, n2, n3){\
if (1) {\
	int count1,count2;\
	ALLOCATE(parray,mtype,((n1)*(n2)*(n3)), exit(-1));\
	ALLOCATE(ptemp,mtype *,((n1)*(n2)),exit(-1));\
	ALLOCATE(pmat,mtype **,(n1),exit(-1));\
	count2 = (n1)*(n2);\
	for(count1=0; count1< count2; count1++) {\
		ptemp[count1]= &parray[count1*(n3)];\
	}\
	for(count1=0; count1< (n1); count1++) {\
		pmat[count1]= &ptemp[count1*(n2)];\
	}\
}\
}

/* CONFOUR: contiguous four-index object pmat[n1][n2][n3][n4] 
   mtype ****pmat, ***pthree, **ptwo, *parray 
Then
   pmat[i][j][k][l] = pthree[i*n2 + j][k][l] =
   ptwo[i*n2*n3 + j*n3 + k][l] = parray[i*n2*n3*n4 + j*n3*n4 + k*n4 + l]
*/
   
#define CONFOUR(pmat, pthree, ptwo, parray, mtype, n1, n2, n3, n4){\
if (1) {\
	int count1,count2;\
	ALLOCATE(parray,mtype,((n1)*(n2)*(n3)*(n4)), exit(-1));\
	ALLOCATE(ptwo,mtype *,((n1)*(n2)*(n3)),exit(-1));\
	ALLOCATE(pthree,mtype **,((n1)*(n2)),exit(-1));\
	ALLOCATE(pmat,mtype ***,(n1),exit(-1));\
	count2 = (n1)*(n2)*(n3);\
	for(count1=0; count1< count2; count1++) {\
		ptwo[count1]= &parray[count1*(n4)];\
	}\
	count2 = (n1)*(n2);\
	for(count1=0; count1< count2; count1++) {\
		pthree[count1]= &ptwo[count1*(n3)];\
	}\
	for(count1=0; count1< (n1); count1++) {\
		pmat[count1]= &pthree[count1*(n2)];\
	}\
}\
}





Loading data, please wait...