I am hoping to mutate the active site of the enzyme I am researching that has 5 residues in proximity with the substrate. I am wondering how many colonies I'll have to assess to theoretically sample all the possible mutant combinations?

I am guessing that just screening the number of possible combinations will not be very successful because I am likely to sample a particular mutant more than once?

I have been looking at 'NNK Saturated Mutagenesis' which uses the redundancy in the genetic code to be able to create all residue encodings where N = A/G/C/T and K = G/T, while limiting the number of repeated residues from synonymous codons.

Are there any other ways of performing this sort of mutagenesis with better codon compression?

  • 2
    $\begingroup$ It depends a bit how you are generating the mutations and the residue combinations and what your goals are. e.g. do you expect the genotypes for each mutant position to be independent? Do you want to sample every amino acid at every position, and then do combinatorics of the $20^5$ combinations across the 5 positions? That's a lot of combinations to sample (3.2 million)! Why not a greedy approach, wherein you saturate mutations at each residue independently, and then construct combinations based on whether substitutions have an effect/seem interesting? $\endgroup$ Commented Mar 18, 2021 at 21:21
  • 3
    $\begingroup$ @David 'Synthetic biology is a field of science that involves redesigning organisms for useful purposes by engineering them to have new abilities' - genome.gov, I am looking to re-engineer my enzyme for new purposes $\endgroup$
    – JEJS
    Commented Mar 19, 2021 at 7:39
  • 2
    $\begingroup$ @MaximilianPress It is a lot of combinations but I feel it is neccessary given the dependency of residues within the small space of an active site. I am not sure you would get the theoretical global fitness optima with a greedy approach but I think this is an interesting idea for maybe tackling even larger libraries $\endgroup$
    – JEJS
    Commented Mar 19, 2021 at 11:14
  • 2
    $\begingroup$ @MaximilianPress Greedy definitely isn't effective for some of the related problems like RBS and promoter engineering, and I won't expect it would be effective for active site engineering. One might reduce the space by considering AA permutations rather than NA, but I'm not sure if there's a good mutagenesis protocol for that. $\endgroup$
    – jakebeal
    Commented Mar 19, 2021 at 12:06
  • 3
    $\begingroup$ @David I appreciate the careful explanation of your reasoning, which is much more constructive than your now-deleted comment that led me to my prior interpretation of your reasoning. I particularly think the "protein-engineering" tag is useful. In my own thinking about taxonomy, I would tend to consider that a subset of the "synthetic-biology" tag, but can see how others with different backgrounds could evaluate their relationship differently. $\endgroup$
    – jakebeal
    Commented Mar 19, 2021 at 17:38

3 Answers 3


This sort of method is indeed quite useful and frequently used in synthetic biology: I've used a similar approach before to generate 5' insulators for promoters.

Calculating the exact theoretical likelihood of what you want, so far as I understand, is a complex combinatoric equation that I wasn't able to get a nice closed form on with a few minutes of work. For your purposes, however, I expect that a reasonable estimate will do as well, and that can be made much more easily by modeling the population of each combination as an independent series of biased coin flips, i.e., a binomial distribution.

Consider a situation with $n$ potential combinations that you attempt to cover with $k$ random mutants. If we focus on a particular combination, we can see that each random mutant has a $\frac{1}{n}$ chance of hitting that combination. The whole set of mutants is thus a series of $k$ biased coin flips, with a probability $p_0 = (1-\frac{1}{n})^k$ of getting no mutants that hit that combination. This means that the probability $p_c$ that the combination is covered is $p_c = 1-p_0$, expanding to: $$p_c = 1-(1-\frac{1}{n})^k$$

With a large number of potential combinations and a large number of mutants, we can make a reasonable approximate by treating each combination as independent. In this case, the probability that all combinations are covered is the product of the probabilities that each combination is covered independently. They aren't actually independent: each combination that gets covered slightly detracts from the ability of other combinations to be covered. An estimate using an independence assumption is thus an overestimate of the actual likelihood, and the higher that $k$ is the closer the estimate should be to the exact probability. In short: $$p_{all} < (1-(1-\frac{1}{n})^k)^n$$

This smells like the sort of equation there ought to be a nice identity for, but I don't know the identity, so I'll just give a couple of examples of calculating with it:

  • NNK = 32 combinations, 50 mutants (n=32, k=50): $p_{all}$ < 0.07%
  • NNK = 32 combinations, 100 mutants (n=32, k=100): $p_{all}$ < 25.5%
  • NNK = 32 combinations, 200 mutants (n=32, k=200): $p_{all}$ < 94.6%

As you can see there's a sharp transition as the coverage count increases.

Important caveat: the theoretical value may not give you what you want. In the paper I linked above, we used two degenerate primers with 18 N bases to inject 36bp of random material, which means we had $4.7x10^{21}$ possible combinations and should never have seen a repeat --- except that sequencing showed that we did indeed get several repeats out of only a few hundred colonies. Thus, biases in the biology may lead your statistics to be skewed from what the theory suggests.


CyberDope was first written at MIT, then again at Kairos, then again by me (privately) in Mathematica. The program gives the best "dopes" for a target set of amino acids. You will need someone who has Mathematica to view this program in ".nb" format and to run it. I would further suggest they upgrade the program into Mathematica version 12. I just now uploaded a copy to the Wolfram cloud (public):


The original publcation is:

Arkin and Youvan

Twenty years ago, the work was at this stage:


If you just want to "eye-ball" a good dope, look at this figure, circle the amino acid residues you want, and then look at the three nucleotide axes:

enter image description here

(That's from Wikipedia's Genetic Code article)

  • $\begingroup$ @David - Please have another look. $\endgroup$
    – Youvan
    Commented Mar 22, 2021 at 1:41
  • $\begingroup$ @jakebeal - I was not on this forum when you posted. $\endgroup$
    – Youvan
    Commented Mar 22, 2021 at 1:46
  • $\begingroup$ @Youyan I'm having a hard time understanding how this answers the original question. It looks like relevant software, but I don't see how one gets from this to a number of random mutants. $\endgroup$
    – jakebeal
    Commented Mar 22, 2021 at 8:06
  • $\begingroup$ @jakebeal I saw you had mentioned NNK mutagenesis, which will increase in complexity with 32^n, where ^ is exponent and n is the number of amino acids you are simultaneously changing in the protein. For a given n, CyberDope can help you reduce the base of 32 to a lower number. That effects the number of mutants which you will have to screen if you select a good target set of amino acids. Lets say you want to try the aromatic residues at a site. Looking at the cube (no program), U(UAG)(UG) gives you F,Y,W with a nucleotide complexity of 6. NU(GT) is hydrophobic, NA(GT) is hydrophilic. $\endgroup$
    – Youvan
    Commented Mar 22, 2021 at 11:18
  • 1
    $\begingroup$ Thank you for the interesting reference. As a matter of process, however, if you want to respond to an answer, the recommended way to do so on StackExchange is via a comment on that answer, rather than another answer that may not be addressing the question. $\endgroup$
    – jakebeal
    Commented Mar 22, 2021 at 11:31

The OP is dealing with combinatorial complexity, too. So they might want to look at this figure if they are mutagenizing at the second position of the codon. Again, from Wikipedia (Genetic Code) enter image description here


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .