8 #include "IonChannel.h"
17 #include "ClassFactory.h"
71 {
Std_TraceMsg(0,
"Caught Error in desctructor of IntegrateFireNeuralModule\r\n",
"", -1,
false,
true);}
75 #pragma region Accessor-Mutators
221 NeuralModule::TimeStep(fltVal);
543 m_lpSim->AddToObjectList(
this);
550 TTX(oXml.GetChildBool(
"TTX",
false));
551 Cd(oXml.GetChildBool(
"Cd",
false));
552 HH(oXml.GetChildBool(
"HH",
false));
558 FreezeHebb(oXml.GetChildBool(
"FreezeHebb", 0));
567 oXml.IntoChildElement(
"Synapses");
569 oXml.IntoChildElement(
"SpikingSynapses");
570 int iTotalSpikingSynapses = oXml.NumberOfChildren();
571 for(i=0; i<iTotalSpikingSynapses; i++)
573 oXml.FindChildByIndex(i);
578 oXml.IntoChildElement(
"NonSpikingSynapses");
579 int iTotalNonSpikingSynapses = oXml.NumberOfChildren();
580 for(i=0; i<iTotalNonSpikingSynapses; i++)
582 oXml.FindChildByIndex(i);
587 oXml.IntoChildElement(
"ElectricalSynapses");
588 int iTotalElecSynapses = oXml.NumberOfChildren();
589 for(i=0; i<iTotalElecSynapses; i++)
591 oXml.FindChildByIndex(i);
600 oXml.IntoChildElement(
"Neurons");
601 int iTotalNeurons = oXml.NumberOfChildren();
602 for(i=0; i<iTotalNeurons; i++)
604 oXml.FindChildByIndex(i);
624 oXml.IntoChildElement(
"Connexions");
625 int iTotalConnexions = oXml.NumberOfChildren();
626 for(i=0; i<iTotalConnexions; i++)
628 oXml.FindChildByIndex(i);
661 lpNeuron->Load(oXml);
667 catch(CStdErrorInfo oError)
669 if(lpNeuron)
delete lpNeuron;
675 if(lpNeuron)
delete lpNeuron;
676 THROW_ERROR(Std_Err_lUnspecifiedError, Std_Err_strUnspecifiedError);
694 std::string strType =
Std_ToUpper(oXml.GetChildString(
"Type"));
699 if(strType ==
"SPIKINGCHEMICAL")
701 else if(strType ==
"NONSPIKINGCHEMICAL")
703 else if(strType ==
"ELECTRICAL")
706 THROW_PARAM_ERROR(Rn_Err_lInvalidSynapseType, Rn_Err_strInvalidSynapseType,
"Type", strType);
733 pSpikingChemSyn->Load(oXml);
738 return pSpikingChemSyn;
740 catch(CStdErrorInfo oError)
742 if(pSpikingChemSyn)
delete pSpikingChemSyn;
748 if(pSpikingChemSyn)
delete pSpikingChemSyn;
749 THROW_ERROR(Std_Err_lUnspecifiedError, Std_Err_strUnspecifiedError);
776 pNonSpikingChemSyn->Load(oXml);
781 return pNonSpikingChemSyn;
783 catch(CStdErrorInfo oError)
785 if(pNonSpikingChemSyn)
delete pNonSpikingChemSyn;
791 if(pNonSpikingChemSyn)
delete pNonSpikingChemSyn;
792 THROW_ERROR(Std_Err_lUnspecifiedError, Std_Err_strUnspecifiedError);
819 pElecSyn->Load(oXml);
826 catch(CStdErrorInfo oError)
828 if(pElecSyn)
delete pElecSyn;
834 if(pElecSyn)
delete pElecSyn;
835 THROW_ERROR(Std_Err_lUnspecifiedError, Std_Err_strUnspecifiedError);
860 pConnexion->Load(oXml);
866 catch(CStdErrorInfo oError)
868 if(pConnexion)
delete pConnexion;
874 if(pConnexion)
delete pConnexion;
875 THROW_ERROR(Std_Err_lUnspecifiedError, Std_Err_strUnspecifiedError);
889 for(
int i=0; i<iCount; i++)
893 for(
int i=0; i<iCount; i++)
897 for(
int i=0; i<iCount; i++)
901 for(
int i=0; i<iCount; i++)
939 return minG+(maxG-minG)*(jV-ThreshV)/(SaturateV-ThreshV);
961 else if (postV > minV && postV < maxV)
964 double vScl=(postV-minV)/(maxV-minV);
967 G*=(1+(scl*(postV-minV)/(maxV-minV)));
988 else if (PreV<SaturateV)
989 G=G*(PreV-ThreshV)/(SaturateV-ThreshV);
1027 THROW_PARAM_ERROR(Rn_Err_lInvalidSynapseID, Rn_Err_strInvalidSynapseID,
"ID: ", pCx->
SynapseTypeID());
1031 THROW_PARAM_ERROR(Rn_Err_lNeuronNotFound, Rn_Err_strNeuronNotFound,
"ID: ", pCx->
SourceID());
1035 THROW_PARAM_ERROR(Rn_Err_lNeuronNotFound, Rn_Err_strNeuronNotFound,
"ID: ", pCx->
TargetID());
1078 for(
int iIndex=0; iIndex<iCount; iIndex++)
1180 double sourceV,targetV,junctV;
1196 double *pTimeToNext;
1201 if ((*pTimeToNext)<0)
1232 double *pTimeToNext;
1236 if ((*pTimeToNext)<0)
1240 junctV=sourceV-targetV;
1256 junctV=sourceV-targetV;
1331 for(
int iIndex=0; iIndex<iCount; iIndex++)
1336 THROW_TEXT_ERROR(Rn_Err_lNeuronNotFound, Rn_Err_strNeuronNotFound,
"ID");
1357 for(
int iIndex=0; iIndex<iCount; iIndex++)
1362 THROW_TEXT_ERROR(Rn_Err_lSynapseNotFound, Rn_Err_strSynapseNotFound,
"ID");
1383 for(
int iIndex=0; iIndex<iCount; iIndex++)
1388 THROW_TEXT_ERROR(Rn_Err_lSynapseNotFound, Rn_Err_strSynapseNotFound,
"ID");
1409 for(
int iIndex=0; iIndex<iCount; iIndex++)
1414 THROW_TEXT_ERROR(Rn_Err_lSynapseNotFound, Rn_Err_strSynapseNotFound,
"ID");
1435 for(
int iIndex=0; iIndex<iCount; iIndex++)
1440 THROW_TEXT_ERROR(Rn_Err_lSynapseNotFound, Rn_Err_strSynapseNotFound,
"ID");
1445 #pragma region DataAccesMethods
1451 if(NeuralModule::SetData(strDataType, strValue,
false))
1454 if(strType ==
"TIMESTEP")
1460 if(strType ==
"TTX")
1478 if(strType ==
"RETAINHEBBMEMORY")
1484 if(strType ==
"USECRITICALPERIOD")
1490 if(strType ==
"STARTCRITICALPERIOD")
1496 if(strType ==
"ENDCRITICALPERIOD")
1502 if(strType ==
"FREEZEHEBB")
1508 if(strType ==
"SPIKEPEAK")
1514 if(strType ==
"SPIKESTRENGTH")
1520 if(strType ==
"CAEQUILPOT")
1526 if(strType ==
"ABSOLUTEREFR")
1532 if(strType ==
"AHPEQUILPOT")
1540 THROW_PARAM_ERROR(Al_Err_lInvalidDataType, Al_Err_strInvalidDataType,
"Data Type", strDataType);
1545 void IntegrateFireNeuralModule::QueryProperties(CStdPtrArray<TypeProperty> &aryProperties)
1547 NeuralModule::QueryProperties(aryProperties);
1549 aryProperties.Add(
new TypeProperty(
"TimeStep", AnimatPropertyType::Float, AnimatPropertyDirection::Set));
1550 aryProperties.Add(
new TypeProperty(
"TTX", AnimatPropertyType::Boolean, AnimatPropertyDirection::Set));
1551 aryProperties.Add(
new TypeProperty(
"Cd", AnimatPropertyType::Boolean, AnimatPropertyDirection::Set));
1552 aryProperties.Add(
new TypeProperty(
"HH", AnimatPropertyType::Boolean, AnimatPropertyDirection::Set));
1553 aryProperties.Add(
new TypeProperty(
"RetainHebbMemory", AnimatPropertyType::Boolean, AnimatPropertyDirection::Set));
1554 aryProperties.Add(
new TypeProperty(
"UseCriticalPeriod", AnimatPropertyType::Boolean, AnimatPropertyDirection::Set));
1555 aryProperties.Add(
new TypeProperty(
"StartCriticalPeriod", AnimatPropertyType::Float, AnimatPropertyDirection::Set));
1556 aryProperties.Add(
new TypeProperty(
"EndCriticalPeriod", AnimatPropertyType::Float, AnimatPropertyDirection::Set));
1557 aryProperties.Add(
new TypeProperty(
"FreezeHebb", AnimatPropertyType::Boolean, AnimatPropertyDirection::Set));
1558 aryProperties.Add(
new TypeProperty(
"SpikePeak", AnimatPropertyType::Float, AnimatPropertyDirection::Set));
1559 aryProperties.Add(
new TypeProperty(
"SpikeStrength", AnimatPropertyType::Float, AnimatPropertyDirection::Set));
1560 aryProperties.Add(
new TypeProperty(
"CaEquilPot", AnimatPropertyType::Float, AnimatPropertyDirection::Set));
1561 aryProperties.Add(
new TypeProperty(
"AbsoluteRefr", AnimatPropertyType::Float, AnimatPropertyDirection::Set));
1562 aryProperties.Add(
new TypeProperty(
"AHPEquilPot", AnimatPropertyType::Float, AnimatPropertyDirection::Set));
1576 oXml.Deserialize(strXml);
1577 oXml.FindElement(
"Root");
1578 oXml.FindChildElement(
"Neuron");
1611 oXml.Deserialize(strXml);
1612 oXml.FindElement(
"Root");
1613 oXml.FindChildElement(
"Connexion");
1630 oXml.Deserialize(strXml);
1631 oXml.FindElement(
"Root");
1632 oXml.FindChildElement(
"SynapseType");
1670 if(strType ==
"SPIKINGCHEMICAL")
1675 else if(strType ==
"NONSPIKINGCHEMICAL")
1680 else if(strType ==
"ELECTRICAL")
1688 THROW_PARAM_ERROR(Rn_Err_lInvalidSynapseType, Rn_Err_strInvalidSynapseType,
"Type", strType);
1700 if(strType ==
"NEURON")
1705 else if(strType ==
"SYNAPSE")
1710 else if(strType ==
"EXTERNALSYNAPSE")
1712 AddExternalSynapse(strXml, bDoNotInit);
1715 else if(strType ==
"SYNAPSETYPE")
1723 THROW_PARAM_ERROR(Al_Err_lInvalidItemType, Al_Err_strInvalidItemType,
"Item Type", strItemType);
1732 if(strType ==
"NEURON")
1737 else if(strType ==
"SYNAPSE")
1742 else if(strType ==
"EXTERNALSYNAPSE")
1747 else if(strType ==
"SYNAPSETYPE")
1756 THROW_PARAM_ERROR(Al_Err_lInvalidItemType, Al_Err_strInvalidItemType,
"Item Type", strItemType);
1766 for(iNeuron=0; iNeuron<iSize; iNeuron++)
1772 NeuralModule::ResetSimulation();
1779 for(iIndex=0; iIndex<iSize; iIndex++)
1783 for(iIndex=0; iIndex<iSize; iIndex++)
1793 NeuralModule::Initialize();
1799 NeuralModule::StepSimulation();
1803 void IntegrateFireNeuralModule::Load(CStdXml &oXml)
1812 THROW_TEXT_ERROR(Al_Err_lConvertingClassToType, Al_Err_strConvertingClassToType,
"Organism");
1827 oNetXml.FindElement(
"NeuralModule");
1828 oNetXml.FindChildElement(
"UseCriticalPeriod");
1839 TRACE_DEBUG(
"Finished loading nervous system config file.");
static double m_dAbsoluteRefr
The static absolute refractory period after an action potential.
void ScaleCondForNonSpiking(double &G, double PreV, double ThreshV, double SaturateV)
Scale conductance for non-spiking chemical synapse.
void PreCalc(IntegrateFireNeuralModule *lpNS)
Initialization routine.
void ResetIDs()
Resets the IDs of the synapse types.
Neuron * m_lpSource
Pointer to the source Neuron.
bool HH()
Gets whether hodgkin-huxely model is used.
double AbsoluteRefr()
Gets the absolute refractory period.
virtual void RemoveExternalSynapse(std::string strID, bool bThrowError=true)
Removes the synapse by the GUID ID.
virtual void Kill(bool bState=true)
Kills.
void SetCurrentTime(double t)
Sets the current time.
int Del(void)
Deletes this object.
bool GetZapped()
Gets if the neuron is disabled.
void DecrementLatencies(double dt, bool FreezeLearning=false)
Decrements latencies.
Connexion * GetConnexionAt(int i)
Gets a connexion at specified index.
virtual void StepSimulation()
Step the simulation for this object.
CStdArray< Adapter * > m_arySourceAdapters
An array of source adapters for this module.
virtual int FindNonSpikingChemListPos(std::string strID, bool bThrowError=true)
Searches for a non-spiking chemical synapse by the specified ID and returns its position in the list...
bool m_bTTX
true if ttx drug is applied to the nervous system.
void PostCalc()
performs post-step calculations.
int m_iType
Zero-based index of the synaspe type.
Spiking chemical synapse type.
Declares the integrate fire module class.
CStdPtrArray< Connexion > m_aryConnexion
The array of connexions in this neural module.
void IncrementHebbian()
Increments hebbian values.
virtual std::string ModuleName()
Gets the module name.
virtual bool RemoveItem(const std::string &strItemType, const std::string &strID, bool bThrowError=true)
Removes a child item from this parent.
static double m_dCaEquilPot
The static calcium equil pot.
DoubleList m_TransitCx
Sets whether there is a partial block hold.
Simulator * GetSimulator()
Gets the simulator.
bool TTX()
Gets whether ttx is applied to the nervous system.
double m_dPreviousSpikeLatency
The partial block.
bool m_bHH
true if this nervous system is using a hodgkin-huxely model.
Neuron * GetNeuronAt(int i)
Gets a neuron at specified index.
bool m_bFreezeHebb
true to freeze hebbian learning.
std::string m_strNeuralNetworkFile
The string neural network file name.
void InElectricalSynapseCond(double cond)
Increments electrical synapse conductance.
NonSpikingChemicalSynapse * GetNonSpikingChemSynAt(int i)
Gets a non-spiking chemical synapse at the specified index.
IStdClassFactory * m_lpClassFactory
The pointer to the class factory for this module.
virtual std::string Type()
returns the string type name of this object.
double GetTimeStep()
Gets the time step.
bool m_bRandomisedHebb
true to randomise hebbian learning values.
bool FreezeHebb()
Sets whether to freeze hebbian learning.
int GetNeuronCount()
Gets the neuron count.
double m_dGFacilCx
facilitated increase in g when input occurs
Declares the connexion class.
std::string SynapseTypeID()
Gets the synapse type identifier.
double GetCurrentTime()
Gets the current time.
double AHPEquilPot()
Gets the after-hyperpolarizing equil potential for all neurons in the IGF module. ...
double m_dRestingPot
The resting potential of the neuron.
Simulator * m_lpSim
The pointer to a Simulation.
virtual int FindSpikingChemListPos(std::string strID, bool bThrowError=true)
Searches for a spiking chemical synapse by the specified ID and returns its position in the list...
virtual void RemoveSynapseType(std::string strID, bool bThrowError=true)
Removes the synapse type by ID.
virtual void ResetSimulation()
Resets the simulation back to time 0.
Integrate and fire neuron model.
virtual std::string ID()
Gets the unique GUID ID of this object.
NonSpikingChemicalSynapse * LoadNonSpikingChemSyn(CStdXml &oXml, int iIndex)
Loads a non-spiking chemical synapse.
void InitSynapse(Connexion *pCx)
Initialises the synapse.
int GetConnexionCount()
Gets the connexion count.
bool UseCriticalPeriod()
Gets whether to use critical period.
virtual int FindElectricalListPos(std::string strID, bool bThrowError=true)
Searches for an electrical synapse by the specified ID and returns its position in the list...
virtual void TimeStepModified()
Notification method that the time step modified has been modified. Objects should recalculate any sli...
bool m_bNeedInitialiseHebb
true if hebbian learning needs to be initialized
bool RetainHebbMemory()
Gets whether to retain hebbian memory.
Neuron * LoadNeuron(CStdXml &oXml)
Loads a neuron.
virtual void Initialize()
Initializes this object.
double m_dSize
Size of the neuron. This is essentially equivalent to the membrane conductance.
virtual float TimeStep()
Gets the time step.
void CalcUpdateFinal(IntegrateFireNeuralModule *lpNS)
Calculates the final update during a step.
void InElectricalSynapseCurr(double cur)
Increments electrical synapse current.
virtual void RemoveNeuron(std::string strID, bool bThrowError=true)
Removes the neuron with the specified ID.
double SpikePeak()
Gets the spike peak.
static double m_dSpikePeak
The static spike peak.
bool m_bRetainHebbMemory
true to retain hebbian memory
int SynapseTypeID()
Gets the synapse type identifier.
bool m_bCd
true if cadium is applied to the nervous system.
bool Std_InValidRange(int iMinVal, int iMaxVal, int iVal, bool bThrowError, std::string strParamName)
Tests whether a number is within a valid range.
std::string TargetID()
Gets the target neuron ID.
void IncNonSpikingSynCurr(double cur)
Increment non-spiking syn current.
static double m_dAHPEquilPot
The static after-hyperpolarizing equil pot. Typically equil pot for K.
float m_fltGReport
The reported variable for synaptic conductance.
Declares the spiking chemical synapse class.
double ProcessOutput(bool bFreezeHebb=false)
Process the output described of the connection.
AnimatSim::Environment::Structure * m_lpStructure
The pointer to this items parent Structure. If this is not relevant for this object then this is NULL...
CStdArray< double > m_arySynG
Current conductance of each synaptic type.
std::string m_strID
The unique Id for this object.
std::string Std_Trim(std::string strVal)
Trims a string.
double GetScaleElecCond(double minG, double maxG, double jV, double ThreshV, double SaturateV)
Gets a scale electrical conductance.
ElectricalSynapse * GetElecSynAt(int i)
Gets an electrical synapse at the specified index.
void PreCalc()
Performs pre-step calculations.
bool Cd()
Gets whether Cadmium is applied to the nervous system.
std::string SourceID()
Gets the source neuron ID.
double m_dStartCriticalPeriod
The start time of the critical period for hebbian learning.
virtual int FindSynapseListPos(std::string strID, bool bThrowError=true)
Searches for a synapse by the specified ID and returns its position in the list.
virtual bool SetData(const std::string &strDataType, const std::string &strValue, bool bThrowError=true)
Set a variable based on a string data type name.
virtual int FindNeuronListPos(std::string strID, bool bThrowError=true)
Searches for a neuron by the specified ID and returns its position in the list.
Neuron * m_lpTarget
Pointer to the target Neuron.
double m_dFacilD
The facilitation.
double GetRestingPot()
Gets the resting potential.
void AppendTransitSpike()
Appends the transit spike.
virtual void AddSynapseType(std::string strXml, bool bDoNotInit)
Adds a synapse type by xml.
double EndCriticalPeriod()
Gets the end time of the critical period.
double m_dEndCriticalPeriod
The end time of the critical period for hebbian learning.
Declares the ca activation class.
SpikingChemicalSynapse * GetSpikingChemSynAt(int i)
Gets a spiking chemical synapse at the specified array index.
CStdArray< Adapter * > m_aryTargetAdapters
An array of target adapters for this module.
CStdPtrArray< NonSpikingChemicalSynapse > m_aryNonSpikingChemSyn
The array of non-spiking chemical synapses in this neural module.
virtual std::string Name()
Gets the name of this object.
double m_dBaseG
The base conductance.
Organism * m_lpOrganism
The pointer to the organism.
bool m_bFreezeLearning
true to freeze learning.
double m_dTimeSincePrevHebbEvent
The time since previous hebb event.
double CaEquilPot()
Gets the calcium equilibrium potential.
void ScaleCondForVoltDep(double &G, double postV, double maxV, double minV, double scl)
Scale conductance for volt dependance.
int GetElecSynCount()
Gets the electrical synapse count.
static long m_lAbsoluteRefr
The static absolute refractory period in timeslices after an action potential.
virtual void LoadExternalSynapses(CStdXml &oXml)
Loads external synapses.
double SpikeStrength()
Gets the spike strength.
float m_fltGFailCxReport
reported variable for facilitated increase in g when input occurs
bool Hebbian()
Gets if the synapse type is Hebbian.
Connexion * LoadConnexion(CStdXml &oXml)
Loads a connexion.
virtual AnimatBase * FindByID(std::string strID, bool bThrowError=true)
Searches for the object with the specified ID.
ElectricalSynapse * LoadElecSyn(CStdXml &oXml, int iIndex)
Loads an electrical synapse.
bool Std_ToBool(int iVal)
Converts a value toa bool.
CStdPtrArray< Neuron > m_aryNeurons
The array of neurons in this neural module.
void Std_TraceMsg(const int iLevel, std::string strMessage, std::string strSourceFile, int iSourceLine, bool bLogToFile, bool bPrintHeader)
Traces a message to the debugger window.
Declares the synapse type class.
IntegrateFireNeuralModule()
Default constructor.
bool GetSpike()
Gets whether a spike occured.
double m_dG
The synaptic conductance.
virtual void AddNeuron(std::string strXml, bool bDoNotInit)
Adds a neuron by using xml.
virtual ~IntegrateFireNeuralModule()
Destructor.
SpikingChemicalSynapse * LoadSpikingChemSyn(CStdXml &oXml, int iIndex)
Loads a spiking chemical synapse.
SynapseType * m_lpSynType
Pointer to the synapse type for this connection.
static double m_dSpikeStrength
The static spike strength used when calculating the action potential.
Class factory for the integrate and fire neural module.
void Release(void)
Releases this object.
Declares the electrical synapse class.
virtual void LoadInternal(CStdXml &oXml)
Interal method to load the module data.
double GetMemPot()
Gets the membrane potential.
CStdPtrArray< ElectricalSynapse > m_aryElecSyn
The array of electrical synapses in this neural module.
bool Std_IsBlank(std::string strVal)
Trims a string and tests if a string is blank.
double StartCriticalPeriod()
Gets the start time of the critical period.
DoubleList m_HebbList
List of hebbian events.
std::string Std_CheckString(std::string strVal)
Converts a string to upper case and trims it.
void ResetIDs()
Resets the integer IDs of the various objects when things move around in the array for some reason...
void PostCalc(IntegrateFireNeuralModule *lpNS)
Called when simulation is ended.
virtual void VerifySystemPointers()
Verify that system pointers have been set correctly.
int GetSpikingChemSynCount()
Gets the spiking chemical synapse count.
SynapseType * LoadSynapseType(CStdXml &oXml)
Loads a synapse type.
virtual long TimeSlice()
Gets the current time slice.
int GetNonSpikingChemSynCount()
Gets the non-spiking chemical synapse count.
virtual void RemoveSynapse(std::string strID, bool bThrowError=true)
Removes the synapse with the specified ID.
CStdPtrArray< SpikingChemicalSynapse > m_arySpikingChemSyn
The array of spiking chem synapses in this neural module.
int m_iID
Identifier ID for this connection.
double m_dFacilDecay
The facilitation decay.
std::string m_strProjectPath
Full pathname of the string project file for this module.
float m_fltTimeStep
The DT time step for this neural module in seconds.
virtual bool AddItem(const std::string &strItemType, const std::string &strXml, bool bThrowError=true, bool bDoNotInit=false)
Adds a new object to this parent.
void IncNonSpikingSynCond(double cond)
Increment non-spiking syn conductance.
double m_dCurrentTime
Current time of the simulation.
double * GetTimeToNextSpikePtr()
Gets the time to next spike pointer.
std::string Std_ToUpper(std::string strVal)
Converts a string to upper case.
void DecrementFacilitation()
Decrements the facilitation.
virtual void AddSynapse(std::string strXml, bool bDoNotInit)
Adds a synapse by xml.
Non-spiking chemical synapse type.
static double m_dDT
The statoc time step.
double m_dTimeStep
The time step of the neural module.
void CalcUpdate(IntegrateFireNeuralModule *lpNS)
Calculates the update during a time step.
std::string m_strType
The type for this object. Examples are Box, Plane, Neuron, etc..
double m_dDelay
The synaptic delay.
Contains all of the classes to implement a basic integrate and fire neural model. ...
Declares the non spiking chemical synapse class.
std::string m_strName
The name for this object.
Declares the neuron class.
void CalcUpdate()
Calculates the update during the step of the simulation.
bool m_bUseCriticalPeriod
true to use critical period during hebbian learning.