Transformation efficiency calculations are not designed for high throughput, nor automated setups. This is how I handle transformation efficiency in my own lab.
The classic transformation efficiency formula is:
TE = Colonies/ug/Dilution. For example, lets say I transform 100pg of pUC19 into 10uL of cells, and outgrow with 50uL of media. Then, 30uL (or half) is plated, and 100 colonies are counted. The formula works out like this:
colonies = 100 dna = 0.0001ug (100pg) dilution = 0.5 TE = 100 / 0.0001 / 0.5 = 2x10^6
While this works for simple manual protocols, more information is needed in order to optimize transformation protocols robotically. I have 3 numbers I calculate for every protocol:
Let's use data from a real experiment that I just ran with a very unoptimized protocol:
import statistics from typing import List def te(colonies: int, fmol: float, dilution: float) -> float: return colonies/fmol/dilution def adjust_colonies(colonies: List[int], fmol: float, dilution: List[float]) -> List[float]: l = [] for idx, count in enumerate(colonies): l.append(te(count, fmol, dilution[idx])) return l def tte(colonies: List[int], fmol: float, dilution: List[float]) -> float: return statistics.mean(adjust_colonies(colonies, fmol, dilution)) def intra_deviation(colonies: List[int], fmol: float, dilution: List[float]) -> float: return statistics.stdev(adjust_colonies(colonies, fmol, dilution)) def inter_deviation(ttes: List[float]) -> float: return statistics.stdev(ttes) # Real data # Dilutions: I plate 5uL, but dilute by 7.5uL for an initial 20uL dilutions = [0.25, 0.25*0.625, 0.25*0.625*0.625, 0.25*0.625*0.625*0.625] fmol = 1 a5_a8_colonies = [9,14,0,1] a9_a12_colonies = [5,5,1,1] # tte print("TTE") print("{:.2f}".format(tte(a5_a8_colonies, fmol, dilutions))) print("{:.2f}".format(tte(a9_a12_colonies, fmol, dilutions))) # intra print("Intra-deviation") print("{:.2f}".format(intra_deviation(a5_a8_colonies, fmol, dilutions))) print("{:.2f}".format(intra_deviation(a9_a12_colonies, fmol, dilutions))) # inter print("Inter-deviation") print("{:.2f}".format(inter_deviation([tte(a5_a8_colonies, fmol, dilutions), tte(a9_a12_colonies, fmol, dilutions)])))
And the results:
TTE 35.50 19.66 Intra-deviation 38.96 9.16 Inter-deviation 11.20
That there is some deviation! Visually, this is very apparent, but it is good to put numbers to it. I'll be updating this page as I get more real data and experience.