An electrophysiological model of GABAergic double bouquet cells (Chrysanthidis et al. 2019)

 Download zip file 
Help downloading and running models
We present an electrophysiological model of double bouquet cells (DBCs) and integrate them into an established cortical columnar microcircuit model that implements a BCPNN (Bayesian Confidence Propagation Neural Network) learning rule. The proposed architecture effectively solves the problem of duplexed learning of inhibition and excitation by replacing recurrent inhibition between pyramidal cells in functional columns of different stimulus selectivity with a plastic disynaptic pathway. The introduction of DBCs improves the biological plausibility of our model, without affecting the model's spiking activity, basic operation, and learning abilities.
1 . Chrysanthidis N, Fiebig F, Lansner A (2019) Introducing double bouquet cells into a modular cortical associative memory model Journal of Computational Neuroscience
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism:
Cell Type(s): Neocortex U1 interneuron basket PV GABA cell; Neocortex U1 L2/6 pyramidal intratelencephalic GLU cell; Abstract integrate-and-fire adaptive exponential (AdEx) neuron; Neocortex layer 2-3 interneuron; Neocortex bitufted interneuron;
Gap Junctions:
Simulation Environment: NEST;
Model Concept(s): Learning;
Implementer(s): Chrysanthidis, Nikolaos [nchr at]; Fiebig, Florian [fiebig at]; Lansner, Anders [ala at];
Search NeuronDB for information about:  Neocortex U1 L2/6 pyramidal intratelencephalic GLU cell; Neocortex U1 interneuron basket PV GABA cell;
aclocal.m4 *
aeif_cond_exp_multisynapse.cpp *
aeif_cond_exp_multisynapse.h *
bcpnn_connection.cpp *
bcpnn_connection.h *
bcpnn_connection_backup.cpp *
bcpnn_connection_backup.h * *
compile *
config.guess *
config.sub *
configure * *
depcomp *
iaf_cond_alpha_bias.cpp *
iaf_cond_alpha_bias.h *
iaf_cond_exp_bias.cpp *
iaf_cond_exp_bias.h *
install-sh * * *
missing *
pt_module.cpp *
pt_module.h * *
pt_module_names.cpp *
pt_module_names.h *
 *  pt_module.h
 *  This file is part of NEST.
 *  Copyright (C) 2008 by
 *  The NEST Initiative
 *  See the file AUTHORS for details.
 *  Permission is granted to compile and modify
 *  this file for non-commercial use.
 *  See the file LICENSE for details.

#ifndef PT_MODULE_H
#define PT_MODULE_H

#include "dynmodule.h"
#include "slifunction.h"

namespace nest
  class Network;

// Put your stuff into your own namespace.
namespace mynest {
 * Class defining your model.
 * @note For each model, you must define one such class, with a unique name.
class Pt_Module : public DynModule

  // Interface functions ------------------------------------------
   * @note The constructor registers the module with the dynamic loader. 
   *       Initialization proper is performed by the init() method.
   * @note The destructor does not do much in modules. Proper "downrigging"
   *       is the responsibility of the unregister() method.

   * Initialize module by registering models with the network.
   * @param SLIInterpreter* SLI interpreter
   * @param nest::Network*  Network with which to register models
   * @note  Parameter Network is needed for historical compatibility
   *        only.
  void init(SLIInterpreter*, nest::Network*);

   * Return the name of your model.
  const std::string name(void) const;
   * Return the name of a sli file to execute when ml_module is loaded.
   * This mechanism can be used to define SLI commands associated with your
   * module, in particular, set up type tries for functions you have defined.
  const std::string commandstring(void) const;
  // Classes implementing your functions -----------------------------
   * Implement a function for a step-pattern-based connection.
   * @note What this function does is described in the SLI documentation
   *       in the cpp file.
   * @note The mangled name indicates this function expects the following
   *       arguments on the stack (bottom first): vector of int, int, 
   *       vector of int, int. 
   * @note You must define a member object in your module class
   *       of the function class. execute() is later invoked on this
   *       member.
  class StepPatternConnect_Vi_i_Vi_i_lFunction: public SLIFunction
       void execute(SLIInterpreter *) const;

     StepPatternConnect_Vi_i_Vi_i_lFunction stepPatternConnect_Vi_i_Vi_i_lFunction;
} // namespace mynest