{
"metadata": {
"name": "simulation frameworks"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "heading",
"level": 1,
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Comparing different approaches to evolutionary simulations"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"cd D:\\\\workspace\\\\ipython-notebooks"
],
"language": "python",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"D:\\workspace\\ipython-notebooks\n"
]
}
],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%run simulation_frameworks_aux.py"
],
"language": "python",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Yoav Ram"
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"4 Feb 2013"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"[yoavram@post.tau.ac.il](mailto:yoavram@post.tau.ac.il)\n",
"\n",
""
]
},
{
"cell_type": "heading",
"level": 1,
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Moran vs. Wright-Fisher"
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Moran process"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "-"
}
},
"source": [
"The simplest approach to model the change in frequency of alleles (i.e., evolution) is described by the Moran process, which can be explained as a type of a ball and urn game.\n",
"\n",
"*There is an urn with yellow blue balls. At each turn we draw two balls from the urn. The one in our right hand we replace by two balls of the same color, and the one in our left hand we discard*. \n",
"\n",
"Of course, in half of the cases the number of balls of each color doesn't change (when we draw two balls of the same color) and therefore we focus on cases in which we draw two different balls. The game can be rephrased as *we draw a ball, replace it by two balls of the same color, and discard a ball of the opposite color*. \n",
"\n",
"The game ends when all balls are of the same color."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Denoting the number of yellow balls by *x* and the number of blue balls by *y* we can write a code for this game."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def moran_draw(x, y):\n",
" r = randint(1, x + y + 1)\n",
" if r <= x:\n",
" return x + 1, y - 1\n",
" else:\n",
" return x - 1, y + 1"
],
"language": "python",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def game(x, y, draw):\n",
" count = 0\n",
" while x != 0 and y != 0:\n",
" x, y = draw(x, y)\n",
" count += 1\n",
" return y == 0, count"
],
"language": "python",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"prompt_number": 5
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"We can run this game multiple times to check, for example, how the number of draws required to finish the game are distributed:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def repeat(x, y, repeats, draw):\n",
" return [game(x, y, draw)[1] for _ in range(repeats)]"
],
"language": "python",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"prompt_number": 6
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"num_balls = [10, 50, 100, 200, 500, 800, 1000, 1250, 1400, 1500]\n",
"\n",
"def run_and_summarize(draw, n_repeats=100):\n",
" results = array([repeat(n, n, n_repeats, draw) for n in num_balls])\n",
" means = results.mean(axis=1)\n",
" stds = results.std(axis=1)\n",
" return results, means, stds\n",
"moran_results, moran_means, moran_stds = run_and_summarize(moran_draw)"
],
"language": "python",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"prompt_number": 7
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"plot_summary(num_balls, moran_means, moran_stds, game_name=\"Moran process\")"
],
"language": "python",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"output_type": "display_data",
"png": "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\nt5aaLMpES05kNTOZTNai83KJiKjp8jIzkZWQgPllZVLZTDc3DF+6tMWTRfb3zcP2IiIyr+HDk5Cd\nPa+B8lnYtu29Fq2rpfp8k7weg4iIHn7ZqakGSSIAzC8rw/a0NDNFREREZBlqaxueyKnXtzFxJE3H\nRJGIiFqEbW1tg+Vt9HoTR0JERGRZ5PK6Bsvt7etNHEnTMVEkIqIWUSeXN1heb29v4kiIiIgsi1od\nBje3mQZlbm4zEB8/zEwRNc6oi9kQEZH1CFOrMbOszGD66Qw3N4THx5sxKiIiIvO7vWBNWtos6PVt\nYG9fj/j4cItdyAbgYjZERNSC8jIzsT0tDW30etTb22NYfLxRVj1lf988bC8iIuvRUn0+E0UiImp1\n2N83D9uLiMh6cNVTIiIiIiIiMgomikRERERERGSAiSIREREREREZYKJIREREREREBpgoEhERERER\nkQEmikRERERERGTA1twBEBGR6eRlZiI7NRW2tbWok8sRplYb5T2HRERE1LoxUSQishJ5mZnISkjA\n/LIyqWzmf39mskhERER34tRTIiIrkZ2aapAkAsD8sjJsT0szU0RERERkqZgoEhFZCdva2gbL2+j1\nJo6EiIiILB0TRSIiK1EnlzdYXm9vb+JIiIiIyNIxUSQishJhajVmurkZlM1wc8Ow+HgzRURERESW\nSiaEEOYOoqXIZDI8RJdDRNTi8jIzsT0tDW30etTb22NYfHyrXMiG/X3zsL2IiKxHS/X5TBSJiKjV\nYX/fPGwvIiLr0VJ9PqeeEhERERERkQEmikRERERERGSAiSIREREREREZYKJIREREREREBpgoEhER\nERERkQEmikRERCYWGxsLJycn9OvX765tH374IWxsbHDx4kWpLDU1FX379oWnpycKCgqkcp1OB29v\nb7i6umLmzJkmiZ2IiKwDE0UiIiITe+WVV7Bt27a7yk+fPo3t27ejV69eUll5eTmWLVuGHTt2ID09\nHWq1WtqWmJiIadOmoaioCLm5udizZ49J4iciehhlZuZh+PAkqFRzMHx4EjIz88wdklnZmjsAIiIi\naxMUFIQff/zxrvIpU6bggw8+QGRkpFSm1WoRHh4OhUIBhUIBIQSqq6vRvn17HDlyBNHR0QCAUaNG\nQavVwsfHx1SXQUT00MjMzENCQhbKyuZLZWVlt2ZqjBwZbK6wzIp3FImIiCzAV199BRcXF/Tv39+g\nvLCwEB4eHtJnd3d3aLValJaWwtHRUSr39PTE7t27TRYvEdHDJDU12yBJBICysvlIS9tupojMj3cU\niYiIzOzatWtYsGABtm///3+QCCEM/vdOMpnsrrKG9rvTnDlzpJ9VKhVUKtX9BUtE9BCqrW04LdLr\n25g4kubTaDTQaDQtfl6jJopXr17FW2+9hV27dsHW1hZr1qyBp6cnYmJiUFxcDG9vb6xbtw7t27cH\ncOth/bS0NLRt2xYrV65EYGAggFsP648bNw6XLl3CmDFjMH/+/N+qloiIqFUpKyvDjz/+iAEDBgAA\nfvrpJwwaNAharRb+/v7IycmR9j18+DB8fX3h4OCA8+fPS+UlJSUICAi4Zx13JopERGRILq9rsNze\nvt7EkTTfr7/8mzt3bouc16hTT2fPng2FQoEDBw7gwIEDUCqVSE9Ph0KhwLFjx+Di4oLly5cD4MP6\nRERkvfr164fz58/jxIkTOHHiBFxcXLBv3z44OTnBz88PWVlZOHXqFDQaDWxsbODg4AAAUCqV2Lhx\nIyoqKrB582b4+/ub+UqIiFontToMbm6Gq0e7uc1AfPwwM0Vkfka9o5iTk4Ndu3bB3t4eANCxY0cU\nFhYiKSkJcrkcsbGxSE5OBsCH9YmIyHqMGTMGubm5+OWXX9CzZ0+8++67eOWVV6Ttd04tdXJyQlxc\nHEJDQ2FnZ4cVK1ZI21JSUhATE4Pp06dj9OjRHBuJiO7T7QVr0tJmQa9vA3v7esTHh1vtQjYAIBON\nPdRwn3766ScMHToUAQEB0Ol0GDVqFNRqNZRKJY4cOQJ7e3tcu3YNHh4eOHnyJJKSktCzZ0+88cYb\nAIDRo0fjtddeQ69evTB+/Hjs2rULALBt2zasX78e//jHP+6+GJms0Wc0iIio9WN/3zxsLyIi69FS\nfb7R7ijq9XocPXoUixYtwtChQ/HGG29g06ZNzQqaD+sTERFgvAf1iYiIqGFGSxT79OkDd3d3RERE\nALg1zeaTTz6Br68vdDodvLy8oNPp4OvrCwB8WJ+IiO7JWA/qExERUcOMuphN3759odVqcfPmTWRm\nZmLo0KHw9/dHRkYGampqkJGRISV9fFifiIiIiIjIMhjtGUUAOHr0KCZMmAC9Xo+hQ4di7ty5uHnz\n5j1fj7F06VKkpaVJD+sHBQUBuHUXMSYmBpWVlRg9erS0AM5dF8NnMIiIrAL7++ZhexERWY+W6vON\nmiiaGgdCIiLrwP6+edheRETWo6X6fKNOPSUiIiIiIqLWh4kiERERERERGWCiSERERERERAaYKBIR\nEREREZEBJopERERERERkgIkiERERERERGWCiSERERERERAaYKBIREREREZEBJopERERERERkgIki\nERERERERGWCiSERERERERAaYKBIREREREZEBW3MHQERERERE1iczMw+pqdmorbWFXF4HtToMI0cG\nmzss+i8mikREREREZFKZmXlISMhCWdl8qaysbCYAMFm0EJx6SkREREREJpWamm2QJAJAWdl8pKVt\nN1NE9Gu8o0hEZGR5mZnITk2FbW0t6uRyhKnVCB450txhERERmU1tbcNpiF7fxsSR0L0wUSQiMqK8\nzExkJSRgflmZVDbzvz8zWSQiImsll9c1WG5vX2/iSOheOPWUiMiIslNTDZJEAJhfVobtaWlmioiI\niMj81OowuLnNNChzc5uB+PhhZoqIfo13FImIjMi2trbB8jZ6vYkjISIishy3F6xJS5sFvb4N7O3r\nER8fzoVsLAgTRSIiI6qTyxssr7e3N3EkRERElmXkyGAmhhaMU0+JiIwoTK3GTDc3g7IZbm4YFh9v\npojIEsTGxsLJyQn9+vWTyt555x14eHjA29sbb7/9NmpqaqRtqamp6Nu3Lzw9PVFQUCCV63Q6eHt7\nw9XVFTNnGk7hIiIiehAyIYQwdxAtRSaT4SG6HCJ6SORlZmJ7Whra6PWot7fHsPh4LmTzgFp7f5+f\nn4/27dtjwoQJOHjwIABg+/bteOaZZwAAb7zxBgICAjBp0iSUl5cjODgY2dnZOHHiBCZPnox9+/YB\nAEaMGIGXX34ZQ4cORWRkJJYsWQIfH5+76mvt7UVERE3XUn0+p54SERlZ8MiRTAzJQFBQEH788UeD\nsmHD/n8Bh+HDh+Prr7/GpEmToNVqER4eDoVCAYVCASEEqqur0b59exw5cgTR0dEAgFGjRkGr1TaY\nKBIRETUXp54SERFZmFWrViEiIgIAUFhYCA8PD2mbu7s7tFotSktL4ejoKJV7enpi9+7dJo+ViIge\nTkwUiYiILMi7774LBwcHvPTSSwDQ4PQhmUx2VxmnlhIRUUvi1FMiIiILsXbtWmRlZWHHjh1Smb+/\nP3JycqTPhw8fhq+vLxwcHHD+/HmpvKSkBAEBAfc895w5c6SfVSoVVCpVi8ZORETmodFooNFoWvy8\n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\nkZmZiaFDh8Lf3x8ZGRmoqalBRkYGAgICAAB+fn7IysrCqVOnoNFoYGNjw+cTiYioRXDqKRERkQVJ\nSUnBhAkToNfrMXToUIwePRo3b95ETEwM3N3d4e3tjYULFwIAnJycEBcXh9DQUNjZ2WHFihVmjp6I\niB4WnHpKREStDvv75mF7ERFZD049JSIiIiIiIqNgokhEREREREQGmCgSERERERGRASaKRERERERE\nZICJIhERERERERlgokhEREREREQGmCgSERERERGRASaKREREREREZICJIhERERERERlgokhERERE\nREQGmCgSERERERGRAVtzB0B0L3mZmchOTYVtbS3q5HKEqdUIHjnS3GERERERET30mCiSRcrLzERW\nQgLml5VJZTP/+zOTRSIiIiIi4+LUU7JI2ampBkkiAMwvK8P2tDQzRUREREREZD2YKJJFsq2tbbC8\njV5v4kiIiIiIiKwPE0WySHVyeYPl9fb2Jo6EiIiIiMj6GC1RPH36NJ5++mk88cQTUKlU+PTTTwEA\nVVVViIyMhEKhQFRUFKqrq6VjUlNT0bdvX3h6eqKgoEAq1+l08Pb2hqurK2bOnGmskMmChKnVmOnm\nZlA2w80Nw+LjzRQREREREZH1kAkhhDFOfO7cOZw7dw4DBw5ERUUF/Pz8sH//fqSnp+P06dNISUlB\nYmIievfujalTp6K8vBzBwcHIzs7GiRMnMHnyZOzbtw8AMGLECLz88ssYOnQoIiMjsWTJEvj4+Nx9\nMTIZjHQ5ZAZ5mZnYnpaGNno96u3tMSw+ngvZEBEA9vfNxfYiIrIeLdXnG23V08ceewyPPfYYAKBb\nt2544oknUFRUhMLCQiQlJUEulyM2NhbJyckAAK1Wi/DwcCgUCigUCgghUF1djfbt2+PIkSOIjo4G\nAIwaNQparbbBRJEeLsEjRzIxJCIiIiIyA5M8o1haWooffvgBfn5+KCoqglKpBAAolUoUFhYCuJUo\nenh4SMe4u7tDq9WitLQUjo6OUrmnpyd2795tirCJiIiIiIisktHfo1hVVYXo6GgsXrwY7du3b9Zt\nUJlMdldZY8fPmTNH+lmlUkGlUjW5PiIiskwajQYajcbcYRAREVkNoyaKN27cwB/+8AeMHz8ekZGR\nAABfX1/odDp4eXlBp9PB19f3/9q7/7Aq6/uP4y/wB3hdcFXLhDYiDY0fggIKByWRryXYlGG6UptN\n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\ngK7SVTWSRhEAYDmc7zunI8fLbq/QwoWlqq9/2jUWFrZE+fnpNIsAYCE0iu3oyEFhXUQAsD4axc7p\nyPFKT89TWdnydsaXqqTkqe6KBgDoYl1VI3vVOoqsiwgAQPtaWtr/L4HT2aeHkwAAvEGvmsyGdREB\nAGifn19ru+P+/m09nAQA4A16VaPIuogAALQvNzdNYWFL3MbCwhYrJ2eihxIBADypV116yrqIAIDe\nKj0977KzmZ7/vbBwqZzOPvL3b1NOziQmsgGAXsoynyhWVFQoMjJSw4YNU+FlLhXNS0/XstRU5aWn\nq8Jud7vNm9dFdDgcno7wtVg5v5WzS9bOb+XskrXzWzk7LtaRGllWtlzbty9TWdlyLVxYKru94qJt\nJk9OUUnJU3I4lqmk5CmvaRKt/Pdq5eyStfNbObtk7fxWzi5ZP39XsUyjuHDhQq1bt07l5eX6zW9+\no4aGhna3W15WpmXbt2t5WZlKFy50axZTJk9Wen6+lqana9n48Vqanq5J+fleMZGN1f8grZzfytkl\na+e3cnbJ2vmtnB0X62iNPK++/mkVFm7toXRfn5X/Xq2cXbJ2fitnl6yd38rZJevn7yqWuPT0s88+\nkySlpJx7ZzMtLU1VVVWa/BUN3tP19VpaWOjWCKZMnuwVjSEAAF3hSmsks5kCAC7HEp8o1tTUKCIi\nwvV7VFSUdu3a1aF9magGAHA1u9IayWymAIDL8TEWWLG4vLxcL7zwgv7whz9IktauXasPPvhATz3l\nvgCwj4+PJ+IBADzAAuWrR3SkRlIfAaB36YoaaYlLTxMSEvTwww+7ft+7d68mTZp00Xb8pwEA0Nt0\npEZSHwEAnWWJS0+vueYaSedmdTt06JC2bt0qm83m4VQAAHgeNRIA0B0s8YmiJD333HNasGCBzp49\nq9zcXA0cONDTkQAA8ArUSABAV7PEJ4qSNH78eNXV1enAgQPKzc11u62jayx6ypEjR/R///d/Gj58\nuFJTU/X73/9ektTY2KjMzEyFhoZq6tSpampqcu1TUFCgYcOGKSoqSpWVlZ6K7tLW1qa4uDhlZGRI\nslb206dPa86cObr11lsVFRWlqqoqy+Rfv369xo4dq1GjRmnRokWSvPvYz5s3T0FBQYqJiXGNXUne\nuro6xcfH65ZbbtGSJUs8mv/hhx9WZGSk4uPjtWjRIjU3N3tl/vayn/fMM8/I19dXJ0+e9Mrs0qXz\nb9iwQZGRkRo+fLgeeeQRr83vaZeqkdTHnmHVGmnl+ihRIz1dY6xSHy+V/zxvr5EerY/mKhAbG2u2\nb99uDh06ZMLDw82JEyc8HcnNf/7zH7Nnzx5jjDEnTpwwQ4YMMadOnTKrVq0yDzzwgHE6neYnP/mJ\nWb16tTHGmGPHjpnw8HDz/vvvG4fDYeLi4jwZ3xhjzDPPPGPuvfdek5GRYYwxlsr+0EMPmby8PNPc\n3GzOnj1rPv30U0vk//jjj83gwYNNU1OTaWtrM3feeacpKSnx6uwVFRVm9+7dJjo62jV2JXnvvPNO\nU1xcbBoaGkxycrKpqanxWP6ysjLT1tZm2trazPz5883vfvc7r8zfXnZjjDl8+LBJT083gwcPNh9/\n/LFXZr9U/n/+858mKSnJvPvuu8YYY44fP+61+b0V9bFnWLVGWrU+GkON9IYaY5X6eKn8xlijRnqy\nPlrmE8VLuXD9qJtvvtm1fpQ3CQ4OVmxsrCRp4MCBGj58uGpqalRdXa2srCz5+flp3rx5rtxVVVWa\nNGmSQkNDNX78eBlj1NjY6LH8R48e1euvv6758+e7JkSwSnbp3IyAixcvlr+/v/r27atrrrnGEvkH\nDBggY4w+++wzNTc368yZM7r22mu9Ovu4ceN03XXXuY11Ju/5d1L379+vGTNm6Prrr9e0adN67DXd\nXv6JEyfK19dXvr6+Sk9P1/bt270yf3vZJemnP/2pfvnLX7qNeVv2S+XfsmWLsrKyNGzYMEnSDTfc\n4LX5vRH1sWdYuUZatT5K1EhvqDFWqY+Xyi9Zo0Z6sj5avlH8OmssesKBAwe0d+9eJSYmumWPiIhQ\ndXW1pHP/yJGRka59wsPDXbd5woMPPqjVq1fL1/d/fy5WyX706FE5nU5lZ2fLZrNp1apVam5utkT+\nAQMGaM2aNRo8eLCCg4OVnJwsm81miewX6kzeqqoqHThwQIMGDXKNe9Nrev369a5Ly6qrq70+/+bN\nmxUSEqIRI0a4jVshuySVlZXpX//6l0aPHq358+ertrZWknXyexr1sWdYtUZauT5K1MjzvOV1bbX6\nKFm7RvZUfbR8o2gljY2NmjFjhp599lkFBAR0arpyT62B9dprr2nQoEGKi4tzy2uF7JLkdDr17rvv\navr06XI4HNq7d6/+9Kc/WSL/iRMnlJ2drdraWh06dEhvvvmmXnvtNUtkv9DXzduZ/bvTk08+qcDA\n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\nYoSqqqrc9vniiy+UlpamDRs2uO3X2NioRx99VDt27NC3vvUt3XXXXfr000/l4+PTbi4fHx9de+21\nrt/79++vlpaWDj2ny41/1TY+Pj668cYbv3JfAID3okZe+jldbvyrtqFGwpvxiSLwXyNHjtSePXt0\n6623qq6uThMmTFBZWZl27959yQK4efNmNTU1qaamRr6+vvrmN7+pDz74QDfffLP8/Py0fv16ffHF\nF5d93Pr6et1yyy16/PHHFRER4frewnkZGRnasWOH6urqJEknT57U4cOH9cknn6hfv34KDg7Wu+++\nq23btkmSgoKCNGjQIL366quSzhXLtra2dgvUl8eCg4Pb3XfKlCkqLi6W0+nUzp07FRAQoODgYLd9\np0yZoo0bN6qtrU1//vOfNXbsWPXr169DxRMA4N2okdRI9D40isAFTpw4oW984xuSpH379ikiIuKS\n2/r4+GjUqFEaP368Hn74YdcX5efMmaPKykrFxMTo888/V0BAgNs+X/45Pz9fMTExSkxMVEREhMaO\nHev2OP7+/lq/fr2WLl2qESNGKC0tTR999JFCQ0M1ffp0RUdH64EHHnCbgnvt2rXavHmzYmJilJ6e\nLqfTKR8fn4tmdWtvlrcv79vS0qL09HQlJibqtttu03PPPac1a9a49j9/H3PmzFFgYKBGjRql8vJy\n14QC7T0uAMB6qJHUSPQuPoa3MgAAAAAAF+ATRQAAAACAGxpFAAAAAIAbGkUAAAAAgBsaRQAAAACA\nGxpFAAAAAIAbGkUAAAAAgJv/BwXSjY/uGvbvAAAAAElFTkSuQmCC\n",
"text": [
""
]
}
],
"prompt_number": 8
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"plot_histograms(moran_results, num_balls, game_name=\"Moran process\")"
],
"language": "python",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAABCcAAAFCCAYAAADCNLfqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xt4FOXd//HPQJAo7JKEyEEgHBTCKUggHKSlBh5EECgi\npRILahIUUFRq9amtoBtELQ/18VwtcvAqPILV31URDyAi0WorwQNCMQaFhJMnyCZkAwRImN8fyMKG\nZDckuzOb7Pt1XXsle89k5ntPdr9755uZuQ3TNE0BAAAAAADYpJHdAQAAAAAAgMhGcQIAAAAAANiK\n4gQAAAAAALAVxQkAAAAAAGArihMAAAAAAMBWFCcAAAAAAICtQlacyMjIUOvWrZWUlORt+/LLLzV2\n7Fj17dtX48aNU25ubqh2DwARb+/evRo2bJh69eql1NRUvfTSS5Ikj8ej8ePHKyEhQddee61KS0tt\njhQAGi7GxABQMyErTqSnp2vt2rU+bfPmzdONN96oLVu26IYbbtC8efNCtXsAiHhNmjTR448/ru3b\nt+vVV1/VnDlz5PF49NxzzykhIUFff/212rdvr+eff97uUAGgwWJMDAA1E7LixNChQxUbG+vT1qJF\nCxUWFurkyZMqLCw8ZzkAIHjatGmjvn37SpLi4+PVq1cvbd68WTk5OcrMzFTTpk2VkZGhTZs22Rwp\nADRcjIkBoGYM0zTNUG28oKBA48aN07Zt2yRJJSUlGjhwoL777jtdcsklysnJkcPhCNXuAQA/+eab\nbzRy5Eht3bpVvXr1Ul5enqKjo3XkyBH16NFDu3fvtjtEAGiwGBMDQGBRVu4sIyNDd9xxh6ZPn65n\nn31WmZmZ+vvf/37OeoZhWBkWAJyXENZ0Q8Lj8ej666/X448/rubNm9c4fnIxgHBV3/JwZYyJATQE\nwc7Fls7W8eGHHyojI0NRUVHKzMzUBx98UO26pmn6PKpqC+XjwQcftHR/xBCe+ycGYqj8qG9OnDih\niRMnaurUqRo/frwkacCAAd6br+Xm5mrAgAHV/rzdx7shvGboQ8PoQ0PpR0PoQ0NQlzFxfXvY9ZqT\nJDPA43yOb0N479CH8Hg0hD6YZmhysaXFiWHDhun111+XJK1evVpXXXWVlbsHgIhimqYyMzPVu3dv\nzZ4929s+aNAgLV26VEePHtXSpUs1ePBgG6MEgMjDmBgAzhWy4kRaWpqGDBmivLw8dejQQcuWLdOc\nOXP02muv6fLLL9dbb72l+++/P1S7B4CI99FHH2nFihV67733lJycrOTkZK1du1YzZ87Unj17lJiY\nqP3792vGjBl2hwoADRZjYgComZDdc2LlypXn1R5uUlNT7Q6BGMJg/8RADPXZz3/+c508ebLKZatX\nr7Y4Gns0hNcMfQgfDaEfDaEP9U19HxPXVUN5zTWEftCH8NAQ+hAqIZ2to7YMwzjnOpaq2gDAapGU\niyKprwDqj0jKTZHU12AzDEOBjpyh+n9zVcAuochPls7WASC8xMXFqaioyO4wwlJsbKzcbrfdYQBo\n4MjD1SMPA7ACedg/K3MxZ04AEYz3VfWqOzaRdMwiqa+AXXifVY88HFl9DTbOnEBN8T7zz8pcbOls\nHQAAAAAAAJVRnAAAAAAAALaiOAGgSn/4wx+UnZ2t1157TX/605+qXOfmm2/W//t//6/G2ywoKFBS\nUpIkKTs7W+PGjQtKrDX14osv6o477rB0nwBQF+RiALAXedg6FCcAVCknJ0eDBw/W+++/r1/84hdV\nrmMYhsVR1U19ixcAyMUAYC/ysHUoTgDw8d///d+6/PLLtXnzZl1xxRVasmSJZs6cqfnz51e5/r/+\n9S/1799fqamp2rRpk6RT1eBf/OIX6tevn371q1/piy++8LvPLVu26L/+67/Ut29f9evXT6Wlpees\n8+6772rSpEm64oor9Mgjj3jbb7vtNg0YMEBDhgzRCy+84G3/8ssvdeutt+ryyy/X4MGDvds8ePCg\nrrnmGvXu3VtPPfXUeR8fALACuRgA7EUetoEZhqoKK0xDBeq16t5XmzdvNu+8807zxIkT5s9+9rNq\nf/6mm24yhw4dapaUlJibNm0yk5KSTNM0zSNHjphlZWWmaZrmxx9/bKalpZmmaZr5+flm7969TdM0\nzY0bN5pjx471bufdd981TdM0Dx8+bJaXl/vs5/Dhw+aIESPMo0ePmhUVFWZaWpr58ccfm6Zpmm63\n2zRN0zx27Jg5aNAgs7S01DRN07zyyivNNWvWmKZpmh6PxywvLzeXLVtmtmrVyvz222/NkpISs337\n9ubx48fP69hEUi6KpL4CdvH3Pov0XEwejqy+Bpsk0wzw4PjCNMnD4TQm5swJAOf49NNP1adPH+Xm\n5qpHjx7VrmcYhiZMmCCHw6GBAwfKNE19++23kqQHHnhAKSkpmjFjht555x2/+7viiit033336Zln\n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\nYsuWLQCA3bt3IyEhAQDQ29uLrKwsAMDOnTuRlpYGm82GN998c1pzJyIyAtZhIiL9sRbTnCNEBnTs\n2DF5/fXX5fLly5KZmXnT/V577TXZvn27+P1+eeeddyQsLExERA4fPiwmk0na2toC+w4PD4uIyMjI\niNjtdhERGRgYkLS0NBERKSoqkvT0dDl16pTU1NTI1q1bxefzidlsDvyNkZERzXMlIjIi1mEiIv2x\nFtNcwk9OkCH98MMPSEpKQldXF6xW6033czqd2LhxI4KCgrBx48brXktOTobdbg/8Xltbi8cffxyZ\nmZno7e3Fzz//jMWLF8Pr9cLr9aK/vx/PPvssjhw5gu+++w7Z2dkIDQ1FVFQUSkpK0NjYiHvvvXfa\nciYiMhLWYSIi/bEW01zCB2KSobS3t+OFF15Af38/HnjgAfh8PogIUlJS0NLSgpCQkBveIyL/+rce\nfPDBwM+9vb3Ys2cPXC4XIiIiYLfb8ffffwMAHnvsMVRXV8NsNiMrKwuVlZVobW3Fjh07AABNTU1w\nOp2orq5GdXU1Pv/882nInIjIGFiHiYj0x1pMcxE/OUGGYrPZcPz4cTzyyCPo6upCbm4uDh06hLa2\ntn8twvn5+di7dy/8fj9qampu+ndPnz6NhQsXIiIiAs3NzWhvbw+8lp2djYqKCqxcuRJ2ux2HDx9G\nSEgIwsPDceHCBZw5cwZ5eXnYsWMHfvzxx+lIm4jIMFiHiYj0x1pMcxE/OUGGMzQ0hIiICABAd3c3\nLBbLTfctKyvDtm3bsHTpUjz//PPXPZn42p+zsrLw0EMPwWq1YtmyZVi9evV1r506dQo5OTkwmUyI\njY0NfGxudHQUhYWFGB8fx4IFC/DRRx9pnS4RkeGwDhMR6Y+1mOaaILnZ53+IiIiIiIiIiBTgbR1E\nREREREREpCsuThARERERERGRrrg4QURERERERES64uIEEREREREREemKixNEREREREREpCsuThAR\nERERERGRrv4DFb4JfRDqV64AAAAASUVORK5CYII=\n",
"text": [
""
]
}
],
"prompt_number": 9
},
{
"cell_type": "heading",
"level": 3,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Markov Chain"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "-"
}
},
"source": [
"A moran process can be described by a Markov chain. Denote the total number of balls by $n$ and use this probability matrix (for n=2):\n",
"\n",
"\\begin{array}{ccc}\n",
"1 & 0.5 & 0 \\\\\\\n",
"0 & 0 & 0 \\\\\\\n",
"0 & 0.5 & 1 \\\\\\\n",
"\\end{array} \n",
"\n",
"in which $A_{i,j}$ is the probablity to transition from *j* yellow balls to *i* yellow balls where there is a total of *n=2* balls in the game."
]
},
{
"cell_type": "heading",
"level": 3,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Evolutionary model"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "-"
}
},
"source": [
"From an evolutionary perspective, this setup models **genetic drift**, but it can be expanded is much the same way to include **mutation** and **selection** (although adding selection will disrupt the linearity of the above model), and even recombination in a multi-locous model."
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Wright-Fisher process"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "-"
}
},
"source": [
"In the Wirght-Fisher (WF) process, we replace the entire contents of the urn at each step of the game, drawing the next generation of balls from the current urn *with replacement*.\n",
"\n",
"At first, this sounds the same as the Moran process if we zoom out and look at a generation as *n* draws, where *n* is the total number of balls. But in effect the processes are different, because in the WF process the draws within the generation are *independent*, but in the Moran process they are not. This leads to stronger **drift** and faster extinctions in the Moran process, as we will soon see."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"The WF process can be modeled by using a *binomial random function* (or a *multinomial*, if there are multiple types/loci):"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def wf_draw(x, y):\n",
" n = x + y\n",
" x = binomial(n, x / float(n))\n",
" y = n - x\n",
" return x, y"
],
"language": "python",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"prompt_number": 10
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Note that we only changed the drawing function, but now a draw is a whole generation, whereas in the Moran process it was a single reproduction and death step, so that a generation was regarded as *n* draws, where *n* is the total number of balls. "
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"wf_results, wf_means, wf_stds = run_and_summarize(wf_draw)\n",
"plot_summary(num_balls, wf_means, wf_stds, \"Wright-Fisher process\")"
],
"language": "python",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAA4oAAAFNCAYAAABG/5HdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3X9cjXf/B/DXKSqUZUgshxUrMZTqRL+ObkJud9Z2L79i\ny7ZbftQo86WN9gOzmaY2P2+2203stq3NNApzSsYpk2aKKSwjKrIKRfX5/uF23c6Uik6n47yej8ce\nj/pc1+e63tens8/H+1yfz3XJhBACRERERERERP9lpOsAiIiIiIiIqGVhokhEREREREQamCgSERER\nERGRBiaKREREREREpIGJIhEREREREWlgokhEREREREQamChSi7B06VK8+uqrDdo3OjoawcHBWomj\nX79+SE1NfeA+586dg5GREWpqarQSAxERtWwcs6gpvfTSS3jrrbea7HhKpRIbNmxo0L4qlQrdu3d/\n5HNu2bIFI0aMeOj6/v7++Pe///3IcVDTYqJIj2zp0qXw9/fXKOvdu3etZf/5z39qPcb8+fOxfv36\nBp1PJpM9cHvPnj3xww8/PHAfpVKJNm3awMLCQvpPrVbjl19+gbe3d4PiICIi/cMxixqrMYnXw5DJ\nZPV+TnR5vIaYOHEikpKSGrRvbV+efP/991r7QoUeHhNFemQ+Pj748ccfIYQAABQUFKCqqgrHjh2T\nvsEsKChAXl5erQNadXV1o8539zx1kclkDdrn008/RVlZmfSfQqFoVBxNoaqq6pGPwW+JH6wp2piI\nHh8csx6eoY5ZzZF01fcZqKvOw9QjaigmivTIXFxccPv2bRw7dgwAcODAAQwdOhTPPPOMRlmvXr1g\nbW2N6OhojB8/HqGhoejatSs+//zz+75dOnToEPz8/NCjRw/ExsZqfOMqk8lQXV2NmTNnwtraGi++\n+CJycnIAAMHBwcjPz8eYMWNgYWGB5cuXN+pa7j1PdnY2AgMDYWVlBWtra0RERGjs+80336BPnz7o\n378/Nm/erLFt165d+Nvf/gZ7e3vExMSgvLwcwP+mAG3fvh39+vXD8OHD74tBpVLBxsYGn3zyCXr2\n7IkRI0ZArVZL21966SXMnj0bL774Ijp27AiVSoULFy7gzTffRM+ePfHyyy8jMzNT2v/WrVvYunUr\nhg0bBktLS3h5eaGiogIAkJeXhzfeeAM9evTAq6++iuzsbKnet99+i6FDh8LS0hK2traIj48HcOcf\n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\nUVNTA2NjY6hUKpw6dQqDBg2CXC7HRx99BCEEampqEBMTg6eeegoODg64evUq3n77bQB3vtlzd3dH\nhw4dEB0djdWrV6N9+/b1XlNt17h06VIEBwdjwIABuHXr1n1TWNzc3GBubo6CggKMGjVKKre0tERS\nUhL279+PZ555Br1798amTZvqbNv6zuXv749FixZh6tSpmDhxIiZOnIi2bdtKf+/o6GgMHToUoaGh\nePLJJ/H3v/8dly5davQ1E1HLwTHrDo5Zd1y6dAl///vfYWlpiYCAALz00kvS52DSpEnIzc1F586d\n8frrr8PZ2RnTp0+Hr68vvL290a9fP42X1tf3N9++fTuuXr2Kfv364eTJkwgKCpK2hYSE4KmnnsIz\nzzyD4OBghISEPPBYRkZG2Lt3Lw4ePIgBAwbA1NS01qm7d7322muYMmUKxowZg8jISLz++usax1uz\nZg169OiBF154AZ07d8Zrr72G0tJSafvf/vY35ObmomvXrnj22Wdrveb62sfHxwfPPPMMnn76abi4\nuNwXo1KpRExMDJYsWYKxY8ciICAAc+fOrfX6H1RGj04mmIJTC3fixAl4enri6tWrBtERqFQqBAcH\n4/z587oOxWB9+umnSEpKavS36kREHLOI6HGh9TuK1dXVcHJywpgxYwDc+WbexsYGTk5OcHJywq5d\nu6R9Y2Nj0bt3bzg6OmrMT8/JyYGzszNsbW2l98PQ4+27777DjRs38Ouvv2LRokX4y1/+YhADLulG\nRUUFvv/+e1RVVUGlUmHdunXStCkibaioqIBCocDAgQPh7u6OmJgYABwj9RXHLCJ6HGk9UVy5ciUc\nHR2lDlMmk2HOnDnIzMxEZmamNJ2ssLAQq1atwr59+7B69WrphaYAEBERgXnz5iEjIwMpKSm1Pu2L\nHi87duzAU089BT8/P/Tr1w+xsbG6DqlZ8R8YzUsIgejoaHTo0AFz587F9OnTERISouuw6DFmZmaG\n/fv349ixY0hJScGGDRtw+vRpjpF6imMWxyyix1HDV1s/hN9//x3ff/89oqKipHn3f35y011qtRoj\nR46EXC6HXC6HEALl5eUwNzfHqVOnpPnbgYGBUKvVtc5ppsfH+vXrsX79el2HoRNKpRL5+fm6DsOg\ntGnTRmNNDlFzaNu2LYA7T4ysqqqCqakpgNofysAxsmXjmMUxi+hxpNU7irNnz8aHH34oLaYG/vcu\n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\nAAAEl+LiCs2aVSq3e5F3zO2eK0k0iwDQDnDp6UVk5uVpbnS0z9jT0dEak5sboEQAAASH/PwynyZR\nktzuRSoo2BigRACA1sQZxYs4O2HN/IICdfJ41BQWpqzcXCayAQB0eA0Nzf8XwuPp5OckAIC2QKP4\nPdLHjaMxBADgO0JDG5sdDwtr8nMSAEBb6HCNIusiAgDQvJZMTpOXlym3e67P5afR0U8rNzfLX3EB\nAG2oQzWKrIsIAEDzWjo5zdmxgoL58ng6KSysSbm5WUxkAwDthM0YYwIdorXYbDZd7OXMGztWz5WV\nnTc+f+xYPVtS0pbRAACt6PuO9/B1Ke/X2LHzVFb2XDPj81VS8mxbRQMAtLLWqpEdatZT1kUEAKB5\nTE4DADhXh2oUWRcRAIDmMTkNAOBcHapRZF1EAACal5eXqejouT5jZyanGROgRACAQOpQ31GUzkxo\ns/GcdRHHsC4iAFgO31FsmUt9v4qLK1RQsPGcyWnGMDkNAFhMa9XIdtcozs3MZOkLAGjnaBRbxmaz\nKTNz7iUtewEAsLYON5lNRUWF4uLiNGDAABUUFFxwu+fKyrRg82Y9V1am0lmzVFFc7MeUl8/hcAQ6\nwg9i5fxWzi5ZO7+Vs0vWzm/l7DjfpdTIsrLntHnzApWVPadZs0pVXFzh55SXz8q/r1bOLlk7v5Wz\nS9bOb+XskvXztxbLNIqzZs3SypUrVV5ert///veqqan53n0Wud3aeJGmMphY/RfSyvmtnF2ydn4r\nZ5esnd/K2XG+ltZIt3uRCgo2+indD2fl31crZ5esnd/K2SVr57dydsn6+VuLJRrFr7/+WpKUnp6u\n66+/XpmZmXI6nZe0L0tfAADas8utkSx7AQC4GEs0ilVVVYqNjfX+HB8fr+3bt1/Svix9AQBozy63\nRrLsBQDgYiwxmU15ebleeeUV/fGPf5QkrVixQocPH9azzz7rs53NZgtEPABAAFigfPnFpdRI6iMA\ndCytUSM7t0KONpeSkqI5c+Z4f961a5eysrLO247/NAAAOppLqZHURwBAS1ni0tMrr7xS0plZ3Q4e\nPKiNGzfKbrcHOBUAAIFHjQQAtAVLnFGUpJdeekkPPPCATp8+rby8PF177bWBjgQAQFCgRgIAWpsl\nzihK0qhRo+RyubR//37l5eX53HepaywGyqeffqr/+7//04033qiMjAy98cYbkqTa2lpNmDBBUVFR\n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\nAflhkemZjw+zAAAAAElFTkSuQmCC\n",
"text": [
""
]
}
],
"prompt_number": 11
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Note that the time scales (on the y-axis) are different from those of the Moran process because in the WF process the entire population is replaced on each tick, whereas in the Moran process a single individual is replaced on each tick. "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"The fact that the sacles, although different, are on the same order of magnitude suggests that the time for extinction of an allele in the Moran process is much shorter, as it requires several thousands of reproductions instead of several thousands of generations. This is a result of the fact that in the Moran process the sampling is *without replacement* whereas in the WF process the sampling is *with replacement*."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"plot_histograms(wf_results, num_balls)"
],
"language": "python",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAABCgAAAFCCAYAAAAzP+xnAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xt8FOXZ//HvQJAoZEkCcjAQDooJSJBAOEhFNzyIHEWk\ntMQH1CRYBFH8Uay2Cmwo2lJ60KpVkYOP8IhWn5ciVUFE1gOtCVqBFCMohLMKZINZhABJ5vcHsLDk\nsBvY3dlkP+/XazR7z70z1wzZi+Hae+4xTNM0BQAAAAAAYKEGVgcAAAAAAABAgQIAAAAAAFiOAgUA\nAAAAALAcBQoAAAAAAGA5ChQAAAAAAMByFCgAAAAAAIDlglag2LNnj9LT03XNNdfIbrfr5ZdfliS5\n3W6NGjVKiYmJuvXWW3XkyJFghQAAES8rK0utWrVSSkqKp+3LL7/UiBEj1KNHD40cOVIFBQUWRggA\n9Vt118QOh0Nt27ZVamqqUlNTtWrVKosjBQDrGaZpmsHY8HfffafvvvtOPXr00KFDh9SnTx9t2rRJ\nzz77rPbs2aM//vGP+uUvf6kOHTpoxowZwQgBACLexx9/rKZNm+qOO+5Qfn6+JGncuHG67bbb9LOf\n/UzLly/XW2+9peXLl1scKQDUT9VdE//5z39WTEyMpk+fbnWIABA2gjaConXr1urRo4ckqUWLFrrm\nmmu0YcMG5eXlKTs7W40bN1ZWVpZyc3ODFQIARLwBAwYoLi7Oq61Zs2YqKipSRUWFioqKKq0HAARO\nddfEkhSk7wkBoM4KyRwU33zzjbZs2aI+ffpow4YNSk5OliQlJycrLy8vFCEAAE6bP3++nnzyScXF\nxemZZ57RvHnzrA4JACLCmWvivn37SpKeeuop9evXT/PmzZPb7bY4OgAIA2aQlZSUmD179jTffPNN\n0zRNs127duaxY8dM0zTNH3/80UxMTKz0HkksLCwsYbvUNYWFhWa3bt08r8eMGWM+/fTT5smTJ80n\nnnjCHDt2bJXvs/o8s7CwsFS31EXnXxN///33ZkVFhXn48GHz7rvvNufPn1/pPVafZxYWFpaalmAI\n6giKkydPasyYMZowYYJGjRolSerdu7dnQraCggL17t27hi2Yp/7rGf529nVdWGbPnm15DBwDxxBO\nS304jvrgk08+UVZWlqKiopSdna2PPvqo2r5Wn+9w+J2xOgar908MxBBuMdRFVV0Tt2zZUoZhqFmz\nZrr33nv1xhtvVPleq/+868Ji9e9kXVk4T5ynQC7BErQChWmays7OVrdu3fTAAw942vv27avFixfr\n2LFjWrx4sfr16xesEAAAVUhPT9dbb70lSVqxYoVuuukmiyMCgPqrumvib7/9VpJUVlaml19+WcOG\nDbMqRAAIG0ErUKxfv17Lli3TBx984PX4pMmTJ2v37t1KSkrSvn37dM899wQrBACIeBkZGerfv7+2\nbt2qdu3aacmSJXr00Uf15ptv6tprr9U777yjRx55xOowAaDequqa+N1339VDDz2k7t27q1+/fjp5\n8qQmT55sdagAYLmoYG34+uuvV0VFRZXrVqxYEazdhhW73W51CBeNYwgP9eEYpPpzHHVJdY8PrSuP\nFQ2H3xmrY7B6/8RADOEYQ11S3TXx0KFDLYimfuJ30j+cJ/9wnqxlmMG8geQCGYZx+idTkiHTNE+3\nnX0NAFYwjMjJQZF0rADqjkjKTZF0rADqlmDlp6CNoAAQ/uLj41VcXGx1GGEpLi5OLpfL6jAARABy\ncdXIwwBCgRxcs1DnYkZQABGMb2aqV925iaRzFknHCliJz1rVyMORdayAVfic1SzUuTiojxkFAAAA\nAADwBwUKAAAAAABgOQoUAKr061//Wk6nU2+++aZ+//vfV9nnrrvu0v/93//5vc2dO3cqJSVFkuR0\nOjVy5MiAxOqvF198Uffdd19I9wkAF4NcDADWIg+HFgUKAFXKy8tTv3799OGHH+qGG26oss/Z+WLq\nhroWLwCQiwHAWuTh0KJAAcDLr371K1177bXasGGDrrvuOi1atEiTJ0/W3Llzq+z/z3/+U7169ZLd\nbldubq6kU1XhG264QT179tRPf/pTbdq0qcZ9bty4Uf/1X/+lHj16qGfPnjpy5EilPu+//77Gjh2r\n6667To8//rinfcqUKerdu7f69++vF154wdP+5Zdf6he/+IWuvfZa9evXz7PNQ4cOadiwYerWrZv+\n+te/1vr8AEAokIsBwFrkYYuYYUinHtdhSqd+Ptt29jWAi1fd52nDhg3m/fffb548edL8yU9+Uu37\n77zzTnPAgAFmSUmJmZuba6akpJimaZpHjx41S0tLTdM0zU8//dTMyMgwTdM0CwsLzW7dupmmaZrr\n1q0zR4wY4dnO+++/b5qmaf74449mWVmZ135+/PFHc9CgQeaxY8fM8vJyMyMjw/z0009N0zRNl8tl\n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\nV1eHxYsX49SpUzhz5gwSEhLg7e0NPz8/ZGZmori4GK+88orLciYi0hrWYiIidbEO00DDm2SSplRU\nVOC9995DXV0dRowYgba2NogIIiMjUVZWBi8vr6f2EZFef9err77q+HttbS127twJi8UCX19fmM1m\n/P333wCAadOmoaCgAEajEdOnT0d+fj7OnTuHLVu2AABKS0tRUlKCgoICFBQU4ODBgy7InIhIO1iL\niYjUxTpMAxWvoCBNMZlMuHDhAiZNmoSqqiokJyfj+PHjOH/+fK+FOCUlBfv27UN3dzf27t37zN97\n8+ZNjBw5Er6+vjh79iwqKiocryUkJCAvLw9JSUkwm804efIkvLy8MHjwYLS2tuLOnTuYM2cOtmzZ\ngl9//dUVaRMRaQprMRGRuliHaaDiFRSkOQ0NDfD19QUAVFdXIzg4+JnvXbNmDdatW4fQ0FAsWbKk\nxx2L//Pv06dPx7hx4xASEoLJkydj1qxZPV67ceMGEhMTYTAYEBAQ4LiErrm5Genp6Xjw4AGGDh2K\nzZs3K50uEZEmsRYTEamLdZgGIg951rVARERERERERERuwq94EBEREREREZHqeIKCiIiIiIiIiFTH\nExREREREREREpDqeoCAiIiIiIiIi1fEEBRERERERERGpjicoiIiIiIiIiEh1/wYd0rH2ROzhXgAA\nAABJRU5ErkJggg==\n",
"text": [
""
]
}
],
"prompt_number": 12
},
{
"cell_type": "heading",
"level": 3,
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"source": [
"Evolutionary model"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"source": [
"The WF model can also be extended to include selection, mutation and recombination."
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Computational comparison"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "-"
}
},
"source": [
"In the WF model we use one random function call per generation, whereas in the Moran process we use *n* calls, where *n* is the total number of balls.\n",
"On the other hand, the Moran process tends to finish in a smaller number of generations because **drift** is stronger.\n",
"I therefore compare the running time of both processes for a small population and a large one:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%timeit game(100, 100, moran_draw)\n",
"%timeit game(100, 100, wf_draw)"
],
"language": "python",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"1000 loops, best of 3: 365 us per loop\n",
"1000 loops, best of 3: 458 us per loop"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n"
]
}
],
"prompt_number": 13
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%timeit -n 100 game(10**6, 10**6, moran_draw)\n",
"%timeit -n 100 game(10**6, 10**6, wf_draw)"
],
"language": "python",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"100 loops, best of 3: 8.4 s per loop\n",
"100 loops, best of 3: 4.56 s per loop"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n"
]
}
],
"prompt_number": 15
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"For the small population the Moran process was slightly faster.\n",
"For the large population, the WF model was slightly faster.\n",
"\n",
"So if I were to require 25,000 games to produce a good dataset for a research project, the Moran process would take "
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print \"%.2f seconds for a small population\" % (25000*365.0*10**-6)\n",
"print \"%.2f days for a large population\" % (25000*8.4/(24*60*60))"
],
"language": "python",
"metadata": {
"slideshow": {
"slide_type": "-"
}
},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"9.12 seconds for a small population\n",
"2.43 days for a large population\n"
]
}
],
"prompt_number": 17
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "-"
}
},
"source": [
"and the WF process would take"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print \"%.2f seconds for a small population\" % (25000*458.0*10**-6)\n",
"print \"%.2f days for a large population\" % (25000*4.56/(24*60*60))"
],
"language": "python",
"metadata": {
"slideshow": {
"slide_type": "-"
}
},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"11.45 seconds for a small population\n",
"1.32 days for a large population\n"
]
}
],
"prompt_number": 16
},
{
"cell_type": "heading",
"level": 1,
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Individual-based vs. Density-based simulation"
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Individual-based simulation"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "-"
}
},
"source": [
"In individual-based simulations (also called *agent-based simulations*) all the attributes of every individual, such as fitness, genome and modifiers, are explicitly modeled.\n",
"\n",
"To illustrate an example of an individual-based simulation, the following code implements a *Wright-Fisher process* with drift, selection and mutation. The genome is represented by the number of mutations accumulated, and all mutations are deleterious with a constant effect on fitness. \n",
"\n",
"We start from a mutation-free constant size population and proceed for a pre-defined number of generations, *en route* to a mutation-selection balance in which the mean number of deleterious mutations in the population is stable around $\\mu/s$, where $\\mu$ is the mutation rate and $s$ is the selection coefficient."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"class Organism:\n",
" def __init__(self, mutations, mutation_rate, selection_cofficient):\n",
" self.mutations = mutations\n",
" self.mutation_rate = mutation_rate\n",
" self.selection_cofficient = selection_cofficient\n",
" self.fitness = self._fitness()\n",
" \n",
" def reproduce(self):\n",
" child = Organism(self.mutations, self.mutation_rate, self.selection_cofficient)\n",
" child.mutations += poisson(self.mutation_rate)\n",
" child.fitness = self._fitness()\n",
" return child\n",
"\n",
" def _fitness(self):\n",
" return (1 - self.selection_cofficient) ** self.mutations\n",
" \n",
" def __repr__(self):\n",
" return \"*\"+str(self.mutations)"
],
"language": "python",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"prompt_number": 5
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import random\n",
"\n",
"def selection_mutation_IBS(population):\n",
" fitness = array([o.fitness for o in population])\n",
" fitness = fitness/fitness.sum()\n",
" count = multinomial(len(population), fitness)\n",
" i = 0\n",
" for o,n in zip(population, count):\n",
" while n > 0:\n",
" population[i] = o.reproduce()\n",
" n -= 1\n",
" i += 1\n",
" return population\n",
"\n",
"def drift_IBS(population):\n",
" return random.sample(population, len(population))"
],
"language": "python",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"prompt_number": 6
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def mutation_selection_balance_IBS(ticks, population_size, mutation_rate, selection_coefficient):\n",
" population = [Organism(0, mutation_rate, selection_coefficient) for i in range(population_size)]\n",
" mutation_load = [None] * ticks\n",
" for t in range(ticks):\n",
" population = drift_IBS(population)\n",
" population = selection_mutation_IBS(population)\n",
" mutation_load[t] = mean([o.mutations for o in population])\n",
" return population, mutation_load"
],
"language": "python",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"prompt_number": 7
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"generations, population_size, mu, s = 100, 10**5, 0.003, 0.1\n",
"population_IBS, mutation_load_IBS = mutation_selection_balance_IBS(generations, population_size, mu, s)"
],
"language": "python",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"plot_mutation_load(mutation_load_IBS, mu, s, \"Individual-based simulation\")"
],
"language": "python",
"metadata": {
"slideshow": {
"slide_type": "-"
}
},
"outputs": [
{
"output_type": "display_data",
"png": "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\nnToVsbGxqFGjBtzc3Cr9FOLcuXMxadIkBjgiIqJKinds0EIXLlxA165dkZCQgHr16qm7HCIiIiol\njdpihFRv9uzZmDZtGgMcERFRJcYzcVrm1KlT+PTTT5GQkIBatWqpuxwiIiIqA56Jq0RmzZqFWbNm\nMcARERFVcoUubOjZs6fi5/+mRIlEgp07d6q2MiogKioK165dw6hRo9RdChEREalZoSHum2++AQCE\nh4cjNjYWAwcOBABs3rwZbdu2LZ/qSEEIgVmzZmHOnDmoUaOGusshIiIiNSvymjg7OzscPXpUceeE\nrKwstG/fHufOnSuXAkuqol4Td+TIEYwaNQrx8fGoVk0lO8MQERFROVPpNXG6urqIi4tTPL98+TIa\nN25cqsGo9JYuXYoJEyYwwBERERGAYpyJO3XqFEaPHq1IiVWrVsXvv/8OJyencimwpCrimbg7d+7A\n1tYWt2/fRv369dVdDhERESlJWXJLsbcYuXfvHiQSCYyNjUs1UHmpiCFu2rRpePHiBQICAtRdChER\nESmRykNcVlYWDh48iKdPnypeGzZsWKkGVLWKFuKeP38Oc3NznDhxAi1atFB3OURERKREKr0mbtWq\nVejUqRNGjx6N7du346uvvkJ4eHipBqOSCwkJgYuLCwMcERER5VNkiPvjjz8QFRUFPT09bN++HadP\nn0Zqamp51FbpCSGwdOlS+Pr6qrsUIiIi0jBFhricnBzUqFEDTZs2RVJSEpo3b467d++WR22VXmRk\nJGQyGTp37qzuUoiIiEjDFLlfhZOTE548eYLhw4ejQ4cOqF69Ovr161cetVV6S5cuxfjx4yGRSNRd\nChEREWmYYq9OBYDMzEykpaXBzMxMlTWVSUVZ2HDr1i04ODjg9u3bqFevnrrLISIiIhUoS24p1s6x\n8fHx2LlzJyQSCXr16lWqgahkli9fjhEjRjDAERER0VsVeU3c6tWrMWLECFSp8rrpyJEjsXr1apUX\nVpllZWVh7dq1GDdunLpLISIiIg1V5HTqhx9+iF27dkFHRwcA8OTJE/To0QPHjx8vlwJLqiJMp/7+\n++8ICwvDjh071F0KERERqZBKp1MbNWqEx48fK0JcWloaGjVqVKrBqGjPnz/H/PnzsX79enWXQkRE\nRBqsyBA3adIkeHh4wMrKCgBw5coVBAUFqbywyuq7776Dq6sr3Nzc1F0KERERabBirU6Vy+U4efIk\n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\nhtAPAAAAAElFTkSuQmCC\n",
"text": [
""
]
}
],
"prompt_number": 54
},
{
"cell_type": "heading",
"level": 2,
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Density-based simulation"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "-"
}
},
"source": [
"In a density-based simulation (and also in *frequency-based simulations*, which are only slightly different) the population is divided into **types** or **classes** of individuals that share the same set of attributes (alleles, modifiers, etc.). Then, these types are explicitly modeled, and the individuals are only implicitly modeled via the types they belong to.\n",
"\n",
"This framework is very efficient because it allows the use of general algorithms, such as mutlinomial random number sampling."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Here is the code for a density-based simulation based on the same assumptions as the individual-based simulation above:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def selection_DBS(population, population_size, selection_coefficient):\n",
" fitness = array([(1 - selection_coefficient) ** i for i in range(len(population))]) * population \n",
" fitness = fitness/fitness.sum()\n",
" return multinomial(population_size, fitness)\n",
"\n",
"def drift_DBS(population, population_size):\n",
" population = population/float(population.sum())\n",
" return multinomial(population_size, population) \n",
"\n",
"def mutation_DBS(population, mutation_rate):\n",
" mutations = poisson(mutation_rate * population)\n",
" population[:-1] = population[:-1] - mutations[:-1]\n",
" population[1:] = population[1:] + mutations[:-1]\n",
" return population"
],
"language": "python",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"prompt_number": 10
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def mutation_selection_balance_DBS(ticks, population_size, max_num_mutations, mutation_rate, selection_coefficient):\n",
" population = array([0] * max_num_mutations)\n",
" population[0] = population_size\n",
" mutation_load = [None] * ticks\n",
" for t in range(ticks):\n",
" population = drift_DBS(population, population_size)\n",
" population = selection_DBS(population, population_size, selection_coefficient)\n",
" population = mutation_DBS(population, mutation_rate)\n",
" mutation_load[t] = sum([i * x for i,x in enumerate(population) if x > 0])/float(population.sum())\n",
" return population, mutation_load"
],
"language": "python",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"prompt_number": 11
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"population_DBS, mutation_load_DBS = mutation_selection_balance_DBS(generations, population_size, 100, mu, s)"
],
"language": "python",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"plot_mutation_load(mutation_load_DBS, mu, s, \"Density-based simulation\")"
],
"language": "python",
"metadata": {
"slideshow": {
"slide_type": "-"
}
},
"outputs": [
{
"output_type": "display_data",
"png": "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\n+/fvo1OnTnBwcICtrW22ele0tOZ+9s75/16UtzoAuIKrVwHV/n7YAgDw8krrXCkAlzBgADBgQGb1\n9AHQB58NuyyETAE8QxqTwdLRFkBbaHiICRHlmdYAnkBXV9NxZFdFAJkvQZL3vgLwFf7vAWIGQv7v\nlXsq74lr0qRJiu0pIiIi0KxZsxRl7O3tce3aNeX7qKgomJqapihjYmKCTp06KXvcmjRponzsev36\ndTRp0iTdGETmfvZyhgj4UvMrKuoVxowZC11dPSxZ4o2EhE8QASZOdMekSZNzXX9SUjJsbRth69aA\nTMtOnz4DPXr0TPPcs2fPUb16Dfz55x6IALt27YahoRGmT5+Bjx8TNP59VOWra9du+P33bdm6pkeP\nnti48TeNx84XX+p8PXr0GOXKlYe9fTO8fx+n8XhU/XrzJhoGBobw8voVycmKNMsMHToMI0eO0nis\nhe119+496OsbZPJ71Bmf5ym5kuPRdBn4d2LDvXv3MpzY8OrVK9m6datyYkNUVJRyYPqrV6+kfv36\n8vTpUxH5/xMb4uPjZfTo0ZzYkI88efJE9PX1Zdy4cfLq1asU5x4/fiw6OjqpjmfXmjVrxNHRMUuD\nbj98+CAWFhayY8eOFMcTEhLE0dFRZs+eneL48+fPpVu3btKgQQO5dOlSruLMLxISEqRChQrZ/r5v\n3LhRevbsqaaoiPKHAQMGyLRp02TIkCHi4uIinz590nRIKjV//nzp3LmzNGvWTFxdXVP9HtizZ4+Y\nmppKbGyshiIs3K5duya1atWSmTNnSnJycqblc5O3qCXjCQkJEQsLCzEzM5Nly5aJyD8fwmvWrFGW\n+f7778XExEQaNWok165dExGRy5cvi62trTRo0EA6dOggmzZtUpZ/9+6ddO3aVWrUqCHdunVL9x8f\nk7i8N3XqVBk/fny650eMGJEqccqO169fi76+frZmTp46dUoMDQ1T/AExZswY6dy5c5r/qRQKhfz2\n229SpUqVfJnIKRQKuXr1qnz48CFL5YODg6Vp06bZbuf58+dSsWJFSUhIyPa1RAVBWFiYGBkZybt3\n7yQxMVG6dOki/fr1y9KHbUHw8eNHMTIyksuXL0tCQoJ4eHiIsbGxnD59WkREXr58KUZGRnL8+HEN\nR1q4vXjxQpo3by69e/fO9Pd2vkviNIlJXN6KiYkRHR0duXfvXrplbt26Jbq6uvL27dt0yxw/flzc\n3Nxk37598vHjxxTnRo8eLW5ubtmOzd3dXfr16yciIhs2bJA6depITExMhtcsXLhQevXqle221OXj\nx4+yadMmsbOzE319fTE1NZXdu3dn2CP5+vVr6dmzZ44TZ3t7ezl06FBOQybKtxQKhTg4OMjatWuV\nx+Li4sTBwUHc3d1VuryGpqxbt05cXFxSHPvzzz9FT09PFi9eLF9//bVMmTJFQ9EVLfHx8dKrVy9p\n0aKFvHz5Mt1yTOI+wyQub3l5eSkTpYz07dtXvLy80jx3+fJl0dPTk5kzZ4qTk5NUqlRJ+vXrJ7t2\n7ZJTp06Jvr5+jh7HxsXFiZmZmcybN090dXWVPb4ZiY2NFV1dXblx40a221Olx48fyw8//CD6+vrS\nsWNH2bdvnyQnJ0tQUJBYWlpK+/btJSIiIsU1Dx8+FHd3d6lcubIMHjxYXrx4kaO2f/zxR5k4caIq\nboMoX9m+fbs0bNhQkpKSUhx/8+aN1KtXL0trKuZnycnJYmlpKYcPH0517u7du9KkSROpV69elnv0\nKfeSk5NlxowZYmZmJtevX0+zDJO4zzCJyzv/dttfvHgx07KXL18WQ0PDVAs/Pnr0SGrUqCEBAQHK\nY8+ePZNVq1ZJ27ZtpXjx4ikew2fXkSNHREtLS3bv3p3la+bOnStDhw7NcZu59euvv0rlypVlzJgx\naf6n//TpkyxdulR0dXVlwoQJcurUKRk4cKDo6OjIpEmT5NGjR7lq/8KFC1K7du1c1UGU33z48EFM\nTEzSTHBE/vnDycTEJEUvXUGzd+9esbW1TbdH8dOnTxwHpyEbNmyQ33//Pc1zTOI+wyQu76xbt046\nduyY5fJdu3aVFStWKN/HxMRIvXr15Ndff033mnfv3uX6EcezZ8+yVf7169eio6MjDx48yFW7OfHj\njz9KnTp15PHjx5mWffnypYwcOVJMTExk/vz5KtutQqFQSNWqVTXeG0mkSgsWLJBu3bplWObGjRti\nYmIio0ePVslOA3mtZcuWKf4gpoIhN3mL1v9VUGhoaWmhkN1SvqRQKGBlZYXVq1ejdevWWbomNDQU\n3377rXLP0y+//BL16tXDsmXLNL7/3f+aOnUqPn78iOXLl+dJeyKC2bNnY9euXTh8+DAMDQ3zpN30\njBo1CnXr1oWHh4dG4yBKS1JSEkQk0w3V//XixQtYW1vj9OnTyoXC0xMTEwM3NzdcuXIFv//+O+rX\nr6+KkNUuLCwM33zzDW7fvp3l7wvlD7nJW1S+ThwVDX/99Re0tbXh7Oyc5Wvs7e1hbm4Of39/DBky\nBJUqVYL4MaX9AAAgAElEQVS3t3e+S+AAwN3dHf7+/nj58qXa2xIRTJ8+HXv27MGRI0c0nsAB+XP3\nhuTkZBw/fhwTJ06EhYUF+vfvj8OHD6t8azfKncTERISGhmLRokXo06cPTpw4ofI2hgwZglq1amHN\nmjVZWh1/9uzZGDhwYKYJHABUqlQJAQEBmDJlCtq0aYMVK1Zk+QP2xo0bGDFiBJYtW5al8qq0aNEi\nuLu7M4EralTQE5ivFMJbyncUCoU0a9Ys1TpsWREcHCylS5eWFi1a5PvHFaNHj5Zp06aptQ2FQiHu\n7u5ia2ub67X0VCkuLk60tbVzPDkiPYmJiTJq1CgZMWJEqvUj05KUlCSHDx8WNzc3MTQ0lPr168vc\nuXMlNDRUli5dKjY2NmJsbCyzZs2SO3fuqDTWoub9+/dy6tQpWbVqlYwcOVLs7e2zPB712bNnMm/e\nPGnbtq188cUX0qBBAxkzZox4e3uLvr6+rFu3TmVxBgUFSc2aNeXIkSPSsWNHMTExkQ0bNkhiYmKK\ncklJSXLhwgVZtGiR6Ovry5s3b7Ld1s2bN6Vx48bi6uoqFy5cSHfpndOnT0v37t1FT09PJk6cKPr6\n+nm69tydO3ekSpUq8u7duzxrk1QnN3lLoct4mMSp37Fjx6R27dqpZnhlhUKhkIULF+arhCU99+7d\nEx0dnXTHmp0/fz7DZVMyk5iYKKNHj5YmTZrk6ANG3SZPnpzl5Vb++OOPTGf/JiQkSM+ePaVjx44y\nYcIE0dfXl9WrV6f57yg+Pl5WrlwppqamYmtrK/Pnz093jF54eLhMmDBB9PT0ZMCAAYVimQh1SkxM\nlOvXr8uOHTtk7ty50rNnT6lbt66ULVtW7OzsZNiwYeLj4yN//fWX6Orqpjuj7l9JSUni5OQkAwYM\nkL1796b6txwZGSl16tSR8ePHp0q0suvDhw9Su3Zt2bt3r/LY8ePHpVWrVmJubi5+fn7i6ekpX375\npVSsWFEsLCxk5MiRcuLEiRy3mZCQILNmzRJra2spW7asNGzYUAYNGiRLly6VrVu3ipOTk5iYmIiP\nj4+8f/9eREQcHR1l165dubrX7BgzZoza/+Ak9WES9xkmcern6uqaqxmjBcmgQYPkp59+SnEsMjJS\n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\nQmCC\n",
"text": [
""
]
}
],
"prompt_number": 55
},
{
"cell_type": "heading",
"level": 2,
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Computational comparison"
]
},
{
"cell_type": "heading",
"level": 3,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Running time"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "-"
}
},
"source": [
"In individual-based simulations, because each individual is explicitly modeled, it is easier to write and test the simulation code, but it will likely be slow, because at every generation the complexity is *O(n)*, as the simulation code must process each and every individual.\n",
"\n",
"In a density-based simulations every type/class of individuals is explicitly modeled, and therefore the code is expected to run much faster, as long as the number of types is smaller than the number of individuals. This is expected to occur when the mutation and recombination rates are low and the population is large (*i.e.*, in asexual populations). This gain in performance is paid by a more complex code which requires a minimal understanding of probability theory.\n",
"\n",
"The below performance comparison shows that the density-based simulation is **~3800 times faster!**"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%timeit mutation_selection_balance_IBS(10, population_size, mu, s)\n",
"%timeit mutation_selection_balance_DBS(10, population_size, 100, mu, s)"
],
"language": "python",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"1 loops, best of 3: 14.6 s per loop\n",
"100 loops, best of 3: 3.78 ms per loop"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n"
]
}
],
"prompt_number": 14
},
{
"cell_type": "heading",
"level": 3,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Memory use"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "-"
}
},
"source": [
"If the population size is, say, $10^5$ individuals, and each has 1,000 loci in his genome, then the population will occupy ~100 megabytes of memory. If the population size increases to $10^7$, then the population will occupy 10 gigabytes of memory, which is already not feasible on most machines and not efficient when it is feasible."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"The following prints the memory footpring of the individual-based and density-based populations:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import sys\n",
"print \"Individual-based population: %d bytes\" % sys.getsizeof(population_IBS)\n",
"print \"Density-based population: %d bytes\" % sys.getsizeof(population_DBS)"
],
"language": "python",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Individual-based population: 800064 bytes\n",
"Density-based population: 80 bytes\n"
]
}
],
"prompt_number": 40
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"The individual-based population is **10,000 times larger** than the density-based population."
]
},
{
"cell_type": "heading",
"level": 1,
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Fin"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This presentation was written using the [IPython notebook](http://ipython.org/ipython-doc/dev/interactive/htmlnotebook.html).\n",
"\n",
"The code for this presentation is available on [GitHub](https://github.com/yoavram/ipython-notebooks/blob/master/simulation%20frameworks.ipynb).\n",
"\n",
"The presentation can be viewed online on [slideviewer](http://slideviewer.herokuapp.com/urls/raw.github.com/yoavram/ipython-notebooks/master/simulation%2520frameworks.ipynb#/), or you could install the latest versions of IPython (0.14.dev) and [nbconvert](https://github.com/damianavila/nbconvert/commit/59510783f50e8779feb84c1e2d7cc6219dc67e28) - follow this [recipe](https://gist.github.com/4662688).\n",
"\n",
"The presentation is published under a a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.\n",
"\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"source": [
"The following code uses `nbconvert` to knit the notebook to an HTML slideshow and starts it in the browser:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"!python ..\\nbconvert\\nbconvert.py -f reveal \"simulation frameworks.ipynb\""
],
"language": "python",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"outputs": [],
"prompt_number": 24
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"!\"simulation frameworks_slides.html\""
],
"language": "python",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"outputs": [],
"prompt_number": 22
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}