Hyperexcitability from Nav1.2 channel loss in neocortical pyramidal cells (Spratt et al 2021)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:267067
Based on the Layer 5 thick-tufted pyramidal cell from the Blue Brain Project, we modify the distribution of the sodium channel Nav1.2 to recapitulate an increase in excitability observed in ex vivo slice experiments.
Reference:
1 . Spratt PWE, Alexander RPD, Ben-Shalom R, Sahagun A, Kyoung H, Keeshen CM, Sanders SJ, Bender KJ (2021) Paradoxical hyperexcitability from NaV1.2 sodium channel loss in neocortical pyramidal cells Cell Rep. 36(5):109483 [PubMed]
Citations  Citation Browser
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: Prefrontal cortex (PFC);
Cell Type(s): Neocortex layer 5 pyramidal cell;
Channel(s): I h; I M; I Potassium; I Sodium; I L high threshold; I T low threshold;
Gap Junctions:
Receptor(s):
Gene(s): Nav1.2 SCN2A;
Transmitter(s):
Simulation Environment: NEURON; Python;
Model Concept(s):
Implementer(s): Ben-Shalom, Roy [rbenshalom at ucdavis.edu]; Kyoung, Henry [hkyoung at berkeley.edu];
Search NeuronDB for information about:  I L high threshold; I T low threshold; I M; I h; I Sodium; I Potassium;
/
SprattEtAl2021
Na12 Analysis
mechanisms
branching.mod *
Ca_HVA.mod *
Ca_LVAst.mod *
CaDynamics_E2.mod *
Ih.mod *
Im.mod *
K_Pst.mod *
K_Tst.mod *
na12.mod
na12_mut.mod
na1216.mod *
na1216_mut.mod *
na16.mod
na8st.mod *
Nap_Et2.mod *
NaTa_t.mod *
NaTs2_t.mod *
nax8st.mod *
ProbAMPANMDA_EMS.mod *
ProbGABAAB_EMS.mod *
SK_E2.mod *
SKv3_1.mod *
vclmp_pl.mod *
26412.tmp *
                            
COMMENT

ENDCOMMENT

NEURON { SUFFIX nothing }

VERBATIM
#ifndef _NrnThread
#define _NrnThread NrnThread
#endif
#ifdef NRN_MECHANISM_DATA_IS_SOA
#define get_nnode(sec) _nrn_mechanism_get_nnode(sec)
#define get_node(sec, node_index) _nrn_mechanism_get_node(sec, node_index)
#else
#define get_nnode(sec) sec->nnode
#define get_node(sec, node_index) sec->pnode[node_index]
#endif
ENDVERBATIM
PROCEDURE init_files(){
	VERBATIM {
		
		
	}
	ENDVERBATIM
}





FUNCTION GetA(x) {
VERBATIM {
#if defined(t)
	_NrnThread* _nt = nrn_threads;
#endif
Section* sec;
	Node* nd;
	sec = chk_access();
	if (_lx < 0. || _lx > 1.) {
	//printf("_lx is %f and _lx*(double)(get_nnode(sec)-1) is %f\n",_lx,_lx*(double)(get_nnode(sec)-1));
		hoc_execerror("out of range, must be 0 < x <= 1", (char*)0);
	}
	if (_lx == 1.) {
		nd = get_node(sec, get_nnode(sec) - 1);
	}else{
		nd = get_node(sec, (int) (_lx*(double)(get_nnode(sec)-1)));
	}
	return NODEA(nd);
}
ENDVERBATIM
}
FUNCTION GetB(x) {
VERBATIM {
#if defined(t)
	_NrnThread* _nt = nrn_threads;
#endif
Section* sec;
	Node* nd;
	sec = chk_access();
	if (_lx < 0. || _lx > 1.) {
		//printf("_lx is %f and _lx*(double)(get_nnode(sec)-1) is %f\n",_lx,_lx*(double)(get_nnode(sec)-1));
		hoc_execerror("out of range, must be 0 < x <= 1", (char*)0);
	}
	if (_lx == 1.) {
		nd = get_node(sec, get_nnode(sec) - 1);
	}else{
		nd = get_node(sec, (int) (_lx*(double)(get_nnode(sec) - 1)));
	}
	return NODEB(nd);
}
ENDVERBATIM
}
FUNCTION SetA(x,a) {
VERBATIM {
#if defined(t)
	_NrnThread* _nt = nrn_threads;
#endif
Section* sec;
	Node* nd;
	sec = chk_access();
	if (_lx < 0. || _lx > 1.) {
		hoc_execerror("out of range, must be 0 < x <= 1", (char*)0);
	}
	if (_lx == 1.) {
		nd = get_node(sec, get_nnode(sec) - 1);
	}else{
		nd = get_node(sec, (int) (_lx*(double)(get_nnode(sec)-1)));
	}
	//printf("index is %d,NODEA(nd) is %f _la is %f\n",nd->v_node_index,NODEA(nd),_la);
	NODEA(nd) = _la;
}
ENDVERBATIM
}
FUNCTION SetB(x,b) {
VERBATIM {
#if defined(t)
	_NrnThread* _nt = nrn_threads;
#endif
Section* sec;
	Node* nd;
	sec = chk_access();
	if (_lx < 0. || _lx > 1.) {
		hoc_execerror("out of range, must be 0 < x <= 1", (char*)0);
	}
	if (_lx == 1.) {
		nd = get_node(sec, get_nnode(sec) - 1);
	}else{
		nd = get_node(sec, (int) (_lx*(double)(get_nnode(sec)-1)));
	}
	//printf("index is %d,NODEB(nd) is %f _lb is %f\n",nd->v_node_index,NODEB(nd),_lb);
	NODEB(nd) = _lb;
}
ENDVERBATIM
}

