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

 Download zip file   Auto-launch 
Help downloading and running models
Accession:256140
"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. ..."
Reference:
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;
Gene(s):
Transmitter(s):
Simulation Environment: EDLUT; NEURON; MATLAB;
Model Concept(s): Activity Patterns; Sleep; Long-term Synaptic Plasticity; Vestibular;
Implementer(s): Luque, Niceto R. [nluque at ugr.es];
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;
dnl cuda3.m4 --- check for Cuda software.
dnl
dnl Copyright (C) 2013 Jesus Garrido based on a previous MATLAB version by Ralph Schleicher
dnl
dnl This program is free software; you can redistribute it and/or
dnl modify it under the terms of the GNU General Public License as
dnl published by the Free Software Foundation; either version 2,
dnl or (at your option) any later version.
dnl
dnl This program is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
dnl GNU General Public License for more details.
dnl
dnl You should have received a copy of the GNU General Public License
dnl along with this program; see the file COPYING.  If not, write to
dnl the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
dnl Boston, MA 02111-1307, USA.
dnl
dnl As a special exception to the GNU General Public License, if
dnl you distribute this file as part of a program that contains a
dnl configuration script generated by GNU Autoconf, you may include
dnl it under the same distribution terms that you use for the rest
dnl of that program.
dnl
dnl Code:

# AX_CUDA
# ---------
# Check for Cuda.
AC_DEFUN([AX_CUDA],
[dnl
AC_PREREQ([2.50])
ax_enable_cuda=AC_ARG_WITH([cuda], AS_HELP_STRING([--with-cuda], [check for Cuda [[yes]]]),
    [case $withval in
	  yes | no)
	    # Explicitly enable or disable Cuda but determine
	    # Cuda prefix automatically.
	    ax_enable_cuda=$withval
	    ;;
	  *)
	    # Enable Cuda and use ARG as the Cuda prefix.
	    # ARG must be an existing directory.
	    ax_enable_cuda=yes
	    CUDA=`cd "${withval-/}" > /dev/null 2>&1 && pwd`
	    if test -z "$CUDA" ; then
		AC_MSG_ERROR([invalid value '$withval' for --with-cuda])
	    fi
	    ;;
	esac])

if test x$ax_enable_cuda == xno ; then
	AC_MSG_CHECKING([whether to enable Cuda support])
	AC_MSG_RESULT([$ax_enable_cuda])
