Beispiel #1
0
        List <Gene> parseSequence(List <string> sequence, ChromaParameters parameters)
        {
            var nucleos = parseNucleotides(sequence, parameters);
            var genes   = parseGenes(nucleos, parameters);

            return(genes);
        }
Beispiel #2
0
        static List <Nucleotide> parseNucleotides(List <string> sequence, ChromaParameters parameters)
        {
            var    nucleos    = new List <Nucleotide>();
            double numNucleos = parameters.paths * parameters.propsPerPath;

            var valuesPerNucleo = Math.Floor(sequence.Count / numNucleos);
            var leftOvers       = sequence.Count - (valuesPerNucleo * numNucleos);

            int i = 0;

            while (nucleos.Count < numNucleos)
            {
                var n = new List <string>();              //values to pass to new nucleo
                if (i < leftOvers)                        //when sequence.Count is greater than valuesPerNucleo
                {
                    while (n.Count < valuesPerNucleo + 1) //give extra values to the first few nucleotides
                    {
                        n.Add(sequence[i]);
                        i++;
                    }
                    nucleos.Add(new Nucleotide(n));
                }
                else
                {
                    while (n.Count < valuesPerNucleo)
                    {
                        n.Add(sequence[i]);
                        i++;
                    }
                    nucleos.Add(new Nucleotide(n));
                }
            }

            return(nucleos);
        }
Beispiel #3
0
        public Painting(List <Gene> genes, ChromaParameters parameters)
        {
            var tuples = (from g in genes select g.Interpret(parameters)).ToList();

            paths  = (from t in tuples select t.Item1).ToList();
            paints = (from t in tuples select t.Item2).ToList();
        }
Beispiel #4
0
        public Tuple <Path, Paint> Interpret(ChromaParameters parameters)
        {
            var nq    = nucleotides.ToQueue();
            var path  = getPath(nq.Dequeue(parameters.propsPerCurve * parameters.curves), parameters);
            var paint = getPaint(nq.Dequeue(parameters.propsPerPaint), parameters);

            return(new Tuple <Path, Paint>(path, paint));
        }
Beispiel #5
0
        Paint getPaint(Queue <Nucleotide> nq, ChromaParameters parameters)
        {
            var paint = new Paint();

            //set paint properties
            paint.style       = parameters.getStyle(nq.Dequeue());
            paint.argb        = parameters.getARGB(nq.Dequeue(4));
            paint.strokeWidth = parameters.getStrokeWidth(nq.Dequeue());


            return(paint);
        }
Beispiel #6
0
        Path getPath(Queue <Nucleotide> nq, ChromaParameters parameters)
        {
            var path = new Path();

            while (path.curves.Count < parameters.curves)
            {
                var curve = parameters.getCurve(nq.Dequeue(parameters.propsPerCurve));
                path.curves.Add(curve);
            }

            return(path);
        }
Beispiel #7
0
        static List <Gene> parseGenes(List <Nucleotide> nucleos, ChromaParameters parameters)
        {
            var genes   = new List <Gene>();
            var nucleoQ = nucleos.ToQueue();

            parameters.paths.times(p => {        //for each path
                var n = new List <Nucleotide>(); //to be passed to new Gene
                for (int j = 0; j < parameters.propsPerPath; j++)
                {
                    n.Add(nucleoQ.Dequeue());
                }
                genes.Add(new Gene(n));
            });

            return(genes);
        }
Beispiel #8
0
 public static Genome RandomGenome(int length, ChromaParameters parameters) =>
 new Genome(RandomSequence(length), parameters);
Beispiel #9
0
 public Genome(string sequence, ChromaParameters parameters)
 {
     this.sequence   = sequence.chars();
     this.parameters = parameters;
     genes           = parseSequence(this.sequence, parameters);
 }