Designing a DNA library is not a trivial task. As simple as it may seem to incorporate a couple of randomized nucleotides into a synthetic gene, it requires some careful planning to end up with a useful library.
In particular, it is important to determine the complexity of the libray – how many different variants of the sequence are to be expected. This is very easy: Just multiply the combinations of 2, 3, or 4 nucleotide variants at all randomized positions, like so:
n = 2^a * 3^b * 4^c
where n is the number of permutations, a is the number of wobble positions with two alternative nucleotides, b is the number of wobble positions with three alternative nucleotides, and c the one with four.
Now, this is a very theoretical value. If you use a significant number of fully randomized codon positions, n will quickly become very large.
You now have to make an important decision: Should the library cover each possible permutation at least once, or is it ok if it covers a subset only?
This is primarily a question of practicability: Covering all possible permutations can be very difficult for large numbers of n, and the effort may not be warranted if the library is simply used for the exploration of the optimization potential of a protein. In that case, it may be worthwile to perform multiple iterations of a library design, carefully approaching the optimum.
If you want to cover the complete permutation space, for instance when you are expecting complex interactions between multiple amino acids, then think about ways to reduce the absolute number of randomized nucleotide positions. For instance, it may be useful to allow a limited number of prototypic amino acid residues per position instead of all twenty.
The question of whether a library covers all possible permutations can be answered by looking at the number of full-length double stranded DNA molecules in the product. There is an in-depth discussion of how to do that in the technical appendix of the Entelechon catalog.
Since the number of possible permutations increases rapidly with the number of randomized positions, steps to reduce the complexity of the library can save you time and money: Using a proprietary technology, we can synthesize codon-precision mutant libraries which contain only the codons you want – no undesired codons, no stop codons. For instance, for a fully randomized amino acid positions, this reduces the number of variants from 32 for a conventional NNS “codon” to 20.