{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "# Kinetic Proofreading" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "An important aspect of biosynthesis is accuracy. The essential parts of a cell that store, transmit, and express information are formed by macromolecules including DNA, RNA, and proteins. All these macromolecules are synthesized piece by piece along a chain-like structure, with the help of molecular machinery such as DNA/RNA polymerase and ribosome. Errors in each step of their syntheses could result in defective products that cannot function properly, endangering the life of the cell and the organism. In reality, the error rate of biosynthesis is surprisingly low. A major mechanism that helps achieving such high accuracy is \"kinetic proofreading\". In this note, we will study how kinetic proofreading works by modeling an abstract biosynthesis process with and without proofreading." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Without proofreading" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "Consider a model where a molecular machine synthesizes a product by recruiting a substrate and assembling it into the desired structure. This could represent one step in the synthesis of a macromolecule, such as incorporating one amino acid into a protein. The problem is that there are multiple types of substrates available, yet only one of them is correct. For protein synthesis, for example, there are 20 types of amino acids possible, but each residue of the protein must be made of a specific amino acid according to its primary sequence. The specificity is provided by the codon sequence on the mRNA template, which is recognized by the tRNA that carries the correct amino acid to be incorporated. However, once in a while, a wrong substrate might slip in by chance, because of nonspecific interaction with the recognition site. Thus, a wrong amino acid could be incorporated instead of the correct one, often resulting in the protein not being able to fold or function.\n", "\n", "This description can be represented by the following competing processes:\n", "\\begin{align}\n", "C + R \\mathop{\\rightleftarrows}^{k}_{k_C} \\mathit{CR} \\mathop{\\rightarrow}^{w} \\mathit{CP} \\\\\n", "D + R \\mathop{\\rightleftarrows}^{k}_{k_D} \\mathit{DR} \\mathop{\\rightarrow}^{w} \\mathit{DP}\n", "\\end{align}\n", "Here $C$ denotes the correct substrate, $R$ the recognition site, $\\mathit{CR}$ the correct substrate bound to the recognition site, and $\\mathit{CP}$ the correct product. Similarly, $D$ denotes a wrong substrate, $\\mathit{DR}$ the wrong substrate bound to the recognition site, and $\\mathit{DP}$ the defective product. Notice that we have assumed that the correct and wrong substrates have the same binding rate, $k$, to the recognition site, as well as the same incorporation rate, $w$. The only difference between the correct and wrong substrates is in the unbinding rate, $k_C$ and $k_D$ respectively. This assumption is largely true for the biosynthesis of proteins and nucleic acids.\n", "\n", "In order for the wrong substrate to have a low chance of being incorporated \"by mistake\", its unbinding rate should be much larger than that for the correct substrate, i.e., $k_D \\gg k_C$. We also assume that the incorporation rate $w$ is small compared to both unbinding rates, i.e., $w \\ll k_C \\ll k_D$. Finally, we assume that there is a large pool of both correct and wrong substrates, so that their concentrations are equal and constant. Therefore, any difference in the production rate of the correct and defective products will be due to the kinetics of the processes." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "Under those assumptions, we will focus on the abundance of the chemical species $\\mathit{CR}$, $\\mathit{CP}$, $\\mathit{DR}$, and $\\mathit{DP}$. Under our assumptions, the production rates of the bound states $\\mathit{CR}$ and $\\mathit{DR}$ will be constant and simply redefined as $k$. Therefore we can represent the processes involving those species by the reactions:\n", "\\begin{align}\n", "&\\mathbb{0} \\xrightarrow{k} \\mathit{CR} \\\\\n", "&\\mathit{CR} \\xrightarrow{k_C} \\mathbb{0} \\\\\n", "&\\mathit{CR} \\xrightarrow{w} \\mathit{CP} \\\\\n", "&\\mathbb{0} \\xrightarrow{k} \\mathit{DR} \\\\\n", "&\\mathit{DR} \\xrightarrow{k_D} \\mathbb{0} \\\\\n", "&\\mathit{DR} \\xrightarrow{w} \\mathit{DP}\n", "\\end{align}\n", "The reactant and product stoichiometry matrices are:\n", "\\begin{equation}\n", "\\mathbf{R} = \\left(\n", "\\begin{array}{ll}\n", "0 & 0 & 0 & 0 \\\\\n", "1 & 0 & 0 & 0 \\\\\n", "1 & 0 & 0 & 0 \\\\\n", "0 & 0 & 0 & 0 \\\\\n", "0 & 0 & 1 & 0 \\\\\n", "0 & 0 & 1 & 0\n", "\\end{array} \\right)\n", "\\qquad\n", "\\mathbf{P} = \\left(\n", "\\begin{array}{ll}\n", "1 & 0 & 0 & 0 \\\\\n", "0 & 0 & 0 & 0 \\\\\n", "0 & 1 & 0 & 0 \\\\\n", "0 & 0 & 1 & 0 \\\\\n", "0 & 0 & 0 & 0 \\\\\n", "0 & 0 & 0 & 1\n", "\\end{array} \\right)\n", "\\end{equation}" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "We can study these reactions using either stochastic simulation (`StochSimulation`) or deterministic rate equations (`RateEquations`)." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import scipy.integrate as intgr\n", "import matplotlib.pyplot as plt\n", "from Gillespie import StochSimulation\n", "from mass_action import RateEquations" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We have written the `RateEquations` class with very similar syntax to the `StochSimulation` class, so that the ways to use them are almost identical. To specify a model, we just need to supply the stoichiometry matrices. Below is a demonstration for both classes." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "class SS_WithoutProofreading(StochSimulation):\n", " \"\"\"\n", " make stochastic simulation of biosynthesis model without kinetic proofreading.\n", " \"\"\"\n", " \n", " def __init__(self, rates, init, record=True):\n", " \"\"\"\n", " modify the initialization to specify the stoichiometry matrices.\n", " \"\"\"\n", " reactants = [[0, 0, 0, 0],\n", " [1, 0, 0, 0],\n", " [1, 0, 0, 0],\n", " [0, 0, 0, 0],\n", " [0, 0, 1, 0],\n", " [0, 0, 1, 0]]\n", " products = [[1, 0, 0, 0],\n", " [0, 0, 0, 0],\n", " [0, 1, 0, 0],\n", " [0, 0, 1, 0],\n", " [0, 0, 0, 0],\n", " [0, 0, 0, 1]]\n", " StochSimulation.__init__(self, (reactants, products), rates, init, record=record)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "class RE_WithoutProofreading(RateEquations):\n", " \"\"\"\n", " solve rate equations of biosynthesis model without kinetic proofreading.\n", " \"\"\"\n", " \n", " def __init__(self, rates, init, record=True):\n", " \"\"\"\n", " modify the initialization to specify the stoichiometry matrices.\n", " \"\"\"\n", " reactants = [[0, 0, 0, 0],\n", " [1, 0, 0, 0],\n", " [1, 0, 0, 0],\n", " [0, 0, 0, 0],\n", " [0, 0, 1, 0],\n", " [0, 0, 1, 0]]\n", " products = [[1, 0, 0, 0],\n", " [0, 0, 0, 0],\n", " [0, 1, 0, 0],\n", " [0, 0, 1, 0],\n", " [0, 0, 0, 0],\n", " [0, 0, 0, 1]]\n", " RateEquations.__init__(self, (reactants, products), rates, init, record=record)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us choose the parameters for the reaction rates. Recall that they should satisfy $w \\ll k_C \\ll k_D$. In order to have decent amount of $\\mathit{CR}$ and $\\mathit{DR}$, we should also have $k \\gg k_C, k_D$. So all together we need $w \\ll k_C \\ll k_D \\ll k$. For example, we can have:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "k = 1000. # binding rate, same for C and D\n", "kD = 100. # unbinding rate of DR\n", "kC = 1. # unbinding rate of CR\n", "w = 0.1 # incorporation rate, same for C and D\n", "\n", "rates = [k, kC, w, k, kD, w]\n", "inits = [0, 0, 0, 0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will run both the stochastic simulation and the rate equations to compare results. We start from initial conditions where no products or intermediates are present." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "T = 15.\n", "swo = SS_WithoutProofreading(rates, inits) # stochastic simulation\n", "swo.run(T, maxstep=100000, nmax=10000)\n", "ss_time_hist = swo.time_hist[1:] # time history, excluding t=0\n", "ss_num_hist = np.array(swo.numbers_hist)[1:] # abundance history of all species" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "dt = 0.1\n", "rwo = RE_WithoutProofreading(rates, inits) # rate equations\n", "rwo.run(T, dt)\n", "re_time_hist = rwo.time_hist[1:] # time history, excluding t=0\n", "re_num_hist = np.array(rwo.numbers_hist)[1:] # abundance history of all species" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plt.plot(ss_time_hist, ss_num_hist[:,1], label='CP (SS)') # CP abundance from stochastic simulation\n", "plt.plot(ss_time_hist, ss_num_hist[:,3], label='DP (SS)') # DP abundance from stochastic simulation\n", "plt.plot(re_time_hist, re_num_hist[:,1], 'k', label='CP (RE)') # CP abundance from rate equations\n", "plt.plot(re_time_hist, re_num_hist[:,3], 'k--', label='DP (RE)') # DP abundance from rate equations\n", "plt.xlabel('time')\n", "plt.ylabel('abundance')\n", "plt.yscale('log')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can now plot the relative error, defined as the ratio of the production rate of the defective and correct products." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_1067464/1427339997.py:2: RuntimeWarning: divide by zero encountered in true_divide\n", " ss_ratio = ss_num_hist[:,3] / ss_num_hist[:,1] # stochastic simulation result\n", "/tmp/ipykernel_1067464/1427339997.py:2: RuntimeWarning: invalid value encountered in true_divide\n", " ss_ratio = ss_num_hist[:,3] / ss_num_hist[:,1] # stochastic simulation result\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "th_ratio = (kC + w) / (kD + w) # theoretical value\n", "ss_ratio = ss_num_hist[:,3] / ss_num_hist[:,1] # stochastic simulation result\n", "re_ratio = re_num_hist[:,3] / re_num_hist[:,1] # rate equations result\n", "\n", "plt.figure()\n", "plt.plot(ss_time_hist, ss_ratio, label='DP/CP (SS)')\n", "plt.plot(re_time_hist, re_ratio, 'k', label='DP/CP (RE)')\n", "plt.axhline(th_ratio, color='k', ls='--', label='theory')\n", "plt.yscale('log')\n", "plt.xlabel('time')\n", "plt.ylabel('relative error')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## With proofreading" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us now introduce \"proofreading\" into the model. The idea is that there is an extra step after the binding of the substrate (correct or not) and before the incorporation into the final product. This step can be thought of as the \"activation\" of the bound complex (CR or DR) --- it must be activated before being incorporated. The point of having this extra step is that it allows another chance for the incorrectly bound substrate to unbind. The processes can be represented by the following schematic figure:\n", "\n", "\"with-proofreading.png\"\n", "\n", "Here $\\mathit{CR'}$ represents the activated complex bound with the correct substrate, and $\\mathit{DR'}$ for the wrong substrate. There are a few things to note. First, the rate of activation, $k'$, is assumed to be the same for the correct and wrong substrates. This is similar to the binding rate $k$ being independent of the substrates; both assumptions are largely true in reality. Second, there is no backward process from the activated state back to the inactivated state. This is important because it reflects the fact that the activation process is \"driven\", i.e., being facilitated by underlying mechanisms that cost energy. In the example of protein synthesis, this step corresponds to the hydrolysis of GTP, which is the energy source. As a result of driving, the backward reaction rate is negligible compared to the forward reaction, thus keeping the activated state out of equilibrium (which is what \"kinetic\" in \"kinetic proofreading\" refers to, as opposed to being in \"thermodynamic\" equilibrium). Finally, we have assumed that the unbinding rate of the activated complex is the same as for the inactivated complex, $k_C$ for the correct substrate and $k_D$ for the wrong substrate. This is also largely true for the biological examples. The fact that the substrate now has a second chance to unbind with the same unbinding rate leads to the accuracy being doubled exponentially (i.e., error probability being squared), as we will see below." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us solve this model in the same way as we did for the simpler model without proofreading above. To compute the error rate, we will only study the average behavior, which can be solved using rate equations. First, let us represent the processes involved in the model by chemical reactions, which will allow us to extract the stoichiometry matrices. In the current model, we now have 6 species to consider: $\\mathit{CR}$, $\\mathit{CR'}$, $\\mathit{CP}$, $\\mathit{DR}$, $\\mathit{DR'}$, and $\\mathit{DP}$. There are 10 reactions:\n", "\\begin{align}\n", "&\\mathbb{0} \\xrightarrow{k} \\mathit{CR} \\\\\n", "&\\mathit{CR} \\xrightarrow{k_C} \\mathbb{0} \\\\\n", "&\\mathit{CR} \\xrightarrow{k'} \\mathit{CR'} \\\\\n", "&\\mathit{CR'} \\xrightarrow{k_C} \\mathbb{0} \\\\\n", "&\\mathit{CR'} \\xrightarrow{w} \\mathit{CP} \\\\\n", "&\\mathbb{0} \\xrightarrow{k} \\mathit{DR} \\\\\n", "&\\mathit{DR} \\xrightarrow{k_D} \\mathbb{0} \\\\\n", "&\\mathit{DR} \\xrightarrow{k'} \\mathit{DR'} \\\\\n", "&\\mathit{DR'} \\xrightarrow{k_D} \\mathbb{0} \\\\\n", "&\\mathit{DR'} \\xrightarrow{w} \\mathit{DP}\n", "\\end{align}\n", "The stoichiometry matrices are:\n", "\\begin{equation}\n", "\\mathbf{R} = \\left(\n", "\\begin{array}{ll}\n", "0 & 0 & 0 & 0 & 0 & 0 \\\\\n", "1 & 0 & 0 & 0 & 0 & 0 \\\\\n", "1 & 0 & 0 & 0 & 0 & 0 \\\\\n", "0 & 1 & 0 & 0 & 0 & 0 \\\\\n", "0 & 1 & 0 & 0 & 0 & 0 \\\\\n", "0 & 0 & 0 & 0 & 0 & 0 \\\\\n", "0 & 0 & 0 & 1 & 0 & 0 \\\\\n", "0 & 0 & 0 & 1 & 0 & 0 \\\\\n", "0 & 0 & 0 & 0 & 1 & 0 \\\\\n", "0 & 0 & 0 & 0 & 1 & 0\n", "\\end{array} \\right)\n", "\\qquad\n", "\\mathbf{P} = \\left(\n", "\\begin{array}{ll}\n", "1 & 0 & 0 & 0 & 0 & 0 \\\\\n", "0 & 0 & 0 & 0 & 0 & 0 \\\\\n", "0 & 1 & 0 & 0 & 0 & 0 \\\\\n", "0 & 0 & 0 & 0 & 0 & 0 \\\\\n", "0 & 0 & 1 & 0 & 0 & 0 \\\\\n", "0 & 0 & 0 & 1 & 0 & 0 \\\\\n", "0 & 0 & 0 & 0 & 0 & 0 \\\\\n", "0 & 0 & 0 & 0 & 1 & 0 \\\\\n", "0 & 0 & 0 & 0 & 0 & 0 \\\\\n", "0 & 0 & 0 & 0 & 0 & 1\n", "\\end{array} \\right)\n", "\\end{equation}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since here we are interested in the average accuracy of synthesis, it suffices to solve the rate equations. We can use the above stoichiometry matrices to construct a derived class of the general `RateEquations` class." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "class RE_WithProofreading(RateEquations):\n", " \"\"\"\n", " solve rate equations of biosynthesis model with kinetic proofreading.\n", " \"\"\"\n", " \n", " def __init__(self, rates, init, record=True):\n", " \"\"\"\n", " modify the initialization to specify the stoichiometry matrices.\n", " \"\"\"\n", " reactants = [[0, 0, 0, 0, 0, 0],\n", " [1, 0, 0, 0, 0, 0],\n", " [1, 0, 0, 0, 0, 0],\n", " [0, 1, 0, 0, 0, 0],\n", " [0, 1, 0, 0, 0, 0],\n", " [0, 0, 0, 0, 0, 0],\n", " [0, 0, 0, 1, 0, 0],\n", " [0, 0, 0, 1, 0, 0],\n", " [0, 0, 0, 0, 1, 0],\n", " [0, 0, 0, 0, 1, 0]]\n", " products = [[1, 0, 0, 0, 0, 0],\n", " [0, 0, 0, 0, 0, 0],\n", " [0, 1, 0, 0, 0, 0],\n", " [0, 0, 0, 0, 0, 0],\n", " [0, 0, 1, 0, 0, 0],\n", " [0, 0, 0, 1, 0, 0],\n", " [0, 0, 0, 0, 0, 0],\n", " [0, 0, 0, 0, 1, 0],\n", " [0, 0, 0, 0, 0, 0],\n", " [0, 0, 0, 0, 0, 1]]\n", " RateEquations.__init__(self, (reactants, products), rates, init, record=record)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We need to choose a value for the new parameter $k'$. To achieve better accuracy, we would like to have $k' \\ll k_C, k_D$. For example, we could choose $k'$ to have the same order of magnitude as $w$." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "ka = 0.1 # activation rate, same for C and D\n", "\n", "rates2 = [k, kC, ka, kC, w, k, kD, ka, kD, w] # rate constants\n", "inits2 = [0, 0, 0, 0, 0, 0] # initial values" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us now simulate the processes." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "T2 = 15.\n", "dt2 = 0.1\n", "rwp = RE_WithProofreading(rates2, inits2)\n", "rwp.run(T2, dt2)\n", "re_time_hist2 = rwp.time_hist[1:] # time history, excluding t=0\n", "re_num_hist2 = np.array(rwp.numbers_hist)[1:] # abundance history of all species" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plt.plot(re_time_hist2, re_num_hist2[:,2], 'k', label='CP (RE)') # CP abundance\n", "plt.plot(re_time_hist2, re_num_hist2[:,5], 'k--', label='DP (RE)') # DP abundance\n", "plt.xlabel('time')\n", "plt.ylabel('abundance')\n", "plt.yscale('log')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us again plot the relative error. For reference, we also plot the error from the model without proofreading." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAEGCAYAAAB7DNKzAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABK+ElEQVR4nO3deVhVVffA8e8GRXACxzS1nBAFURQyh1Ac0xwyzcpXU7PJykaz0gZtttcsc0izQUytHBv01bJScshKMJxyTFFRVMB5ZHD9/rhwfsxe4MJFWJ/nuQ93n3vOPute8S7O2eesbUQEpZRSKjsuzg5AKaVU0aaJQimlVI40USillMqRJgqllFI50kShlFIqR6WcHUBBqFq1qtStW9fZYSil1HUlIiIiTkSqZVxeLBNF3bp1CQ8Pd3YYSil1XTHGHMxquZ56UkoplSNNFEoppXKkiUIppVSOiuUYhVKOkJiYSHR0NJcvX3Z2KEo5lLu7O7Vr16Z06dJ2ra+JQqlsREdHU6FCBerWrYsxxtnhKOUQIkJ8fDzR0dHUq1fPrm301JNS2bh8+TJVqlTRJKGKFWMMVapUydWRcrFKFMaY3saYWWfOnHF2KKqY0CShiqPc/l4Xq0QhIstE5BFPT09nh6KUUsVGsUoU+TVjxgw6derk7DCUsri6uhIQEICfnx/Nmzdn0qRJXL16FYCwsDA8PT0JCAigSZMmvP766+m2DQwM5MqVK5w/f55HH32UBg0aEBgYSEhICH/++We6/ps2bcqAAQO4ePFiphhEhE6dOnH27Fm7Yr7jjjs4ffo0p0+f5uOPP7aWh4WF0atXr7x+FOmEhYXx+++/O6Sv3Bg4cCDNmjXjww8/dHjf5cuXB+Do0aPcfffdee5n2rRpfPHFF44KC9BEkY6bmxtly5YlKSnJ2aEoBYCHhweRkZHs2LGDn3/+mZUrV6ZLCMHBwURGRhIeHs68efPYvHkzAAcOHKBWrVqUKVOGhx56iMqVK7N3714iIiKYPXs2cXFx6frfvn07bm5uzJw5M1MMK1asoHnz5lSsWNGumFesWIGXl1emROFI+U0Uefk/fuzYMTZt2sTWrVt59tln891fdm688UYWL16c5+2HDx/O1KlTHRYPaKJI58EHH2T58uWUKqUXg6mip3r16syaNYtp06aRcWbKcuXKERgYyL59+wD48ccf6d69O//++y9//vknb731Fi4utv/u9erVo2fPnpn6Dw4OtrZPa/78+dx5550ATJw4kSlTpgDw7LPPWkfgq1evZtCgQYCthE5cXBwvvfQS//77LwEBAYwePRqA8+fPc/fdd9O4cWMGDRpkvY9ff/2VFi1a4O/vz/Dhw7ly5Uq6vgDCw8MJCQkhKiqKmTNn8uGHHxIQEMC6devSxTt+/Hjuv/9+2rRpg7e3N59++ilgSy7BwcH06dMHX19fLl++zAMPPIC/vz8tWrRgzZo1ANku79atG0eOHLH2GRISwjPPPENQUBAfffQRERERdOjQgcDAQG6//XZiYmIA+PTTT7nlllto3rw5/fv3t47aDhw4QJs2bfD39+eVV16x4o+KiqJp06YAhIaG0q9fP7p37463tzcvvPCCtd7nn39Oo0aNaNWqFQ8//DAjR44EoGzZstStW5e//vor079lXmmiUMpOISEhhIaGArZ7LEJCQpg3bx4AFy9eJCQkhAULFgBw5swZQkJCWLp0KQBxcXGEhISwbNkywPbXaV7Ur1+f5ORkTpw4kW55fHw8f/zxB35+fsD/J4odO3YQEBCAq6trjv0mJSWxcuVK/P39M722YcMGAgMDAVsySf1iDg8P5/z58yQmJrJu3Trat2+fbrsJEybQoEEDIiMjmThxIgB///03kydP5p9//mH//v1s2LCBy5cvM2zYMBYsWMC2bdtISkpixowZ2cZat25dRowYwbPPPktkZCTBwcGZ1tm6dSurV69m48aNvPHGGxw9ehSAzZs389FHH7Fnzx6mT5+OMYZt27bx9ddfM3ToUC5fvpzt8h9++MF6P6n7TEhIIDw8nKeeeoonn3ySxYsXExERwfDhw3n55ZcB6NevH5s2bWLLli00adKEzz//HICnn36axx57jG3btlGzZs1s329kZKT12SxYsIDDhw9z9OhR3nzzTf744w82bNjArl270m0TFBSUKYHmhyaKNM6cOUNgYCCzZ892dihK2WXdunW0aNGCbt268dJLL+Hn50dCQgLR0dHUr1//mttfunSJgIAAgoKCuOmmm3jwwQczrXPy5EkqVKgA2MY9IiIiOHv2LGXKlKFNmzaEh4ezbt26LL+wM2rVqhW1a9fGxcWFgIAAoqKi2L17N/Xq1aNRo0YADB06lLVr1+byk0jvzjvvxMPDg6pVq9KxY0frr+tW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qVChAmAb94iIiODs2bOUKVOGNm3aEB4ebnd58azKpGcltd5U+/btOXv2LKdPnwZsp3VSq6Fu3LjRKqt9//33WyXEs1uekaurK/379wdsp6UiIiK45ZZbCAgI4Ndff2X//v2A7YKWli1b0qJFC3bs2ME///zDrl27qFevHt7e3hhjGDx4cLbvuW/fvri4uODr62tNNrR+/XoGDBiAi4sLNWrUyDSlqqPKgzuKHlGkMWfOHFatWmUdQqe1detWunXrxrx58+jSpYsTolPOlNu//AvK/v37cXV1pXr16uzcuZPg4GCWL1+ebp1169ZZf6X7+fmxZcsWkpOTszyqSB2jyElqiW8XFxdKly5NvXr1CA0NpW3btjRr1ow1a9awb98+u+5iz6pMelayKw/uyNLg7u7u1mciIgwdOpR3300/5c2BAwd4//332bRpE5UqVWLYsGF2lzhPlfY921sJw1HlwR2lWB1R5HcwO3UALiuNGjWiU6dOeHl55T1ApfIhNjaWESNGMHLkyBxPg/7444/06NEDsE1LGhQUxLhx46wvqaioKP73v//ZvV8fHx/rr2uwnX56//33ad++PcHBwcycOZMWLVpkisne0uJZSa2vtn79ejw9Pclq3LFt27ZWWe358+dbRzTZLc9J586dWbx4sXVK7+TJkxw8eJCzZ89Srlw5PD09OX78OCtXrgSgcePGREVF8e+//wK2KVNzo127dixZsoSrV69y/PjxTHOVOKo8uKMUqyOK/BYF9PLy4sKFCyQlJVGqVPqPxt3dna+++soRYSplt9RTQ4mJiZQqVYr777+f5557LsdtwsLCeOONN6z2Z599xqhRo2jYsCEeHh5UrVqViRMn2h1Dz549CQsLI3VCsODgYN5++23atGlDuXLlcHd3z/LLOG0J8B49euSq3LW7uzstWrQgMTHRKnKX0dSpU3nggQeYOHEi1apVs2boy255Tnx9fXnrrbfo1q0bV69epXTp0kyfPp3WrVvTokULGjdunG62PHd3d2bNmkXPnj0pW7YswcHBuUqK/fv359dff8XX15c6derQsmVLKxkeP34cDw8PatSoYXd/BS6rkrLX+yOvc2Z/9NFHAkhcXFy265w6dUoWLlyYp/7V9eV6LDN++PBh6d69u0P7PHr0qHTp0sWhfeYk4/zaxdW5c+dERCQuLk7q168vMTExIiLy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0rr11luZPXs2a9euZfjw4Vy9etXZISmlVJZKOTuAkmzgwIFERUUxduxYKleuzEcffYQxxtlhKaVUOpoonOyll14iLi6ODz74AE9PT9544w1NFkqpIkUThZMZY5g4cSJnzpyxqs1qslBKFSXFKlGkKQro7FByxcXFhVmzZmGM4a233uLixYtMnDgRF5diNYSklLpOFatEISLLgGVBQUEPOzuW3HJxceGTTz7B3d2dDz74gMOHD/Pll19qtVmllNMVq0RxvXNxcWHKlCnUrVuX559/nqNHj/L9999TpUoVZ4emlCrB9NxGEWOMYdSoUSxcuJDw8HDatGnDvn37nB2WUqoE00RRRA0YMIBff/2VkydPEhgYyKJFi5wdklKqhNJEUYS1a9eO8PBwmjRpwj333MPjjz/O5cuXnR2WUqqEKVaJ4nop4ZEbdevWZd26dYwePZoZM2Zw6623smvXLmeHpZQqQYpVorieSnjkRunSpfnvf//LihUrOHr0KAEBAbz99ttaI0opVSiKVaIo7nr06MHWrVvp3bs3r7zyCkFBQfz555/ODkspVcxporjO1KxZk0WLFvH9999z8uRJ2rRpw8iRI7VcuVKqwGiiuE716dOHf/75hyeeeIIZM2bQoEED3nvvPS5duuTs0JRSxYwmiutYxYoVmTp1Ktu2baN9+/a89NJL+Pj4MGfOHJKSkpwdnlKqmNBEUQz4+vqybNkyVq9eTfXq1Rk2bBg+Pj7MmjWLK1euODs8pdR1rlgliuJ4eWxudOzYkb/++ssq+/Hoo4/SoEEDPvzwQ0rqZ6KUyr9ilSiK6+WxueHi4kKfPn34888/WbVqFQ0bNuS5556jVq1aPP744+zYscPZISqlrjPFKlGo/2eMoWvXroSFhbFp0yYGDBjAF198QdOmTenUqRNz587lwoULzg5TKXUd0ERRAgQFBTF79myio6OZMGECUVFRDBkyhBo1avDggw+ydu1anbNbKZUtIyLOjsHhgoKCJDw83NlhFFlXr15l/fr1hIaGsmjRIs6fP0+NGjW466676NevHx06dKB06dLODlMpVciMMREiEpRpuSaKku3ChQv88MMPLF26lBUrVnDx4kUqV65Mnz596NevH506daJcuXLODlMpVQg0UahrunTpEj/99BNLly7lhx9+4MyZM7i5uXHbbbfRrVs3unbtSkBAgE7R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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "th_ratio2 = (kC + w) * (kC + ka) / (kD + w) / (kD + ka) # theoretical value\n", "re_ratio2 = re_num_hist2[:,5] / re_num_hist2[:,2] # rate equations result\n", "\n", "plt.figure()\n", "plt.plot(re_time_hist, re_ratio, 'k:', label='DP/CP (without proofreading)') # error without proofreading\n", "plt.axhline(th_ratio, color='k', ls='-.', label='theory (without proofreading)')\n", "plt.plot(re_time_hist2, re_ratio2, 'k', label='DP/CP (with proofreading)') # error with proofreading\n", "plt.axhline(th_ratio2, color='k', ls='--', label='theory (with proofreading)')\n", "plt.yscale('log')\n", "plt.xlabel('time')\n", "plt.ylabel('relative error')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Compared to the model without proofreading, we see that, at steady state, the error probability is orders of magnitude lower. Theoretically, one can show (by solving the steady state of the rate equations) that the relative error, represented by the ratio of the steady state production rate for the correct and wrong substrates, is given by:\n", "\\begin{equation}\n", "\\frac{\\dot{N}_{CP}}{\\dot{N}_{DP}} = \\frac{k_C + w}{k_D + w} \\approx \\frac{k_C}{k_D} \\qquad \\text{(without proofreading)}\n", "\\end{equation}\n", "and\n", "\\begin{equation}\n", "\\frac{\\dot{N}_{CP}}{\\dot{N}_{DP}} = \\frac{k_C + k'}{k_D + k'} \\, \\frac{k_C + w}{k_D + w} \\approx \\Big( \\frac{k_C}{k_D} \\Big)^2 \\qquad \\text{(with proofreading)}\n", "\\end{equation}\n", "Thus, for $k_C \\ll k_D$, the error probability is \"squared\", or equivalently speaking, the accuracy of biosynthesis is \"doubled in orders of magnitude\"." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note, however, that the price for the increased accuracy is the reduction in speed. One can show that the production rate of the correct product is given by:\n", "\\begin{equation}\n", "\\dot{N}_{CP} = \\frac{k}{k_C + w} \\, w \\approx \\frac{k}{k_C} \\, w \\qquad \\text{(without proofreading)}\n", "\\end{equation}\n", "and\n", "\\begin{equation}\n", "\\dot{N}_{CP} = \\frac{k'}{k_C + w} \\, \\frac{k}{k_C + k'} \\, w \\approx \\frac{k'}{k_C} \\, \\frac{k}{k_C} \\, w \\qquad \\text{(with proofreading)}\n", "\\end{equation}\n", "As can be seen from the plot below, the production rate is slower with proofreading than without." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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1aFDBwAiIyP54osvrOXz589n7Nix+fKaVq5cyd69e/PlWI66fv06PXr0IDAwkMWLF+frsSMjI/H39wdg+/btPPXUrQ8v/vzzz7N+/fr8Ci3f5Jr4RWQmtjP182nTKBGZVcBxlUrly5enbt261KhRw9mhqAIgIgwcOJDw8HCOHDnCjh07ePPNNzl79iwATZo0ISIigj179rB3715WrlyZ5Rhz587lnnvuwdXV1aHn/Omnn4CsiT8//dnEn5ycnOd9du3aBUBERESWsaQd/VB0REhICO++++4t7z9u3DimTZuWb/HkF4dKNojIzrTune+KyK6CDqq0atu2LevWrcPT09PZoagCsGHDBtzc3BgzZoy1rFWrVnTqlHmE0zJlytChQwcOHz6c5Riff/45/fv3B+DJJ5/km2++AWDgwIE89NBDgO3D4a9//SsAlSpVAmDSpEls3ryZwMBA/vEP28ipp0+fplevXjRt2pQXXnjBeo5FixbRsmVL/P39mThxorU8/VgAS5cuZeTIkfz000988803TJgwgcDAQI4cOZIp3pEjRzJmzBhCQkJo1qwZ3377LWD7xtGvXz+6detG9+7dOX/+PAMGDCAgIIDQ0FD27LF1HLS3/Ny5czzwwANs27bNek5vb28mTpxIUFAQX331FWvXrqV9+/YEBQUxZMgQrly5AsDf//532rRpg7+/P48++ijpvRp37NhBq1ataNWqFe+9954V/8aNG7nrrrsAmDp1Kg899BDh4eE0btw40wfCq6++io+PDx07dmTo0KHMmDEDgIYNGxIXF0d0dHSW36Uzaa2eImDMmDHMnDnT2WGUOuHh4cyfPx+wdfUMDw9n4cKFACQkJBAeHm41I8THxxMeHs7y5bbObbGxsYSHh7Nq1SoAh/6xf//9d4KDg3PdLiEhgXXr1tGyZctMy2/cuMHRo0etgXY6derE5s2bATh16pR11r1582Y6d848Ouq0adPo1KkTERERPPPMM4DtbHnx4sX89ttvLF68mJMnT3L69GkmTpzI+vXriYiIYNu2bXa/eaTr0KED/fr14+233yYiIoImTZpk2SYyMpJff/2V7777jjFjxlgXIXfu3MnSpUv54YcfePnll2ndujV79uzhjTfeYPjw4QB2l992223861//sl5P+nNWq1aNnTt30qNHD1577TW+//57du7cSUhIiPX/NXbsWLZt28bvv/9OYmKi9UE0atQoZs+eneuQpfv37+c///kPv/76K6+88gpJSUls27aNZcuWsXv3btasWcPNXc+DgoL48ccfczxuYdPE72RJSUnExMRw/rxe6ijtjhw5QmBgIGFhYfTt25fevXtnWh8bG5vp22B64t+7dy++vr7UrFmTM2fOsHXrVqttPyfdu3fHw8MDd3d3fH19OX78ONu2bSM8PJwaNWpQpkwZhg0bxqZNm/7U67r33ntxcXGhadOmNG7cmP379wNwxx13ULWqrfrLli1bePDBBwHo1q0bcXFxXLp0Kdvl9qQ3+fz888/s3buXsLAwAgMDWbBgAcePHwds37ratWtHy5YtWb9+PX/88QcXL17k4sWL1odl+vPZ07dvX8qVK0f16tW57bbbOHv2LD/++CP9+/fH3d2dypUrc/fdd2fa57bbbuP06dO3+vYVCEd69WCMaQg0FZHvjTHlgTIicrlgQysd3NzcWLp0qd0Leapgbdy40Xrs5uaWab5ChQqZ5j08PDLNV69ePdN8rVq1cn0+Pz8/li5dmu369Db+7JQvXz5Tl726dety8eJF/v3vf9O5c2fOnz/PkiVLqFSpEpUrV841nnLlylmPXV1dc21rz9hzJC9dB2/ucZI+n993o6cfT0S44447WLRoUab1165d44knnmD79u3Ur1+fqVOn5vlmvry+Z+nPW758+Tw9T0HL9YzfGPMItpuvPkpbVA9YWYAxlQqJiYmMGzeOc+fOYYxx+GKdKr66devG9evXmTNnjrVsz549VnNNbry8vEhJScmUrEJDQ5k1axadO3emU6dOzJgxI8s1A4DKlStz+XLu52pt27blhx9+IDY2lpSUFBYtWkSXLl0AqFmzJvv27SM1NZUVK1Y4fOyvvvqK1NRUjhw5wtGjR/Hx8cmyTadOnfj8888B2wdy9erVqVKlSrbLcxIaGsqPP/5oXSO5evUqBw8etN636tWrc+XKFetD2NPTE09PT7Zs2QJgPZ+jwsLCWLVqFdeuXePKlStW81G6gwcPWr2EigpHmnqeBMKwlVtARA4BtxVkUKXBtm3b+OSTT6zeCarkM8awYsUKvv/+e5o0aYKfnx8vvviiQ98W0t15551WggJbwkxOTub2228nKCiI8+fP2038AQEBuLq60qpVK+virj21a9dm2rRpdO3alVatWhEc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tmT//v1ZXv/8+fPp378/4eHhNG3alFdeeQXAblnmCRMm4O/vT8uWLa2SESJid3m/fv24cuUKwcHBLF68OEvJ6CNHjtCrVy+Cg4Pp1KmTFduqVato164drVu3pkePHta4CHFxcdx55534+fnx8MMPk7HLe3qZ640bNxIeHm73d7d69WqaN29OcHAwTz31lPWtzhhDeHi4Vd3Uqezd1SWZ7759A/DMMO8FvJbbfvk5OfvO3d27d8vly5edGoP6826+s7FLly5Zpvfee09ERK5evWp3/bx580REJCYmJsu63Bw7dkz8/Pys+Q0bNkiVKlXk5MmTkpKSIqGhobJ582a5ceOGtG/fXs6dOyciIl9++aWMGjVKRERatmwpGzduFBGRKVOmyNNPP229lscff9w69siRI2XFihUiIvLRRx/Js88+myWel156Sd59911r3tfXV+Lj42X27NkSEhIiCxculMjISAkNDRURkZdfflnefvtt6/m2bdtm7duwYUPrWO+9956MHj06y/PNmzdPatWqJbGxsZKQkCB+fn6ybds2OXbsmBhjZOvWrSIisnTpUunRo4ckJydLdHS01K9fX06fPp3tchGRihUrWs8zYsQI6du3ryQnJ4uISLdu3eTgwYMiIvLzzz9L165dRUTk/PnzkpqaKiIiH3/8sfUejRs3Tl555RUREfn2228FsO5eTn+e7H53iYmJUq9ePTl69KiIiNx3333St29fK7aFCxfK2LFjs7w3+SG/79ztLSJW046IXEgbmOVv+f8xVPSICAMGDMDX17dofFKrEqVt27ZW82FgYCCRkZF4enry+++/c8cddwC2jgW1a9e2W+Z4yJAh1rEyliN++OGHeeuttxgwYADz5s3j448/zvLcZ86cyXTDT4cOHfjxxx/ZtGkTkydP5t///jciYrf2jz0ZSx4vX26/UeCOO+6w6trfc889bNmyhQEDBmQqy7xlyxaGDh2Kq6srNWvWpEuXLmzbti3b5f369cvyPOklo69cucJPP/2U6X26fv06YBtP4C9/+Qtnzpzhxo0bNGrUCIBNmzZZ8fft2zfbukb2fneVKlWicePG1rGGDh2aqShfUSnx7EjidzXGlBOR6wDGmPJAqerW8umnn2oTTwm0cePGbNdVqFAhx/XVq1fPcb2j7JVGFhH8/Pwy1b4HiI+Pz/FYGUsbh4WFERkZ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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "re_prod_rate = re_num_hist[:,1] / re_time_hist # average production rate of CP without proofreading\n", "re_prod_rate2 = re_num_hist2[:,2] / re_time_hist2 # average production rate of CP with proofreading\n", "th_prod_rate = k / (kC + w) * w\n", "th_prod_rate2 = k / (kC + ka) * ka / (kC + w) * w\n", "\n", "plt.figure()\n", "plt.plot(re_time_hist, re_prod_rate, 'k:', label='CP (without proofreading)') # production without proofreading\n", "plt.axhline(th_prod_rate, color='k', ls='-.', label='theory (without proofreading)')\n", "plt.plot(re_time_hist2, re_prod_rate2, 'k', label='CP (with proofreading)') # production with proofreading\n", "plt.axhline(th_prod_rate2, color='k', ls='--', label='theory (with proofreading)')\n", "plt.xlabel('time')\n", "plt.ylabel('production rate of CP')\n", "plt.legend()\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" } }, "nbformat": 4, "nbformat_minor": 4 }