Miind
SpikingQifNeuralDynamics.cpp
Go to the documentation of this file.
1 // Copyright (c) 2005 - 2014 Marc de Kamps
2 // All rights reserved.
3 //
4 // Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
5 //
6 // * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
7 // * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation
8 // and/or other materials provided with the distribution.
9 // * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software
10 // without specific prior written permission.
11 //
12 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
13 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY
14 // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
15 // USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
16 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
17 //
18 // If you use this software in work leading to a scientific publication, you should include a reference there to
19 // the 'currently valid reference', which can be found at http://miind.sourceforge.net
20 #include <cmath>
22 
23 using namespace GeomLib;
24 
26 (
27  const OdeParameter& par_ode,
28  const QifParameter& par_qif
29 ):
31 (
32  par_ode
33 ),
34 _par_qif(par_qif)
35 {
36 }
37 
39 (
40  const SpikingQifNeuralDynamics& dyn
41 ):
43 _par_qif(dyn._par_qif)
44 {
45 }
46 
48 {
49 }
50 
52 {
53  // evolve the potential under the assumption that no crossing to infinity
54  // takes places within time t
55  assert(this->TimeToInf(V) > t);
56 
57  double sqr = sqrt(_par_qif.Gammasys());
58  Potential V_ret = sqr*tan(sqr*(t/this->_par._par_pop._tau) + atan(V/sqr));
59  return V_ret;
60 }
61 
63 {
64  double sqr = sqrt(_par_qif.Gammasys());
65  double t = (this->_par._par_pop._tau/sqr)*(atan(this->_par._par_pop._theta/sqr) - atan(V/sqr));
66  return t;
67 }
68 
70 {
71  return new SpikingQifNeuralDynamics(*this);
72 }
73 
74 
76 {
77  return this->TimeToInf(_par._V_min);
78 }
79 
80 
82 {
83  return this->TPeriod()/_par._nr_bins;
84 }
double Gammasys() const
The value by which QifOdeSystem will be run. For now the default value is recommended.
This parameter configures the QIFAlgorithm.
double Potential
MPILib::Time _tau
membrane time constant in s
virtual Time TStep() const
time it takes to move density one grid forwards
Contains the parameters necessary to configure a concrete OdeSystem instance. See AbstractOdeSystem a...
SpikingQifNeuralDynamics(const OdeParameter &, const QifParameter &)
Standard constructor.
virtual Time TPeriod() const
time it takes for a neuron to traverse from V_min to threshold
double Time
virtual Potential EvolvePotential(Potential, Time) const
NeuronParameter _par_pop
The neuron parameter.
virtual Time TimeToInf(Potential) const
calculate time to reach threshold for the given potential
MPILib::Potential _theta
threshold potential in V
The objective is find a numerical solution for this equation This requires a numerical representation of the density We will work in the state space of a two dimensional and define a mesh there We first give two examples and then define the general procedure and given in Table for given fixed Delta g see Fig and we will denote coordinates in this dimension by a small letter $v The second dimension can be used to represent parameters as varied as and will represented by $w A strip is constructed by choosing two neighbouring points in state e g and integrating the vector field for a time $T that is assumed to be an integer multiple of a period of time Delta t
Definition: 2D.hpp:101
Potential _V_min
The minimum of potential range (the maximum is given in the neuron parameter)
const OdeParameter _par
Time critical access for derived classes.
This class models the dynamics of of Quadratic Integrate and Fire (QIF) neurons.
Number _nr_bins
The number of bins.
virtual SpikingQifNeuralDynamics * Clone() const
virtual construction mechanism