{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Problem 10.3: Controlling p53 levels\n", "\n", "\n", "
" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import collections\n", "import numpy as np" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "[p53](https://en.wikipedia.org/wiki/P53) is an important protein for tumor suppression, DNA damage repair, cell cycle regulation, and more. In their [2012 paper](https://doi.org/10.1126/science.1218351), the researchers in Galit Lahav's group investigated how temporal dynamics of p53 controls cell fate in [MCF-7 cells](https://en.wikipedia.org/wiki/MCF-7), a breast cancer cell line. It had been previously observed that p53 levels oscillate upon exposure to stress due to γ radiation. To instead study how cells respond to sustained levels of p53, the authors controlled p53 levels using the drug Nutlin-3. To do this, they devised a program for adjusting Nutlin-3 levels in the cell culture that would keep the p53 levels at a constant high level. They based this program on a mathematical model of the p53 circuit (shown in the figure below) that they developed and parametrized in an [earlier paper](https://doi.org/10.1016/j.molcel.2008.03.016).\n", "\n", "
\n", " \n", "![p53 circuit](p53_circuit.svg)\n", "\n", "
\n", "\n", "The p53 levels oscillate due to a delays in the autoinhibitory loops mediated by Mdm2 and Wip1. The dynamical equations for this circuit, as presented in the paper, are\n", "\n", "\\begin{align}\n", "\\frac{\\mathrm{d}p_i}{\\mathrm{d}t} &= \\beta_\\mathrm{p} - \\frac{\\delta_\\mathrm{mp}^i \\, m\\,p_i}{1+\\left(n(t-\\tau_\\mathrm{n})/k\\right)^{n_\\mathrm{n}}} - \\beta_\\mathrm{sp}\\,p_i\\,\\frac{(s/k_\\mathrm{s})^{n_\\mathrm{s}}}{1 + (s/k_\\mathrm{s})^{n_\\mathrm{s}}} - \\gamma_\\mathrm{p}^i\\, p_i,\\\\[1em]\n", "\\frac{\\mathrm{d}p_a}{\\mathrm{d}t} &= \\beta_\\mathrm{sp}\\,p_i\\,\\frac{(s/k_\\mathrm{s})^{n_\\mathrm{s}}}{1 + (s/k_\\mathrm{s})^{n_\\mathrm{s}}} - \\frac{\\delta_\\mathrm{mp}^a \\, m\\,p_a}{1+\\left(n(t-\\tau_\\mathrm{n})/k\\right)^{n_\\mathrm{n}}},\\\\[1em]\n", "\\frac{\\mathrm{d}m}{\\mathrm{d}t} &= \\beta_{m_i} + \\beta_\\mathrm{m}\\,p_a(t-\\tau_\\mathrm{m}) - \\delta_\\mathrm{sm}\\,s\\,m - \\gamma_m\\,m,\\\\[1em]\n", "\\frac{\\mathrm{d}w}{\\mathrm{d}t} &= \\beta_\\mathrm{w}\\,p_a(t-\\tau_\\mathrm{w}) - \\gamma_\\mathrm{w}\\,w,\\\\[1em]\n", "\\frac{\\mathrm{d}s}{\\mathrm{d}t} &= \\beta_\\mathrm{s}\\,\\theta(t) - \\delta_\\mathrm{ws}\\,s\\,\\frac{(w/k_\\mathrm{w})^{n_\\mathrm{w}}}{1 + (w/k_\\mathrm{w})^{n_\\mathrm{w}}} - \\gamma_\\mathrm{s}\\,s.\n", "\\end{align}\n", "\n", "Here, $p_i$ and $p_a$ denote the concentrations of inactive and active p53, respectively. The variables $m$ and $w$ respectively represent the concentrations of Mdm2 and Wip1. The concentration of the DNA damage signal is denoted as $s$. Finally, $n$ is the externally imposed concentration of Nutlin-3. The function $\\theta(t)$ is the Heaviside function,\n", "\n", "\\begin{align}\n", "\\theta(t) = \\left\\{\\begin{array}[ll] 00 & t < 0 \\\\\n", "1 & t \\ge 0.\n", "\\end{array}\n", "\\right.\n", "\\end{align}\n", "\n", "The parameters for the model are given in the code cell below as a named tuple for convenience. The units of all parameters are such that time is in hours and concentrations in micromolar. Before proceeding, take a moment and make sure you understand the physical meaning of each term in the equations." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "Params = collections.namedtuple(\n", " \"Params\",\n", " [\n", " \"delta_mpi\",\n", " \"gamma_pi\",\n", " \"delta_mpa\",\n", " \"delta_sm\",\n", " \"gamma_m\",\n", " \"gamma_w\",\n", " \"delta_ws\",\n", " \"gamma_s\",\n", " \"beta_p\",\n", " \"beta_sp\",\n", " \"beta_m\",\n", " \"beta_mi\",\n", " \"beta_w\",\n", " \"beta_s\",\n", " \"tau_n\",\n", " \"tau_m\",\n", " \"tau_w\",\n", " \"k\",\n", " \"n_n\",\n", " \"n_s\",\n", " \"n_w\",\n", " \"k_w\",\n", " \"k_s\",\n", " ],\n", ")\n", "\n", "params = Params(\n", " delta_mpi=5,\n", " gamma_pi=2,\n", " delta_mpa=1.4,\n", " delta_sm=0.5,\n", " gamma_m=1,\n", " gamma_w=0.7,\n", " delta_ws=50,\n", " gamma_s=7.5,\n", " beta_p=0.9,\n", " beta_sp=10,\n", " beta_m=0.9,\n", " beta_mi=0.2,\n", " beta_w=0.25,\n", " beta_s=10,\n", " tau_n=0.4,\n", " tau_m=0.7,\n", " tau_w=1.25,\n", " k=2.3,\n", " n_n=3.3,\n", " n_s=4,\n", " n_w=4,\n", " k_w=0.2,\n", " k_s=1,\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**a)** Solve the equations numerically with $n = 0$. Plot the solution along with the experimental measurements from the [Purvis, et al. paper](https://doi.org/10.1126/science.1218351), given in the Numpy arrays below. This helps verify that the model gives results similar to what you would observe experimentally." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# Time points (in units of hours)\n", "time = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 12])\n", "\n", "# p53 concentration\n", "relative_total_p53_conc = np.array(\n", " [0.13, 0.69, 1.00, 0.87, 0.60, 0.35, 0.34, 0.54, 0.61, 0.42]\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**b)** Come up with a program for controlling the Nutlin-3 concentration so as to bring the total p53 level to a sustained value similar to that of its maximum value during oscillations in the absence of Nutlin-3. I.e., choose a function $N(t)$ to give a sustained level of p53 that is approximately unity (in the units specified by the parameter values). You might want to consider experimental constraints; for example that you might want to have only a few steps where the Nutlin-3 concentrations are adjusted to ease experimentation. Show a plot verifying that your scheme works." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
" ] } ], "metadata": { "anaconda-cloud": {}, "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.9.12" } }, "nbformat": 4, "nbformat_minor": 4 }