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

Spike burst-pause dynamics of Purkinje cells regulate sensorimotor adaptation (Luque et al 2019)

 Download zip file 
Help downloading and running models
"Cerebellar Purkinje cells mediate accurate eye movement coordination. However, it remains unclear how oculomotor adaptation depends on the interplay between the characteristic Purkinje cell response patterns, namely tonic, bursting, and spike pauses. Here, a spiking cerebellar model assesses the role of Purkinje cell firing patterns in vestibular ocular reflex (VOR) adaptation. The model captures the cerebellar microcircuit properties and it incorporates spike-based synaptic plasticity at multiple cerebellar sites. ..."
1 . Luque NR, Naveros F, Carrillo RR, Ros E, Arleo A (2019) Spike burst-pause dynamics of Purkinje cells regulate sensorimotor adaptation. PLoS Comput Biol 15:e1006298 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell; Realistic Network;
Brain Region(s)/Organism: Cerebellum;
Cell Type(s): Cerebellum Purkinje GABA cell; Cerebellum interneuron granule GLU cell; Vestibular neuron; Abstract integrate-and-fire leaky neuron;
Channel(s): I K; I Na,t; I L high threshold; I M;
Gap Junctions:
Receptor(s): AMPA; Gaba;
Simulation Environment: EDLUT; NEURON; MATLAB;
Model Concept(s): Activity Patterns; Sleep; Long-term Synaptic Plasticity; Vestibular;
Implementer(s): Luque, Niceto R. [nluque at];
Search NeuronDB for information about:  Cerebellum Purkinje GABA cell; Cerebellum interneuron granule GLU cell; AMPA; Gaba; I Na,t; I L high threshold; I K; I M;
Articulo purkinje
BDFn.h *
BDFn_GPU.h *
BDFn_GPU2.h *
Euler.h *
Euler_GPU.h *
Euler_GPU2.h *
FixedStep.h *
FixedStepSRM.h *
IntegrationMethod.h *
IntegrationMethod_GPU.h *
IntegrationMethod_GPU2.h *
LoadIntegrationMethod.h *
LoadIntegrationMethod_GPU.h *
LoadIntegrationMethod_GPU2.h *
RK2.h *
RK2_GPU.h *
RK2_GPU2.h *
RK4.h *
RK4_GPU.h *
RK4_GPU2.h *
RK45.h *
 *                           LoadIntegrationMethod_GPU.h                   *
 *                           -------------------                           *
 * copyright            : (C) 2013 by Francisco Naveros                    *
 * email                :                              *

 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 3 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *


 * \file LoadIntegrationMethod_GPU.h
 * \author Francisco Naveros
 * \date November 2012
 * This file declares a class which load all integration methods in GPU.

#include <string>
//using namespace std;

#include "./IntegrationMethod_GPU2.h"
#include "./Euler_GPU2.h"
#include "./RK2_GPU2.h"
#include "./RK4_GPU2.h"
#include "./BDFn_GPU2.h"

class TimeDrivenNeuronModel_GPU2;

 * \class LoadIntegrationMethod_GPU2
 * \brief Load Integration methods in GPU
 * \author Francisco Naveros
 * \date May 2013
class LoadIntegrationMethod_GPU2 {


		__device__ static int cmp4(char const* c1, char const* c2, int size){
			for(int j=0; j<size; j++){
				if((int)c1[j] > (int)c2[j]){
					return 1;
				}else if((int)c1[j] < (int)c2[j]){
					return -1;
			return 0;

		__device__ static int atoiGPU(char const* data, int position){
			return (((int)data[position])-48);

		__device__ static IntegrationMethod_GPU2 * loadIntegrationMethod_GPU2(TimeDrivenNeuronModel_GPU2* NewModel, char const* integrationName, int N_NeuronStateVariables, int N_DifferentialNeuronState, int N_TimeDependentNeuronState, void ** Buffer_GPU){
			IntegrationMethod_GPU2 * Method;
			if(cmp4(integrationName, "Euler", 5)==0){
				Method=(Euler_GPU2 *) new Euler_GPU2(NewModel, N_NeuronStateVariables, N_DifferentialNeuronState, N_TimeDependentNeuronState, Buffer_GPU);
			}else if(cmp4(integrationName, "RK2", 3)==0){
				Method=(RK2_GPU2 *) new RK2_GPU2(NewModel, N_NeuronStateVariables, N_DifferentialNeuronState, N_TimeDependentNeuronState,Buffer_GPU);
			}else if(cmp4(integrationName, "RK4", 3)==0){
				Method=(RK4_GPU2 *) new RK4_GPU2(NewModel, N_NeuronStateVariables, N_DifferentialNeuronState, N_TimeDependentNeuronState,Buffer_GPU);
			}else if(cmp4(integrationName, "BDF", 3)==0 && atoiGPU(integrationName,3)>0 && atoiGPU(integrationName,3)<7){
				Method=(BDFn_GPU2 *) new BDFn_GPU2(NewModel, N_NeuronStateVariables, N_DifferentialNeuronState, N_TimeDependentNeuronState, Buffer_GPU, atoiGPU(integrationName,3));
				printf("There was an error loading the integration methods of the GPU.\n");

			return Method;




Loading data, please wait...