public override IGEPCodon GetCodonEncodingFunction(IFunctionIdentifier functionIdentifier, CodonType codonType = CodonType.Standard)
        {
            var codonRow = new CodonRow();
            Qry.SelectAllFrom(codonRow)
                .InnerJoinSelectingAllOn(codonRow.FunctionPairRowColumn)
                .InnerJoinOn(codonRow.FunctionPairRow.PrimaryFunctionRowColumn)
                .Where(codonRow.CodonTypeColumn, codonType.ToString())
                .Where(codonRow.FunctionPairRow.PrimaryFunctionRow.FunctionIdentifierColumn, functionIdentifier.ToString())
                .GoAndExtract(ref codonRow);

            return codonRow.ToGEPCodon(this);
        }
        public override ICodon GetRandomCodon()
        {
            // Construct a Codon (randomly).
            var codonName = "";
            for (var i = 0; i < this.CodonLength; i++)
            {
                var nucleotide = this.Nucleotides.Values.RandomElement();
                codonName += nucleotide.Identifier.ToString();
            }

            var codonRow = new CodonRow();
            Qry.SelectAllFrom(codonRow)
                .InnerJoinSelectingAllOn(codonRow.FunctionPairRowColumn)
                .Where(codonRow.NameColumn, codonName)
                .GoAndExtract(ref codonRow);

            return codonRow.ToGEPCodon(this);
        }
 public override ICodon GetCodon(ICodonIdentifier codonIdentifier)
 {
     var codonRow = new CodonRow();
     Qry.SelectAllFrom(codonRow)
         .InnerJoinSelectingAllOn(codonRow.FunctionPairRowColumn)
         .Where(codonRow.NameColumn, codonIdentifier.ToString())
         .GoAndExtract(ref codonRow);
     return codonRow.ToGEPCodon(this);
 }