else
	AC_CACHE_CHECK([for Cuda prefix], [ax_cv_cuda],
	[if test "${CUDA+set}" = set ; then
	    ax_cv_cuda=`cd "${CUDA-/}" > /dev/null 2>&1 && pwd`
	else
	    ax_cv_cuda=
	    IFS=${IFS= 	} ; ax_ifs=$IFS ; IFS=:
	    for ax_dir in ${PATH-/opt/bin:/usr/local/bin:/usr/bin:/bin} ; do
		if test -z "$ax_dir" ; then
		    ax_dir=.
		fi
		if test -x "$ax_dir/nvcc" ; then
		    ax_dir=`echo "$ax_dir" | sed 's,/bin$,,'`
		    # Directory sanity check.
		    ax_cv_cuda=`cd "${ax_dir-/}" > /dev/null 2>&1 && pwd`
		    if test -n "$ax_cv_cuda" ; then
			    break
		    fi
		fi
	    done
	    IFS=$ax_ifs
	fi
	if test -z "$ax_cv_cuda" ; then
	    ax_cv_cuda="not found"
	fi])
	if test "$ax_cv_cuda" = "not found" ; then
	    unset CUDA
	else
	    # Strip trailing dashes.
	    CUDA=`echo "$ax_cv_cuda" | sed 's,/*$,,'`
	fi
	AC_MSG_CHECKING([whether to enable Cuda support])
	if test x$ax_enable_cuda != xno ; then
	    if test "${CUDA+set}" = set && test -d "$CUDA/include" && test -d "$CUDA/lib" ; then
			ax_enable_cuda=yes
	    	elif test x$ax_enable_cuda = x ; then
			ax_enable_cuda=no
	    else
			# Fail if Cuda was explicitly enabled.
			AC_MSG_RESULT([failure])
			AC_MSG_ERROR([check your Cuda setup])
	    fi
	fi
	AC_MSG_RESULT([$ax_enable_cuda])
	if test x$ax_enable_cuda = xyes ; then
		# Check CUDA driver version
		
		AC_CACHE_VAL(mx_cv_CXXFLAGS,mx_cv_CXXFLAGS="${CXXFLAGS}")
		AC_CACHE_VAL(mx_cv_LDFLAGS,mx_cv_LDFLAGS="${LDFLAGS}")
	    
		AC_SUBST(CXXFLAGS,"${CXXFLAGS} -I${CUDA}/include")
		AC_SUBST(LDFLAGS,"${LDFLAGS} -L${CUDA}/lib -lcudart")
	    
		AC_CACHE_VAL(mx_cv_cuda_driver_version,
			if test "${CUDA_DRIVER_VERSION+set}" = set ; then
	    		mx_cv_cuda_driver_version=$CUDA_DRIVER_VERSION
			else
	    		mx_cv_cuda_driver_version=    
	    
	    		AC_MSG_CHECKING([whether to enable Cuda compiling])
	    		AC_COMPILE_IFELSE([
		  			AC_LANG_SOURCE([[
			    		#include <iostream> 	
						#include <cstdlib> 		
						#include <cuda.h>		
						#include <cuda_runtime.h> 
						
						int main(){
							int deviceCount=0, driverVersion = 0;												
				    		cudaGetDeviceCount(&deviceCount);								
				    
				    		if (deviceCount == 0) {											
				        		fprintf(stderr,"error: no devices supporting CUDA.\n");		
				        		exit(EXIT_FAILURE);											
				    		}																
				    		int dev = 0;													
				    		cudaSetDevice(dev);												
				
				    		cudaDriverGetVersion(&driverVersion);								
				    		printf("%d.%d",driverVersion/1000, (driverVersion%100)/10);			
				        }																
					]])],
	    			[AC_MSG_RESULT([yes])],
	    			[AC_MSG_RESULT([no])
	    			AC_MSG_FAILURE([CUDA compiling execution failed])]
	    		)
	    	
	    		AC_MSG_CHECKING([whether to enable Cuda linking])
	    		AC_LINK_IFELSE([
	    			AC_LANG_SOURCE([[
			    		#include <iostream> 	
						#include <cstdlib> 		
						#include <cuda.h>		
						#include <cuda_runtime.h> 
						
						int main(){
							int deviceCount=0, driverVersion = 0;												
				    		cudaGetDeviceCount(&deviceCount);								
				    
				    		if (deviceCount == 0) {											
				        		fprintf(stderr,"error: no devices supporting CUDA.\n");		
				        		exit(EXIT_FAILURE);											
				    		}																
				    		int dev = 0;													
				    		cudaSetDevice(dev);												
				
				    		cudaDriverGetVersion(&driverVersion);								
				    		printf("%d.%d",driverVersion/1000, (driverVersion%100)/10);			
				        }																			
					]])],
	    			[AC_MSG_RESULT([yes])],
	    			[AC_MSG_RESULT([no])
	    			AC_MSG_FAILURE([CUDA linking execution failed])]
	    		)
	    
	    		AC_MSG_CHECKING([whether to enable Cuda runing])
	    		AC_RUN_IFELSE([
		  			AC_LANG_SOURCE([[
			    		#include <iostream> 	
						#include <cstdlib> 		
						#include <cuda.h>		
						#include <cuda_runtime.h> 
						
						int main(){
							int deviceCount=0, driverVersion = 0;												
				    		cudaGetDeviceCount(&deviceCount);								
				    
				    		if (deviceCount == 0) {											
				        		fprintf(stderr,"error: no devices supporting CUDA.\n");		
				        		exit(EXIT_FAILURE);											
				    		}																
				    		int dev = 0;													
				    		cudaSetDevice(dev);												
				
				    		cudaDriverGetVersion(&driverVersion);								
				    		printf("%d.%d",driverVersion/1000, (driverVersion%100)/10);			
				        }												
					]])],
	    			[AC_MSG_RESULT([yes])
	    			AC_MSG_CHECKING([CUDA Driver version])
	    			mx_cv_cuda_driver_version=`./conftest"${EXEEXT}" > /tmp/testfile.log`
	    			mx_cv_cuda_driver_version=`cat /tmp/testfile.log`
	    			`rm /tmp/testfile.log`
	    			AC_MSG_RESULT([$mx_cv_cuda_driver_version])],
	    			[AC_MSG_RESULT([no])
	    			AC_MSG_FAILURE([CUDA code execution failed])]
	    		)
	    	
	    		AC_SUBST(CUDA_DRIVER_VERSION, $mx_cv_cuda_driver_version)
			    mx_cv_cuda_driver_major=`echo $mx_cv_cuda_driver_version | $AWK -F. '{print $ 1}'`
			    mx_cv_cuda_driver_minor=`echo $mx_cv_cuda_driver_version | $AWK -F. '{print $ 2}'`
			    AC_SUBST(CUDA_DRIVER_MAJOR, $mx_cv_cuda_driver_major)
			    AC_SUBST(CUDA_DRIVER_MINOR, $mx_cv_cuda_driver_minor)
			fi
		)
		
		
		if test x$CUDA_DRIVER_VERSION = x ; then
	    	AC_MSG_ERROR([can not determine CUDA driver version number])
		fi
	
		AC_MSG_CHECKING([if CUDA driver version is sufficient])
		mx_version=5.0
		case $mx_version in
	  		@<:@1-9@:>@ | @<:@1-9@:>@@<:@0-9@:>@)
	    		mx_major=$mx_version
	    		mx_minor=''
	    		;;
	  			@<:@1-9@:>@.@<:@0-9@:>@ | @<:@1-9@:>@@<:@0-9@:>@.@<:@0-9@:>@)
	    		mx_major=`echo $mx_version | sed 's/^\(@<:@0-9@:>@*\)\.@<:@0-9@:>@*.*/\1/'`
	    		mx_minor=`echo $mx_version | sed 's/^@<:@0-9@:>@*\.\(@<:@0-9@:>@*\).*/\1/'`
	    		;;
	  			*)
	    		AC_MSG_RESULT([failure])
	    		AC_MSG_NOTICE([report this bug to the responsible package maintainer])
	    		AC_MSG_ERROR([invalid CUDA Driver version number argument to AX_REQUIRE_CUDA_DRIVER_VERSION])
			    ;;
		esac
		mx_ans=yes
		if test $CUDA_DRIVER_MAJOR -eq $mx_major ; then
    		if test x$mx_minor != x && test $CUDA_DRIVER_MINOR -lt $mx_minor ; then
				mx_ans=no
    		fi
		elif test $CUDA_DRIVER_MAJOR -lt $mx_major ; then
    		mx_ans=no
		fi
		AC_MSG_RESULT([$mx_ans])
		
		if test x$mx_ans = xno ; then
			$ax_enable_cuda=no
			$CUDA=
    		AC_MSG_NOTICE([require CUDA Driver version $mx_version or above])
		fi
	fi
	
	if test x$ax_enable_cuda = xyes ; then	
		# Check CUDA architecture
		AC_CACHE_VAL(mx_cv_cuda_version,

			if test "${CUDA_VERSION+set}" = set ; then
		    	mx_cv_cuda_version=$CUDA_VERSION
			else
		    	mx_cv_cuda_version=    
		    
		    	AC_MSG_CHECKING([whether to enable Cuda runing])
		    	AC_RUN_IFELSE([
			  		AC_LANG_SOURCE([[
			    		#include <iostream> 	
						#include <cstdlib> 		
						#include <cuda.h>		
						#include <cuda_runtime.h> 
						
						int main(){
							int deviceCount;												
				    		cudaGetDeviceCount(&deviceCount);								
				    
				    		if (deviceCount == 0) {											
				        		fprintf(stderr,"error: no devices supporting CUDA.\n");		
				        		exit(EXIT_FAILURE);											
				    		}																
				    		int dev = 0;													
				    		cudaSetDevice(dev);												
				
				    		cudaDeviceProp prop;											
				    		if (cudaGetDeviceProperties(&prop, dev) == cudaSuccess){		
				        		printf("%d.%d\n",(int)prop.major, (int)prop.minor);			
				            } else {														
				            	fprintf(stderr, "error: no device properties.\n");		
				        		exit(EXIT_FAILURE);											
				        	}
				        }																
					]])],[
		    		AC_MSG_RESULT([yes])
		    		AC_MSG_CHECKING([CUDA architecture])
		    		mx_cv_cuda_version=`./conftest"${EXEEXT}" > /tmp/testfile.log`
		    		mx_cv_cuda_version=`cat /tmp/testfile.log`
		    		`rm /tmp/testfile.log`
		    		AC_MSG_RESULT([$mx_cv_cuda_version])
		    		],[
		    		AC_MSG_RESULT([no])
		    		AC_MSG_FAILURE([CUDA code execution failed])
		    		]
		    	)
		
			    AC_SUBST(CUDA_VERSION, $mx_cv_cuda_version)
			    mx_cv_cuda_major=`echo $mx_cv_cuda_version | $AWK -F. '{print $ 1}'`
			    mx_cv_cuda_minor=`echo $mx_cv_cuda_version | $AWK -F. '{print $ 2}'`
			    AC_SUBST(CUDA_MAJOR, $mx_cv_cuda_major)
			    AC_SUBST(CUDA_MINOR, $mx_cv_cuda_minor)
			    
			    AC_SUBST(CXXFLAGS,$mx_cv_CXXFLAGS)
			    AC_SUBST(LDFLAGS,$mx_cv_LDFLAGS)
			fi
		)
		
		if test x$CUDA_VERSION = x ; then
	    	AC_MSG_ERROR([can not determine CUDA version number])
		fi
	
		AC_MSG_CHECKING([if CUDA version is sufficient])
		mx_version=2.0
		case $mx_version in
  			@<:@1-9@:>@ | @<:@1-9@:>@@<:@0-9@:>@)
    		mx_major=$mx_version
    		mx_minor=''
    		;;
  			@<:@1-9@:>@.@<:@0-9@:>@ | @<:@1-9@:>@@<:@0-9@:>@.@<:@0-9@:>@)
    		mx_major=`echo $mx_version | sed 's/^\(@<:@0-9@:>@*\)\.@<:@0-9@:>@*.*/\1/'`
    		mx_minor=`echo $mx_version | sed 's/^@<:@0-9@:>@*\.\(@<:@0-9@:>@*\).*/\1/'`
    		;;
  		*)
    		AC_MSG_RESULT([failure])
    		AC_MSG_NOTICE([report this bug to the responsible package maintainer])
    		AC_MSG_ERROR([invalid CUDA version number argument to AX_REQUIRE_CUDA_VERSION])
    		;;
		esac
		
		mx_ans=yes
		if test $CUDA_MAJOR -eq $mx_major ; then
    		if test x$mx_minor != x && test $CUDA_MINOR -lt $mx_minor ; then
				mx_ans=no
    		fi
		elif test $CUDA_MAJOR -lt $mx_major ; then
    		mx_ans=no
		fi
		
		AC_MSG_RESULT([$mx_ans])
		if test x$mx_ans = xno ; then
			$ax_enable_cuda=no
			$CUDA=
    		AC_MSG_ERROR([require CUDA version $mx_version or above])
		fi
	fi
	
	
	if test x$ax_enable_cuda = xyes ; then	
	    AC_DEFINE([HAVE_CUDA], [1], [Define if you have Cuda.])
	fi
fi
AC_SUBST([CUDA])
])

dnl cuda.m4 ends here

Loading data, please wait...