ModelDB is moving. Check out our new site at The corresponding page is

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

 Download zip file 
Help downloading and running models
"… 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. …"
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:
Gene(s): Kv4.2 KCND2; Kv1.2 KCNA2; Cav1.3 CACNA1D; Cav1.2 CACNA1C; Kv2.1 KCNB1;
Simulation Environment: NEURON; Python;
Model Concept(s): Synaptic Plasticity; Signaling pathways; Calcium dynamics; Multiscale;
Implementer(s): Mattioni, Michele [mattioni at];
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 os
from shutil import copyfile
import numpy as np

# Getting the qt in before mayavi
from PyQt4 import QtGui
app = QtGui.QApplication.instance()

from enthought.mayavi import mlab
# Offscreen
mlab.options.offscreen = True

import neuronvisio.controls
from neuronvisio.visio import Visio

prefix = 'Data_rmt/'

dirs = {'cpm_8Hz' : prefix + '30-04-2011/Sim_0/',
        'cpm_20Hz' : prefix + '29-04-2011/Sim_2/',
        'cpm_40Hz' : prefix + '29-04-2011/Sim_1/',
        'cmp_50Hz' : prefix + '29-04-2011/Sim_0'

#dirs = {'medium_model' : 'helpers/',
#        }

# Vars

var = 'v'
start_value = -90
end_value = 0
h5_filename = 'storage.h5'
animation_dir = 'animation'
screenshot_dir = 'screenshot'

single_stim_first_train = np.arange(80000, 80601, 5)
single_stim_second_train = np.arange(162501, 163201, 5)

total_time_index_array = np.hstack((single_stim_first_train,

if __name__ == '__main__' :
    for condition, dir in dirs.iteritems():
        # Loading the file
        neuronvisio.controls = reload(neuronvisio.controls)
        man = neuronvisio.manager.Manager()
        man.load_from_hdf(os.path.join(dir, h5_filename))
        # Launch Visio
        visio = Visio(None, man)
        time = man.groups['t']
        for i, indx in enumerate(total_time_index_array):
            # Creating the dirs
            path_animation = os.path.join(dir, animation_dir) 
            path_screenshots = os.path.join(dir, screenshot_dir)
            if not os.path.exists(path_animation):
            if not os.path.exists(path_screenshots):
            time_point = time[indx]
            figure_filename_screenshot = '%s_%s_%09d.png' %(condition, time_point, i)
            figure_filename_animation = '%s%09d.png' %(condition, i)
            file = os.path.join(path_animation, figure_filename_animation)
            path_animation_file = os.path.join(path_animation, 
            path_screenshot_file = os.path.join(path_screenshots, 
            if not os.path.exists(path_animation_file):
                visio.show_variable_timecourse(var, indx, 
                                             start_value, end_value)
                print "Saving %s" %path_animation_file
                             size=(1280, 1024))
                copyfile(path_animation_file, path_screenshot_file)

Loading data, please wait...