|
From: Nabeelah A. <nab...@uq...> - 2009-07-23 02:02:36
|
#ifndef _GENERICMEANFIRERATESYNAPSE_H_
#define _GENERICMEANFIRERATESYNAPSE_H_
#include "SimObject.h"
#include "GenericStaticSpikingSynapse.h"
#include "GenericCurrentBasedSpikingSynapse.h"
#include "ExponentialDecaySpikeResponse.h"
template<class BaseSyn>
class GenericMeanFireRateSynapse : public BaseSyn
{
public:
// The learning rate of the synapse.
double learningRate;
// The desired firing rate of the postsynaptic neuron (in Hertz).
double desiredFiringRate;
// The connection type.
// Inhibitory if connType == -1
// Excitatory if connType == 1
int connType;
GenericMeanFireRateSynapse(double learningRate = 0.1,
double desiredFiringRate = 3):
learningRate(learningRate), desiredFiringRate(desiredFiringRate)
{
/* Need to redefine constructor for any classes created
* using this template. */
};
virtual ~GenericMeanFireRateSynapse()
{ /* NOOP */ };
virtual int spikeHit( spikeport_t port, SpikeEvent const& spike ) {
int retval = BaseSyn::spikeHit(port, spike);
return retval;
};
virtual int reset( double dt ) {
int retval = BaseSyn::reset(dt);
// Determine whether this is an inhibitory or excitatory synapse.
if (BaseSyn::W > 0) {
connType = 1;
} else if (BaseSyn::W < 0) {
connType = -1;
}
return retval;
};
};
#endif /* _GENERICMEANFIRERATESYNAPSE_H_ */
|