NeuroLab
WienerCpp Class Reference

Condensed Poisson Process. More...

Inheritance diagram for WienerCpp:

Public Member Functions

 WienerCpp (class Time *time, double w, double n, double lambda, double n_rc, double lambda_rc)
 Constructor. More...
 
virtual string getParameter (const string &p) const
 Get parameter. More...
 
virtual void setParameter (const string &p, const string &d)
 Set parameter. More...
 
virtual void init ()
 Initialise time-dependent values.
 
- Public Member Functions inherited from Wiener
virtual void prepareNextState ()
 Calculate next value (preparing next step). More...
 
- Public Member Functions inherited from RandN
 RandN ()
 Construct.
 
 ~RandN ()
 Destruct.
 
double dRandN ()
 Retrieve random variable. More...
 
double dRandE ()
 Retrieve random variable. More...
 
- Public Member Functions inherited from StochasticVariable
 StochasticVariable (class Time *time, const string &name="", const string &type="Stochastic Variable")
 Create.
 
double operator() ()
 Returns the value at the current time step. More...
 
double d ()
 Returns the increment at the current time step. More...
 
- Public Member Functions inherited from StochasticProcess
 StochasticProcess (class Time *time, const string &name="", const string &type="Stochastic")
 Create.
 
virtual ~StochasticProcess ()
 Destroy.
 
virtual void proceedToNextState ()
 Proceed one time step. More...
 
bool isNextStatePrepared ()
 Whether.
 
virtual double getIncrement ()
 Returns the increment. More...
 
virtual double getCurrentValue ()
 Returns the value of the process. More...
 
virtual double getNextValue ()
 Returns the next value of the process. More...
 
virtual void setNextValue (double d)
 Set the next value of the process. More...
 
virtual void setCurrentValue (double d)
 Set the current value of the process. More...
 
void setDescription (string s)
 Set stochastic description.
 
string getDescription ()
 Get the name. More...
 
- Public Member Functions inherited from Parametric
string getType () const
 Type of object.
 
string getName () const
 Name of object.
 
void setName (const string &name)
 Name of object.
 
string getConfiguration () const
 Returns the configuration of the object. More...
 
string getAllParameters () const
 String with all parameter settings.
 
void addParameter (const string &name)
 Add a parameter. More...
 
void rmParameter (const string &name)
 Remove a parameter. More...
 
- Public Member Functions inherited from TimeDependent
 TimeDependent (class Time *time)
 Construct. More...
 
virtual class TimegetTime () const
 Return pointer to the time object.
 
- Public Member Functions inherited from Physical
 Physical ()
 Construct.
 
 Physical (const Physical &)
 Copy.
 
 Physical (string name)
 Construct.
 
 Physical (string name, string unitPrefix, string unitSymbol)
 Construct.
 
 Physical (string name, Unit unit)
 Construct.
 
virtual string getPhysicalDescription ()
 Returns the physical description. More...
 
virtual string getUnitName ()
 Returns the unit name.
 
virtual string getUnitSymbol ()
 Returns the unit name.
 
virtual void setPhysicalDescription (string name)
 Set the name. Same as setDescription(). More...
 
virtual void setUnit (Unit u)
 Set the unit.
 
virtual void setUnitPrefix (int n)
 Set unit prefix. More...
 
virtual Unit getUnit () const
 Retrieve the unit.
 

Additional Inherited Members

- Protected Member Functions inherited from Parametric
 Parametric (const string &name, const string &type)
 Create object of type and name.
 
virtual ~Parametric ()
 Destroy object.
 
- Protected Attributes inherited from StochasticProcess
double stochCurrentValue
 the current value
 
double stochNextValue
 the next value (direct future)
 
bool stochNextStateIsPrepared
 whether prepareNextState() was successful
 
string stochDescription
 the name of the quantity
 

Detailed Description

Condensed Poisson Process.

Lets assume a set of Poisson process $s^i_t, i=1..n$, where $t$ denotes time, and $i$ is the index of the process. Each process is multiplied by a weight $w_i$, $s^i_t$ takes values of $0$ or $1$ (where $1$ indicates an event), and events occur with a rate of $\lambda_i$. We are interested in the sum

\[s_t = \sum_i w_i s^i_t.\]

Let's assume that in this collection of events coincident events happen. Coincidences are events which occur at the same time at various processes. If these events are viewed as a separate process $s^c_i$ with a weight $w_c$ and a rate $\lambda_c$, all processes stay independent. The impact of the coincidence events depends on the sum of the weights of the processes taking part. We shall call the sum of the weights of the processes which take part the Coincidence Weight. The coincidences occur with a specific rate which we will call Coincidence Rate $\lambda_c$.

Since the events which form the coincidence event are taken out of the process $s_i$ where the happened, the rate of these single processes is expected to decrease, according to the coincidence weight and the coincidence rate: $\lambda_i$ will become $\lambda_i - \frac{w_c\lambda_c}{\sum_iw_i}$. Thus the sum of events $s_t$, as well as its mean $\mbox{E}{s_t}$ will not be affected by the correlations:

\[ s_t = \sum_{i}w_is^i_t + w_cs^c_t. \]

\[ \mbox{E}{s_t} = \sum_i w_i\left(\lambda_i - \frac{w_c\lambda_c}{\sum_iw_i}\right) + w_c\lambda_c \]

\[ = \sum_i w_i\lambda_i \]

The variance of this process $s_t$ will be:

\[\mbox{Var}\{s_t\} = \sum_i w_i^2\left(\lambda_i - \frac{w_c\lambda_c}{\sum_iw_i}\right) + w_c^2\lambda_c.\]

These parameters will be used to construct a white-noise (Wiener) process, which feeds the neuron: Let's assume the neuron is connected to many synapses which each have small weights. Lets substitute the correlation weight $w_c$ - since all weights are the same - by the amount $n_c$ of synapses taking part in a coincident pulse times their weight. We will call this amount the Coincidence Width.

Since the coincidence rate $ \lambda_c $ will not be higher than the overall rate $ \lambda $, and the coincidence width $ n_c $ will not be higher than the overall number of synapses, it makes sense to use a relative coincidence width which ranges from $ 0 $ to $ 1 $

\[ n_{rc} = \frac{n_c}{n},\]

and a relative coincidence rate which ranges from $0$ to $1$

\[\lambda_{rc} = \frac{\lambda_c}{\lambda}\]

This amounts to the following expressions for mean and variance of the white-noise process:

\[ \mu := nw\lambda \]

\[ \sigma^2 := nw^2\lambda\left(1 - n_{rc} \lambda_{rc} + nn_{rc}^2\lambda_{rc} \right) \]

The condensed poisson process implements such a white-noise process.

Constructor & Destructor Documentation

WienerCpp::WienerCpp ( class Time time,
double  w,
double  n,
double  lambda,
double  n_rc,
double  lambda_rc 
)

Constructor.

Parameters
timeTime object
wsingle weight
nnumber of processes in the sum of processes
lambdarate of a single process
n_rcrelative coincidence width
lambda_rcrelative coincidence height

Member Function Documentation

virtual string WienerCpp::getParameter ( const string &  name) const
virtual

Get parameter.

In a derived class, override this to handle every parameter you implement. If a parameter is described using multiple strings separated by space, this indicates a parameter of a parameter.

Reimplemented from Wiener.

virtual void WienerCpp::setParameter ( const string &  name,
const string &  value 
)
virtual

Set parameter.

Sets the value of a parameter using strings. If a parameter is described using multiple strings separated by space, this indicates a parameter of a parameter (not implemented yet).

Reimplemented from Wiener.