Example #1
0
        private List <double> GetTransitionVector(DnaBase currentBase, double time)
        {
            List <EvolutionProbability> EvolutionVector = this.transitionMatrix.ElementAt((int)currentBase);
            List <double> TransitionVector = new List <double>()
            {
                EvolutionVector.ElementAt(DnaBase.A)(time),
                EvolutionVector.ElementAt(DnaBase.C)(time),
                EvolutionVector.ElementAt(DnaBase.G)(time),
                EvolutionVector.ElementAt(DnaBase.T)(time)
            };

            return(TransitionVector);
        }
Example #2
0
        public DnaBase GenerateNextBase(DnaBase currentBase, double time)
        {
            List <double> TransitionVector    = this.GetTransitionVector(currentBase, time);
            double        randomResult        = EvolutionModel.randomGen.NextDouble();
            double        tresholdProbability = 0;

            for (int i = currentBase; i < currentBase + 4; i++)
            {
                tresholdProbability += TransitionVector.ElementAt(i % 4);
                if (randomResult <= tresholdProbability)
                {
                    return(i);
                }
            }
            return(currentBase);
        }