PROCEDURE MyPrintMatrix() {
VERBATIM {
	Section* sec;
	FILE* fm;
	fm= fopen("C:\fmatrix.dat", "wb");
	Node* nd;
	int ii;
#if defined(t)
	_NrnThread* _nt = nrn_threads;
#endif
for(ii=0;ii<_nt->end;ii++){
nd=_nt->_v_node[ii];
fprintf(fm,"%d %1.15f %1.15f %1.15f %1.15f\n", ii, NODEB(nd), NODEA(nd), NODED(nd), NODERHS(nd));
}
fclose(fm);
}
ENDVERBATIM
}
:PROCEDURE MyAdb() {
:VERBATIM {
:	int ii;
:#if defined(t)
:	_NrnThread* _nt = nrn_threads;
:#endif
:for(ii=0;ii<_nt->end;ii++){
:
:printf("%d,%1.15f %1.15f %1.15f %1.15f\n",ii, _nt->_actual_a[ii],_nt->_actual_d[ii],_nt->_actual_b[ii],_nt->_actual_rhs[ii]);
:}
:}
:ENDVERBATIM
:}

PROCEDURE PrintRHS_D() {
VERBATIM {
	int ii;
#if defined(t)
	_NrnThread* _nt = nrn_threads;
#endif
Node* nd;
for(ii=0;ii<_nt->end;ii++){
nd=_nt->_v_node[ii];
printf("%d,%1.15f %1.15f \n",ii,  NODED(nd), NODERHS(nd));
}
}
ENDVERBATIM
}

PROCEDURE MyTopology() {
VERBATIM {
	int ii;
#if defined(t)
	_NrnThread* _nt = nrn_threads;
#endif
for(ii=0;ii<_nt->end;ii++){

printf("%d %d\n", ii, _nt->_v_parent_index[ii]);
}
}
ENDVERBATIM
}

PROCEDURE MyTopology2() {
VERBATIM {
	FILE * pFile;
	int ii;
#if defined(t)
	_NrnThread* _nt = nrn_threads;
#endif
pFile = fopen ("parent.txt","w");
for(ii=0;ii<_nt->end;ii++){

fprintf(pFile,"%d ", _nt->_v_parent_index[ii]);
}
fclose (pFile);
}
ENDVERBATIM
}

PROCEDURE MyTopology1() {
VERBATIM {
	FILE * pFile;
	int ii;
#if defined(t)
	_NrnThread* _nt = nrn_threads;
#endif
pFile = fopen ("64TL.csv","w");
for(ii=0;ii<_nt->end;ii++){

fprintf(pFile,"%d %d\n", ii, _nt->_v_parent_index[ii]);
}
fclose (pFile);
}
ENDVERBATIM
}

PROCEDURE MyPrintMatrix1() {
VERBATIM {
	Section* sec;
	FILE* fm;
	fm= fopen("64TL.csv", "w");
	Node* nd;
	int ii;
#if defined(t)
	_NrnThread* _nt = nrn_threads;
#endif
for(ii=0;ii<_nt->end;ii++){
nd=_nt->_v_node[ii];
fprintf(fm,"%d %1.15f %1.15f %1.15f %1.15f\n", ii, NODEB(nd), NODEA(nd), NODED(nd), NODERHS(nd));
}
fclose (fm);
}
ENDVERBATIM
}

PROCEDURE MyPrintMatrix3() {
VERBATIM {
	Section* sec;
	FILE* fm;
	fm= fopen("Fmatrix.csv", "w");
	Node* nd;
	int ii;
#if defined(t)
	_NrnThread* _nt = nrn_threads;
#endif
for(ii=0;ii<_nt->end;ii++){
nd=_nt->_v_node[ii];
fprintf(fm,"%d %1.15f %1.15f %1.15f %1.15f\n", ii, NODEB(nd), NODEA(nd), NODED(nd), NODERHS(nd));
}
fclose (fm);
}
ENDVERBATIM
}