{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Quickstart example for cancer simulation \n", "This notebook illustrates how to run a 2D cancer simulation using CancerSim. It's a rather contrieved example with no actual scientific background. It's main purpose is to give a simple example to be used as a template for more complex simulation runs. It also demonstrates how to parametrize the simulation through the `CancerSimulationParameters` API instead of the `params.py` module.\n", "\n", "The simulation treats a 2D tumour on a 20x20 grid for 10 generations. Healthy cells and cancer cells differ by their division probabilities (0.5 vs 0.8), death probabilities (0.1 vs. 0.4), and mutation probabilities (0.2 vs. 0.8). The first cancer cell carries 2 mutations, new mutations occur with a 20% probability and 10 fold abundance. The first advantageous mutation occurs in the 3rd generation. We sample 10% of the tumour at a read depth of 100.\n", "\n", "After the run, we plot the tumour growth curve and the mutation frequency histograms for the whole tumour and the sampled tumour." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Import modules " ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# The cancer simulation module.\n", "from casim import casim\n", "import logging" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# 3rd party modules.\n", "import os, shutil\n", "from wand.image import Image as WImage # To render pdf images in nb.\n", "from glob import glob" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Setup parameters " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "parameters=casim.CancerSimulatorParameters(\n", " matrix_size=20,\n", " number_of_generations=10,\n", " division_probability=0.5,\n", " adv_mutant_division_probability=0.8,\n", " death_probability=0.1,\n", " adv_mutant_death_probability=0.4,\n", " mutation_probability=0.2,\n", " adv_mutant_mutation_probability=0.8,\n", " number_of_mutations_per_division=10,\n", " adv_mutation_wait_time=3,\n", " number_of_initial_mutations=2,\n", " sampling_fraction=0.1,\n", " plot_tumour_growth=True,\n", " export_tumour=True\n", " )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Setup the simulation engine. " ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "if os.path.isdir('out'):\n", " shutil.rmtree('out')" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "cancer_sim = casim.CancerSimulator(parameters, seed=1, outdir='out/')" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "# Get more verbose logging.\n", "logger = logging.getLogger().setLevel(\"INFO\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Run the simulation " ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "scrolled": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2020-08-10 16:14:45,538 INFO: Running in single tumour mode.\n", "2020-08-10 16:14:45,540 INFO: First cell at (10, 10).\n", "2020-08-10 16:14:45,542 INFO: Ready to start CancerSim run with these parameters:\n", "2020-08-10 16:14:45,543 INFO: matrix_size = 20\n", "2020-08-10 16:14:45,544 INFO: number_of_generations = 10\n", "2020-08-10 16:14:45,545 INFO: division_probability = 0.5\n", "2020-08-10 16:14:45,546 INFO: adv_mutant_division_probability = 0.8\n", "2020-08-10 16:14:45,547 INFO: death_probability = 0.1\n", "2020-08-10 16:14:45,547 INFO: adv_mutant_death_probability = 0.4\n", "2020-08-10 16:14:45,548 INFO: mutation_probability = 0.2\n", "2020-08-10 16:14:45,549 INFO: adv_mutant_mutation_probability = 0.8\n", "2020-08-10 16:14:45,550 INFO: number_of_mutations_per_division = 10\n", "2020-08-10 16:14:45,551 INFO: adv_mutation_wait_time = 3\n", "2020-08-10 16:14:45,551 INFO: number_of_initial_mutations = 2\n", "2020-08-10 16:14:45,552 INFO: tumour_multiplicity = single\n", "2020-08-10 16:14:45,553 INFO: read_depth = 100\n", "2020-08-10 16:14:45,554 INFO: sampling_fraction = 0.1\n", "2020-08-10 16:14:45,554 INFO: plot_tumour_growth = True\n", "2020-08-10 16:14:45,555 INFO: export_tumour = True\n", "2020-08-10 16:14:45,556 INFO: Tumour growth in progress.\n", "2020-08-10 16:14:45,560 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,567 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,571 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,572 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,578 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,582 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,583 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,586 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,587 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,588 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,591 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,593 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,593 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,594 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,595 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,598 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,598 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,602 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,604 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,605 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,607 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,609 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,610 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,612 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,616 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,616 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,617 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,618 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,619 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,621 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,622 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,623 INFO: No new mutation in normal division, inheriting from parent\n", "2020-08-10 16:14:45,624 INFO: All generations finished. Starting tumour reconstruction.\n", "2020-08-10 16:14:45,625 INFO: Reconstruction done, get statistics.\n", "2020-08-10 16:14:45,630 INFO: Exporting simulation data\n", "2020-08-10 16:14:45,901 INFO: Growth curve graph written to out/cancer_1/simOutput/growthCurve.pdf.\n", "2020-08-10 16:14:46,082 INFO: CancerSim run has finished.\n", "2020-08-10 16:14:46,084 INFO: Simulation output written to: out/cancer_1/simOutput.\n", "2020-08-10 16:14:46,084 INFO: Log files written to: out/cancer_1/log.\n", "2020-08-10 16:14:46,085 INFO: Consumed Wall time of this run: 0.525742 s.\n" ] }, { "data": { "text/plain": [ "0" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cancer_sim.run()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Output\n", "After the run has finished, you should find the results in\n", "`out/cancer_1/simOutput`." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "death_list.p\t mtx_VAF.txt\t\t sample_out_12_11.txt\r\n", "growthCurve.pdf mut_container.p\t wholeTumourVAFHistogram.pdf\r\n", "mtx.p\t\t sampleHistogram_12_11.pdf\r\n" ] } ], "source": [ "!ls out/cancer_1/simOutput" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Files with the extension `.p` are binary files (python pickles) needed to\n", "restart a simulation. Let's take a look at the `.txt` files. They contain the simulation output:\n", "`mtx_VAF.txt` is a datafile with three columns: `mutation_id` lists the index of\n", "each primary mutation, `additional_mut_id` indexes the subsequent mutations that occur in a cell of\n", "a given `mutation_id`; `frequency` is the frequency at which a given mutation occurs.\n", "\n", "The file `sample_out_502_488.txt` lists all mutations of the artificial sample\n", "taken from the whole tumour. Columns are identical to `mtx_VAF.txt`.\n", " \n", "The two `.pdf` files are plots of the whole tumour histogram and the sampled\n", "tumour histogram, respectively. You should see figures similar to these:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Display results. \n", "The mutation frequency histogram for the whole tumour and the for sampled part of the tumour, as well as the tumour growth curve (number of tumour cells vs. time) are stored as pdf images in the simulation output directory. " ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "image_path=os.path.join(cancer_sim.outdir,'cancer_1', 'simOutput')" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "pdfs = glob(os.path.join(image_path,\"*.pdf\"))" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['out/cancer_1/simOutput/growthCurve.pdf',\n", " 'out/cancer_1/simOutput/sampleHistogram_12_11.pdf',\n", " 'out/cancer_1/simOutput/wholeTumourVAFHistogram.pdf']" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pdfs" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "out/cancer_1/simOutput/growthCurve.pdf\n" ] }, { "data": { "image/png": "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yFQtezaY26yXNLSGNdVogLsEi6w6ltfULM1ZiU00GvjoWTy/ARoaYY00GuDx/X7F8xugGcEaaTQwgPg+AQ1NiQ00GlgPIL5PQF88HcOI7xPQE8EGEt8noBeCWbOBxPcJ6INgw4nvE9ADwQYU3yegc4JtiuGRIcX3CeiWYGLHY5EBxfcJ6JBg50LVxRj/mz+hjtEVwazJNN+1DyrphGDWXV0MUEUHBMvDxVBLitYF2z7ugLSdUQT3aWhdsEPRCHRGFC4moANTIqgDBOsZEKxnQLCeAcF6BgTrGRCsZ0CwntG8YL9/YoCO7/7TtGDf/F74iaq/8Zuv1997/X//17RgRYyeX6+/+frWefcHDsFqomqDvPv6d//DAAAAeBfJjh1VLvcq+tnKYaq9gc+Yyq1r+vd7icL1rRNFsa7wB5sBM3SlDzwJVH6+5uoxOyn9/ezSlaYPmHqinRR+Yf7PGSjZeeykJJjaDxe9n3ah2lu0yi5KPzI1w9Y/97n6KswwURHM1w09Oir8fMPYRX1yrnKx1ARLIpXLk8DVlKZk/eTHgcoHEBrhTuXvbxkvUBQsiSKVNXunG0pDhA9PU8FXcUwXYLdPvg5fP2oqU4KiXryJKtNjBaslXcM8hQ/cTwVXub594jBQ+cgZbwaovu5/PW5o6CpT2ildBPu0hvEWfipX+7wZoOqNmNIYTRR//FH11wcAAABAp+FFbbm1cS5se4ljSphs3utTADVmescchO5XCdYvM3wgCPfEKdDMdKyltjnzU+V2huFxBf3YSG+t2O6U31F7J8Mz0+ePLD3ZiMUFO0PldhvURgh21FMNEj7OQs3QjqHn7tLvSXhyQ6bpkRuJwIkXMpfxsEIca4HhsvQaLY5cJRciqEvmANRN/uHH2olxwXQeSzVEyMcLNN3VXOHlzOqBR7tEN/lLYkrUd+njxnNuwRUhmKvz6c3U05HGk5c8Q4+EYOJl7ta9EcwLdkEuMxcsZsqhblAH/tH7kSEMiCCK+MhKEl7nlo+0I48gXASLDR4oTcJwJ3y16YKnaemUqUGvNjG51/iUCMEYd98avBtCwEeYFodR6F4F84OAx9xiPh0y3Qj5NOqGUdQrJ3vvSXKfsS8ep1IcuSf5KL6nDxLhE06O2ckmP45FJgM/J7tGzWcMmiYKMQX2CkRBAAAAAAAk+T9n188rjo0snAAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMC0wOC0xMFQxNDoxNTo0MyswMDowME0oOzcAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjAtMDgtMTBUMTQ6MTU6NDMrMDA6MDA8dYOLAAAAIHRFWHRwZGY6SGlSZXNCb3VuZGluZ0JveAA0MzJ4Mjg4KzArMBDQ8AgAAAATdEVYdHBkZjpWZXJzaW9uAFBERi0xLjQkMWpXAAAASnRFWHRzaWduYXR1cmUAMDJkZTllNTA1MDVmYTlkZTNkMWE4YzZiOGFkMzM5M2QyMmMxMjQ0MDIwZDgyNzU5N2NjNGM5MjI5YmY2MGI2Zbep+78AAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "out/cancer_1/simOutput/sampleHistogram_12_11.pdf\n" ] }, { "data": { "image/png": "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s/n++z8+YeuQ2dukpU/26ZQqklZ+p1W/zDpk9jZp6Xf0X3+fVW8Qh8zeJi39lqQ+SFoH5n1WvUUcMnuTtBQAAMAzNLT0Q24CV28mrjMS7T93jFW7A8KrKeperNpP7a47Vu1OcYa9K6up+baYfJBxf+aPfRO4eivrOqbrxN5tHqt2Z/dib59rrXoUHfVHqx4F9aLdt7ISVj75BNlw/fzJzpXfBK7e/LnjOm7TdXu3eax63vo7V16rtgc22fqpXb1m2rv69VFQ6yfIxiBq943xU7eBq7dyt87eDbdW7cqgvcJi1a2QQg9Hq1ZiIrNzD4vCbj5BNnx9oU55QNjtOt3e9nStetLVbmFrnE30bbfza75WPVit9VFhazH5aF0DHurcCly9xM06nRkOV22stHuPBbHqWqjdW22t2l/H0Lvb1EXYWkxG7OQPB7XaDFy9xLKOqg/4ulbtzujJtYivZzJ+qWrXFDd7t1qs2h949x8EZ2G+6rmYvDRCu23tvidbgauXWNYRSvk0xHtbtVB1+LbubhJj1dVopNjbbYhVK2Ot3d1LdChfdSgmM637pvg97Fjgal5H1bVPQ7x79bnqOWa2vB6p2v/ndx+E1qprtfscbv6w9Vz1XAwAAAAAvkMaH7FVsR89tLdTz3SvSe6OCgNOpA8R63jatJ6p+6mnwgYx7u8BAkakdeerQng5ddu0VlKrekn1POVctp1051Q09Z0X1XbWzZ06qifpZ5CkpnKL+b54636pK/dm7/rlTS8b5VYfcsfOf3gkmZY6J8yH4WStO1U3zai7eUpWtelHQ5XQo/ZXTOpJu7lmGjs9draaTONW9SlkiCrbK91V0s0yVWNoJH/HbLf31B+8gqSO7HgVNjeE7UR9mJLzbcqN9ZctxpAuRobGUkxKCTVPLcLcr2oS/s1aLC2rnmpx+iiS94Z0W9p6W87MGDTpnrpV2Bz/9vHce2EdEbW+A2IrpYMwfwNneHMR1tjcF6feAW7T9tMsbKwWTc5O3MMGMUf4ngjzsfy26nufi8TvhZYGvzO1izAfwq1de7r/UiR4hbAv+E6H0Vr66OkgjbbLlL9Ko834VNjolhbV4N40bpe0VlNFQtrFeNW6OX5lgcgeN+HEK4Sa66Gao7dxyr/O4VT3b/5lfp1XqdUS5pXza9v6JVV4cy7Nv40ux3fIxmUYvf9aPzid4eW3DlxlAQAAAAD4Yfk/kWVjK7p5KKEAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjAtMDgtMTBUMTQ6MTU6NDMrMDA6MDBNKDs3AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIwLTA4LTEwVDE0OjE1OjQzKzAwOjAwPHWDiwAAACB0RVh0cGRmOkhpUmVzQm91bmRpbmdCb3gANDMyeDI4OCswKzAQ0PAIAAAAE3RFWHRwZGY6VmVyc2lvbgBQREYtMS40JDFqVwAAAEp0RVh0c2lnbmF0dXJlADY4ZDcwOGYxZTA0MjhmYmY4YTdhZGRiYmRlMDE3ODcxOWM2MDI2MjY3Y2IxMGIxYzc0ZWE0ZDJlNWM5YjM0MzSj48fuAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "out/cancer_1/simOutput/wholeTumourVAFHistogram.pdf\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for pdf in pdfs:\n", " print(pdf)\n", " display(WImage(filename=pdf))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Load binary files (pickles)\n", "The remaining output files are serialized versions (\"pickles\") of the tumour\n", "geometry as a 2D matrix (`mtx.p`), the death list (`death_list.p`), and the\n", "mutation list (list of tuples listing the parent and the mutation ID of each\n", "tumour cell, `mut_container.p`).\n", "\n", "To read the pickled data, we define a utility function" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "import pickle\n", "from matplotlib import pyplot" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "def unpickle(file):\n", "\n", " with open(os.path.join(cancer_sim._CancerSimulator__simdir, file),'rb') as fp:\n", " return pickle.load(fp)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "# Load the mutation matrix\n", "mtx=unpickle('mtx.p').toarray()" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Plot the tumour as a 2D map color coding the mutation ID\n", "cmap = pyplot.cm.get_cmap('PRGn', mtx.max()+1)\n", "\n", "pyplot.matshow(mtx, cmap=cmap)\n", "pyplot.colorbar()" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[(0, 0),\n", " (0, 1),\n", " (1, 2),\n", " (1, 3),\n", " (1, 4),\n", " (1, 5),\n", " (5, 6),\n", " (5, 7),\n", " (6, 8),\n", " (6, 9),\n", " (1, 10),\n", " (1, 11),\n", " (3, 12),\n", " (3, 13),\n", " (3, 14),\n", " (3, 15),\n", " (4, 16),\n", " (4, 17),\n", " (15, 18),\n", " (15, 19),\n", " (1, 20),\n", " (1, 21)]" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "unpickle('mut_container.p')" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.7.3" } }, "nbformat": 4, "nbformat_minor": 2 }