SCN1A gain-of-function in early infantile encephalopathy (Berecki et al 2019)

 Download zip file 
Help downloading and running models
Accession:264834
"OBJECTIVE: To elucidate the biophysical basis underlying the distinct and severe clinical presentation in patients with the recurrent missense SCN1A variant, p.Thr226Met. Patients with this variant show a well-defined genotype-phenotype correlation and present with developmental and early infantile epileptic encephalopathy that is far more severe than typical SCN1A Dravet syndrome. METHODS: Whole cell patch clamp and dynamic action potential clamp were used to study T226M Nav 1.1 channels expressed in mammalian cells. Computational modeling was used to explore the neuronal scale mechanisms that account for altered action potential firing. RESULTS: T226M channels exhibited hyperpolarizing shifts of the activation and inactivation curves and enhanced fast inactivation. Dynamic action potential clamp hybrid simulation showed that model neurons containing T226M conductance displayed a left shift in rheobase relative to control. At current stimulation levels that produced repetitive action potential firing in control model neurons, depolarization block and cessation of action potential firing occurred in T226M model neurons. Fully computationally simulated neuron models recapitulated the findings from dynamic action potential clamp and showed that heterozygous T226M models were also more susceptible to depolarization block. ..."
Reference:
1 . Berecki G, Bryson A, Terhag J, Maljevic S, Gazina EV, Hill SL, Petrou S (2019) SCN1A gain of function in early infantile encephalopathy. Ann Neurol 85:514-525 [PubMed]
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): I Sodium;
Gap Junctions:
Receptor(s):
Gene(s): Nav1.1 SCN1A;
Transmitter(s):
Simulation Environment: NEURON; Python; BluePyOpt ;
Model Concept(s): Action Potentials; Epilepsy; Depolarization block; Development;
Implementer(s): Bryson, Alex [alexander.bryson at florey.edu.au];
Search NeuronDB for information about:  I Sodium;
/
modelDB_scn1a
mechanisms
morphologies
save
README.html
PV_template.hoc
run.py
                            
"""

Plot Figures 4C & 4D from:
Berecki, Bryson et al. SCN1A Gain of Function in Early Infantile Encephalopathy, Ann Neurol 2019

Script takes 'trace' or 'if' as argument to plot time-voltage trace or I-F relationship. Ie

python3 run.py --trace

"""

import sys,os,argparse,neuron
from neuron import h
import numpy as np
import matplotlib.pyplot as plt


def main():

    parser = argparse.ArgumentParser()
    parser.add_argument('--plot', required=True)
    args,unknown = parser.parse_known_args()
    PLOT = str(args.plot)

    # load PV template
    h.load_file('PV_template.hoc')

    # plot time-voltage traces
    if PLOT=='trace':
        params={'Het':[0.5,0.3],'Hom':[1.0,0.175]} # specify proportion of 'mutated' channels and current input
        Traces(params)

    # plot IF curve
    if PLOT == 'if':
        inputs = np.linspace(0,0.15,40) # input current (nA)
        IF(inputs)

    print('done')

# GET TIME-VOLTAGE TRACES
def Traces(params):
    for P,p in params.items():

        # create cells
        PvM,PvWT=h.pv('morphologies','C210401C.asc'),h.pv('morphologies','C210401C.asc')

        # get T226m trace
        PvM = mut(PvM,p[0]) # 'mutate' Nav1.1
        tM,vM,apM= getTrace(PvM,p[1],180)
        fig,ax=plt.subplots(1,1,figsize=(5,2.0))
        ax.plot(tM,vM,'red')

        # get WT trace
        tWT,vWT,apWT = getTrace(PvWT,p[1],180)
        ax.plot(tWT,vWT,'black'), ax.legend(['T226M', 'WT'],fontsize='x-small',loc='upper right')
        ax.set_title(P,weight='demi'),ax.set_ylabel('mV',fontsize=8),ax.set_xlabel('ms')

        fig.tight_layout()
        fig.savefig('save/'+P+'.pdf')


# GET IF CURVE
def IF(inputs):

    # create cells
    [PvHet,PvHom,PvWT]=[h.pv('morphologies','C210401C.asc') for X in range(3)]

    # 'mutate' proportion of Nav11 channels
    PvHom = mut(PvHom,1.0)
    PvHet = mut(PvHet,0.5)

    # get WT IF
    apWT = getIF(inputs,PvWT)

    # get Het IF
    apHet = getIF(inputs,PvHet)

    # get Hom IF
    apHom = getIF(inputs,PvHom)

    # plot
    fig,ax=plt.subplots(1,2,figsize=(10,3.0))
    ax[0].plot(inputs*1000,apWT,'o-',color='black'),ax[0].plot(inputs*1000,apHet,'o-',color='red')
    ax[1].plot(inputs*1000,apWT,'o-',color='black'),ax[1].plot(inputs*1000,apHom,'o-',color='red')
    for AX in ax:
        AX.set_xlabel('pA',fontsize=9),AX.set_ylabel('Hz',fontsize=9)
        AX.legend(['WT','T226M'])
    ax[0].set_title('Het', weight='demi'),ax[1].set_title('Hom', weight='demi')
    fig.tight_layout()

    # save
    fig.savefig('save/if.pdf')


#  *** OTHER FUNCTIONS ***

# change Nav1.1 conductance within 'mutated' Nav11m channels
def mut(Pv,MUT):
    for sec in Pv.all:
        if 'Nav11' in [mech.name() for seg in sec.allseg() for mech in seg]:
            gNav = sec(0.5).gNav11bar_Nav11
        for seg in sec:
            for mech in seg:
                if mech.name()=='Nav11m':
                    seg.gNav11bar_Nav11m = MUT*gNav
                    seg.mh_Nav11m, seg.hh_Nav11m = -26.6, -60.2
                    seg.tmh_Nav11m,seg.thh_Nav11m = -40.0, -65.0
                if mech.name()=='Nav11':
                    seg.gNav11bar_Nav11 = (1.0 - MUT)*gNav
    return Pv

def Icl(sec,AMP,DUR):
    Ic = h.IClamp(sec(0.5))
    Ic.dur, Ic.delay, Ic.amp = DUR,20,AMP
    return Ic

def Vec(sec, VAR):
    v = h.Vector()
    if VAR=='V': v.record(sec(0.5)._ref_v)
    if VAR=='T':v.record(h._ref_t)
    if VAR=='APC':v = h.APCount(sec(0.5))
    return v

def getTrace(Pv,AMP,DUR):
    stim=Icl(Pv.soma[0],AMP,DUR)
    t,v,APc=Vec(Pv.soma[0],'T'),Vec(Pv.soma[0],'V'),Vec(Pv.soma[0],'APC')
    hRun(DUR+20)
    return t,v,APc

def getIF(inputs,Pv):
    aps = []
    for AMP in inputs: aps.append(getTrace(Pv,AMP,500)[2].n*2.0) # run over 500ms
    return aps

def hRun(T):
    h.tstop,h.celsius=T,24.0
    h.cvode_active(1)
    h.run()

if __name__=='__main__':
    main()

Loading data, please wait...