List <Gene> parseSequence(List <string> sequence, ChromaParameters parameters) { var nucleos = parseNucleotides(sequence, parameters); var genes = parseGenes(nucleos, parameters); return(genes); }
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); }
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(); }
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)); }
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); }
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); }
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); }
public static Genome RandomGenome(int length, ChromaParameters parameters) => new Genome(RandomSequence(length), parameters);
public Genome(string sequence, ChromaParameters parameters) { this.sequence = sequence.chars(); this.parameters = parameters; genes = parseSequence(this.sequence, parameters); }