Esempio n. 1
0
 /// <summary>
 /// Creates the instance and initialize it from given xml element.
 /// </summary>
 /// <param name="settingsElem">
 /// Xml data containing settings.
 /// Content of xml element is not validated against the xml schema.
 /// </param>
 public DynamicsSettings(XElement settingsElem)
 {
     if (settingsElem != null)
     {
         //Parsing
         //Resting efficacy
         RestingEfficacy = double.Parse(settingsElem.Attribute("restingEfficacy").Value, CultureInfo.InvariantCulture);
         //Efficacy depression
         TauDepression = double.Parse(settingsElem.Attribute("tauDepression").Value, CultureInfo.InvariantCulture);
         //Efficacy facilitation
         TauFacilitation = double.Parse(settingsElem.Attribute("tauFacilitation").Value, CultureInfo.InvariantCulture);
         //Apply short-term plasticity ?
         ApplyShortTermPlasticity = bool.Parse(settingsElem.Attribute("applyShortTermPlasticity").Value);
         //Weight
         XElement weightCfgElem = settingsElem.Descendants("weight").FirstOrDefault();
         if (weightCfgElem != null)
         {
             WeightCfg = new RandomValueSettings(settingsElem.Descendants("weight").FirstOrDefault());
         }
         else
         {
             WeightCfg = new RandomValueSettings(0, 1);
         }
     }
     return;
 }
Esempio n. 2
0
 //Constructors
 /// <summary>
 /// Creates an initialized instance
 /// </summary>
 /// <param name="stimuliCoeff">Input stimuli coefficient (pA)</param>
 /// <param name="timeScale">Membrane time scale (ms)</param>
 /// <param name="resistance">Membrane resistance (Mohm)</param>
 /// <param name="restV">Membrane rest potential (mV)</param>
 /// <param name="resetV">Membrane reset potential (mV)</param>
 /// <param name="rheobaseV">Membrane rheobase threshold (mV)</param>
 /// <param name="firingThresholdV">Membrane firing threshold (mV)</param>
 /// <param name="sharpnessDeltaT">Sharpness of membrane potential change (mV)</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 ExpIFSettings(double stimuliCoeff,
                      RandomValueSettings timeScale,
                      RandomValueSettings resistance,
                      RandomValueSettings restV,
                      RandomValueSettings resetV,
                      RandomValueSettings rheobaseV,
                      RandomValueSettings firingThresholdV,
                      RandomValueSettings sharpnessDeltaT,
                      int refractoryPeriods,
                      ODENumSolver.Method solverMethod,
                      int solverCompSteps
                      )
 {
     StimuliCoeff      = stimuliCoeff;
     TimeScale         = timeScale.DeepClone();
     Resistance        = resistance.DeepClone();
     RestV             = restV.DeepClone();
     ResetV            = resetV.DeepClone();
     RheobaseV         = rheobaseV.DeepClone();
     FiringThresholdV  = firingThresholdV.DeepClone();
     SharpnessDeltaT   = sharpnessDeltaT.DeepClone();
     RefractoryPeriods = refractoryPeriods;
     SolverMethod      = solverMethod;
     SolverCompSteps   = solverCompSteps;
     return;
 }
Esempio n. 3
0
 //Constructors
 /// <summary>
 /// Creates an uninitialized instance
 /// </summary>
 public DynamicsSettings()
 {
     RestingEfficacy          = 0;
     TauFacilitation          = 0;
     TauDepression            = 0;
     ApplyShortTermPlasticity = true;
     WeightCfg = null;
     return;
 }
Esempio n. 4
0
 /// <summary>
 /// The deep copy constructor
 /// </summary>
 /// <param name="source">Source instance</param>
 public StaticSynapseSettings(StaticSynapseSettings source)
 {
     WeightCfg = null;
     if (source.WeightCfg != null)
     {
         WeightCfg = source.WeightCfg.DeepClone();
     }
     return;
 }
Esempio n. 5
0
 //Constructors
 /// <summary>
 /// Creates an unitialized instance
 /// </summary>
 public PoolsInterconnection()
 {
     SourcePoolName          = string.Empty;
     SourceConnectionDensity = 0;
     TargetPoolName          = string.Empty;
     TargetConnectionDensity = 0;
     SynapseWeight           = null;
     return;
 }
Esempio n. 6
0
        /// <summary>
        /// Returns random double according to specified settings.
        /// </summary>
        /// <param name="rand"></param>
        /// <param name="settings">Encapsulated settings</param>
        public static double NextDouble(this Random rand, RandomValueSettings settings)
        {
            double value;

            switch (settings.DistrType)
            {
            case DistributionType.Uniform:
                value = rand.NextRangedUniformDouble(settings.Min, settings.Max);
                break;

            case DistributionType.Gaussian:
                if (settings.DistrCfg != null)
                {
                    RandomValueSettings.GaussianDistrSettings gaussianCfg = settings.DistrCfg as RandomValueSettings.GaussianDistrSettings;
                    value = rand.NextFilterredGaussianDouble(gaussianCfg.Mean, gaussianCfg.StdDev, settings.Min, settings.Max);
                }
                else
                {
                    throw new Exception($"Configuration of Gaussian distribution is missing");
                }
                break;

            case DistributionType.Exponential:
                if (settings.DistrCfg != null)
                {
                    RandomValueSettings.ExponentialDistrSettings exponentialCfg = settings.DistrCfg as RandomValueSettings.ExponentialDistrSettings;
                    value = rand.NextFilterredExponentialDouble(exponentialCfg.Mean, settings.Min, settings.Max);
                }
                else
                {
                    throw new Exception($"Configuration of Exponential distribution is missing");
                }
                break;

            case DistributionType.Gamma:
                if (settings.DistrCfg != null)
                {
                    RandomValueSettings.GammaDistrSettings gammaCfg = settings.DistrCfg as RandomValueSettings.GammaDistrSettings;
                    value = rand.NextFilterredGammaDouble(gammaCfg.Alpha, gammaCfg.Beta, settings.Min, settings.Max);
                }
                else
                {
                    throw new Exception($"Configuration of Gamma distribution is missing");
                }
                break;

            default:
                throw new Exception($"Unknown distribution type {settings.DistrType}.");
            }
            if (settings.RandomSign)
            {
                value *= rand.NextSign();
            }
            return(value);
        }
Esempio n. 7
0
 /// <summary>
 /// The deep copy constructor
 /// </summary>
 /// <param name="source">Source instance</param>
 public DynamicsSettings(DynamicsSettings source)
 {
     RestingEfficacy          = source.RestingEfficacy;
     TauFacilitation          = source.TauFacilitation;
     TauDepression            = source.TauDepression;
     ApplyShortTermPlasticity = source.ApplyShortTermPlasticity;
     WeightCfg = null;
     if (source.WeightCfg != null)
     {
         WeightCfg = source.WeightCfg.DeepClone();
     }
     return;
 }