//Constructors /// <summary> /// Creates an initialized instance /// </summary> /// <param name="stimuliCoeff">Input stimuli coefficient (pA)</param> /// <param name="role">Role of the neuron (excitatory or inhibitory)</param> /// <param name="refractoryPeriods">Number of after spike computation cycles while an input stimuli is ignored (ms)</param> /// <param name="solverMethod">ODE numerical solver method</param> /// <param name="solverCompSteps">ODE numerical solver computation steps of the time step</param> public AutoIzhikevichIFSettings(double stimuliCoeff, CommonEnums.NeuronRole role, int refractoryPeriods, ODENumSolver.Method solverMethod, int solverCompSteps ) { StimuliCoeff = stimuliCoeff; Role = role; RefractoryPeriods = refractoryPeriods; SolverMethod = solverMethod; SolverCompSteps = solverCompSteps; return; }
//Constructor /// <summary> /// Creates an initialized instance /// </summary> /// <param name="placement">Home pool identificator and neuron placement within the pool.</param> /// <param name="role">Neuron's signal role (Excitatory/Inhibitory).</param> /// <param name="activation">Instantiated activation function.</param> /// <param name="bias">Constant bias.</param> public SpikingNeuron(NeuronPlacement placement, CommonEnums.NeuronRole role, IActivationFunction activation, double bias ) { Placement = placement; Role = role; Bias = bias; //Check whether function is spiking if (activation.OutputSignalType != CommonEnums.NeuronSignalType.Spike) { throw new ArgumentException("Activation function is not spiking.", "activation"); } _activation = activation; _firingRate = new FiringRate(); Statistics = new NeuronStatistics(_activation.InternalStateRange); Reset(false); return; }
//Constructor /// <summary> /// Creates an initialized instance /// </summary> /// <param name="placement">Home pool identificator and neuron placement within the pool.</param> /// <param name="role">Neuron's signal role (Excitatory/Inhibitory).</param> /// <param name="activation">Instantiated activation function.</param> /// <param name="bias">Constant bias.</param> /// <param name="retainmentRatio">Retainment ratio.</param> public AnalogNeuron(NeuronPlacement placement, CommonEnums.NeuronRole role, IActivationFunction activation, double bias, double retainmentRatio ) { Placement = placement; Role = role; Bias = bias; //Check whether function is analog if (activation.OutputSignalType != CommonEnums.NeuronSignalType.Analog) { throw new ArgumentException("Activation function is not analog.", "activation"); } _activation = activation; _retainmentRatio = retainmentRatio; Statistics = new NeuronStatistics(OutputRange); Reset(false); return; }