ModelDB is moving. Check out our new site at https://modeldb.science. The corresponding page is https://modeldb.science/150284.

Multiscale simulation of the striatal medium spiny neuron (Mattioni & Le Novere 2013)

 Download zip file 
Help downloading and running models
Accession:150284
"… We present a new event-driven algorithm to synchronize different neuronal models, which decreases computational time and avoids superfluous synchronizations. The algorithm is implemented in the TimeScales framework. We demonstrate its use by simulating a new multiscale model of the Medium Spiny Neuron of the Neostriatum. The model comprises over a thousand dendritic spines, where the electrical model interacts with the respective instances of a biochemical model. Our results show that a multiscale model is able to exhibit changes of synaptic plasticity as a result of the interaction between electrical and biochemical signaling. …"
Reference:
1 . Mattioni M, Le Novère N (2013) Integration of biochemical and electrical signaling-multiscale model of the medium spiny neuron of the striatum. PLoS One 8:e66811 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell; Synapse;
Brain Region(s)/Organism: Striatum;
Cell Type(s): Neostriatum medium spiny direct pathway GABA cell;
Channel(s): I Na,p; I Na,t; I T low threshold; I A; I K,Ca; I CAN; I Calcium; I A, slow; I Krp; I R; I Q;
Gap Junctions:
Receptor(s):
Gene(s): Kv4.2 KCND2; Kv1.2 KCNA2; Cav1.3 CACNA1D; Cav1.2 CACNA1C; Kv2.1 KCNB1;
Transmitter(s):
Simulation Environment: NEURON; Python;
Model Concept(s): Synaptic Plasticity; Signaling pathways; Calcium dynamics; Multiscale;
Implementer(s): Mattioni, Michele [mattioni at ebi.ac.uk];
Search NeuronDB for information about:  Neostriatum medium spiny direct pathway GABA cell; I Na,p; I Na,t; I T low threshold; I A; I K,Ca; I CAN; I Calcium; I A, slow; I Krp; I R; I Q;
import matplotlib.pyplot as plt
import os 

#from helpers.plotter import DoublePlotter, StimulPlotter
import neuronvisio.manager

filename = 'storage.h5'

#stimulated_spines = ['spine554', 'spine555', 'spine556', 
#                     'spine558', 'spine559', 'spine560', 
#                     'spine562', 'spine563', 'spine564', 
#                     'spine1468', 'spine1469', 'spine1470', 
#                     'spine1472', 'spine1473', 'spine1474', 
#                     'spine1476', 'spine1477', 'spine1478']
stimulated_spines = ['spine559', 'spine560']

#stimulated_spines = ['spine554']
#dirs = {'cpm_8Hz' : 'Data_rmt/30-04-2011/Sim_0/',
#        'cpm_20Hz' : 'Data_rmt/29-04-2011/Sim_2/',
#        'cpm_40Hz' : 'Data_rmt/29-04-2011/Sim_1/',
#        'cpm_50Hz' : 'Data_rmt/29-04-2011/Sim_0/',
#        'cpm_40Hz_long' : 'Data_rmt/25-06-2011/Sim_0/',
#        }
dirs = {'small_volume_20Hz' : 'Data_rmt/26-02-2012/Sim_0/',
        'right_volume_20Hz' : 'Data_rmt/29-02-2012/Sim_0/'
        }


def plotting(fig_fil):
    pass



for condition, dir in dirs.iteritems():
    h5_filename = dir + 'storage.h5'
    neuronvisio.manager = reload(neuronvisio.manager)
    prefix = 'bio_' 
    name = "%s_enzymes_%s_%s%s" %(prefix, condition, 'spine1478', '.png')
    tstop_bio = 300
    if not os.path.exists(os.path.join(dir, name)):
        man = neuronvisio.manager.Manager()
        man.load_from_hdf(h5_filename)
        #dp = DoublePlotter()
        #sp = StimulPlotter()
        
        
        for spine_num in stimulated_spines:
            name = None
            fig_filename = None
            name = prefix + condition + "_" + spine_num + '.png'
            fig_filename = os.path.join(dir, name)
    
            if not os.path.exists(fig_filename):
                bio_group = 'timeSeries_' + spine_num
                
                sec_name = "%s_head" %spine_num
                
                # Scaling time
                t = man.groups[bio_group]
                t_ms = (t.read()- tstop_bio) * 1e3 #scaling to ms
                
                # Plotting the vars
                vars = ['PP2Bbar', 'CaMKIIbar', 'PP1abar', 'Dpbar']
                fig = plt.figure()
                for var in vars:
                    
                    vec_bio = man.get_vector(spine_num, var, group=bio_group)
                
                    plt.plot(t_ms, vec_bio, label=var)
                    plt.ylabel('Normalized activation')
                    plt.xlabel('Time [ms]')
                    plt.xlim(0,20000)
                    plt.ylim(0, 1.0)
                    plt.legend()
                    plt.title(spine_num)
                    
                    for ext in ['.png', '.pdf']:            
                        name = "%s_enzymes_%s_%s%s" %(prefix, condition, spine_num, ext)
                        fig_filename = os.path.join(dir, name)
                        plt.savefig(fig_filename)
                        print "Saved file %s" %fig_filename
                    
                # Calcium
                fig = plt.figure()
                vec_bio = man.get_vector(spine_num, 'ca_conc', group=bio_group)
                label ="%s_ca" %spine_num
                plt.plot(t_ms, vec_bio[:], 'r-', label=label)
                plt.xlabel('Time [ms]')
                plt.ylabel('Concentration [mM]')
                plt.xlim(0,20000)
                #sp.plot_input(spine_num, man, height_in_the_graph=0.0005)
                #plt.ylim(0, 0.010)
                
                for ext in ['.png', '.pdf']:            
                    name = "%s_calcium_%s_%s%s" %(prefix, condition, spine_num, ext)
                    fig_filename = os.path.join(dir, name)
                    plt.savefig(fig_filename)
                    print "Saved file %s" %fig_filename
            else:
                print "File %s exist. Skipping" %fig_filename
        del man
    else:
        print "Skipping dir %s" %dir

Loading data, please wait...