Files
bio-plots/bionet/4-phage-statmech.ipynb
2024-01-05 11:55:33 +01:00

122 lines
28 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"from math import exp"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'\\nK = exp(-11.1 / .62)\\nC1 = 1/16 * (2 * K - 8 * C1 - np.sqrt(K * (K - 8*C1)))\\n\\nZtot = Z(0,0,0) + Z(1,0,0) + Z(0,1,0) + Z(0,0,1) + Z(1,1,0) + Z(0,1,1) + Z(1,1,1)\\nPR = (Z(0,0,0) + Z(0,0,1)) / Ztot\\nPRM = (Z(0,0,0) + Z(1,0,0) + 9 * (Z(0,1,0) + Z(1,1,0))) / Ztot \\n\\nplt.xlabel(\"C1 concentration\")\\nplt.ylabel(\"Activity\")\\nplt.yscale(\"log\")\\nplt.plot(C1, PR, label=\"PR -> Cro\")\\nplt.plot(C1, PRM, label=\"PRM -> C1\")\\nplt.legend()\\n\\n'"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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yitZtmwZr776KjfffDNRUVHccccdpKam0r59+4t+/o033mDIkCEVSkqZoKAggoKCHK9feeUVJk2axNq1awE4fPgwI0aMYPz48bz66qvs3LmTiRMnEhoayqOPPurS3+EuXjNGpbCwkNdff50JEyZU2XALCgrIycmp8PCIRm3ACICCHDiT6ZnvEBERn2SaJitWrGD58uUMGjSownvNmjUjMjKSmJgYFi1axLXXXkuHDh1cWr9hGAwYMICXX36ZzMxMZs2axbfffktKSgp9+/Zl/vz5ZGdnV/n5jIwMp7+zbdu2zJo1i/bt29O+fXuef/55kpKSeO655+jQoQPXX389jz32GM888wwlJSUu/R3u4jWX0F+6dClZWVmMHz++ymVmzJjBY4895vkwgSEQ2xJO74OTuyCqdvcpEBGRyoUF2fj+8aGWfbcr/vOf/xAZGUlRURElJSXcdtttF+xl+OKLLwgPD2f9+vU8+eSTzJ8/v9p1RkZGOqZvv/32C5YPCwtjzJgxjBkzht27dzNmzBgmTZpEfn4+kydPrnSdpmk6/Tf16NGjwusdO3bQr1+/CjsM+vfvT25uLj/++CPNmzd3et3u4jVF5eWXX2b48OEkJiZWucy0adOYMmWK43VOTg5JSUmeCRTX3l5UTuyG1ld55jtEROo5wzBqdfilLg0cOJB58+YRHBxMYmJipWM2WrVqRUxMDO3bt+f48ePceuutrFmzpsp1pqenO6ajoqIueP/8+fN88sknvPbaa3zwwQe0bt2aWbNmMXbs2CrX2a5dO3bu3OnU3xQREeHUclbyikM/P/zwAytWrOB//ud/ql0uJCSEqKioCg+PadzO/nxyl+e+Q0REfEZERATJyck0b97cqYGlaWlpbNu2jSVLllS5THJysuMRHx/vmL9582YeeOABmjVrxrhx44iLi2PNmjVs27aNhx566IIxnuXddtttrFixgm+//faC94qKisjLy6vysx07dmTdunUV9sqsXbuWBg0a0KxZs4v9yR7hFUVlwYIFxMfHM3LkSKuj/KxsQO0JFRUREXFdeHg4EydOZPr06S4djvniiy/o27cv+/bt4/nnn+fIkSPMmTOHnj17OvX5yZMn079/fwYPHszcuXPZsmUL+/bt4+2336Zv375kZGRU+dl77rmHQ4cOcd9997Fz504++OADpk+fzpQpU1w688idLN/fVlJSwoIFC0hNTbXs1KdKNS4786fqDSoiIlKde++9l7/97W+888473HLLLU59plOnThw+fLjavSbVCQkJ4dNPP+Xvf/87L7zwAlOnTiU8PJyOHTty//33k5KSUuVnL7nkEv773//y0EMP0bVrVxo2bMhdd93Fn/70pxplcQfDdKXmecAnn3zC0KFD2bVrF+3atXPpszk5OURHR5Odne3+w0D52TCzdNDQHw5CaLR71y8iUs/k5+ezf/9+WrVqRWhoqNVxxMOq296u/H5bfujnmmuuwTRNl0uKx4VGQ4PSs31O7LY2i4iISD1leVHxanEaUCsiImIlFZXqNNaAWhERESupqFTHsUdFh35ERESsoKJSHe1RERERsZSKSnXKrqWS9QMU5VubRUREpB5SUalOZLz97B+zBE7tsTqNiIhIvaOiUh3D+Hmvis78ERERqXMqKhdTNqBW11IRERGpcyoqF9NYZ/6IiIhYRUXlYhyHflRURETqq/Hjx2MYBoZhEBwcTHJyMo8//jjnz58HYPXq1Y73DcOgcePGjBgxgq1bt1a6nrvvvvuC70hLS8MwDMaPH18Xf1IFhYWFzJo1i65duxIeHk5cXBz9+/dnwYIFFBUVAbBmzRpGjRpFYmIihmGwdOnSOsmmonIxjj0qGVBSbG0WERGxzLBhwzh69CgZGRk8+OCDPProozz99NMVltm1axdHjx5l+fLlFBQUMHLkSAoLCyssk5SUxOLFizl37pxjXn5+PosWLaJ58+Yu58rKyiInJ6dmfxT2kjJ06FBmzpzJb3/7W7766iu++eYb0tLSmDNnDtu3bwcgLy+Prl27Mnfu3Bp/V0140e2KvVRMC7CFQHGB/TTlhq2tTiQi4j9ME4rOWvPdQeH2kyacFBISQkJCAgCTJk1iyZIlfPjhh0ybNs2xTHx8PDExMSQkJDB58mSuvfZadu7cSZcuXRzLXHbZZezdu5f333+fsWPHAvD+++/TvHlzWrVq5fKfsWXLFoYPH86NN95IamoqgwcPJiDA+f0Qs2fPZs2aNWzcuJHu3bs75rdu3ZrRo0c7itbw4cMZPny4y/lqS0XlYgJsENcWjm2zD6hVURERcZ+is/BkojXf/f+OQHBEjT8eFhbGqVOnKn0vOzubxYsXAxAcHHzB+xMmTGDBggWOovKvf/2LO++8k9WrV7uc48orr2TZsmW8+uqr3HzzzURFRXHHHXeQmppK+/btL/r5N954gyFDhlQoKWWCgoIICgpyOZM76dCPM3RzQhERKWWaJitWrGD58uUMGjSownvNmjUjMjKSmJgYFi1axLXXXkuHDh0uWMftt9/Ol19+yQ8//MAPP/zA2rVruf3222uUxzAMBgwYwMsvv0xmZiazZs3i22+/JSUlhb59+zJ//nyys7Or/HxGRkalGb2F9qg4w3EpfQ2oFRFxq6Bw+54Nq77bBf/5z3+IjIykqKiIkpISbrvtNh599NEKy3zxxReEh4ezfv16nnzySebPn1/puho3bszIkSNZuHAhpmkycuRI4uLiLpohMjLSMX377bdfsP6wsDDGjBnDmDFj2L17N2PGjGHSpEnk5+czefLkStdpmuZFv9dKKirO0B4VERHPMIxaHX6pSwMHDmTevHkEBweTmJhIYOCFP6GtWrUiJiaG9u3bc/z4cW699VbWrFlT6fomTJjAvffeC+D0ANX09HTHdFRU1AXvnz9/nk8++YTXXnuNDz74gNatWzNr1izHIabKtGvXjp07dzr1/VbQoR9nlN+j4uXNU0REPCMiIoLk5GSaN29eaUn5pbS0NLZt28aSJUsqfX/YsGEUFhZSVFTE0KFDncqQnJzseMTHxzvmb968mQceeIBmzZoxbtw44uLiWLNmDdu2beOhhx6icePGVa7ztttuY8WKFXz77bcXvFdUVEReXp5T2TxFRcUZjZLBCICCbMg9ZnUaERHxAeHh4UycOJHp06dXenjFZrOxY8cOvv/+e2w2W42/54svvqBv377s27eP559/niNHjjBnzhx69uzp1OcnT55M//79GTx4MHPnzmXLli3s27ePt99+m759+5KRkQFAbm4u6enpjr06+/fvJz09nYMHD9Y4uzN06McZgSEQ2xJO74MTu6BBgtWJRETEB9x777387W9/45133uGWW2654P3KDt+4qlOnThw+fLjavSbVCQkJ4dNPP+Xvf/87L7zwAlOnTiU8PJyOHTty//33k5KSAsDGjRsZOHCg43NTpkwBIDU1lYULF9b676iKYXr7KJpq5OTkEB0dTXZ2tls2drUW/QZ2L4MRf4XeEz37XSIifig/P5/9+/fTqlUrQkNDrY4jHlbd9nbl91uHfpwV19b+rEvpi4iI1BkVFWc5BtTqzB8REZG6oqLiLN2cUEREpM6pqDir7OaEZ45CftVX+BMRERH3UVFxVmg0RJae7XMyw9osIiI+zIfP4RAXuGs7q6i4omyvisapiIi4rOzmdmfPWnS3ZKlTZdu5tjc11HVUXBHXHvav0aX0RURqwGazERMTw/HjxwH7BdEMw7A4lbibaZqcPXuW48ePExMTU6uL2YGKimt0c0IRkVpJSLAfQi8rK+K/YmJiHNu7NlRUXKGbE4qI1IphGDRt2pT4+HiKioqsjiMeEhQUVOs9KWVUVFxRtkflpwNQlA9BurKiiEhN2Gw2t/2QiX/TYFpXRDaBkGgwS+D0XqvTiIiI+D0VFVcYxs9n/ujCbyIiIh6nouKqOA2oFRERqSsqKq5y3JxQA2pFREQ8TUXFVTpFWUREpM6oqLiq7BTlUxlQUmxtFhERET9neVE5fPgwt99+O40aNSIsLIzOnTuzceNGq2NVLbYl2ELgfD5kHbQ6jYiIiF+z9DoqP/30E/3792fgwIEsW7aMxo0bk5GRQWxsrJWxqhdgg0bJcHy7/cyfhq2sTiQiIuK3LC0qTz31FElJSSxYsMAxr1UrH/jhb9zOXlRO7IJ2Q61OIyIi4rcsPfTz4Ycf0rNnT0aPHk18fDzdu3fnpZdeqnL5goICcnJyKjwsUXaKss78ERER8ShLi8q+ffuYN28ebdu2Zfny5UyaNIn777+fV155pdLlZ8yYQXR0tOORlJRUx4lLlV30TWf+iIiIeJRhmqZp1ZcHBwfTs2dPvvrqK8e8+++/nw0bNrBu3boLli8oKKCgoMDxOicnh6SkJLKzs4mKiqqTzABkboP5/SE0Gn7/g/2KtSIiIuKUnJwcoqOjnfr9tnSPStOmTenUqVOFeR07duTgwcrPpgkJCSEqKqrCwxKNksEIgPxsyDthTQYREZF6wNKi0r9/f3btqjjOY/fu3bRo0cKiRE4KCoWY0ownNE5FRETEUywtKg888ADr16/nySefZM+ePSxatIgXX3yRtLQ0K2M5p7EG1IqIiHiapUWlV69eLFmyhDfffJOUlBT+8pe/MHv2bMaOHWtlLOfEaUCtiIiIp1l6HRWAX//61/z617+2OobryoqK9qiIiIh4jOWX0PdZjpsTqqiIiIh4iopKTTXuYH8+cxTyTlmbRURExE+pqNRUaBQ0bG2fztxibRYRERE/paJSG0272p+PfmdtDhERET+lolIbCV3sz0e1R0VERMQTVFRqo2lpUcnUHhURERFPUFGpjYTSQz+n9kLBGWuziIiI+CEVldqIbAwNEgHTfqNCERERcSsVldoqG1Crwz8iIiJup6JSW2XjVHTmj4iIiNupqNSWzvwRERHxGBWV2io79HNiB5wvsDaLiIiIn1FRqa3oZhAWCyXn4fj3VqcRERHxKyoqtWUY5Q7/aJyKiIiIO6mouIPO/BEREfEIFRV3cNzzRwNqRURE3ElFxR3KDv0c2w4lxdZmERER8SMqKu7QqA0ERUDRWTi1x+o0IiIifkNFxR0CbJCQYp/W4R8RERG3UVFxF41TERERcTsVFXfRFWpFRETcTkXFXcru+ZP5HZimtVlERET8hIqKuzTuCAFBkJ8NWQetTiMiIuIXVFTcJTAY4jvap3X4R0RExC1UVNyp/OEfERERqTUVFXdq2s3+rHv+iIiIuIWKijvpzB8RERG3UlFxp4QUwIDcTDhzzOo0IiIiPk9FxZ2CIyCurX1a41RERERqTUXF3XT4R0RExG1UVNyt7FL62qMiIiJSayoq7tZUe1RERETcRUXF3coO/fx0AM5lWZlERETE56mouFt4Q4hubp/O3GptFhERER+nouIJukKtiIiIW6ioeILjzB8VFRERkdpQUfGEsjN/NKBWRESkViwtKo8++iiGYVR4dOjQwcpI7lF26Ofkbig6Z20WERERHxZodYBLL72UFStWOF4HBloeqfYaNIWIxpB3Ao59D816WJ1IRETEJ1neCgIDA0lISLA6hnsZhn2cyt6VcDRdRUVERKSGLB+jkpGRQWJiIq1bt2bs2LEcPHiwymULCgrIycmp8PBaOvNHRESk1iwtKn369GHhwoV8/PHHzJs3j/3793PFFVdw5syZSpefMWMG0dHRjkdSUlIdJ3aBBtSKiIjUmmGapml1iDJZWVm0aNGCv/3tb9x1110XvF9QUEBBQYHjdU5ODklJSWRnZxMVFVWXUS/u1F6YcxnYQuD/HQZbkNWJREREvEJOTg7R0dFO/X5bPkalvJiYGNq1a8eePXsqfT8kJISQkJA6TlVDsa0guAEUnrGf/dPkUqsTiYiI+BzLx6iUl5uby969e2natKnVUWovIEA3KBQREaklS4vK1KlT+fzzzzlw4ABfffUVN9xwAzabjTFjxlgZy310hVoREZFasfTQz48//siYMWM4deoUjRs35vLLL2f9+vU0btzYyljuozN/REREasXSorJ48WIrv97zHGf+fAclJfbDQSIiIuI0/XJ6Ulx7CAy1D6g9vdfqNCIiIj5HRcWTbIGQ2N0+fehra7OIiIj4IBUVT0vqY38+uN7aHCIiIj5IRcXTmvezP6uoiIiIuExFxdOSetufT2VA3klrs4iIiPgYFRVPC28IjTvYpzVORURExCUqKnWheV/788F11uYQERHxMSoqdSGprKhoj4qIiIgrVFTqQtkelSPfQtE5a7OIiIj4EBWVuhDbEiKbQEmRvayIiIiIU1RU6oJhaJyKiIhIDaio1BVdT0VERMRlKip1pewKtYe+tt+gUERERC5KRaWuJHSBoAjIz4YTO61OIyIi4hNUVOqKLRCa9bBPH9LhHxEREWeoqNQljVMRERFxiYpKXdKZPyIiIi5RUalLzXqBEQBZByHniNVpREREvJ6KSl0KaQBNUuzTOvwjIiJyUSoqda3s8I/upCwiInJRKip1TeNUREREnKaiUtfK7qScuRUKzlibRURExMupqNS16EsgujmYJfDjRqvTiIiIeDUVFSs4Dv9oQK2IiEh1VFSs0Lzsvj8qKiIiItVRUbFC2RVqD22A4vPWZhEREfFiKipWaNwRQqKhKA+ObbM6jYiIiNdSUbFCQAAk9bZPa5yKiIhIlVRUrKLrqYiIiFyUiopVyl+h1jStzSIiIuKlVFSskngZBATBmaOQ9YPVaURERLySiopVgsMhsZt9+qDu+yMiIlIZFRUrJZVeT0XjVERERCqlomIlx/VUtEdFRESkMioqViobUHv8ezj3k7VZREREvJCKipUi4qBRsn360DfWZhEREfFCKipW0w0KRUREquQ1RWXmzJkYhsHkyZOtjlK3klRUREREquIVRWXDhg288MILdOnSxeooda9sQO2RzXC+wNosIiIiXsbyopKbm8vYsWN56aWXiI2NtTpO3WvUBsLj4Hw+HEm3Oo2IiIhXcbmoTJ8+nR9+cN+VVNPS0hg5ciRDhgy56LIFBQXk5ORUePg8w4AWpXtV9q+xNouIiIiXcbmofPDBB7Rp04bBgwezaNEiCgpqfrhi8eLFbN68mRkzZji1/IwZM4iOjnY8kpKSavzdXqXNYPvznhXW5hAREfEyLheV9PR0NmzYwKWXXsrvfvc7EhISmDRpEhs2bHBpPYcOHeJ3v/sdb7zxBqGhoU59Ztq0aWRnZzsehw4dcjW+d0ouLSo/fqPrqYiIiJRjmGbNb91bVFTEv//9bxYsWMDy5cvp0KEDd911F+PHjyc6Orrazy5dupQbbrgBm83mmFdcXIxhGAQEBFBQUFDhvcrk5OQQHR1NdnY2UVFRNf0zvMNzveHkLhj9Clx6vdVpREREPMaV3+9aDaY1TZOioiIKCwsxTZPY2Fiee+45kpKSeOutt6r97ODBg9m6dSvp6emOR8+ePRk7dizp6ekXLSl+J7l0jI4O/4iIiDgE1uRDmzZtYsGCBbz55puEhIQwbtw45s6dS3Ky/Sqrc+bM4f777+fWW2+tch0NGjQgJSWlwryIiAgaNWp0wfx6IXkwrJ8Le1aCadoH2YqIiNRzLu9R6dy5M3379mX//v28/PLLHDp0iJkzZzpKCsCYMWM4ceKEW4P6vRb9ITAMzhyB4zusTiMiIuIVXN6jcssttzBhwgQuueSSKpeJi4ujpKTE5TCrV692+TN+IygUWl4Oez6FvSuhSSerE4mIiFjO5T0qZWNRfuncuXM8/vjjbglVb2mcioiISAUun/Vjs9k4evQo8fHxFeafOnWK+Ph4iouL3RqwOn511g/AyT3wXA+wBcPvD0BwhNWJRERE3M6jZ/2YpolRyUDPLVu20LBhQ1dXJ+U1agMxzaG4EA58aXUaERERyzk9RiU2NhbDMDAMg3bt2lUoK8XFxeTm5nL33Xd7JGS9YRj2wz8b/2U//NNuqNWJRERELOV0UZk9ezamaTJhwgQee+yxChd0Cw4OpmXLlvTr188jIeuV8kVFRESknnO6qKSmpgLQqlUrfvWrXxEUFOSxUPVaqyshIBBO74NTe+2Hg0REROopp8aolL9Lcffu3Tl37twFdzH2m7sZWy2kATQv3TO19zNrs4iIiFjMqT0qsbGxjjN9YmJiKh1MWzbIti7P+vFbyYPhwBf2wz+9J1qdRkRExDJOFZXPPvvMcUbPZ599VmlRETdKHgIrHoX9a+B8AQSGWJ1IRETEEk4VlQEDBjimr7rqKk9lkTJNUiCyCeQeg4ProPVVVicSERGxhMvXUWnbti2PPvooGRkZnsgj8PNpyqCzf0REpF5zuajcc889fPTRR3To0IFevXrxj3/8g8zMTE9kq9+SB9uf96y0NoeIiIiFXC4qDzzwABs2bGDHjh2MGDGCuXPnkpSUxDXXXMOrr77qiYz1U+uBYATA8e8h+7DVaURERCzhclEp065dOx577DF2797NF198wYkTJ7jzzjvdma1+C28IiZfZp/dqr4qIiNRPNS4qAN988w2TJ0/mhhtuYPfu3YwePdpduQTKjVNRURERkfrJ5aKye/dupk+fTrt27ejfvz87duzgqaee4tixYyxevNgTGeuvsqKybxUUn7c2i4iIiAWcvoR+mbJBtGlpafzmN7+hSZMmnsglAJdcBqExkJ8FhzdB8z5WJxIREalTLheVXbt20bZtW09kkV8KsEGbQbD9fftpyioqIiJSz9ToOipSh3Q9FRERqcec2qPSsGFDdu/eTVxcHLGxsdVeQv/06dNuCyf8fD2VI99C3kmIiLM2j4iISB1yqqj8/e9/p0GDBo5p3eunDjVIgCad4dhW2LsKuujMKhERqT+cKiqpqamO6fHjx3sqi1QlebC9qOxZoaIiIiL1istjVGw2G8ePH79g/qlTp7DZbG4JJb9QNk5l70ooKbE2i4iISB1yuaiYplnp/IKCAoKDg2sdSCqR1AeCIyHvBGR+Z3UaERGROuP06cnPPvssAIZh8M9//pPIyEjHe8XFxaxZs4YOHTq4P6FAYDC0uhJ2/RcyPoXEblYnEhERqRNOF5W///3vgH2Pyvz58ysc5gkODqZly5bMnz/f/QnFrt0we1H5/gMY8JDVaUREROqE00Vl//79AAwcOJD333+f2NhYj4WSSnQcBR9NsQ+qPZkBcbqejYiI+D+Xx6isWrVKJcUK4Q2h9VX26e1LLI0iIiJSV1wuKjfddBNPPfXUBfNnzZqluyd72qU32p+3vW9tDhERkTriclFZs2YNI0aMuGD+8OHDWbNmjVtCSRU6jICAIDixA47vsDqNiIiIx7lcVHJzcys9DTkoKIicnBy3hJIqhMX+fEl9Hf4REZF6wOWi0rlzZ956660L5i9evJhOnTq5JZRUo/zhnyquaSMiIuIvnD7rp8yf//xnbrzxRvbu3cugQYMAWLlyJYsWLeLdd991e0D5hfbDwRYCpzLg2DZI6Gx1IhEREY9xeY/KqFGjWLp0KXv27OGee+7hwQcf5PDhw3z22WckJyd7IqOUFxoFba+2T2tQrYiI+DmXiwrAyJEjWbt2LXl5eezbt49bbrmFqVOn0rVrV3fnk8pceoP9ebsO/4iIiH+rUVEB+9k/qampJCYm8swzzzBo0CDWr1/vzmxSlXbDIDAMfjoAR9OtTiMiIuIxLhWVzMxMZs6cSdu2bRk9ejRRUVEUFBSwdOlSZs6cSa9evVz68nnz5tGlSxeioqKIioqiX79+LFu2zKV11EshkdBuqH1ah39ERMSPOV1URo0aRfv27fnuu++YPXs2R44cYc6cObX68mbNmjFz5kw2bdrExo0bGTRoENdddx3bt2+v1XrrhZTSs3+2L9XhHxER8VtOn/WzbNky7r//fiZNmkTbtu65z8yoUaMqvP6///s/5s2bx/r167n00kvd8h1+K/lqCIqA7IPw40ZIcm1vloiIiC9weo/Kl19+yZkzZ+jRowd9+vThueee4+TJk24LUlxczOLFi8nLy6Nfv36VLlNQUEBOTk6FR70VHG4/VRnsg2pFRET8kNNFpW/fvrz00kscPXqU//3f/2Xx4sUkJiZSUlLCp59+ypkzZ2oUYOvWrURGRhISEsLdd9/NkiVLqrxw3IwZM4iOjnY8kpKSavSdfqP84Z+SEkujiIiIeIJhmjUf4LBr1y5efvllXnvtNbKysrj66qv58MMPXVpHYWEhBw8eJDs7m3fffZd//vOffP7555WWlYKCAgoKChyvc3JySEpKIjs7m6ioqJr+Gb7rfAE8nQwFOXDnx9Ci8j1RIiIi3iQnJ4fo6Ginfr9rfHoyQPv27Zk1axY//vgjb775Zo3WERwcTHJyMj169GDGjBl07dqVf/zjH5UuGxIS4jhDqOxRrwWGQIeR9mkd/hERET9Uq6JSxmazcf3117u8N6UyJSUlFfaayEWUXfzt+w+gpNjaLCIiIm7m8r1+3GnatGkMHz6c5s2bc+bMGRYtWsTq1atZvny5lbF8S+uBEBoDucfgh6+g1RVWJxIREXEbt+xRqanjx48zbtw42rdvz+DBg9mwYQPLly/n6quvtjKWbwkMho6/tk/r8I+IiPiZWg2mtZorg3H82p6V8PqNEB4HD+4Cm6U7ykRERKpVZ4NpxUu0GgBhDeHsSTiwxuo0IiIibqOi4g9sgdDpWvu07v0jIiJ+REXFX1xaevG3Hf+G4iJrs4iIiLiJioq/aHk5RMRDfhbsW211GhEREbdQUfEXATbodJ19ett71mYRERFxExUVf9J5tP15+1I4l2VlEhEREbdQUfEnSb0hvhOcPwdbFludRkREpNZUVPyJYUDPCfbpjf8C371EjoiICKCi4n+63ApBEXByF/yw1uo0IiIitaKi4m9Co6BL6ViVDS9bm0VERKSWVFT8Udnhnx3/htzj1mYRERGpBRUVf9S0K1zSE0qKYPOrVqcRERGpMRUVf9XrLvvzplegpNjaLCIiIjWkouKvLr0BQmMg+yDsWWF1GhERkRpRUfFXQWHQbax9WoNqRUTER6mo+LOyQbUZn0DWQWuziIiI1ICKij+LS4ZWAwATNi20Oo2IiIjLVFT8Xdmg2s2vwvlCa7OIiIi4SEXF37UfAZEJkHcCdv7b6jQiIiIuUVHxd7YguGycfXrjAmuziIiIuEhFpT7okQpGABz4Ak7ssjqNiIiI01RU6oPoZtBumH1647+szSIiIuICFZX6omfpoNr0N6HwrLVZREREnKSiUl+0GQSxLaEgG7a9Z3UaERERp6io1BcBAdDjTvv0Rl2pVkREfIOKSn3S/XawBcORb+HwZqvTiIiIXJSKSn0SEQedrrNPa1CtiIj4ABWV+qZsUO3Wd+DMMWuziIiIXISKSn3TvC9c0hPO58O6OVanERERqZaKSn1jGDDg9/bpDS9D7glr84iIiFRDRaU+ans1JHaHorOw7jmr04iIiFRJRaU+Kr9X5ZuXIO+UtXlERESqoKJSX7UbBgldoCgP1s+1Oo2IiEilVFTqq/J7Vb5+Ec6etjaPiIhIJVRU6rP2I6BJChSegfXzrE4jIiJyARWV+iwgAAY8bJ/+ej6cy7I0joiIyC+pqNR3HUZBfCcoyLGXFRERES9iaVGZMWMGvXr1okGDBsTHx3P99deza9cuKyPVPwEBcOVD9un1z0N+trV5REREyrG0qHz++eekpaWxfv16Pv30U4qKirjmmmvIy8uzMlb90+k6iGtvLynfvGh1GhEREQfDNE3T6hBlTpw4QXx8PJ9//jlXXnnlRZfPyckhOjqa7OxsoqKi6iChH9v6Lrx3F4TFwuStENLA6kQiIuKnXPn99qoxKtnZ9sMODRs2rPT9goICcnJyKjzETS69ARolw7mf7BeBExER8QJeU1RKSkqYPHky/fv3JyUlpdJlZsyYQXR0tOORlJRUxyn9WIDt57Eq656Dglxr84iIiOBFRSUtLY1t27axePHiKpeZNm0a2dnZjsehQ4fqMGE9kHIzNGwNZ0/BxpetTiMiIuIdReXee+/lP//5D6tWraJZs2ZVLhcSEkJUVFSFh7iRLRCumGqfXvssFJ61No+IiNR7lhYV0zS59957WbJkCZ999hmtWrWyMo4AdLkFYlvC2ZOw8V9WpxERkXrO0qKSlpbG66+/zqJFi2jQoAGZmZlkZmZy7tw5K2PVb7YguOJB+/Taf0ChThUXERHrWFpU5s2bR3Z2NldddRVNmzZ1PN566y0rY0nXMRDTAvKOwxd/szqNiIjUY5Yf+qnsMX78eCtjiS0Ihv6fffqrZ+HUXmvziIhIveUVg2nFC3X4NbQZDMWF8PEfwHuuCygiIvWIiopUzjBg+CwICIKMT2D3x1YnEhGRekhFRaoWlwy/utc+vez3UKRBziIiUrdUVKR6V0yFqEsg6wf7tVVERETqkIqKVC8kEq55wj795d/gpwOWxhERkfpFRUUu7tIboNWVcD4flv/R6jQiIlKPqKjIxRkGDH8aAgJh538gY4XViUREpJ5QURHnxHeAPnfbp5c9DOcLrM0jIiL1goqKOG/A7yGyCZzeC+ueszqNiIjUAyoq4rzQKLj6L/bpNX+F7B+tzSMiIn5PRUVc0+UWaN4Pis5qYK2IiHicioq4xjBgxNNgBMD3S2HfaqsTiYiIH1NREdcldIZeE+3T/30Yzhdam0dERPyWiorUzMD/B+FxcHIXrHna6jQiIuKnVFSkZsJiYMQs+/QXf4UfvrI0joiI+CcVFam5lJug621glsB7E+HcT1YnEhERP6OiIrUzYhbEtoKcH+E/D4BpWp1IRET8iIqK1E5IA7jpZfvl9bcvgfQ3rE4kIiJ+REVFaq9ZDxhYek2V/z4MJ/dYm0dERPyGioq4R//fQcsroCgP3rtLpyyLiIhbqKiIewTY4MYXISwWjqbDqiesTiQiIn5ARUXcJyoRri29WeHaf8DeVdbmERERn6eiIu7V8dfQc4J9esndkHfS2jwiIuLTVFTE/a75P4hrD7mZ8MG9OmVZRERqTEVF3C84HG5+GWzBsHsZbPin1YlERMRHqaiIZyR0hqsft09/8ic4tt3aPCIi4pNUVMRz+twNyVfD+Xx48zeQe9zqRCIi4mNUVMRzDANueMF+if2sg7DoVig8a3UqERHxISoq4lkRjWDsu/brqxzZDO9PhJJiq1OJiIiPUFERz4tLhjGLwRYCO/8Dy/9odSIREfERKipSN5r3hRvm2ae/ngfr51mbR0REfIKKitSdlJtgyKP26Y+nwc6PLI0jIiLeT0VF6lb/ydBjPGDCu3fB4U0WBxIREW+moiJ1yzBgxDOQPATOn7OfCfTTAatTiYiIl1JRkbpnC4TRC6FJZ8g7AW/cAud+sjqViIh4IRUVsUZIAxj7NjRIhJO74K074Hyh1alERMTLqKiIdaISYew7ENwADnwBS34LxUVWpxIRES9iaVFZs2YNo0aNIjExEcMwWLp0qZVxxAoJKXDLQggIhO1L4O1xUJRvdSoREfESlhaVvLw8unbtyty5c62MIVZLHgK/WWS/INyu/9rvC6RL7YuICBBo5ZcPHz6c4cOHWxlBvEW7ofbDQG+OgX2r4PWb4La3IDTK6mQiImIhnxqjUlBQQE5OToWH+JHWA+COJRASBQe/glevg7OnrU4lIiIW8qmiMmPGDKKjox2PpKQkqyOJuzXvA6n/hrCG9psYLvw15B63OpWIiFjEp4rKtGnTyM7OdjwOHTpkdSTxhMRuMP4jiGwCx7fDghGQfdjqVCIiYgGfKiohISFERUVVeIifatIJ7lwGUc3gVAYsGAan91udSkRE6phPFRWpZxq1gQnLILYVZB2071k5sdvqVCIiUocsLSq5ubmkp6eTnp4OwP79+0lPT+fgwYNWxhJvEtMcJnwMjTvAmSPwr2tgz0qrU4mISB0xTNM0rfry1atXM3DgwAvmp6amsnDhwot+Picnh+joaLKzs3UYyN/lnYJFo+13WzYCYNCf4fIH7Dc5FBERn+LK77elRaW2VFTqmaJ8+O9U+PY1++uO18L1z9vvGyQiIj7Dld9vjVER3xEUCtfOgV/PhoAg2PEhvDQYTmZYnUxERDxERUV8i2FAzzvtZwQ1aGq/8/JLg2Dnf61OJiIiHqCiIr4pqRf89nNo/isoyIHFY+Cz/4OSEquTiYiIG6moiO9q0ARSP4Q+k+yv18yCN2+Fcz9Zm0tERNxGRUV8my0Ihs+EG16EwDDI+AReGAAHvrQ6mYiIuIGKiviHrrfCXZ9ATAvI+gEWjoSPHoSCM1YnExGRWlBREf/RtAvc/SX0uNP+esM/4fl+ukCciIgPU1ER/xIaBaNmw7gP7HtXsg/B6zfCB2lwLsvqdCIi4iIVFfFPra+Ce9aVDrQ14NvXYW4fncYsIuJjVFTEfwVH2AfaTvgYGiVDbqb9NOZ377Jfkl9ERLyeior4v+Z97WNX+k+23ydo27swt5d9DEtxkdXpRESkGioqUj8EhcHVj8H/rID4TnD2lP2soOf7wvcfgO/e8kpExK+pqEj9ckkP+xVtR/wVwuPg1B54exy8fDX88JXV6URE5BdUVKT+CQyG3hPh/m/hyochKBx+3AALhsOi38DxnVYnFBGRUioqUn+FRsGgP9oLS487wbDB7mUwrx98eB/kHLU6oYhIvaeiItIgwX7tlXvWQ4dfg1kCm1+FZ7vDst/DTwesTigiUm+pqIiUadwOfvMGTPgEkvrC+XPw9Xx7YXl7HPy40eqEIiL1jmGavnu6Q05ODtHR0WRnZxMVFWV1HPEnpgn7VsFXz8HecpfgT+oLv7oX2o+AAJt1+UREfJgrv98qKiIXc2w7rJsL370NJaXXXWnYGvreA93GQnC4tflERHyMioqIJ+QchW9ehI3/gvws+7ywWOh+O3S9DZp0sjSeiIivUFER8aSCXEhfBOueg6wffp7ftBt0uw1SboaIRpbFExHxdioqInWhpBh2f2wvLbs/hpLz9vkBQdBuqP2wUNurwRZkbU4RES+joiJS1/JOwtZ3YcsiOLrl5/nhcdDlFug8GhK7g2FYl1FExEuoqIhY6dh2+16W796GvOM/z4+6BNoPt58x1PIK+xVyRUTqIRUVEW9QfN5+avOWN2H3J1CU9/N7IVH2w0LtR9ifQ6OtyykiUsdUVES8TVE+7P8cdn4Eu5ZV3NMSEAQtL7fvbWk1ABq31yEiEfFrKioi3qykBA5vLC0t/4WTuyu+HxEPra6AVlfaDxE1bK3iIiJ+RUVFxJec3AO7PoK9n8HB9XA+v+L7Uc3KFZfLITpJxUVEfJqKioivOl9gv6fQ/jVw4As49M3PV8MtE5kAl/SASy6DZj3tZxNpjIuI+BAVFRF/UXgWDn39c3E5vBnM4guXi2sHl/S0l5dLekB8JwgKrfu8IiJOUFER8VeFZyHzOzi8yb7n5fCmilfHLWPYoFEbe2FpcmnpcyeIaQkBumm6iFhLRUWkPsk9AUc2/1xejmyGcz9VvmxQBMR3sBeXuHbQKNleaGJbQmBIncYWkfpLRUWkPjNNOJMJx7fDse/h+Pf2i9Cd2AXFBZV/xgiA6Gb24tKwjb28NGwDDVvZ5weF1e3fICJ+TUVFRC5UfB5O7/u5wJzaA6f3wqm9UJhb/WcjGtvPNopJKn1ubn+ObmZ/hMXqTCQRcZqKiog4zzQh93hpadljLy6n98KpffbxLxcrMQC2EGiQAA2aQoMmpc8J9jOUGpQ+IhrbC02AzfN/k4h4NVd+vwPrKJOIeCvDKC0XTaDFryq+Z5r28S7ZhyDrULnngz+/PnvKfkgp64fKB/ZW/DIIb2i/WWNE6SO83HN4QwiNsReasNLn0GiVG5F6zCuKyty5c3n66afJzMyka9euzJkzh969e1sdS0SMsmLREJp2rXyZonzIPWYfF3PmqP05N7Pc62P21+d+Akx7sTl7Ck7ucj5HSDSERduLS0iUvbyENLBPhzSA0Khy09EQHAnBERAS+fN0ULgOT4n4IMuLyltvvcWUKVOYP38+ffr0Yfbs2QwdOpRdu3YRHx9vdTwRuZigUIhtYX9Up/g8nDsNeScg7yScPQl5p0qfT9rn52fZC825bPtz4Rn7Zwuy7Y+sg7UIatgLS9kjKMI+SDgozF5iyj8Hh9unA0PtrwND7NOOR0jF+bZg+7QtxH5XbFuIfZ5OBRepNcvHqPTp04devXrx3HPPAVBSUkJSUhL33Xcff/jDH6r9rKfGqJimybmiSi6qJSJ1q7gI8rMx8n/COJcF+T9hFORgFJyBSp9zMQpyoDAXozAPikqfLWIGBP5cXgKCMW1BpQUmEGxlr4MgINj+bAvCDLDZb1QZEAS2QAgIxAwIKv1M6XPpwzRs9sNijnm20uUD7dfSCQgofa742ixb1rDZ9zIZNvuZX+XnBdgwjYCf3/vlI6D8fMO+LL9czih9lL7GKDf/F6/Fq4UF2TDcuJ18ZoxKYWEhmzZtYtq0aY55AQEBDBkyhHXr1l2wfEFBAQUFP59emZOT45Fc54qK6fTIco+sW0Rqq0HpI9GppQ1KCKWQCAoIN/KJIJ9w8okw8gmlkFAKCTMKCaOAMAoJNezPYRQQbhQQQlHpo5AQo/SZIkJLX4dSSDDnCeI8Icb5it9dch5KzkNRXmkWqUqJaWACJgYlGJgYwIXzzNJ55d8rm1dCQLn3yparuIzpWDeYZunzL+f/4jW/WE/ZMmXzKj6XqW7Ziuus6r3y/48xK0xf6JdZK5tX08+tLU7h7ukvEB5sTWWwtKicPHmS4uJimjRpUmF+kyZN2Llz5wXLz5gxg8cee6yu4omIHzAJ4ByhnCMUzOjyb3jk24I5TzBFjucg43zptL3MBHGeIKP452nOE0QxwRRhM0oIophAzhNISelzsX3aOF/6XjE2SrCVzreVvTZKSt8rJohiAigpXa6EAEoINEoqzLNRTABmhXkGpmNdZdMBpTWhbDqg9Oc6wPG6pNw8kwCjZv/D/vy5OtzJr+bolEyzoaXfb/kYFVdMmzaNKVOmOF7n5OSQlJTk9u8JC7Lx/eND3b5eERF/YgLFpY+fZ9r3R2CWlD7KpovLvWf+PN+xrH2fiOGYzy+WMX+xrPmL53LfXX7eL5Yzyr+ukJcLl6+wzotN8/Pr8mXL/MVEhdEWVX2+4nJGFfOr+8wFha/SUR6VzKtk1tCoREKCrDvzztKiEhcXh81m49ixYxXmHzt2jISEhAuWDwkJISTE85f5NgzDsl1cIiIi8jNLh6QHBwfTo0cPVq5c6ZhXUlLCypUr6devn4XJRERExBtYvttgypQppKam0rNnT3r37s3s2bPJy8vjzjvvtDqaiIiIWMzyonLrrbdy4sQJHnnkETIzM+nWrRsff/zxBQNsRUREpP6x/DoqtaF7/YiIiPgeV36/ddlEERER8VoqKiIiIuK1VFRERETEa6moiIiIiNdSURERERGvpaIiIiIiXktFRURERLyWioqIiIh4LRUVERER8VqWX0K/NsouqpuTk2NxEhEREXFW2e+2MxfH9+micubMGQCSkpIsTiIiIiKuOnPmDNHR0dUu49P3+ikpKeHIkSM0aNAAwzAc83v16sWGDRsq/UxV7/1yfk5ODklJSRw6dMjy+whV9/fU5bqc/awzy11sGVe3YX3ZfrVZnyuf8+Q2rO//BmuzvrrchvrvqGfW583bsLJ5ntqGpmly5swZEhMTCQiofhSKT+9RCQgIoFmzZhfMt9lsVf4PWtV7Vc2Pioqy/B9YdX9PXa7L2c86s9zFlnF1G9aX7Veb9bnyOU9uw/r+b7A266vLbaj/jnpmfd68Datb3hPb8GJ7Usr45WDatLQ0l9+r7jNWc2e22qzL2c86s9zFlnF1G9aX7Veb9bnyOU9uw/r+b7A266vLbaj/jnpmfd68Db11+/n0oR9PcuUW1OJ9tP18n7ah79M29H3esA39co+KO4SEhDB9+nRCQkKsjiI1oO3n+7QNfZ+2oe/zhm2oPSoiIiLitbRHRURERLyWioqIiIh4LRUVERER8VoqKiIiIuK1VFRERETEa6mo1MANN9xAbGwsN998s9VRpAYOHTrEVVddRadOnejSpQvvvPOO1ZHERVlZWfTs2ZNu3bqRkpLCSy+9ZHUkqYGzZ8/SokULpk6danUUqYGWLVvSpUsXunXrxsCBAz32PTo9uQZWr17NmTNneOWVV3j33XetjiMuOnr0KMeOHaNbt25kZmbSo0cPdu/eTUREhNXRxEnFxcUUFBQQHh5OXl4eKSkpbNy4kUaNGlkdTVzwxz/+kT179pCUlMRf//pXq+OIi1q2bMm2bduIjIz06Pdoj0oNXHXVVTRo0MDqGFJDTZs2pVu3bgAkJCQQFxfH6dOnrQ0lLrHZbISHhwNQUFCAaZpO3S5evEdGRgY7d+5k+PDhVkcRL1fvisqaNWsYNWoUiYmJGIbB0qVLL1hm7ty5tGzZktDQUPr06cM333xT90GlSu7chps2baK4uJikpCQPp5by3LENs7Ky6Nq1K82aNeOhhx4iLi6ujtKLO7bf1KlTmTFjRh0lll9yxzY0DIMBAwbQq1cv3njjDY9lrXdFJS8vj65duzJ37txK33/rrbeYMmUK06dPZ/PmzXTt2pWhQ4dy/PjxOk4qVXHXNjx9+jTjxo3jxRdfrIvYUo47tmFMTAxbtmxh//79LFq0iGPHjtVV/Hqvttvvgw8+oF27drRr164uY0s57vg3+OWXX7Jp0yY+/PBDnnzySb777jvPhDXrMcBcsmRJhXm9e/c209LSHK+Li4vNxMREc8aMGRWWW7VqlXnTTTfVRUypRk23YX5+vnnFFVeYr776al1FlSrU5t9hmUmTJpnvvPOOJ2NKFWqy/f7whz+YzZo1M1u0aGE2atTIjIqKMh977LG6jC3luOPf4NSpU80FCxZ4JF+926NSncLCQjZt2sSQIUMc8wICAhgyZAjr1q2zMJk4y5ltaJom48ePZ9CgQdxxxx1WRZUqOLMNjx07xpkzZwDIzs5mzZo1tG/f3pK8UpEz22/GjBkcOnSIAwcO8Ne//pWJEyfyyCOPWBVZfsGZbZiXl+f4N5ibm8tnn33GpZde6pE8gR5Zq486efIkxcXFNGnSpML8Jk2asHPnTsfrIUOGsGXLFvLy8mjWrBnvvPMO/fr1q+u4UglntuHatWt566236NKli+O47GuvvUbnzp3rOq5Uwplt+MMPP/Db3/7WMYj2vvvu0/bzEs7+d1S8lzPb8NixY9xwww2A/Sy8iRMn0qtXL4/kUVGpgRUrVlgdQWrh8ssvp6SkxOoYUgu9e/cmPT3d6hjiBuPHj7c6gtRA69at2bJlS518lw79lBMXF4fNZrtgUN6xY8dISEiwKJW4QtvQ92kb+jZtP9/nbdtQRaWc4OBgevTowcqVKx3zSkpKWLlypQ7t+AhtQ9+nbejbtP18n7dtw3p36Cc3N5c9e/Y4Xu/fv5/09HQaNmxI8+bNmTJlCqmpqfTs2ZPevXsze/Zs8vLyuPPOOy1MLeVpG/o+bUPfpu3n+3xqG3rkXCIvtmrVKhO44JGamupYZs6cOWbz5s3N4OBgs3fv3ub69eutCywX0Db0fdqGvk3bz/f50jbUvX5ERETEa2mMioiIiHgtFRURERHxWioqIiIi4rVUVERERMRrqaiIiIiI11JREREREa+loiIiIiJeS0VFREREvJaKioiIiHgtFRURkRoaP348119/vdUxRPyaioqIj8rMzOS+++6jdevWhISEkJSUxKhRoyrc8fTFF1/kqquuIioqCsMwyMrKsi5wHTMMg6VLl7plXQcOHMAwDNLT0yvM/8c//sHChQvd8h0iUrl6d/dkEX9w4MAB+vfvT0xMDE8//TSdO3emqKiI5cuXk5aWxs6dOwE4e/Ysw4YNY9iwYUybNs3i1N6nsLCQ4ODgGn8+OjrajWlEpFKW3ApRRGpl+PDh5iWXXGLm5uZe8N5PP/10wbyyO6VW9t4vFRcXm0899ZTZpk0bMzg42ExKSjKfeOIJx/vfffedOXDgQDM0NNRs2LChOXHiRPPMmTOO91NTU83rrrvOfPrpp82EhASzYcOG5j333GMWFhY6lsnPzzcffvhhs1mzZmZwcLDZpk0b85///Kfj/a1bt5rDhg0zIyIizPj4ePP22283T5w44Xh/wIAB5n333Wc+9NBDZmxsrNmkSRNz+vTpjvdbtGhR4Y6wLVq0ME3TNKdPn2527drVfOmll8yWLVuahmGYpmmay5YtM/v3729GR0ebDRs2NEeOHGnu2bPHsT5+cYfZAQMGVPhby/9d9913n9m4cWMzJCTE7N+/v/nNN99csB1WrFhh9ujRwwwLCzP79etn7ty586LbRaS+0qEfER9z+vRpPv74Y9LS0oiIiLjg/ZiYmFqtf9q0acycOZM///nPfP/99yxatIgmTZoAkJeXx9ChQ4mNjWXDhg288847rFixgnvvvbfCOlatWsXevXtZtWoVr7zyCgsXLqxwiGTcuHG8+eabPPvss+zYsYMXXniByMhIALKyshg0aBDdu3dn48aNfPzxxxw7doxbbrmlwne88sorRERE8PXXXzNr1iwef/xxPv30UwA2bNgAwIIFCzh69KjjNcCePXt47733eP/99x2HcvLy8pgyZQobN25k5cqVBAQEcMMNN1BSUgLAN998A8CKFSs4evQo77//fqX/2z388MO89957vPLKK2zevJnk5GSGDh3K6dOnKyz3xz/+kWeeeYaNGzcSGBjIhAkTnN4+IvWO1U1JRFzz9ddfm4D5/vvvO/0ZZ/eo5OTkmCEhIeZLL71U6fsvvviiGRsbW2FPzkcffWQGBASYmZmZpmna9zK0aNHCPH/+vGOZ0aNHm7feeqtpmqa5a9cuEzA//fTTSr/jL3/5i3nNNddUmHfo0CETMHft2mWapn2PyuWXX15hmV69epm///3vHa8Bc8mSJRWWmT59uhkUFGQeP368uv8ZzBMnTpiAuXXrVtM0TXP//v0mYH777bcVliu/RyU3N9cMCgoy33jjDcf7hYWFZmJiojlr1izTNCvuUSnz0UcfmYB57ty5ajOJ1FfaoyLiY0zT9Ni6d+zYQUFBAYMHD67y/a5du1bYk9O/f39KSkrYtWuXY96ll16KzWZzvG7atCnHjx8HID09HZvNxoABAyr9ji1btrBq1SoiIyMdjw4dOgCwd+9ex3JdunSp8Lny31GdFi1a0Lhx4wrzMjIyGDNmDK1btyYqKoqWLVsCcPDgwYuur8zevXspKiqif//+jnlBQUH07t2bHTt2VFi2fPamTZsCOJVdpD7SYFoRH9O2bVsMw3AMmHWnsLAwt6wnKCiowmvDMByHUS72Hbm5uYwaNYqnnnrqgvfKftQv9h3Vqexw2ahRo2jRogUvvfQSiYmJlJSUkJKSQmFh4UXXVxPlsxuGAeBUdpH6SHtURHxMw4YNGTp0KHPnziUvL++C92tzCnLbtm0JCwurcIpzeR07dmTLli0Vvnft2rUEBATQvn17p76jc+fOlJSU8Pnnn1f6/mWXXcb27dtp2bIlycnJFR6VlYyqBAUFUVxcfNHlTp06xa5du/jTn/7E4MGD6dixIz/99FOFZcrODKpufW3atCE4OJi1a9c65hUVFbFhwwY6derkdG4RqUhFRcQHzZ07l+LiYnr37s17771HRkYGO3bs4Nlnn6Vfv36O5TIzM0lPT2fPnj0AbN26lfT09AsGd5YJDQ3l97//PQ8//DCvvvoqe/fuZf369bz88ssAjB07ltDQUFJTU9m2bRurVq3ivvvu44477nAMuL2Yli1bkpqayoQJE1i6dCn79+9n9erVvP322wCkpaVx+vRpxowZw4YNG9i7dy/Lly/nzjvvdKp4lP+elStXkpmZeUHxKC82NpZGjRrx4osvsmfPHj777DOmTJlSYZn4+HjCwsIcA3uzs7MvWE9ERASTJk3ioYce4uOPP+b7779n4sSJnD17lrvuusvp3CJSkYqKiA9q3bo1mzdvZuDAgTz44IOkpKRw9dVXs3LlSubNm+dYbv78+XTv3p2JEycCcOWVV9K9e3c+/PDDKtf95z//mQcffJBHHnmEjh07cuuttzrGT4SHh7N8+XJOnz5Nr169uPnmmxk8eDDPPfecS/nnzZvHzTffzD333EOHDh2YOHGiYy9NYmIia9eupbi4mGuuuYbOnTszefJkYmJiCAhw/j9ZzzzzDJ9++ilJSUl07969yuUCAgJYvHgxmzZtIiUlhQceeICnn366wjKBgYE8++yzvPDCCyQmJnLddddVuq6ZM2dy0003cccdd3DZZZexZ88eli9fTmxsrNO5RaQiw/TkyDwRERGRWtAeFREREfFaKioiIiLitVRURERExGupqIiIiIjXUlERERERr6WiIiIiIl5LRUVERES8loqKiIiIeC0VFREREfFaKioiIiLitVRURERExGv9f9MKUz9GElrAAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Question 4.1.1\n",
"# only dimers\n",
"\n",
"C1 = np.logspace(1,5)\n",
"\n",
"def Z (or1, or2, or3):\n",
" G = 0\n",
" \n",
" if not or1 and not or2 and not or3:\n",
" return 1\n",
"\n",
" if or1:\n",
" G += 12.8\n",
" if or2:\n",
" G += 11.0\n",
" if or3:\n",
" G += 9.7\n",
" \n",
" if or1 and or2 and or3:\n",
" G += 3.3 + 2.6\n",
" elif or1 and or2:\n",
" G += 2.6\n",
" elif or2 and or3:\n",
" G += 3.3\n",
" \n",
" return C1**(or1 + or2 + or3) * exp(G / 0.62)\n",
"\n",
"\n",
"Ztot = Z(0,0,0) + Z(1,0,0) + Z(0,1,0) + Z(0,0,1) + Z(1,1,0) + Z(0,1,1) + Z(1,1,1)\n",
"PR = (Z(0,0,0) + Z(0,0,1)) / Ztot\n",
"PRM = (Z(0,0,0) + Z(1,0,0) + 9 * (Z(0,1,0) + Z(1,1,0))) / Ztot \n",
"\n",
"plt.xlabel(\"C1 concentration\")\n",
"plt.ylabel(\"Activity\")\n",
"plt.xscale(\"log\")\n",
"plt.plot(C1, PR, label=\"PR -> Cro\")\n",
"plt.plot(C1, PRM, label=\"PRM -> C1\")\n",
"plt.legend()\n",
"\n",
"# --------------------\n",
"\"\"\"\n",
"K = exp(-11.1 / .62)\n",
"C1 = 1/16 * (2 * K - 8 * C1 - np.sqrt(K * (K - 8*C1)))\n",
"\n",
"Ztot = Z(0,0,0) + Z(1,0,0) + Z(0,1,0) + Z(0,0,1) + Z(1,1,0) + Z(0,1,1) + Z(1,1,1)\n",
"PR = (Z(0,0,0) + Z(0,0,1)) / Ztot\n",
"PRM = (Z(0,0,0) + Z(1,0,0) + 9 * (Z(0,1,0) + Z(1,1,0))) / Ztot \n",
"\n",
"plt.xlabel(\"C1 concentration\")\n",
"plt.ylabel(\"Activity\")\n",
"plt.yscale(\"log\")\n",
"plt.plot(C1, PR, label=\"PR -> Cro\")\n",
"plt.plot(C1, PRM, label=\"PRM -> C1\")\n",
"plt.legend()\n",
"\n",
"\"\"\"\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "venv",
"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": 2
}