Created
September 24, 2019 15:55
-
-
Save steven-tey/3cece1a500f416ff8e4d48b76689da86 to your computer and use it in GitHub Desktop.
CS166 Session 3.1 Pre-Class Work
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# Simple CA simulator in Python\n", | |
"#\n", | |
"# *** Hosts & Pathogens ***\n", | |
"#\n", | |
"# Copyright 2008-2012 Hiroki Sayama\n", | |
"# [email protected]\n", | |
"\n", | |
"# Modified to run with Python 3\n", | |
"interactive = False\n", | |
"import matplotlib\n", | |
"if interactive:\n", | |
" matplotlib.use('TkAgg')\n", | |
"import matplotlib.pyplot as plt\n", | |
"import pylab as PL\n", | |
"import random as RD\n", | |
"import scipy as SP\n", | |
"\n", | |
"RD.seed()\n", | |
"\n", | |
"width = 50\n", | |
"height = 50\n", | |
"initProb = 0.01\n", | |
"infectionRate = 0.85\n", | |
"regrowthRate = 0.15\n", | |
"\n", | |
"def init():\n", | |
" global time, config, nextConfig\n", | |
"\n", | |
" time = 0\n", | |
" \n", | |
" config = SP.zeros([height, width])\n", | |
" for x in range(width):\n", | |
" for y in range(height):\n", | |
" if RD.random() < initProb:\n", | |
" state = 2\n", | |
" else:\n", | |
" state = 1\n", | |
" config[y, x] = state\n", | |
"\n", | |
" nextConfig = SP.zeros([height, width])\n", | |
"\n", | |
"denslist=[]\n", | |
"\n", | |
"def draw():\n", | |
" density =[]\n", | |
" PL.cla()\n", | |
" PL.pcolor(config, vmin = 0, vmax = 2, cmap = PL.cm.jet)\n", | |
" PL.axis('image')\n", | |
" PL.title(f'After {time} steps (t = {str(time)})')\n", | |
" density.append(sum((sum(config==1)/(sum(config==1)+sum(config==0))))/len((sum(config==1)/(sum(config==1)+sum(config==0)))))\n", | |
" denslist.append(density)\n", | |
"\n", | |
"def step():\n", | |
" global time, config, nextConfig\n", | |
"\n", | |
" time += 1\n", | |
"\n", | |
" for x in range(width):\n", | |
" for y in range(height):\n", | |
" state = config[y, x]\n", | |
" if state == 0:\n", | |
" for dx in range(-1, 2):\n", | |
" for dy in range(-1, 2):\n", | |
" if config[(y+dy)%height, (x+dx)%width] == 1:\n", | |
" if RD.random() < regrowthRate:\n", | |
" state = 1\n", | |
" elif state == 1:\n", | |
" for dx in range(-1, 2):\n", | |
" for dy in range(-1, 2):\n", | |
" if config[(y+dy)%height, (x+dx)%width] == 2:\n", | |
" if RD.random() < infectionRate:\n", | |
" state = 2\n", | |
" else:\n", | |
" state = 0\n", | |
"\n", | |
" nextConfig[y, x] = state\n", | |
"\n", | |
" config, nextConfig = nextConfig, config\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"if interactive:\n", | |
" # Set up the interactive user interface.\n", | |
" import pycxsimulator\n", | |
" gui = pycxsimulator.GUI(parameterSetters=[sim.set_density])\n", | |
" gui.start(func=[sim.initialize, sim.draw, sim.step])\n", | |
"\n", | |
"else:\n", | |
" # Run the simulator for 100 steps and show some of the steps.\n", | |
" init()\n", | |
" draw()\n", | |
" PL.figure()\n", | |
"\n", | |
" for i in range(5):\n", | |
" step()\n", | |
" draw()\n", | |
" PL.figure()\n", | |
" print('')\n", | |
"\n", | |
" for i in range(95):\n", | |
" step()\n", | |
" draw()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 13, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"[<matplotlib.lines.Line2D at 0x118443400>]" | |
] | |
}, | |
"execution_count": 13, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"# Here is the plot of how density changes over time, as aforementioned.\n", | |
"\n", | |
"plt.title('Plot of how density changes over time')\n", | |
"plt.xlabel(\"Generations\")\n", | |
"plt.ylabel(\"Density\")\n", | |
"plt.plot(denslist)" | |
] | |
} | |
], | |
"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 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment