Control of oscillations and spontaneous firing in dopamine neurons (Rumbell & Kozloski 2019)

 Download zip file 
Help downloading and running models
Model of Substantia Nigra pars Compacta Dopamine Neuron. 'Toy' morphology with 4 dendrites, one of which is the axon-bearing dendrite, with an axon branching from it. The axon is a short 'axon initial segment' compartment, followed by a longer 'axon'. 727 parameter sets for ion channel conductance and kinetic parameters were found using evolutionary optimization, all of which are viable candidates representing a plausible model of a SNc DA.
1 . Rumbell T, Kozloski J (2019) Dimensions of control for subthreshold oscillations and spontaneous firing in dopamine neurons PLOS Computational Biology 15:1-34
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell;
Brain Region(s)/Organism: Basal ganglia;
Cell Type(s): Substantia nigra pars compacta DA cell;
Channel(s): I A; I Calcium; I h; I K; I K,Ca; I Na,t;
Gap Junctions:
Simulation Environment: NEURON;
Model Concept(s): Pacemaking mechanism; Parameter Fitting; Parameter sensitivity;
Implementer(s): Rumbell, Tim [timrumbell at];
Search NeuronDB for information about:  Substantia nigra pars compacta DA cell; I Na,t; I A; I K; I h; I K,Ca; I Calcium;
Substantia Nigra pars Compacta Dopamine Neuron model
with multiple parameter sets
Rumbell and Kozloski (2019)

*** Simulate the Dopamine neuron model ***

Start a Neuron simulation of the model by:
- Compile ion channel .mod files in mechanisms/ ("nrnivmodl mechanisms")
- run demo ("nrngui da.hoc")
- Run a spontaneous firing protocol with 'Init and Run'
- select a parameter set within the 'Choose parameter set' window:
    - parameter set number 0--729
    - Can select Set Parameters, Spikes On, or Spikes Off either before or during a simulation
    - Spikes On and Spikes Off toggle Nat, KDR and BK conductances to 0, or to the parameter set chosen

*** Use the optimization tool ***

Use the files in bluepyopt_ext to set up the Non-Dominated Sorting Differential Evolution with Feature-based crowdedness function
within the 'bluepyopt' optimization framework.

- Download and install required python packages:
    - DEAP (git clone
        - Install (e.g. python install)
    - BluePyOpt (git clone
        - copy contents of 'bluepyopt_ext' to 'bluepyopt/bluepyopt/'
            - replaces these files, adding functionality to perform the new algorithm:
                - ephys/
                - ephys/
                - ephys/
                - deapext/
                - deapext/
                - deapext/tools/
            - adds these files:
                - deapext/tools/
                - deapext/tools/
        - Install (e.g. python install)
    - eFEL (git clone
        - Install (e.g. python install)

- To use the NSDE w/ Feature Crowdedness Function optimization algorithm, simply declare it as the 'optimisation' object in a BluePyOpt optimization. For example, in the bluepyopt/examples/l5pc/ file, the opt object is set up as:

      opt = bluepyopt.optimisations.DEAPOptimisation(

    - replace this with the following to use the new algorithm:

          opt = bluepyopt.deapext.optimisations.NSDEwFeatCrowdOptimisation(

    - The parameters 'cxpb', 'jitter' and 'numSDs' are used in 'deapext/tools/varDE' and deapext/tools/selNSGA2_featcrowd'
    - Another parameter that can be passed to the optimization initialization is 'featsToUse', which is a list of strings that are the names of features to include in the crowdedness function. This defaults to an empty list, which means use all features.
    - A further parameter that can be passed is 'h5_filename', which will save 'parameters, 'errors' and 'features' every generation in hdf5 format
    - Run L5pc example using:
        - python --start --offspring-size=10
            (Note: offspring-size parameter defaults to 2 in l5pc example, so must be passed as it has to be >3 for this algorithm)

*** Data used in the paper ***

- The files 'params.txt' and 'features.txt' are space-delimited files, each 729 lines long, listing one 'good' model from the paper per line
- A line in params.txt corresponds to the same line number in features.txt
- The column labels for parameters and features are written in param_labels.txt and feature_labels.txt
- These files can be loaded into e.g. Matlab, and analysis from the paper can be performed.
    - e.g. try using:
    pars = dlmread('params.txt');
    feats = dlmread('features.txt'):
    [Z_pars, Z_pars_mu, Z_pars_sigma] = zscore(pars);
    [Xloadings, Yloadings, Xscores, Yscores, beta, PLSPctVar] = plsregress(...
        (Z_pars, feats, 16);
    yfitPLS = [ones(size(Z_pars),1) Z_pars]*beta;

    This will perform the PLS regression, and get the 'beta' coefficients (e.g. Figures 4C-D, 6C) for each spiking feature

*** For questions/problems ***
Please contact Tim Rumbell

Loading data, please wait...