diff --git a/.DS_Store b/.DS_Store
deleted file mode 100644
index 08bf0ea..0000000
Binary files a/.DS_Store and /dev/null differ
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..fdb6190
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,370 @@
+
+# Created by https://www.toptal.com/developers/gitignore/api/intellij,macos,windows,linux,julia,python,cmake
+# Edit at https://www.toptal.com/developers/gitignore?templates=intellij,macos,windows,linux,julia,python,cmake
+
+### CMake ###
+CMakeLists.txt.user
+CMakeCache.txt
+CMakeFiles
+CMakeScripts
+Testing
+Makefile
+cmake_install.cmake
+install_manifest.txt
+compile_commands.json
+CTestTestfile.cmake
+_deps
+CMakeUserPresets.json
+
+### CMake Patch ###
+# External projects
+*-prefix/
+
+### Intellij ###
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
+# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
+
+# User-specific stuff
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/**/usage.statistics.xml
+.idea/**/dictionaries
+.idea/**/shelf
+
+# Generated files
+.idea/**/contentModel.xml
+
+# Sensitive or high-churn files
+.idea/**/dataSources/
+.idea/**/dataSources.ids
+.idea/**/dataSources.local.xml
+.idea/**/sqlDataSources.xml
+.idea/**/dynamic.xml
+.idea/**/uiDesigner.xml
+.idea/**/dbnavigator.xml
+
+# Gradle
+.idea/**/gradle.xml
+.idea/**/libraries
+
+# Gradle and Maven with auto-import
+# When using Gradle or Maven with auto-import, you should exclude module files,
+# since they will be recreated, and may cause churn. Uncomment if using
+# auto-import.
+# .idea/artifacts
+# .idea/compiler.xml
+# .idea/jarRepositories.xml
+# .idea/modules.xml
+# .idea/*.iml
+# .idea/modules
+# *.iml
+# *.ipr
+
+# CMake
+cmake-build-*/
+
+# Mongo Explorer plugin
+.idea/**/mongoSettings.xml
+
+# File-based project format
+*.iws
+
+# IntelliJ
+out/
+
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+
+# JIRA plugin
+atlassian-ide-plugin.xml
+
+# Cursive Clojure plugin
+.idea/replstate.xml
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+fabric.properties
+
+# Editor-based Rest Client
+.idea/httpRequests
+
+# Android studio 3.1+ serialized cache file
+.idea/caches/build_file_checksums.ser
+
+### Intellij Patch ###
+# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
+
+# *.iml
+# modules.xml
+# .idea/misc.xml
+# *.ipr
+
+# Sonarlint plugin
+# https://plugins.jetbrains.com/plugin/7973-sonarlint
+.idea/**/sonarlint/
+
+# SonarQube Plugin
+# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin
+.idea/**/sonarIssues.xml
+
+# Markdown Navigator plugin
+# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced
+.idea/**/markdown-navigator.xml
+.idea/**/markdown-navigator-enh.xml
+.idea/**/markdown-navigator/
+
+# Cache file creation bug
+# See https://youtrack.jetbrains.com/issue/JBR-2257
+.idea/$CACHE_FILE$
+
+# CodeStream plugin
+# https://plugins.jetbrains.com/plugin/12206-codestream
+.idea/codestream.xml
+
+### Julia ###
+# Files generated by invoking Julia with --code-coverage
+*.jl.cov
+*.jl.*.cov
+
+# Files generated by invoking Julia with --track-allocation
+*.jl.mem
+
+# System-specific files and directories generated by the BinaryProvider and BinDeps packages
+# They contain absolute paths specific to the host computer, and so should not be committed
+deps/deps.jl
+deps/build.log
+deps/downloads/
+deps/usr/
+deps/src/
+
+# Build artifacts for creating documentation generated by the Documenter package
+docs/build/
+docs/site/
+
+# File generated by Pkg, the package manager, based on a corresponding Project.toml
+# It records a fixed state of all packages used by the project. As such, it should not be
+# committed for packages, but should be committed for applications that require a static
+# environment.
+Manifest.toml
+
+### Linux ###
+*~
+
+# temporary files which can be created if a process still has a handle open of a deleted file
+.fuse_hidden*
+
+# KDE directory preferences
+.directory
+
+# Linux trash folder which might appear on any partition or disk
+.Trash-*
+
+# .nfs files are created when an open file is removed but is still being accessed
+.nfs*
+
+### macOS ###
+# General
+.DS_Store
+.AppleDouble
+.LSOverride
+
+# Icon must end with two \r
+Icon
+
+
+# Thumbnails
+._*
+
+# Files that might appear in the root of a volume
+.DocumentRevisions-V100
+.fseventsd
+.Spotlight-V100
+.TemporaryItems
+.Trashes
+.VolumeIcon.icns
+.com.apple.timemachine.donotpresent
+
+# Directories potentially created on remote AFP share
+.AppleDB
+.AppleDesktop
+Network Trash Folder
+Temporary Items
+.apdisk
+
+### Python ###
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+parts/
+sdist/
+var/
+wheels/
+pip-wheel-metadata/
+share/python-wheels/
+*.egg-info/
+.installed.cfg
+*.egg
+MANIFEST
+
+# PyInstaller
+# Usually these files are written by a python script from a template
+# before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.nox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*.cover
+*.py,cover
+.hypothesis/
+.pytest_cache/
+pytestdebug.log
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+local_settings.py
+db.sqlite3
+db.sqlite3-journal
+
+# Flask stuff:
+instance/
+.webassets-cache
+
+# Scrapy stuff:
+.scrapy
+
+# Sphinx documentation
+docs/_build/
+doc/_build/
+
+# PyBuilder
+target/
+
+# Jupyter Notebook
+.ipynb_checkpoints
+
+# IPython
+profile_default/
+ipython_config.py
+
+# pyenv
+.python-version
+
+# pipenv
+# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
+# However, in case of collaboration, if having platform-specific dependencies or dependencies
+# having no cross-platform support, pipenv may install dependencies that don't work, or not
+# install all needed dependencies.
+#Pipfile.lock
+
+# poetry
+#poetry.lock
+
+# PEP 582; used by e.g. github.com/David-OConnor/pyflow
+__pypackages__/
+
+# Celery stuff
+celerybeat-schedule
+celerybeat.pid
+
+# SageMath parsed files
+*.sage.py
+
+# Environments
+# .env
+.env/
+.venv/
+env/
+venv/
+ENV/
+env.bak/
+venv.bak/
+pythonenv*
+
+# Spyder project settings
+.spyderproject
+.spyproject
+
+# Rope project settings
+.ropeproject
+
+# mkdocs documentation
+/site
+
+# mypy
+.mypy_cache/
+.dmypy.json
+dmypy.json
+
+# Pyre type checker
+.pyre/
+
+# pytype static type analyzer
+.pytype/
+
+# operating system-related files
+# file properties cache/storage on macOS
+*.DS_Store
+# thumbnail cache on Windows
+Thumbs.db
+
+# profiling data
+.prof
+
+
+### Windows ###
+# Windows thumbnail cache files
+Thumbs.db:encryptable
+ehthumbs.db
+ehthumbs_vista.db
+
+# Dump file
+*.stackdump
+
+# Folder config file
+[Dd]esktop.ini
+
+# Recycle Bin used on file shares
+$RECYCLE.BIN/
+
+# Windows Installer files
+*.cab
+*.msi
+*.msix
+*.msm
+*.msp
+
+# Windows shortcuts
+*.lnk
+
+# End of https://www.toptal.com/developers/gitignore/api/intellij,macos,windows,linux,julia,python,cmake
diff --git a/Code/.DS_Store b/Code/.DS_Store
deleted file mode 100644
index 9bf6d1b..0000000
Binary files a/Code/.DS_Store and /dev/null differ
diff --git a/Code/Lotka_Volterra/.ipynb_checkpoints/First_Implementation_Walkthrough-checkpoint.ipynb b/Code/Lotka_Volterra/.ipynb_checkpoints/First_Implementation_Walkthrough-checkpoint.ipynb
deleted file mode 100644
index 50d882f..0000000
--- a/Code/Lotka_Volterra/.ipynb_checkpoints/First_Implementation_Walkthrough-checkpoint.ipynb
+++ /dev/null
@@ -1,5599 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Walkthrough of Omega Lokta-Volterra Implementation "
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "In this notebook we will walkthrough our first implementation of Lokta-Volterra using Omega. The simulation is done using the Gillespie algorithm to implement stochastic variation. This implementation was built to use an Omega intialized random variable for every step of Gillespie. This allows us to directly intervene and condition on individual random variables. A downside to this approach is that it can take more time to run."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Load Packages"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "## Load Packages\n",
- "using Omega\n",
- "using StatsBase\n",
- "using Random\n",
- "using Plots\n",
- "using Distributions"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Main Functions"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "The main functions of the implementation are defined below. These functions are built to repeat at each step of Gillespie and reference the previous step."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "one_simulation_pred (generic function with 1 method)"
- ]
- },
- "execution_count": 2,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "function get_hazards(rng, n)\n",
- " \"\"\"\n",
- " Compute the hazard function given the current states. \"spawn_prey\" represents \n",
- " the event of a prey being born, \"prey2pred\" represents a predator consuming \n",
- " a new prey and consequently spawning a new predator, \"pred_dies\" represents \n",
- " the death of a predator. The function probabilistically selects one of these \n",
- " based on their weights.\n",
- "\n",
- " args:\n",
- " rng(): julia base random number generator, do not need to explicitly pass\n",
- " n(int): An index to the current step in prey and pred lists. Used to pull\n",
- " most recent values for calculations\n",
- " \"\"\"\n",
- "\n",
- " ecology = Dict(\"prey\" => prey_list[n](rng), \"pred\" => pred_list[n](rng))\n",
- "\n",
- " hazards = Dict(\n",
- " \"spawn_prey\" => theta(rng)[\"spawn_prey\"] * ecology[\"prey\"],\n",
- " \"prey2pred\" => theta(rng)[\"prey2pred\"] * ecology[\"prey\"] * ecology[\"pred\"],\n",
- " \"pred_dies\" => theta(rng)[\"pred_dies\"] * ecology[\"pred\"]\n",
- " )\n",
- "\n",
- " vals = collect(values(hazards))\n",
- " sum_vals = sum(vals)\n",
- " prob_vals = vals/sum_vals\n",
- " categorical(rng, prob_vals)\n",
- "end\n",
- "\n",
- "function one_simulation_prey(rng, n, transitions)\n",
- "\n",
- " \"\"\"\n",
- " Simulates one step of gillespie for prey. Takes generated hazards\n",
- " adds it to prey and outputs the new value.\n",
- " \n",
- " args:\n",
- " rng(): julia base random number generator, do not need to explicitly pass\n",
- " n(int): An index to the current step in prey and pred lists. Used to pull\n",
- " most recent values for calculations\n",
- " transitions: Matrix that determines how much prey/pred should change based\n",
- " on selected hazard\n",
- " \"\"\"\n",
- "\n",
- " hazard_result = hazards_list[n](rng)\n",
- " prey_val = prey_list[n](rng)\n",
- " labels = [\"spawn_prey\", \"pred_dies\",\"prey2pred\"]\n",
- " transition = transitions[labels[hazard_result]]\n",
- " new_prey = prey_val + transition[1]\n",
- "\n",
- " # Enforce only positive integers\n",
- " max(1, new_prey)\n",
- "\n",
- "end\n",
- "\n",
- "function one_simulation_pred(rng, n, transitions)\n",
- "\n",
- " \"\"\"\n",
- " Simulates one step of gillespie for pred. Takes generated hazards\n",
- " adds it to pred and outputs the new value.\n",
- " \n",
- " args:\n",
- " rng(): julia base random number generator, do not need to explicitly pass\n",
- " n(int): An index to the current step in prey and pred lists. Used to pull\n",
- " most recent values for calculations\n",
- " transitions: Matrix that determines how much prey/pred should change based\n",
- " on selected hazard\n",
- " \"\"\"\n",
- "\n",
- " hazard_result = hazards_list[n](rng)\n",
- " pred_val = pred_list[n](rng)\n",
- " labels = [\"spawn_prey\", \"pred_dies\",\"prey2pred\"]\n",
- " transition = transitions[labels[hazard_result]]\n",
- " new_pred = pred_val + transition[2]\n",
- "\n",
- " # Enforce only positive integers\n",
- " max(1, new_pred)\n",
- "\n",
- "end\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "generate_rates (generic function with 1 method)"
- ]
- },
- "execution_count": 3,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "function generate_rates(rng)\n",
- " \n",
- " \"\"\"\n",
- " Creates a dictionary with rates needed to calculate hazards. Created in \n",
- " a single function so that rates are only generated once and then used\n",
- " for the entire simulation.\n",
- " \"\"\"\n",
- " \n",
- " Dict(\"spawn_prey\" => spawn_prey(rng),\n",
- " \"prey2pred\" => prey2pred(rng),\n",
- " \"pred_dies\" => pred_dies(rng))\n",
- "\n",
- "end\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Build Simulation"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "In order to simulate Lotka-Volterra we need to use the above functions to create all the steps of Gillespie."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Initalize Parameters"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Dict{String,Array{Int64,1}} with 3 entries:\n",
- " \"spawn_prey\" => [1, 0]\n",
- " \"pred_dies\" => [0, -1]\n",
- " \"prey2pred\" => [-1, 1]"
- ]
- },
- "execution_count": 4,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "## Transition Matrix\n",
- "Pre = [[1, 0], [1, 1], [0, 1]]\n",
- "Post = [[2, 0], [0, 2], [0, 0]]\n",
- "transition_mat = Post - Pre\n",
- "transitions = Dict(\"spawn_prey\" => transition_mat[1,],\n",
- " \"prey2pred\" => transition_mat[2,],\n",
- " \"pred_dies\" => transition_mat[3,])\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Rates and starting values determine the entire trajectory of the simulation. The lower trajectory was used to recreate the plots in the Omega paper. The higher gives better visualization for this specific simulation (can see the stochasiticity better). There could be some arguement whether the rates should be random variables, but we created them that way here in order to test conditionals and interventions.\n",
- "\n",
- "One important aspect for reproducibility is to use a random seed. In jupyter notebook we need to intialize the seed in every code block."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "6:generate_rates()::Any"
- ]
- },
- "execution_count": 5,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Random variables for small cycles\n",
- "# prey_init = normal(10., .001)\n",
- "# pred_init = normal(10., .001)\n",
- "\n",
- "# # Random variables for rates\n",
- "# spawn_prey = normal(1.5, .01)\n",
- "# prey2pred = normal(1.0, .0001)\n",
- "# pred_dies = normal(3.0, .0075)\n",
- "\n",
- "# Random variables for large cycles\n",
- "prey_init = normal(50., .001)\n",
- "pred_init = normal(100., .001)\n",
- "\n",
- "# Random variables for rates\n",
- "spawn_prey = normal(.9, .01)\n",
- "prey2pred = normal(.004, .0001)\n",
- "pred_dies = normal(.4, .0075)\n",
- "\n",
- "Random.seed!(1234)\n",
- "theta = ciid(generate_rates)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Generate Random Var List (Passed to rand function)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "In this section we loop over how many steps we want in the algorithm and create the random variables needed. These random variables are then compiled into a single tuple which can be passed to the rand() function."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {},
- "outputs": [],
- "source": [
- "## Initialize lists and add starting rand vars\n",
- "hazards_list = Any[]\n",
- "prey_list = Any[]\n",
- "pred_list = Any[]\n",
- "push!(prey_list, prey_init)\n",
- "push!(pred_list, pred_init)\n",
- "\n",
- "## How many time periods to cycle over\n",
- "N = 5000\n",
- "\n",
- "## Create a prey/pred/hazard for each time period\n",
- "for f in 2:N\n",
- " last = f - 1\n",
- " hazards_temp = ciid(get_hazards, last) # individual step\n",
- " prey_temp = ciid(one_simulation_prey, last, transitions) # individual step\n",
- " pred_temp = ciid(one_simulation_pred, last, transitions) # individual step\n",
- " push!(hazards_list, hazards_temp)\n",
- " push!(prey_list, prey_temp)\n",
- " push!(pred_list, pred_temp)\n",
- "end\n",
- "\n",
- "## Convert lists to single tuple\n",
- "random_var_tuple = (Tuple(x for x in hazards_list)...,\n",
- " Tuple(x for x in prey_list)...,\n",
- " Tuple(x for x in pred_list)...,\n",
- " Tuple(Any[spawn_prey,prey2pred,pred_dies,theta])...)\n",
- "print()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Simulations"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Simple Simulation"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "We will run the first simulation without any conditionals or interventions."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/svg+xml": [
- "\n",
- "\n",
- "\n",
- " \n",
- " \n",
- " \n",
- " \n",
- "\n",
- "\n",
- " \n",
- " \n",
- " \n",
- " \n",
- "\n",
- "\n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- "\n",
- "0 \n",
- " \n",
- "\n",
- "1000 \n",
- " \n",
- "\n",
- "2000 \n",
- " \n",
- "\n",
- "3000 \n",
- " \n",
- "\n",
- "4000 \n",
- " \n",
- "\n",
- "5000 \n",
- " \n",
- "\n",
- "100 \n",
- " \n",
- "\n",
- "200 \n",
- " \n",
- "\n",
- "300 \n",
- " \n",
- "\n",
- "400 \n",
- " \n",
- "\n",
- "Simulation \n",
- " \n",
- "\n",
- "Time \n",
- " \n",
- "\n",
- "Quantity \n",
- " \n",
- " \n",
- " \n",
- "\n",
- " \n",
- " \n",
- "\n",
- "Prey \n",
- " \n",
- " \n",
- "\n",
- "Pred \n",
- " \n",
- " \n"
- ]
- },
- "execution_count": 7,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "## Sample\n",
- "Random.seed!(1234) ## Must initialize seed each time if run line by line\n",
- "samples = rand(random_var_tuple, 1, alg = RejectionSample)\n",
- "\n",
- "# extract run results and plot\n",
- "prey_vals = []\n",
- "pred_vals = []\n",
- "for x in 1:(N-1)\n",
- " push!(prey_vals,samples[1][N+x])\n",
- " push!(pred_vals,samples[1][(N*2)+x])\n",
- "end\n",
- "\n",
- "plot(hcat(prey_vals,pred_vals),\n",
- " title = \"Simulation\",\n",
- " xlabel = \"Time\",\n",
- " ylabel = \"Quantity\",\n",
- " label = [\"Prey\" \"Pred\"],\n",
- " lw = 1.25)\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Conditional Simulation"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Next we will condition the model on some restrictions are run simulations with the conditional."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "#### Recreate Model with Conditional Rand Vars"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "If model needs to condition on multiple values this is the easiest way to execute it. A single conditional can simply be passed to the rand function."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {},
- "outputs": [],
- "source": [
- "## Initialize lists and add starting rand vars\n",
- "hazards_list = Any[]\n",
- "prey_list = Any[]\n",
- "pred_list = Any[]\n",
- "\n",
- "push!(prey_list, prey_init)\n",
- "push!(pred_list, pred_init)\n",
- "\n",
- "## How many time periods to cycle over\n",
- "N = 5000 \n",
- "\n",
- "## Indices to condition on\n",
- "condition_index = 1000:1250\n",
- "\n",
- "## Create a prey/pred/hazard for each time period\n",
- "for f in 2:N\n",
- " last = f - 1\n",
- " hazards_temp = ciid(get_hazards, last) # individual step\n",
- " \n",
- " ## Condition on prey in this example\n",
- " if f in condition_index\n",
- " prey_temp_ = ciid(one_simulation_prey, last, transitions)\n",
- " prey_temp = cond(prey_temp_, prey_temp_ > 300) ## Conditional\n",
- " else\n",
- " prey_temp = ciid(one_simulation_prey, last, transitions)\n",
- " end\n",
- " \n",
- " pred_temp = ciid(one_simulation_pred, last, transitions) # individual step\n",
- "\n",
- " push!(hazards_list, hazards_temp)\n",
- " push!(prey_list, prey_temp)\n",
- " push!(pred_list, pred_temp)\n",
- "end\n",
- "\n",
- "random_var_tuple = (Tuple(x for x in hazards_list)...,\n",
- " Tuple(x for x in prey_list)...,\n",
- " Tuple(x for x in pred_list)...,\n",
- " Tuple(Any[spawn_prey,prey2pred,pred_dies,theta])...)\n",
- "print()\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Next we just simulate as before. One note here is that using the rejection sampling algorithm for conditionals can be dangerous. If the conditional is too restrictive, it can run forever. An alternative to this is to use the soft execution and a different algorithm (SSMH/NUTS) built into Omega. Here our conditional is not that restrictive and this is not necessary."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/svg+xml": [
- "\n",
- "\n",
- "\n",
- " \n",
- " \n",
- " \n",
- " \n",
- "\n",
- "\n",
- " \n",
- " \n",
- " \n",
- " \n",
- "\n",
- "\n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- "\n",
- "0 \n",
- " \n",
- "\n",
- "1000 \n",
- " \n",
- "\n",
- "2000 \n",
- " \n",
- "\n",
- "3000 \n",
- " \n",
- "\n",
- "4000 \n",
- " \n",
- "\n",
- "5000 \n",
- " \n",
- "\n",
- "0 \n",
- " \n",
- "\n",
- "100 \n",
- " \n",
- "\n",
- "200 \n",
- " \n",
- "\n",
- "300 \n",
- " \n",
- "\n",
- "400 \n",
- " \n",
- "\n",
- "500 \n",
- " \n",
- "\n",
- "Conditional Simulation (Prey > 300 T1000-1250) \n",
- " \n",
- "\n",
- "Time \n",
- " \n",
- "\n",
- "Quantity \n",
- " \n",
- " \n",
- " \n",
- "\n",
- " \n",
- " \n",
- "\n",
- "Prey \n",
- " \n",
- " \n",
- "\n",
- "Pred \n",
- " \n",
- " \n"
- ]
- },
- "execution_count": 7,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "Random.seed!(1234)\n",
- "samples = rand(random_var_tuple,\n",
- " 1, alg = RejectionSample)\n",
- "\n",
- "# extract run results and plot\n",
- "prey_vals = []\n",
- "pred_vals = []\n",
- "for x in 1:(N-1)\n",
- " push!(prey_vals,samples[1][N+x])\n",
- " push!(pred_vals,samples[1][(N*2)+x])\n",
- "end\n",
- "\n",
- "plot(hcat(prey_vals,pred_vals),\n",
- " title = \"Conditional Simulation (Prey > 300 T1000-1250)\",\n",
- " xlabel = \"Time\",\n",
- " ylabel = \"Quantity\",\n",
- " label = [\"Prey\" \"Pred\"],\n",
- " lw = 1.25)\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Intervention/Counterfactual"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Finally our model also allows us to run interventions and counterfactuals."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "#### Recreate Original Model for comparison"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 8,
- "metadata": {},
- "outputs": [],
- "source": [
- "## Initialize lists and add starting rand vars\n",
- "hazards_list = Any[]\n",
- "prey_list = Any[]\n",
- "pred_list = Any[]\n",
- "push!(prey_list, prey_init)\n",
- "push!(pred_list, pred_init)\n",
- "\n",
- "## How many time periods to cycle over\n",
- "N = 5000\n",
- "\n",
- "## Create a prey/pred/hazard for each time period\n",
- "for f in 2:N\n",
- " last = f - 1\n",
- " hazards_temp = ciid(get_hazards, last) # individual step\n",
- " prey_temp = ciid(one_simulation_prey, last, transitions) # individual step\n",
- " pred_temp = ciid(one_simulation_pred, last, transitions) # individual step\n",
- " push!(hazards_list, hazards_temp)\n",
- " push!(prey_list, prey_temp)\n",
- " push!(pred_list, pred_temp)\n",
- "end\n",
- "\n",
- "## Convert lists to single tuple\n",
- "random_var_tuple = (Tuple(x for x in hazards_list)...,\n",
- " Tuple(x for x in prey_list)...,\n",
- " Tuple(x for x in pred_list)...,\n",
- " Tuple(Any[spawn_prey,prey2pred,pred_dies,theta])...)\n",
- "print()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 9,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/svg+xml": [
- "\n",
- "\n",
- "\n",
- " \n",
- " \n",
- " \n",
- " \n",
- "\n",
- "\n",
- " \n",
- " \n",
- " \n",
- " \n",
- "\n",
- "\n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- "\n",
- "0 \n",
- " \n",
- "\n",
- "1000 \n",
- " \n",
- "\n",
- "2000 \n",
- " \n",
- "\n",
- "3000 \n",
- " \n",
- "\n",
- "4000 \n",
- " \n",
- "\n",
- "5000 \n",
- " \n",
- "\n",
- "100 \n",
- " \n",
- "\n",
- "200 \n",
- " \n",
- "\n",
- "300 \n",
- " \n",
- "\n",
- "400 \n",
- " \n",
- "\n",
- "Simulation \n",
- " \n",
- "\n",
- "Time \n",
- " \n",
- "\n",
- "Quantity \n",
- " \n",
- " \n",
- " \n",
- "\n",
- " \n",
- " \n",
- "\n",
- "Prey \n",
- " \n",
- " \n",
- "\n",
- "Pred \n",
- " \n",
- " \n"
- ]
- },
- "execution_count": 9,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "## Original Sim\n",
- "Random.seed!(1234)\n",
- "samples = rand(random_var_tuple, 1, alg = RejectionSample)\n",
- "\n",
- "# extract run results and plot\n",
- "prey_vals = []\n",
- "pred_vals = []\n",
- "for x in 1:(N-1)\n",
- " push!(prey_vals,samples[1][N+x])\n",
- " push!(pred_vals,samples[1][(N*2)+x])\n",
- "end\n",
- "\n",
- "plot(hcat(prey_vals,pred_vals),\n",
- " title = \"Simulation\",\n",
- " xlabel = \"Time\",\n",
- " ylabel = \"Quantity\",\n",
- " label = [\"Prey\" \"Pred\"],\n",
- " lw = 1.25)\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Intervene by increasing prey early"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Here we will intervene by making Prey at time 15 equal 300. This is where this implementation starts hitting preformance issues due to the very large amount of random variables in the simulation. The intervention is done early here so that this notebook can be reproduced quickly."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 10,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/svg+xml": [
- "\n",
- "\n",
- "\n",
- " \n",
- " \n",
- " \n",
- " \n",
- "\n",
- "\n",
- " \n",
- " \n",
- " \n",
- " \n",
- "\n",
- "\n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- "\n",
- "0 \n",
- " \n",
- "\n",
- "1000 \n",
- " \n",
- "\n",
- "2000 \n",
- " \n",
- "\n",
- "3000 \n",
- " \n",
- "\n",
- "4000 \n",
- " \n",
- "\n",
- "5000 \n",
- " \n",
- "\n",
- "0 \n",
- " \n",
- "\n",
- "100 \n",
- " \n",
- "\n",
- "200 \n",
- " \n",
- "\n",
- "300 \n",
- " \n",
- "\n",
- "400 \n",
- " \n",
- "\n",
- "500 \n",
- " \n",
- "\n",
- "600 \n",
- " \n",
- "\n",
- "Intervention Prey T15=300 \n",
- " \n",
- "\n",
- "Time \n",
- " \n",
- "\n",
- "Quantity \n",
- " \n",
- " \n",
- " \n",
- "\n",
- " \n",
- " \n",
- "\n",
- "Prey \n",
- " \n",
- " \n",
- "\n",
- "Pred \n",
- " \n",
- " \n"
- ]
- },
- "execution_count": 10,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "## Make intervention and replace rand var with intervention var\n",
- "replace_index = 15\n",
- "new_prey = replace(prey_list[replace_index],\n",
- " prey_list[replace_index - 1] => 300.0)\n",
- "prey_list_replace = prey_list\n",
- "prey_list_replace[replace_index] = new_prey ## Replace with intervention\n",
- "\n",
- "## Run sim as normal after intervention\n",
- "random_var_tuple_int = (Tuple(x for x in hazards_list)...,\n",
- " Tuple(x for x in prey_list_replace)...,\n",
- " Tuple(x for x in pred_list)...,\n",
- " Tuple(Any[spawn_prey,prey2pred,pred_dies,theta])...)\n",
- "\n",
- "Random.seed!(1234) ## Same seed as above\n",
- "adj_samples = rand(random_var_tuple_int, 1, alg = RejectionSample)\n",
- "\n",
- "# extract run results and plot\n",
- "prey_vals = []\n",
- "pred_vals = []\n",
- "for x in 1:(N-1)\n",
- " push!(prey_vals,adj_samples[1][N+x])\n",
- " push!(pred_vals,adj_samples[1][(N*2)+x])\n",
- "end\n",
- "\n",
- "plot(hcat(prey_vals,pred_vals),\n",
- " title = \"Intervention Prey T15=300\",\n",
- " xlabel = \"Time\",\n",
- " ylabel = \"Quantity\",\n",
- " label = [\"Prey\" \"Pred\"],\n",
- " lw = 1.25)\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Histogram of Difference in Total Prey"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "We can use these interventions to answer treatment effect questions such as \"If we intervened at time 15 and added enough prey to equal 300, what would be the effect on the total prey of the simulations?\"\n",
- "\n",
- "One way to answer this is to run many simulations, apply our intervention and looking at the difference in total prey between the original run and intervened run. Note because we need to run this multiple times it can take a little while."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 11,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/svg+xml": [
- "\n",
- "\n",
- "\n",
- " \n",
- " \n",
- " \n",
- " \n",
- "\n",
- "\n",
- " \n",
- " \n",
- " \n",
- " \n",
- "\n",
- "\n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- "\n",
- "- \n",
- " \n",
- "\n",
- "5×10 \n",
- " \n",
- "\n",
- "5 \n",
- " \n",
- "\n",
- "0 \n",
- " \n",
- "\n",
- "5×10 \n",
- " \n",
- "\n",
- "5 \n",
- " \n",
- "\n",
- "1×10 \n",
- " \n",
- "\n",
- "6 \n",
- " \n",
- "\n",
- "0 \n",
- " \n",
- "\n",
- "2 \n",
- " \n",
- "\n",
- "4 \n",
- " \n",
- "\n",
- "6 \n",
- " \n",
- "\n",
- "8 \n",
- " \n",
- "\n",
- "10 \n",
- " \n",
- "\n",
- "10 \n",
- " \n",
- "\n",
- "Prey Increase Treatment Effect \n",
- " \n",
- "\n",
- " \n",
- "\n",
- " \n",
- "\n",
- " \n",
- "\n",
- " \n",
- "\n",
- " \n",
- "\n",
- " \n",
- "\n",
- " \n",
- "\n",
- " \n",
- "\n",
- " \n",
- "\n",
- " \n",
- "\n",
- " \n",
- "\n",
- "y1 \n",
- " \n",
- " \n"
- ]
- },
- "execution_count": 11,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "function increase_prey()\n",
- " \n",
- " ## New seed each run\n",
- " Random.seed!(rand(1:10000))\n",
- " ## Run normal and intervened sims\n",
- " samples = rand(random_var_tuple, 1, alg = RejectionSample)\n",
- " adj_samples = rand(random_var_tuple_int, 1, alg = RejectionSample)\n",
- "\n",
- " # extract run results for prey\n",
- " prey_norm_vals = []\n",
- " prey_adj_vals = []\n",
- " for x in 1:(N-1)\n",
- " push!(prey_norm_vals,samples[1][N+x])\n",
- " push!(prey_adj_vals,adj_samples[1][(N*2)+x])\n",
- " end\n",
- " \n",
- " ## Calculate difference in total prey\n",
- " return sum(prey_adj_vals) - sum(prey_norm_vals)\n",
- "end\n",
- "\n",
- "check = [increase_prey() for x=1:50]\n",
- "\n",
- "histogram(check, bins = 10,\n",
- " title = \"Prey Increase Treatment Effect\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Julia 1.0.5",
- "language": "julia",
- "name": "julia-1.0"
- },
- "language_info": {
- "file_extension": ".jl",
- "mimetype": "application/julia",
- "name": "julia",
- "version": "1.0.5"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/Code/Peroxisome_dynamics/.ipynb_checkpoints/Experimental_Omega-checkpoint.ipynb b/Code/Peroxisome_dynamics/.ipynb_checkpoints/Experimental_Omega-checkpoint.ipynb
deleted file mode 100644
index b00c399..0000000
--- a/Code/Peroxisome_dynamics/.ipynb_checkpoints/Experimental_Omega-checkpoint.ipynb
+++ /dev/null
@@ -1,203 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Overview of implementing omega on real experimental dataset\n",
- "\n",
- "## Steps\n",
- "\n",
- "1. Determine biochemical process that generated the experimental data and program this into Omega\n",
- " 1. An example of this is a Gillespie simulation (although it doesn't need to be)\n",
- "2. This implementation can run simulations which follow the same biochemical laws as the experiment\n",
- " 1. For a given set of cells $X$ we can generate traces over some time period $T$ \n",
- " 2. For each time point $t_i$ in $T$ we can describe the cell abundance as $P(x_1, x_2, .., x_n|t_i)$\n",
- "3. We can condition the implementation on our experimental data to recreate the experimental state\n",
- " $$\\sum\\nolimits_{t_i \\in T} P(x_1, x_2,.., x_n|\\text{Data}, t_i)$$\n",
- "4. Use Omega's functionality (ie replace) on the conditioned trace to ask counterfactual queries about the experiment"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Biochemical model of organelle dynamics\n",
- "\n",
- "Quick reminder on what our experimental data looks like. "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "
\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " time \n",
- " count \n",
- " Cell \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " 0 \n",
- " 240 \n",
- " 1 \n",
- " \n",
- " \n",
- " 1 \n",
- " 336 \n",
- " 269 \n",
- " 1 \n",
- " \n",
- " \n",
- " 2 \n",
- " 672 \n",
- " 258 \n",
- " 1 \n",
- " \n",
- " \n",
- " 3 \n",
- " 1008 \n",
- " 264 \n",
- " 1 \n",
- " \n",
- " \n",
- " 4 \n",
- " 1344 \n",
- " 263 \n",
- " 1 \n",
- " \n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " time count Cell\n",
- "0 0 240 1\n",
- "1 336 269 1\n",
- "2 672 258 1\n",
- "3 1008 264 1\n",
- "4 1344 263 1"
- ]
- },
- "execution_count": 3,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "import pandas as pd\n",
- "day1 = pd.read_csv('../../../../../Research/Causal_Inference/SDE_inference/Experimental_Data/Data/Day1/all.dat', sep=',').iloc[:, 1:]\n",
- "day1.head()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "There are regular time intervals at every 336 and count of cells"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "#### Gillespie"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Our model needs to be expressive enough to be conditioned on cell counts at *specific* times.\n",
- "\n",
- "This rules out stochastic models which do not step at regular intervals, such as Gillespie. For any time $t_i$ Gillespie steps as follows: \n",
- "$$t_{i+1} = t_i + {a_0}e^{-a_0x}$$\n",
- "\n",
- "Where $a_0$ is the sum of the hazards (probability values of each reaction) and $x$ is a value sampled from the uniform distribution $[0,1)$. This approximates a sampling from an exponential distribution.\n",
- "\n",
- "In this model time is also a random variable. This would change our posterior, such that for any observation i, $P(x_i, t_i|Data_i)$ or in other words $x_i = Data_{x_i}$ and $t_i = Data_{t_i}$. This adds complications to our model and makes conditioning on the posterior much more challenging."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "#### From *Statistical Inference of Peroxisome Dynamics*\n",
- "\n",
- "Given join effect of three stochastic processes, the probabiliy $p(x, t)$ that the count equals x at time t is governed by the following equation\n",
- "\n",
- "$$\\frac{dp(x,t)}{dt} = [k_d + k_f(x-1)]p(x-1,t) + [\\gamma(x+1)]p(x+1,t)-[k_d+(k_f + \\gamma)x]p(x,t)$$\n",
- "\n",
- "This can be further reformulated as an SDE:\n",
- "\n",
- "$$dx(t) = [k_d + (k_f - \\gamma)x(t)]dt + [k_d + (k_f + \\gamma)x(t)]dW(t)$$\n",
- "\n",
- "Where $W(t)$ is Brownian motion. Finally this equation can be solved with the Euler-Maruyama method.\n",
- "\n",
- "$$x_{t+1} = [k_d + (k_f - \\gamma)x_t]\\Delta t + [k_d + (k_f + \\gamma)x(t)]\\sqrt{\\Delta t}Z$$\n",
- "\n",
- "$$Z \\sim N(0,1)$$\n",
- "$$\\Delta t = t_{t+1}- t_{t}$$\n",
- "$$k_d, k_f, \\gamma \\sim \\text{Rate Parameters}$$"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "This model has the added bonus that time intervals can be set by the user, while still keeping the cell count a random variable."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- }
- ],
- "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.8.5"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/Code/Peroxisome_dynamics/.ipynb_checkpoints/Perox_dyn_Omega-checkpoint.ipynb b/Code/Peroxisome_dynamics/.ipynb_checkpoints/Perox_dyn_Omega-checkpoint.ipynb
deleted file mode 100644
index e6b368d..0000000
--- a/Code/Peroxisome_dynamics/.ipynb_checkpoints/Perox_dyn_Omega-checkpoint.ipynb
+++ /dev/null
@@ -1,1841 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Omega implementation of Peroxisome Dynamics"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {
- "collapsed": true,
- "jupyter": {
- "outputs_hidden": true
- }
- },
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Internal error: encountered unexpected error in runtime:\n",
- "rec_backtrace at /home/Administrator/buildbot/worker/package_win64/build/src/home/Administrator/buildbot/worker/package_win64/build/src\\stackwalk.c:94\n",
- "record_backtrace at /home/Administrator/buildbot/worker/package_win64/build/src/home/Administrator/buildbot/worker/package_win64/build/src\\task.c:246\n",
- "jl_throw at /home/Administrator/buildbot/worker/package_win64/build/src/home/Administrator/buildbot/worker/package_win64/build/src\\task.c:577\n",
- "jl_bounds_error_ints at /home/Administrator/buildbot/worker/package_win64/build/src/home/Administrator/buildbot/worker/package_win64/build/src\\rtutils.c:187\n",
- "getindex at .\\array.jl:731\n",
- "jfptr_getindex_2272.clone_1 at C:\\Users\\Devon Kohler\\AppData\\Local\\Julia-1.0.5\\lib\\julia\\sys.dll (unknown line)\n",
- "jl_apply_generic at /home/Administrator/buildbot/worker/package_win64/build/src/home/Administrator/buildbot/worker/package_win64/build/src\\gf.c:2162\n",
- "replace_code_newstyle! at .\\compiler/ssair\\legacy.jl:86\n",
- "optimize at .\\compiler\\optimize.jl:212\n",
- "typeinf at .\\compiler\\typeinfer.jl:35\n",
- "typeinf_ext at .\\compiler\\typeinfer.jl:574\n",
- "typeinf_ext at .\\compiler\\typeinfer.jl:611\n",
- "jfptr_typeinf_ext_1.clone_1 at C:\\Users\\Devon Kohler\\AppData\\Local\\Julia-1.0.5\\lib\\julia\\sys.dll (unknown line)\n",
- "jl_apply_generic at /home/Administrator/buildbot/worker/package_win64/build/src/home/Administrator/buildbot/worker/package_win64/build/src\\gf.c:2162\n",
- "jl_apply at /home/Administrator/buildbot/worker/package_win64/build/src/home/Administrator/buildbot/worker/package_win64/build/src\\julia.h:1537 [inlined]\n",
- "jl_apply_with_saved_exception_state at /home/Administrator/buildbot/worker/package_win64/build/src/home/Administrator/buildbot/worker/package_win64/build/src\\rtutils.c:257\n",
- "jl_type_infer at /home/Administrator/buildbot/worker/package_win64/build/src/home/Administrator/buildbot/worker/package_win64/build/src\\gf.c:253\n",
- "jl_compile_method_internal at /home/Administrator/buildbot/worker/package_win64/build/src/home/Administrator/buildbot/worker/package_win64/build/src\\gf.c:1764 [inlined]\n",
- "jl_fptr_trampoline at /home/Administrator/buildbot/worker/package_win64/build/src/home/Administrator/buildbot/worker/package_win64/build/src\\gf.c:1808\n",
- "jl_apply_generic at /home/Administrator/buildbot/worker/package_win64/build/src/home/Administrator/buildbot/worker/package_win64/build/src\\gf.c:2162\n",
- "jl_apply at /home/Administrator/buildbot/worker/package_win64/build/src/home/Administrator/buildbot/worker/package_win64/build/src\\julia.h:1537 [inlined]\n",
- "start_task at /home/Administrator/buildbot/worker/package_win64/build/src/home/Administrator/buildbot/worker/package_win64/build/src\\task.c:268\n",
- "BoundsError(a=Array{Core.Compiler.BasicBlock, (36,)}[\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=1, last=6), preds=Array{Int64, (1,)}[36], succs=Array{Int64, (2,)}[3, 2]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=7, last=8), preds=Array{Int64, (1,)}[1], succs=Array{Int64, (1,)}[3]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=9, last=12), preds=Array{Int64, (2,)}[1, 2], succs=Array{Int64, (1,)}[4]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=13, last=21), preds=Array{Int64, (1,)}[3], succs=Array{Int64, (2,)}[7, 5]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=22, last=27), preds=Array{Int64, (1,)}[4], succs=Array{Int64, (1,)}[6]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=28, last=28), preds=Array{Int64, (1,)}[5], succs=Array{Int64, (1,)}[9]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=29, last=37), preds=Array{Int64, (1,)}[4], succs=Array{Int64, (1,)}[8]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=38, last=38), preds=Array{Int64, (1,)}[7], succs=Array{Int64, (1,)}[9]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=39, last=51), preds=Array{Int64, (2,)}[6, 8], succs=Array{Int64, (2,)}[31, 10]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=52, last=61), preds=Array{Int64, (1,)}[9], succs=Array{Int64, (2,)}[12, 11]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=62, last=63), preds=Array{Int64, (1,)}[10], succs=Array{Int64, (0,)}[]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=64, last=64), preds=Array{Int64, (1,)}[10], succs=Array{Int64, (1,)}[13]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=65, last=66), preds=Array{Int64, (1,)}[12], succs=Array{Int64, (1,)}[14]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=67, last=67), preds=Array{Int64, (1,)}[13], succs=Array{Int64, (1,)}[15]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=68, last=68), preds=Array{Int64, (1,)}[14], succs=Array{Int64, (1,)}[16]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=69, last=70), preds=Array{Int64, (1,)}[15], succs=Array{Int64, (1,)}[17]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=71, last=79), preds=Array{Int64, (1,)}[16], succs=Array{Int64, (1,)}[18]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=80, last=84), preds=Array{Int64, (1,)}[17], succs=Array{Int64, (2,)}[20, 19]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=85, last=87), preds=Array{Int64, (1,)}[18], succs=Array{Int64, (0,)}[]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=88, last=95), preds=Array{Int64, (1,)}[18], succs=Array{Int64, (2,)}[22, 21]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=96, last=97), preds=Array{Int64, (1,)}[20], succs=Array{Int64, (0,)}[]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=98, last=98), preds=Array{Int64, (1,)}[20], succs=Array{Int64, (1,)}[23]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=99, last=100), preds=Array{Int64, (1,)}[22], succs=Array{Int64, (1,)}[24]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=101, last=101), preds=Array{Int64, (1,)}[23], succs=Array{Int64, (1,)}[25]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=102, last=102), preds=Array{Int64, (1,)}[24], succs=Array{Int64, (1,)}[26]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=103, last=103), preds=Array{Int64, (1,)}[25], succs=Array{Int64, (1,)}[27]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=104, last=105), preds=Array{Int64, (1,)}[26], succs=Array{Int64, (1,)}[28]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=106, last=106), preds=Array{Int64, (1,)}[27], succs=Array{Int64, (1,)}[29]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=107, last=107), preds=Array{Int64, (1,)}[28], succs=Array{Int64, (1,)}[30]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=108, last=108), preds=Array{Int64, (1,)}[29], succs=Array{Int64, (1,)}[31]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=109, last=109), preds=Array{Int64, (2,)}[9, 30], succs=Array{Int64, (2,)}[33, 32]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=110, last=112), preds=Array{Int64, (1,)}[31], succs=Array{Int64, (0,)}[]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=113, last=116), preds=Array{Int64, (1,)}[31], succs=Array{Int64, (2,)}[35, 34]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=117, last=117), preds=Array{Int64, (1,)}[33], succs=Array{Int64, (1,)}[36]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=118, last=118), preds=Array{Int64, (1,)}[33], succs=Array{Int64, (1,)}[36]),\n",
- " Core.Compiler.BasicBlock(stmts=Core.Compiler.StmtRange(first=119, last=121), preds=Array{Int64, (2,)}[34, 35], succs=Array{Int64, (1,)}[1])], i=(0,))\n"
- ]
- }
- ],
- "source": [
- "## Load Packages\n",
- "using Omega\n",
- "using StatsBase\n",
- "using Random\n",
- "using Plots\n",
- "using Distributions\n",
- "using CSV\n",
- "using DataFrames\n",
- "using Flux\n",
- "using DataStructures"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Implement Gillespie Model"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 11,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "simulation (generic function with 1 method)"
- ]
- },
- "execution_count": 11,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "function simulation(rng, n, transitions)\n",
- " \n",
- " \"\"\"\n",
- " Compute the hazard function given the current states.\n",
- " args:\n",
- " rng(): julia base random number generator, do not need to explicitly pass\n",
- " n(int): An index to the current step in prey and pred lists. Used to pull\n",
- " most recent values for calculations\n",
- " \"\"\"\n",
- " \n",
- " ecology = Dict(\"X\" => X_val_list[n])\n",
- "\n",
- " hazards = Dict(\n",
- " \"H1\" => theta[\"r1\"],\n",
- " \"H2\" => ecology[\"X\"]*theta[\"r2\"],\n",
- " \"H3\" => ecology[\"X\"]*theta[\"r3\"]\n",
- " )\n",
- "\n",
- " vals = collect(values(hazards))\n",
- " sum_vals = sum(vals)\n",
- " new_t = t_list[n] + Omega.exponential(rng, 1/sum_vals)\n",
- " push!(t_list, new_t)\n",
- " \n",
- " prob_vals = vals/sum_vals\n",
- " hazard_result = Omega.categorical(rng, prob_vals)\n",
- " \n",
- " labels = [\"H1\", \"H2\", \"H3\"]\n",
- " transition = transitions[labels[hazard_result]]\n",
- " new_X = ecology[\"X\"] + transition[1]\n",
- "\n",
- " # Enforce only positive integers\n",
- " new_x = max(1, new_X)\n",
- " push!(X_val_list, new_x)\n",
- " [new_x, new_t]\n",
- " \n",
- "end"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 12,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "OrderedDict{String,Array{Int64,1}} with 3 entries:\n",
- " \"H1\" => [1]\n",
- " \"H2\" => [1]\n",
- " \"H3\" => [-1]"
- ]
- },
- "execution_count": 12,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "## Transition Matrix\n",
- "Pre = [[0], [0], [0]]\n",
- "Post = [[1], [1], [-1]]\n",
- "transition_mat = Post - Pre\n",
- "transitions = OrderedDict(\"H1\" => transition_mat[1,],\n",
- " \"H2\" => transition_mat[2,],\n",
- " \"H3\" => transition_mat[3,])"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 13,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "OrderedDict{String,Float64} with 3 entries:\n",
- " \"r1\" => 0.000251\n",
- " \"r2\" => 0.0001\n",
- " \"r3\" => 0.000105"
- ]
- },
- "execution_count": 13,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Initial Prey and Pred values\n",
- "X_init = 240\n",
- "\n",
- "# Rate Values\n",
- "r1 = 2.51e-4\n",
- "r2 = 10e-5\n",
- "r3 = 10.5e-5\n",
- "\n",
- "theta = OrderedDict(\"r1\" => r1,\n",
- " \"r2\" => r2,\n",
- " \"r3\" => r3)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 14,
- "metadata": {},
- "outputs": [],
- "source": [
- "## Initialize lists and add starting rand vars\n",
- "rand_var_list = Any[]\n",
- "X_val_list = Any[]\n",
- "t_list = Any[]\n",
- "push!(X_val_list, X_init)\n",
- "push!(t_list, 0)\n",
- "\n",
- "## How many time periods to cycle over\n",
- "N = 3500\n",
- "\n",
- "## Create a prey/pred/hazard for each time period\n",
- "for f in 2:N\n",
- " last = f - 1\n",
- " X_temp = ciid(simulation, last, transitions) # individual step\n",
- " push!(rand_var_list, X_temp)\n",
- "end\n",
- "\n",
- "## Convert lists to single tuple\n",
- "random_var_tuple = Tuple(x for x in rand_var_list)#...)\n",
- "print()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 15,
- "metadata": {},
- "outputs": [],
- "source": [
- "## Sample\n",
- "Random.seed!(1234)\n",
- "samples = rand(random_var_tuple, 1, alg = RejectionSample)\n",
- "print()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 16,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/svg+xml": [
- "\n",
- "\n",
- "\n",
- " \n",
- " \n",
- " \n",
- " \n",
- "\n",
- "\n",
- " \n",
- " \n",
- " \n",
- " \n",
- "\n",
- "\n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- "\n",
- "0 \n",
- " \n",
- "\n",
- "2×10 \n",
- " \n",
- "\n",
- "4 \n",
- " \n",
- "\n",
- "4×10 \n",
- " \n",
- "\n",
- "4 \n",
- " \n",
- "\n",
- "6×10 \n",
- " \n",
- "\n",
- "4 \n",
- " \n",
- "\n",
- "200 \n",
- " \n",
- "\n",
- "220 \n",
- " \n",
- "\n",
- "240 \n",
- " \n",
- "\n",
- "260 \n",
- " \n",
- "\n",
- "280 \n",
- " \n",
- "\n",
- "Simulation \n",
- " \n",
- "\n",
- "Time \n",
- " \n",
- "\n",
- "Quantity \n",
- " \n",
- " \n",
- "\n",
- " \n",
- " \n",
- "\n",
- "Cell Count \n",
- " \n",
- " \n"
- ]
- },
- "execution_count": 16,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "plot(t_list[1:N], X_val_list[1:N],\n",
- " title = \"Simulation\",\n",
- " xlabel = \"Time\",\n",
- " ylabel = \"Quantity\",\n",
- " label = \"Cell Count\",\n",
- " lw = 1.25)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Load dataset"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [],
- "source": [
- "day1 = CSV.read(\"C:/Users/Devon Kohler/Documents/Northeastern/Research/Causal_Inference/SDE_inference/Experimental_Data/Data/Day1/all.dat\", DataFrame)#, delim = ',')#, '\\n')\n",
- "day2 = CSV.read(\"C:/Users/Devon Kohler/Documents/Northeastern/Research/Causal_Inference/SDE_inference/Experimental_Data/Data/Day2/all.dat\", DataFrame)\n",
- "day3 = CSV.read(\"C:/Users/Devon Kohler/Documents/Northeastern/Research/Causal_Inference/SDE_inference/Experimental_Data/Data/Day3/all.dat\", DataFrame)\n",
- "print()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 18,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/svg+xml": [
- "\n",
- "\n",
- "\n",
- " \n",
- " \n",
- " \n",
- " \n",
- "\n",
- "\n",
- " \n",
- " \n",
- " \n",
- " \n",
- "\n",
- "\n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- "\n",
- "0 \n",
- " \n",
- "\n",
- "1×10 \n",
- " \n",
- "\n",
- "4 \n",
- " \n",
- "\n",
- "2×10 \n",
- " \n",
- "\n",
- "4 \n",
- " \n",
- "\n",
- "3×10 \n",
- " \n",
- "\n",
- "4 \n",
- " \n",
- "\n",
- "4×10 \n",
- " \n",
- "\n",
- "4 \n",
- " \n",
- "\n",
- "240 \n",
- " \n",
- "\n",
- "250 \n",
- " \n",
- "\n",
- "260 \n",
- " \n",
- "\n",
- "270 \n",
- " \n",
- "\n",
- "280 \n",
- " \n",
- "\n",
- "290 \n",
- " \n",
- "\n",
- "300 \n",
- " \n",
- "\n",
- "300 \n",
- " \n",
- "\n",
- "Simulation \n",
- " \n",
- "\n",
- "Time \n",
- " \n",
- "\n",
- "Quantity \n",
- " \n",
- " \n",
- "\n",
- " \n",
- " \n",
- "\n",
- "Cell Count \n",
- " \n",
- " \n"
- ]
- },
- "execution_count": 18,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "plot(day1[day1.Cell .== 1, :time],\n",
- " day1[day1.Cell .== 1, :count],\n",
- " title = \"Simulation\",\n",
- " xlabel = \"Time\",\n",
- " ylabel = \"Quantity\",\n",
- " label = \"Cell Count\",\n",
- " lw = 1.25)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Steps to run causal inference on experimental data\n",
- "\n",
- "1. Build Gillespie Simulation of Peroxisome Dynamics (Done)\n",
- " 1. We assume the true relationship between cell count and time follows this simulation\n",
- "2. Condition simulation on observed data - $P(Count_T | Data)$\n",
- " 1. Use time points and counts as conditionals, allowing for some variablility between observed counts\n",
- "3. Use Omega replace function to run counterfactuals on conditioned simulation\n",
- "4. We have 43 traces we can do this process on"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Different Form of Equation"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Given join effect of three stochastic processes, the probabiliy $p(x, t)$ that the count equals x at time t is governed by the following equation\n",
- "\n",
- "$$\\frac{dp(x,t)}{dt} = [k_d + k_f(x-1)]p(x-1,t) + [\\gamma(x+1)]p(x+1,t)-[k_d+(k_f + \\gamma)x]p(x,t)$$\n",
- "\n",
- "This can be further reformulated as an SDE:\n",
- "\n",
- "$$dx(t) = [k_d + (k_f - \\gamma)x(t)]dt + [k_d + (k_f + \\gamma)x(t)]dW(t)$$\n",
- "\n",
- "Where $W(t)$ is Brownian motion. Finally this equation can be solved with the Euler-Maruyama method.\n",
- "\n",
- "$$x_{t+1} = [k_d + (k_f - \\gamma)x_t]\\Delta t + [k_d + (k_f + \\gamma)x(t)]\\sqrt{\\Delta t}Z$$\n",
- "\n",
- "$$Z \\sim N(0,1)$$\n",
- "\n",
- "Additionally there is also a presence of measurement error, which accounts for the difference between the true counts $x_t$ and the observed count $y_t$. This error is governed by the equation:\n",
- "\n",
- "$$p(y_t|x_t) = N(x_t, \\sigma^2)$$\n",
- "\n",
- "What if we use these two equation as our functional form and sample from this new distribution. Since $p(x,t)$ is the joint effect of stochastic processes we would expect this to be very similar to gillespie, however we can break away from the gillespie time component.\n",
- "\n",
- "$$x_{t+1} + N(x_t, \\sigma^2)$$\n",
- "\n",
- "Since we know $Z$ is a random variable, $x_{t+1}$ must also be a random variable. Thus our function form is a sum of two random variables. This can be implemented in Omega and also allows us to define the time component directly."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Day 1 - Cell 1 Test Implementation"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "We take the rate parameters from the paper \"Statistical Inference of Peroxisome Dynamics\" by Cyril Galitzine, Pierre M. Jean Beltran, IleanaM.Cristea, and Olga Vitek. These are as follows:\n",
- "\n",
- "$k_d = .000215, k_f = .0001, \\gamma = .000105$\n",
- "\n",
- "Addtionally $x_0 = 240$, thus $p(240, 0) = 1$"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "With these parameters lets estimate $p(x, 1)$, the probability the count equals x at time 1."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "0.00105"
- ]
- },
- "execution_count": 3,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "kd = .0251\n",
- "kf = .0010\n",
- "g = .00105"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "x_sim (generic function with 1 method)"
- ]
- },
- "execution_count": 4,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "function x_sim(rng, n, diff_t)\n",
- " x = x_vals[n]\n",
- " x_next = (kd + (kf - g)*x)*diff_t + (kd + (kf + g)*x)*sqrt(diff_t)*normal(rng,0,1)\n",
- " insert!(x_vals, n+1, x + x_next)\n",
- " return x + x_next\n",
- "end"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "1:Omega.reifyapply(x_sim, 1, 336)::Any"
- ]
- },
- "execution_count": 4,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "sim = ciid(x_sim, 1, 336)\n",
- "rand(sim, 5, alg = RejectionSample)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {},
- "outputs": [],
- "source": [
- "x_vals = Any[]\n",
- "push!(x_vals, 240)\n",
- "sim_steps = Any[]\n",
- "\n",
- "N = 121\n",
- "for n in 2:N\n",
- " sim = ciid(x_sim, n-1, 336)\n",
- " push!(sim_steps, sim)\n",
- "end"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {
- "collapsed": true,
- "jupyter": {
- "outputs_hidden": true
- }
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "1-element Array{NTuple{120,Float64},1}:\n",
- " (246.5790071830665, 257.95377632423094, 263.7473441680598, 266.71062481845007, 279.26389899242497, 294.5556207480729, 288.3620471254074, 285.98251898158554, 281.94103432885333, 287.86061264899956, 295.7694176573215, 272.68703965812085, 260.44734201411444, 282.0706804668425, 289.92830925701617, 279.71309181609723, 276.92308093657346, 284.94015330100956, 270.9021969874508, 285.48481774378206, 307.5788282391198, 332.56951495997413, 356.2147124592057, 369.8246758665624, 385.250772490622, 359.98420483701653, 344.00089580753354, 340.2037899117301, 327.86615504975583, 326.6918586510761, 348.53948398375155, 349.0344227707984, 342.31301790124684, 314.84604539083034, 297.2859129849782, 300.6134048429558, 311.27235602374725, 308.0685669619639, 309.7892269430737, 326.94449568499977, 308.4476894628116, 317.96181794734304, 316.7748898071326, 313.4911487505704, 312.67954898350615, 303.2321676496241, 294.1482787924929, 291.04573143697496, 291.8483005419427, 295.3654081867431, 303.5671954982208, 307.365845894964, 302.93557567544343, 309.14326014167295, 305.7868077236853, 302.42022848851855, 309.32812139072445, 317.68993510907427, 329.28602674990566, 309.2403375715346, 316.9288720596474, 316.9497847682767, 320.8361007391247, 327.4412748511282, 328.2062346752441, 313.33867245953064, 306.1701803438518, 311.75598400616997, 305.4755084485835, 304.5623828257665, 298.0597670695148, 318.9576212816026, 333.77395902708025, 319.8849107140935, 327.22852219572354, 315.9585624345625, 328.4085050525867, 345.6973834112471, 324.718748079472, 337.9260514826703, 338.4014931333189, 326.7759752823049, 333.2143976810762, 327.4995927868163, 330.3906862995219, 316.32608417607105, 320.22241661791753, 315.44999922868897, 303.48712424371195, 318.3488127184263, 325.6696132744681, 323.3205082710052, 311.0547798685567, 323.7669266417926, 339.2163908331561, 324.06836509163765, 323.4144807395736, 320.886207036962, 332.29520235974445, 327.0391019288529, 322.96295693902863, 329.575462149298, 339.4218500094754, 342.43021410980293, 344.19323827832454, 350.6747922407124, 341.37661534204005, 357.9083751725964, 383.4914730216581, 397.7363645332888, 398.2539873906907, 379.79736115084984, 390.7787183833673, 424.5778134665504, 422.85937070739476, 422.8735469059492, 441.07396976576, 444.610759159349, 460.4840942732279, 421.8307895250282)"
- ]
- },
- "execution_count": 6,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "Random.seed!(1234)\n",
- "sim_samples = rand(Tuple(sim_steps), 1, alg = RejectionSample)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "metadata": {},
- "outputs": [],
- "source": [
- "x_vals = Any[]\n",
- "push!(x_vals, 240)\n",
- "sim_steps = Any[]\n",
- "\n",
- "N = 121\n",
- "for n in 2:N\n",
- " if n == 3\n",
- " sim_ = ciid(x_sim, n-1, 336)\n",
- " sim_ = cond(sim_, 250 <= sim_)\n",
- " sim = cond(sim_, sim_ <= 264)\n",
- " elseif n == 30\n",
- " sim_ = ciid(x_sim, n-1, 336)\n",
- " sim_ = cond(sim_, 300 <= sim_)\n",
- " sim = cond(sim_, sim_ <= 312)\n",
- " else\n",
- " sim = ciid(x_sim, n-1, 336)\n",
- " end\n",
- " push!(sim_steps, sim)\n",
- "end"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 8,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "1-element Array{NTuple{120,Float64},1}:\n",
- " (238.1836196911542, 251.55481669583781, 255.39008820888938, 263.5100427163277, 282.90763769452053, 268.8762637372278, 269.80765678906795, 259.97132778965357, 269.1764219845311, 253.22340353093003, 261.14373820594375, 277.93336650532444, 276.4443818866096, 283.3852850294578, 283.9748735855945, 269.89618548256755, 274.2367214673829, 282.4300391601926, 292.16771333960025, 284.69170068896113, 287.0904841064775, 272.5126689374973, 264.74031391182314, 274.1564118139996, 289.8670469350735, 312.3824868870224, 308.87239293581, 308.1883777976382, 311.66815744564207, 312.2480769689772, 298.6153625812307, 296.0251409057189, 305.2481392956373, 313.9672731540392, 303.7431195344879, 306.140900984329, 304.2170958207925, 284.6130730233931, 305.3795516646569, 318.45842553791977, 316.36193614554486, 334.0457519606407, 346.4121533091087, 335.4540568756554, 351.9737696106999, 359.8152488237461, 378.0533385908642, 385.48844197790515, 400.043441215461, 403.96634895348683, 413.2282684323347, 421.3141190735978, 405.8228095570935, 407.48898068587715, 410.2685150898419, 421.7523598591396, 414.71228128388424, 417.35310030336456, 444.0355317484106, 451.80207578746365, 432.3477054523147, 428.6928085426554, 426.0037489838132, 428.5757772615827, 441.1251441502813, 443.11054199087636, 443.8913033112059, 467.7338325018846, 476.4843390431806, 445.0138739978602, 452.3207761279073, 468.92694375919797, 471.2000382852425, 470.6453991291879, 425.60722653127704, 431.45558689176977, 432.9473915891706, 409.5296025967719, 385.3038768041653, 373.47051586585803, 381.7840010426448, 353.9254574079858, 369.73564575851003, 367.5446554677159, 393.14923818023914, 389.36828036925255, 391.9343971665815, 381.37217171874704, 382.3144825211401, 398.8149489785574, 401.4625684504056, 414.3324709717354, 411.88491130111504, 432.6718157556099, 435.97313369234877, 399.0565159624527, 404.329674500529, 404.32129335663586, 391.8087796668678, 387.91349840343423, 394.2093983062125, 396.05301490939405, 378.5460274295495, 372.8807659619762, 391.47350837877696, 386.7038419472222, 410.39500379285994, 389.09422710640797, 412.59535480021185, 405.9080200644148, 397.9376525526549, 386.75647761822745, 397.4510123685876, 420.92445514516896, 440.95059706773606, 453.0011234744777, 445.5799257155133, 445.2713942429337, 466.1574202077255, 444.79021855803893)"
- ]
- },
- "execution_count": 8,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "Random.seed!(1234)\n",
- "sim_samples = rand(Tuple(sim_steps), 1, alg = RejectionSample)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 35,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "121-element Array{Float64,1}:\n",
- " 240.0 \n",
- " 242.5385024462492 \n",
- " 260.2723478931068 \n",
- " 277.505090296421 \n",
- " 274.2463029768614 \n",
- " 268.3269550381685 \n",
- " 289.06818804667336\n",
- " 308.1181533614363 \n",
- " 299.2192728806159 \n",
- " 277.1191725678781 \n",
- " 285.9501457702618 \n",
- " 287.9727248200293 \n",
- " 297.62554589737243\n",
- " â‹® \n",
- " 345.8991696271854 \n",
- " 392.0830210902471 \n",
- " 408.8544509905692 \n",
- " 376.1479405674807 \n",
- " 378.18422630857 \n",
- " 394.96064921049253\n",
- " 430.4267317992026 \n",
- " 422.5827207870475 \n",
- " 428.68957092798746\n",
- " 455.12470552213676\n",
- " 426.7892412667807 \n",
- " 449.52349815084216"
- ]
- },
- "execution_count": 35,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "plot_counts = append!([240.], [i for i in sim_samples[1]])"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 36,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/svg+xml": [
- "\n",
- "\n",
- "\n",
- " \n",
- " \n",
- " \n",
- " \n",
- "\n",
- "\n",
- " \n",
- " \n",
- " \n",
- " \n",
- "\n",
- "\n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- "\n",
- "0 \n",
- " \n",
- "\n",
- "1×10 \n",
- " \n",
- "\n",
- "4 \n",
- " \n",
- "\n",
- "2×10 \n",
- " \n",
- "\n",
- "4 \n",
- " \n",
- "\n",
- "3×10 \n",
- " \n",
- "\n",
- "4 \n",
- " \n",
- "\n",
- "4×10 \n",
- " \n",
- "\n",
- "4 \n",
- " \n",
- "\n",
- "250 \n",
- " \n",
- "\n",
- "300 \n",
- " \n",
- "\n",
- "350 \n",
- " \n",
- "\n",
- "400 \n",
- " \n",
- "\n",
- "450 \n",
- " \n",
- "\n",
- "Simulation \n",
- " \n",
- "\n",
- "Time \n",
- " \n",
- "\n",
- "Quantity \n",
- " \n",
- " \n",
- "\n",
- " \n",
- " \n",
- "\n",
- "Cell Count \n",
- " \n",
- " \n"
- ]
- },
- "execution_count": 36,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "plot(day1[day1.Cell .== 1, :time],\n",
- " plot_counts,\n",
- " title = \"Simulation\",\n",
- " xlabel = \"Time\",\n",
- " ylabel = \"Quantity\",\n",
- " label = \"Cell Count\",\n",
- " lw = 1.25)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 10,
- "metadata": {},
- "outputs": [],
- "source": [
- "cell1 = day1[day1.Cell .== 1,:]\n",
- "print()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 75,
- "metadata": {},
- "outputs": [],
- "source": [
- "x_vals = Any[]\n",
- "push!(x_vals, 240)\n",
- "sim_steps = Any[]\n",
- "\n",
- "N = 24\n",
- "for n in 2:N\n",
- " cond_val = cell1[n, :count]\n",
- " sim_ = ciid(x_sim, n-1, 336)\n",
- " sim = cond(sim_, sim_ ==â‚› cond_val)\n",
- " push!(sim_steps, sim)\n",
- "end"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 90,
- "metadata": {},
- "outputs": [
- {
- "ename": "ErrorException",
- "evalue": "Loss is NaN",
- "output_type": "error",
- "traceback": [
- "Loss is NaN",
- "",
- "Stacktrace:",
- " [1] error(::String) at .\\error.jl:33",
- " [2] #back!#32 at C:\\Users\\Devon Kohler\\.julia\\packages\\Tracker\\cpxco\\src\\lib\\real.jl:15 [inlined]",
- " [3] back!(::Tracker.TrackedReal{Float64}) at C:\\Users\\Devon Kohler\\.julia\\packages\\Tracker\\cpxco\\src\\lib\\real.jl:14",
- " [4] back!(::Omega.URandVar{typeof(Omega.liftreifyapply),Tuple{typeof(-),Omega.URandVar{getfield(Omega, Symbol(\"##23#24\")){Any,Omega.URandVar{typeof(Omega.liftreifyapply),Tuple{typeof(logerr),Omega.URandVar{getfield(Omega.Soft, Symbol(\"##6#7\")){Omega.URandVar{typeof(Omega.applymany),Tuple{NTuple{23,Omega.URandVar{getfield(Omega, Symbol(\"##6#7\")){Omega.URandVar{typeof(Omega.reifyapply),Tuple{typeof(x_sim),Int64,Int64}},Omega.URandVar{typeof(Omega.liftreifyapply),Tuple{typeof(softeq),Omega.URandVar{typeof(Omega.reifyapply),Tuple{typeof(x_sim),Int64,Int64}},Int64}}},Tuple{}}}}}},Tuple{}}}}},Tuple{}}}}, ::SimpleΩ{Array{Int64,1},TrackedArray{…,Array{Float64,1}}}, ::Omega.Gradient.TrackerGradAlg) at C:\\Users\\Devon Kohler\\.julia\\packages\\Omega\\zOdli\\src\\gradient\\tracker.jl:9",
- " [5] ∇U! at C:\\Users\\Devon Kohler\\.julia\\packages\\Omega\\zOdli\\src\\inference\\hmcfast.jl:99 [inlined]",
- " [6] (::getfield(Omega.Inference, Symbol(\"#∇step#50\")){getfield(Omega.Inference, Symbol(\"#∇U!#68\")){Omega.Gradient.TrackerGradAlg,Omega.URandVar{typeof(Omega.liftreifyapply),Tuple{typeof(-),Omega.URandVar{getfield(Omega, Symbol(\"##23#24\")){Any,Omega.URandVar{typeof(Omega.liftreifyapply),Tuple{typeof(logerr),Omega.URandVar{getfield(Omega.Soft, Symbol(\"##6#7\")){Omega.URandVar{typeof(Omega.applymany),Tuple{NTuple{23,Omega.URandVar{getfield(Omega, Symbol(\"##6#7\")){Omega.URandVar{typeof(Omega.reifyapply),Tuple{typeof(x_sim),Int64,Int64}},Omega.URandVar{typeof(Omega.liftreifyapply),Tuple{typeof(softeq),Omega.URandVar{typeof(Omega.reifyapply),Tuple{typeof(x_sim),Int64,Int64}},Int64}}},Tuple{}}}}}},Tuple{}}}}},Tuple{}}}}},SimpleΩ{Array{Int64,1},TrackedArray{…,Array{Float64,1}}},Array{Array{Float64,1},1}})() at C:\\Users\\Devon Kohler\\.julia\\packages\\Omega\\zOdli\\src\\inference\\hmcfast.jl:26",
- " [7] hmcfast(::MersenneTwister, ::Omega.URandVar{typeof(Omega.liftreifyapply),Tuple{typeof(-),Omega.URandVar{getfield(Omega, Symbol(\"##23#24\")){Any,Omega.URandVar{typeof(Omega.liftreifyapply),Tuple{typeof(logerr),Omega.URandVar{getfield(Omega.Soft, Symbol(\"##6#7\")){Omega.URandVar{typeof(Omega.applymany),Tuple{NTuple{23,Omega.URandVar{getfield(Omega, Symbol(\"##6#7\")){Omega.URandVar{typeof(Omega.reifyapply),Tuple{typeof(x_sim),Int64,Int64}},Omega.URandVar{typeof(Omega.liftreifyapply),Tuple{typeof(softeq),Omega.URandVar{typeof(Omega.reifyapply),Tuple{typeof(x_sim),Int64,Int64}},Int64}}},Tuple{}}}}}},Tuple{}}}}},Tuple{}}}}, ::getfield(Omega.Inference, Symbol(\"#∇U!#68\")){Omega.Gradient.TrackerGradAlg,Omega.URandVar{typeof(Omega.liftreifyapply),Tuple{typeof(-),Omega.URandVar{getfield(Omega, Symbol(\"##23#24\")){Any,Omega.URandVar{typeof(Omega.liftreifyapply),Tuple{typeof(logerr),Omega.URandVar{getfield(Omega.Soft, Symbol(\"##6#7\")){Omega.URandVar{typeof(Omega.applymany),Tuple{NTuple{23,Omega.URandVar{getfield(Omega, Symbol(\"##6#7\")){Omega.URandVar{typeof(Omega.reifyapply),Tuple{typeof(x_sim),Int64,Int64}},Omega.URandVar{typeof(Omega.liftreifyapply),Tuple{typeof(softeq),Omega.URandVar{typeof(Omega.reifyapply),Tuple{typeof(x_sim),Int64,Int64}},Int64}}},Tuple{}}}}}},Tuple{}}}}},Tuple{}}}}}, ::Array{Array{Float64,1},1}, ::Array{Array{Float64,1},1}, ::Array{Array{Float64,1},1}, ::SimpleΩ{Array{Int64,1},TrackedArray{…,Array{Float64,1}}}, ::SimpleΩ{Array{Int64,1},TrackedArray{…,Array{Float64,1}}}, ::Int64, ::Float64) at C:\\Users\\Devon Kohler\\.julia\\packages\\Omega\\zOdli\\src\\inference\\hmcfast.jl:48",
- " [8] #rand#60(::Int64, ::Int64, ::Float64, ::SimpleΩ{Array{Int64,1},TrackedArray{…,Array{Float64,1}}}, ::Omega.Gradient.TrackerGradAlg, ::Int64, ::Function, ::MersenneTwister, ::Type{SimpleΩ{Array{Int64,1},TrackedArray{…,Array{Float64,1}}}}, ::Omega.URandVar{getfield(Omega, Symbol(\"##23#24\")){Any,Omega.URandVar{typeof(Omega.liftreifyapply),Tuple{typeof(logerr),Omega.URandVar{getfield(Omega.Soft, Symbol(\"##6#7\")){Omega.URandVar{typeof(Omega.applymany),Tuple{NTuple{23,Omega.URandVar{getfield(Omega, Symbol(\"##6#7\")){Omega.URandVar{typeof(Omega.reifyapply),Tuple{typeof(x_sim),Int64,Int64}},Omega.URandVar{typeof(Omega.liftreifyapply),Tuple{typeof(softeq),Omega.URandVar{typeof(Omega.reifyapply),Tuple{typeof(x_sim),Int64,Int64}},Int64}}},Tuple{}}}}}},Tuple{}}}}},Tuple{}}, ::Int64, ::HMCFASTAlg) at C:\\Users\\Devon Kohler\\.julia\\packages\\Omega\\zOdli\\src\\inference\\hmcfast.jl:103",
- " [9] rand at C:\\Users\\Devon Kohler\\.julia\\packages\\Omega\\zOdli\\src\\inference\\hmcfast.jl:87 [inlined]",
- " [10] #rand#9(::Type{SimpleΩ{Array{Int64,1},TrackedArray{…,Array{Float64,1}}}}, ::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::Function, ::MersenneTwister, ::Omega.URandVar{typeof(Omega.applymany),Tuple{NTuple{23,Omega.URandVar{getfield(Omega, Symbol(\"##6#7\")){Omega.URandVar{typeof(Omega.reifyapply),Tuple{typeof(x_sim),Int64,Int64}},Omega.URandVar{typeof(Omega.liftreifyapply),Tuple{typeof(softeq),Omega.URandVar{typeof(Omega.reifyapply),Tuple{typeof(x_sim),Int64,Int64}},Int64}}},Tuple{}}}}}, ::Int64, ::HMCFASTAlg) at C:\\Users\\Devon Kohler\\.julia\\packages\\Omega\\zOdli\\src\\inference\\rand.jl:38",
- " [11] (::getfield(Base, Symbol(\"#kw##rand\")))(::NamedTuple{(:ΩT,),Tuple{DataType}}, ::typeof(rand), ::MersenneTwister, ::Omega.URandVar{typeof(Omega.applymany),Tuple{NTuple{23,Omega.URandVar{getfield(Omega, Symbol(\"##6#7\")){Omega.URandVar{typeof(Omega.reifyapply),Tuple{typeof(x_sim),Int64,Int64}},Omega.URandVar{typeof(Omega.liftreifyapply),Tuple{typeof(softeq),Omega.URandVar{typeof(Omega.reifyapply),Tuple{typeof(x_sim),Int64,Int64}},Int64}}},Tuple{}}}}}, ::Int64, ::HMCFASTAlg) at .\\none:0",
- " [12] #rand#12 at C:\\Users\\Devon Kohler\\.julia\\packages\\Omega\\zOdli\\src\\inference\\rand.jl:48 [inlined]",
- " [13] #rand at .\\none:0 [inlined]",
- " [14] #rand#19 at C:\\Users\\Devon Kohler\\.julia\\packages\\Omega\\zOdli\\src\\inference\\rand.jl:73 [inlined]",
- " [15] (::getfield(Base, Symbol(\"#kw##rand\")))(::NamedTuple{(:alg,),Tuple{HMCFASTAlg}}, ::typeof(rand), ::NTuple{23,Omega.URandVar{getfield(Omega, Symbol(\"##6#7\")){Omega.URandVar{typeof(Omega.reifyapply),Tuple{typeof(x_sim),Int64,Int64}},Omega.URandVar{typeof(Omega.liftreifyapply),Tuple{typeof(softeq),Omega.URandVar{typeof(Omega.reifyapply),Tuple{typeof(x_sim),Int64,Int64}},Int64}}},Tuple{}}}, ::Int64) at .\\none:0",
- " [16] top-level scope at In[90]:1"
- ]
- }
- ],
- "source": [
- "for _ in 1:1000\n",
- " try:\n",
- " sim_samples = rand(Tuple(sim_steps), 1, alg = HMCFAST)\n",
- " end\n",
- "end"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 86,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "277.5308042206061 (tracked)"
- ]
- },
- "execution_count": 86,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "cond_val = cell1[2, :count]\n",
- "sim_ = ciid(x_sim, 1, 336)\n",
- "sim = cond(sim_, sim_ ==â‚› cond_val)\n",
- "Random.seed!(5)\n",
- "rand(sim, alg = HMCFAST)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 25,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "269"
- ]
- },
- "execution_count": 25,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "cond_val"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 60,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/svg+xml": [
- "\n",
- "\n",
- "\n",
- " \n",
- " \n",
- " \n",
- " \n",
- "\n",
- "\n",
- " \n",
- " \n",
- " \n",
- " \n",
- "\n",
- "\n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- "\n",
- "0 \n",
- " \n",
- "\n",
- "1000 \n",
- " \n",
- "\n",
- "2000 \n",
- " \n",
- "\n",
- "3000 \n",
- " \n",
- "\n",
- "4000 \n",
- " \n",
- "\n",
- "5000 \n",
- " \n",
- "\n",
- "6000 \n",
- " \n",
- "\n",
- "240 \n",
- " \n",
- "\n",
- "250 \n",
- " \n",
- "\n",
- "260 \n",
- " \n",
- "\n",
- "270 \n",
- " \n",
- "\n",
- "280 \n",
- " \n",
- "\n",
- "290 \n",
- " \n",
- "\n",
- "Simulation \n",
- " \n",
- "\n",
- "Time \n",
- " \n",
- "\n",
- "Quantity \n",
- " \n",
- " \n",
- " \n",
- "\n",
- " \n",
- " \n",
- "\n",
- "True Count \n",
- " \n",
- " \n",
- "\n",
- "Sim Count \n",
- " \n",
- " \n"
- ]
- },
- "execution_count": 60,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "plot(day1[day1.Cell .== 1, :time][1:20],\n",
- " hcat(day1[day1.Cell .== 1,:count][1:20], append!([240.], Array([Tracker.data(i) for i in sim_samples[1]]))),\n",
- " title = \"Simulation\",\n",
- " xlabel = \"Time\",\n",
- " ylabel = \"Quantity\",\n",
- " label = [\"True Count\" \"Sim Count\"],\n",
- " lw = 1.25)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Julia 1.0.5",
- "language": "julia",
- "name": "julia-1.0"
- },
- "language_info": {
- "file_extension": ".jl",
- "mimetype": "application/julia",
- "name": "julia",
- "version": "1.0.5"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/Code/Peroxisome_dynamics/.ipynb_checkpoints/Perox_dyn_analysis-checkpoint.ipynb b/Code/Peroxisome_dynamics/.ipynb_checkpoints/Perox_dyn_analysis-checkpoint.ipynb
deleted file mode 100644
index cc41e91..0000000
--- a/Code/Peroxisome_dynamics/.ipynb_checkpoints/Perox_dyn_analysis-checkpoint.ipynb
+++ /dev/null
@@ -1,1019 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Peroxisome Dynamics Experimental Data Review"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Import data"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {},
- "outputs": [],
- "source": [
- "import pandas as pd\n",
- "import numpy as np\n",
- "import matplotlib.pyplot as plt\n",
- "import seaborn as sns\n",
- "\n",
- "%matplotlib inline"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### MaxQ Data"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [],
- "source": [
- "maxq_evidence = pd.read_csv('Experimental_Data/data_MaxQuant_TMT/evidence.txt', sep='\\t')\n",
- "protein_groups = pd.read_csv('Experimental_Data/data_MaxQuant_TMT/proteinGroups.txt', sep='\\t')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Timeseries Data"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {},
- "outputs": [],
- "source": [
- "day1 = pd.read_csv('Experimental_Data/Data/Day1/all.dat', sep=',').iloc[:, 1:]\n",
- "day2 = pd.read_csv('Experimental_Data/Data/Day2/all.dat', sep=',').iloc[:, 1:]\n",
- "day3 = pd.read_csv('Experimental_Data/Data/Day3/all.dat', sep=',').iloc[:, 1:]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " time \n",
- " count \n",
- " Cell \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " 0 \n",
- " 240 \n",
- " 1 \n",
- " \n",
- " \n",
- " 1 \n",
- " 336 \n",
- " 269 \n",
- " 1 \n",
- " \n",
- " \n",
- " 2 \n",
- " 672 \n",
- " 258 \n",
- " 1 \n",
- " \n",
- " \n",
- " 3 \n",
- " 1008 \n",
- " 264 \n",
- " 1 \n",
- " \n",
- " \n",
- " 4 \n",
- " 1344 \n",
- " 263 \n",
- " 1 \n",
- " \n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " time count Cell\n",
- "0 0 240 1\n",
- "1 336 269 1\n",
- "2 672 258 1\n",
- "3 1008 264 1\n",
- "4 1344 263 1"
- ]
- },
- "execution_count": 4,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "day1.head()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "#### Cells per day"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Day1 Cells: 13\n",
- "Day2 Cells: 10\n",
- "Day3 Cells: 20\n"
- ]
- }
- ],
- "source": [
- "print(\"Day1 Cells: {0}\".format(len(day1['Cell'].unique())))\n",
- "print(\"Day2 Cells: {0}\".format(len(day2['Cell'].unique())))\n",
- "print(\"Day3 Cells: {0}\".format(len(day3['Cell'].unique())))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]"
- ]
- },
- "execution_count": 6,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "sorted(day1['Cell'].unique())"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]"
- ]
- },
- "execution_count": 7,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "sorted(day2['Cell'].unique())"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 8,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]"
- ]
- },
- "execution_count": 8,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "sorted(day3['Cell'].unique())"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "#### Between day variability"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 9,
- "metadata": {
- "jupyter": {
- "source_hidden": true
- }
- },
- "outputs": [],
- "source": [
- "def plot_cell(cell):\n",
- " fig, ax = plt.subplots(1,3, figsize = (18,6))\n",
- " ax[0].plot(day1.loc[day1['Cell'] == cell]['time'], day1.loc[day1['Cell'] == cell]['count'])\n",
- " ax[1].plot(day2.loc[day2['Cell'] == cell]['time'], day2.loc[day2['Cell'] == cell]['count'])\n",
- " ax[2].plot(day3.loc[day3['Cell'] == cell]['time'], day3.loc[day3['Cell'] == cell]['count'])\n",
- " \n",
- " ylower = min(min(day1.loc[day1['Cell'] == cell]['count']),\n",
- " min(day2.loc[day2['Cell'] == cell]['count']),\n",
- " min(day3.loc[day3['Cell'] == cell]['count'])) - 20\n",
- " yupper = max(max(day1.loc[day1['Cell'] == cell]['count']),\n",
- " max(day2.loc[day2['Cell'] == cell]['count']),\n",
- " max(day3.loc[day3['Cell'] == cell]['count'])) + 20\n",
- " \n",
- " ax[0].set_ylim(ylower,yupper)\n",
- " ax[1].set_ylim(ylower,yupper)\n",
- " ax[2].set_ylim(ylower,yupper)\n",
- "\n",
- " ax[0].set_title('Day1')\n",
- " ax[1].set_title('Day2')\n",
- " ax[2].set_title('Day3')\n",
- "\n",
- " ax[0].set_ylabel('Count')\n",
- " ax[1].set_xlabel('Time')\n",
- " plt.suptitle('Cell{0} Count'.format(cell))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 10,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAABC0AAAGeCAYAAACw6vt3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAACesUlEQVR4nOzddXhc55n+8e87IxgxswVmhtiOEwcbaAMNtFtKmhS3tKX9td3SdqHdwm67ZW4Km0LaNOVAKZw4cewYYibZFjPzaOD9/XFmxpKFtgVj6/5cl69IM2eOXo2Vc/ncet7nMdZaRERERERERESijWu2FyAiIiIiIiIiMhqFFiIiIiIiIiISlRRaiIiIiIiIiEhUUmghIiIiIiIiIlFJoYWIiIiIiIiIRCWFFiIiIiIiIiISlRRaiIiIzHHGmDJjjDXGxIQ+f8oY847ZXpeIiIiIQgsREZELhDHmjcaYHcaYHmNMvTHmL8aYK87xnAXGmAeNMXWhYKNsNtYxybVaY8yi6f46IiIiMnMUWoiIiFwAjDEfBr4OfAHIA0qA7wK3n+Opg8BfgdfM8jpERERkDlJoISIicp4zxqQB/wW8z1r7e2ttr7XWZ619yFr70dAxLmPMJ4wxx40xrcaYB4wxmROd21rbaK39LvDiFK0j3hjz9VDlRl3o4/jQc281xmw57ZyR6gljzL3GmO8YYx4xxnQbY7YZYxaGnnsm9JI9oQqPN0z2/RMREZHopdBCRETk/LcZ8AB/GOeYDwKvAq4GCoF24DuzsI5PAZcC64C1wCbg387ga9wJfAbIAMqBzwNYa68KPb/WWptsrf31Ga1cREREopJCCxERkfNfFtBirfWPc8y7gU9Za2ustV7g08Brw803Z3AddwH/Za1tstY24wQQbzqDr/F7a+320Ne4Dyf8EBERkQvUVP5DRURERGZHK5BtjIkZJzAoBf5gjAkOeSyA03diJtdRCFQO+bwy9NhkNQz5uA9IPrMlioiIyPlElRYiIiLnv63AAM72j7FUAzdZa9OH/PFYa2tneB11OAFKWEnoMYBeIDH8hDEmfwrXJiIiIuchhRYiIiLnOWttJ/AfwHeMMa8yxiQaY2KNMTcZY74UOuz7wOeNMaUAxpgcY8ykJnoYYzxAfOjT+NDnZ7uOXwH/Fvr62aHjfxF6bg+w0hizLvQ1Pn0m7wPQCCw4w9eIiIhIFFNoISIicgGw1n4V+DBOU8tmnMqK9wN/DB3yDeBB4O/GmG7gBeCSSZ6+H+gJfXw49PnZruNzwA5gL7AP2BV6DGvtUZzpI48Bx4Bhk0Qm4dPAT40xHcaY15/ha0VERCQKGWvtbK9BRERERERERGQEVVqIiIiIiIiISFRSaCEiIiIiIiIiUUmhhYiIiIiIiIhEJYUWIiIiIiIiIhKVFFqIiIiIiIiISFRSaCEiIiIiIiIiUUmhhYiIiIiIiIhEJYUWIiIiIiIiIhKVFFqIiIiIiIiISFRSaCEiIiIiIiIiUUmhhYiIiIiIiIhEJYUWIiIiIiIiIhKVFFqIiIiIiIiISFRSaCEiIiIiIiIiUUmhhYiIiIiIiIhEJYUWIiIiIiIiIhKVFFqIiIiIiIiISFRSaCEXFGNMhTGm3xjTbYzpMMY8b4x5jzHmnH/WjTGfNcbsM8b4jTGfnoLliohckKbrWmyMyTXG/MoYU2eM6TTGPGeMuWSq1i0icqGY5n8TP2mMaTbGdBlj9hhjbp+KNYuMRaGFXIhutdamAKXA/wAfB348BectBz4GPDIF5xIRudBNx7U4GXgR2ABkAj8FHjHGJJ/jeUVELkTT9W/ifwYKrLWpwLuAXxhjCqbgvCKjUmghFyxrbae19kHgDcBbjDGrjDGvNMbsDiXD1UMrJowxjxhjPjD0HMaYvcaYV4XO91Nr7V+A7hn8NkREzmtTeS221p6w1n7VWltvrQ1Ya+8B4oClM/pNiYicR6bh38R7rbX+8OmBWKB4Rr4ZmZMUWsgFz1q7HagBrgR6gTcD6cArgX8KX4BxfmN3d/h1xpi1QBHw5xlcrojIBWk6rsXGmHU4oUX59K1cROTCMJXXYWPMw8aYAWAb8BSwY9q/AZmzFFrIXFEHZFprn7LW7rPWBq21e4FfAVeHjvkTsNgYszj0+ZuAX1trB2dhvSIiF6IpuxYbY1KBnwOfsdZ2ztD6RUTOd1NyHbbW3gKkADcDf7PWBmfuW5C5RqGFzBVFQJsx5pIhzYM6gfcA2QDWWi/wAHB3qEnRnTj/IBYRkakxJddiY0wC8BDwgrX2v2f0OxAROb9N2b+JrbW+0NbpG4wxt83ctyBzjUILueAZYy7GuUBvAX4JPAgUW2vTgO8DZsjhPwXuAq4D+qy1W2d4uSIiF6SpuhYbY+KBPwK1wLtnZPEiIheAafw3cQywcFoWLYJCC7mAGWNSjTG3APcDv7DW7sMpY2uz1g4YYzYBbxz6mtAFOQh8hZG/2Ys1xnhw/r+JMcZ4jDHumfheRETOV1N5LTbGxAK/BfqBN6scWURkYlN8HV5mjLnJGJMQ+rfx3cBVwNMz9f3I3GOstbO9BpEpY4ypAPIAP86F9iDwC+D71tqAMea1OBffTJyLawWQbq0d2mzo34DPAguttSeGPH4v8JbTvuTbrLX3TtO3IyJyXpqua7Ex5mqchm/9ofOG3WStfXZ6vysRkfPHNF6HlwP3AiuAAHAM+IK19g8z8o3JnKTQQuQ0xpg3A++y1l4x22sREZmrdC0WEZldug5LtND2EJEhjDGJwHuBe2Z7LSIic5WuxSIis0vXYYkmCi1EQowxNwDNQCNOcyIREZlhuhaLiMwuXYcl2mh7iIiIiIiIiIhEJVVaiIiIiIiIiEhUUmghIiIiIiIiIlEpZrYXcC6ys7NtWVnZbC9DRGSEnTt3tlhrc2Z7HTNB12IRiUa6DouIzL6puBaf16FFWVkZO3bsmO1liIiMYIypnO01zBRdi0UkGuk6LCIy+6biWqztISIiIiIiIiISlRRaiIiIiIiIiEhUUmghIiIiIiIiIlFJoYWIiIiIiIiIRCWFFiIiIiIiIiISlRRaiIiIiIiIiEhUUmghIiIiIiIiIlFJoYWIiIiIiIiIRCWFFiIiIiIiIiISlRRaiIiIiIiIiEhUUmghIiIiIiIiIlFJoYWIiIiIiIiIRCWFFiIiIiIiIiISlRRaiIiIiIiIiEhUUmghIiIiIiIiIlFJoYWIiIiIiIiIRCWFFiIiIiIiIiISlaY9tDDGuI0xu40xD4c+/7QxptYY81Loz81Djv2kMabcGHPEGHPDdK9NRGQu0HVYRGT26VosInJ2Ymbga/wzcAhIHfLY16y1Xx56kDFmBXAHsBIoBB4zxiyx1gZmYI0iIhcyXYdFRGafrsXTrLPPR2yMITFuJm5xRGSmTGulhTFmHvBK4EeTOPx24H5rrddaexIoBzZN5/pERC50ug6LiMw+XYtnxtvu3c6nHzww28sQkSk23dtDvg58DAie9vj7jTF7jTE/McZkhB4rAqqHHFMTekxERM7e19F1WERktn0dXYunXXlTD+VNPbO9DBGZYtMWWhhjbgGarLU7T3vqe8BCYB1QD3wl/JJRTmNHOe+7jDE7jDE7mpubp3DFIiIXlum6DofOrWuxiMgk6N/EM6N/MEDXgJ/GLu9sL0VEpth0VlpcDtxmjKkA7geuNcb8wlrbaK0NWGuDwA85Ve5WAxQPef08oO70k1pr77HWbrTWbszJyZnG5YuInPem5ToMuhaLiJwB/Zt4BjR1DwDQ3O3F2lHz9mHH3vC1Zzjc0DUTSxORczRtoYW19pPW2nnW2jKcZkJPWGvvNsYUDDns1cD+0McPAncYY+KNMfOBxcD26VqfiMiFTtdhEZHZp2vxzAhXWAwGgnT0+cY9dkdFO0cau3loz6i5vIhEmdlorfslY8w6nDK3CuDdANbaA8aYB4CDgB94n7oki4hMC12HRURmn67FUyhcaQHQ2D1ARlLcmMceaegGYMuxFj6qgbIiUW9GQgtr7VPAU6GP3zTOcZ8HPj8TaxIRmUt0HRYRmX26Fk+fob0sGru8LMsf+9hwaLG3tpOOvkHSE8cOOERk9k339BAREREREZFp1dQ1pNJiyMejOdrYTUGaB2vh+eOt0700ETlHCi1EREREROS81tg1QG5KPDA8wDjdgC9ARWsv/7C+iOT4GJ491jJTSxSRszQbPS1ERERERESmTGOXl5LMRAYDwXHHnpY39RC0sLIwjc0Ls3j2WDPWWowZbdKsiEQDVVqIiIiIiMh5rbF7gLxUD3kpnnG3h4T7WSzJS+HKxdnUtPdT2do3U8sUkbOg0EJERERERM5rTV1eclPjyU2Np7F77EqLI43dxMW4KMtK5IpF2QA8Wz43toh09A0SCNrZXobIGVNoISIiIiIis2a0G2lrJ39z3eP10+P1k5fqITfFQ/MElRaLcpKJcbuYn51EUXoCW441T+rr+APBM1pXNOnx+rnii0/y860Vs70UkTOm0EJERERERGbFAzuq2fC5R+kb9Ecea+3xsvrTf+eZo5MLE8KNN/NS48lLjaep20twjIqCo43dLMtPAcAYw5WLs3m+vJVer3/U48MG/UFe8fVn+PLfj0xqTdHmQG0nPV4/T03yPRWJJgotRERERERkVvxyWxUdfT6ONvZEHtsbusHeXdUxqXOEG2/mpXjIS/XgD1ra+gZHHNfZ56O+c4AlodAC4PUXF9Pt9fOLFyrH/Rq/31XDieZenj5Pb/r31XYCsKOiXVtE5Lyj0EJERERERGZcVWsfL1V3AHCkoSvy+NFQs8zKtt5Jnaep26m0yE31kJfqjD0drRnn0SbnvEvzToUW60syuGJRNj989gQDvsCo5/cHgnz3qeMAHKrvHlYVcr7YW+OEFj1eP4fquyY4WiS6KLQQEREREZEZ99DeOgBi3YYjDacqLcITPqrbJjfVIxxQOI04PYDTmPN0h0PnXTqk0gLg/dcuoqVnkF9trxr1/A/uqaOqrY87NxUTCFr2hQKA88m+2k7WzksDYNvJtllejciZUWghIiIiIiIz7qE9dawvSWdFQSpHGk/99v9IY6jSYoxRpIP+IP/2x33UdvQDzvaQhFg3KfEx5IVCi1ErLRq6SfHEUJDmGfb4pQuy2FSWyQ+ePoHXP7zaIhC0fOfJcpblp/Avr1gKwK4xtq3c88xxtp1oncR3PrO6BnycbOnlFSvzKclMZPvJ6FujyHgUWoiIiIiIyIw62tjN4YZubltbyJK8lEilRSBoOdbUQ6zb0NTtpX9w5JaNww1d/OKFKu4L9aFo7BogLzUeYww5yeHtISMrLY40drM0LwVjzIjn3n/tIhq6Bvjdztphj/91fwPHm3t5/7WLyEqOZ352Erur2ke83lrLl/9+lN/urDnzN2Oa7Q/1s1hdlMam+ZlsP9k2ZqNSmdie6g7+uLt24gNlyii0EBERERGRUXUN+Pj1i1VTPurzwZfqcBl45ZpCluan0NLjpbXHS0VrL4P+IJsXZgNQ3T6y2qKh06mieOxQI+BsBQlvC4mLcZGVFEdj9/BKC2stRxq6WZw3fGtI2JWLsynLSuSJw03DHn/icBPZyXHctKoAgIuK09lV1THi/ega8DPoD9LaO7IB6GwLb2cJhxbtfT7Km3smeJWM5d7nK/i3P+4/b8ffno8UWoiIiIiIyKh+s6OGj/9uH4fqu6fsnNZaHtxTx2ULs8lJiY/0mDjS2B1pwvnyFXmA06zzdOGtH0cbe6hq7aOxeyCyLQQgJyU+MgY1rKnbS2e/LzLu9HTGGJbkpXCyZfjN/ImWHhblJuN2OdUZF5Vm0NLjpaa9f9hxzd1OZUdLz8gKj9m2t7aTeRkJZCTFcen8LEB9Lc5FW+8gPV4/7X2+2V7KnKHQQkRERERERnWwzuk1MbTnxLmqbuunqq2PG1blA6emeRxtcLaMGAPXLcsFoHKUZpwNQwKJRw81OttDUuIjj+WlekZsDxmrCedQC3KSqWrrwx8IAk64cqK5lwU5yZFjLipOB2DXaVtEwqFFa090VlqsCTXhLM5MID/Vw3aFFmetIzROt7J1ctNt5NwptBARERERkVEdDI3HHDrd41ydCFUzhMOKnJR4MhJjOdLYw9HGbsqykihI85ASH0PVKDeGDZ1eCtI8LMlL5g+7axjwBYdVWuSlxkfGoIaFKziWjrE9BGBBThK+gKU6VEXR1jtIZ7+PBdlJkWOW5aeQEOtm92nNOJt7TlVaTLRtwFo7Yze8HX2DVLX1sbooHXAqSpy+Fq3a3nCWOvqdCouqSU63kXOn0EJEREREREYY9Acpb3Ju9o82Tt32kPBUkLKsRODU1owjDV0caehmSV4yxhiKMxNHvTFs6OonL9XDdcvz2F/rhCq5qcMrLZq7vQSGNJs83NBNbko8GUlxY65rYY4TTpwI9Xs40dIbevxUpUWM28WaeWkjmnGGKy28/iC9ozQPHWpLeQtX/+9T/GxrxbjHTYXw+7O6KC3y2KULsmjs8rL3PBzdGg3aQ31LRtu6JNNDoYWIiIiIiIxQ3tSDL2BJinNzpGHs0OJMf2N/sqWXpDg3OUO2dCzLT+FwQzcVrb0szU8FoDQrcfTtIZ0D5Kd6uH55XuSxoZUWuakeghZah/SXONrYPe7WEIAF2U44caLZCStOhv67ICdp2HHrSzM4UNfFgO9UOBEOLQBausfva7Gjwgk8/uuhg2w9Pv74UWvtOU362FvbAQwPLW5dW0CqJ4bvPFl+1uedq/yBIF0DfmD0rUsyPRRaiIiIiIjICOGtITesyqe2o5/ugZGNB//vuZNs/u8nqOvoH/HcWCpbeynNSho2enRJfgp9gwGC9tQWjpKsRGra+kfctDd2eclP87CuOJ3sZKdyYtj2kJThY0+dMard424NAchIiiMjMTayfeV4Sw9xbhfzMhKHHXdRcTr+oOVA3alKhaGhRWvv+KHFvtpOyrISKc1K5H2/3EXNKBNSwv7nr4e59itPjRsajWd/bSclmYmkJcZGHkvxxPLWy+fz94ONHG6Yul4lc0Fn/6n/B7Q9ZOYotBARERERkREO1nWREOvmhpVOw8yjjcP7Wjx9tJnPPnyQhq4BfvD08Umft6K1j7Ls4UHA0EBhab5T8VCSmchgIDis8WaP10+P109eqge3y3DNUqdhZ+5pjTgBajucm8qqtj4GfEGWTFBpAU4zzuOhCosTzb2UZiVGJoeELcp11lfRcuqmtaXHS1yMK/Tx2M04rbXsrelkY1kmP3zzRnyBIO/82U76x9hScqC2i4rWPv7hu8/x6MFGdla28aFfv8S1X3lqWFAylqONPaNOTHn75WUkxbn59hNzr9ri/547yZt/sv2sXhueGOKJdWl7yAxSaCEiIiIiIiMcrO9kaX4KKwqc7RpDf9tf0dLLB365iyV5Kdy2tpBfvVg9ovnlaPyBINVtfZRlDd9yEQ4U4tyuyHOlmc5/h/5Gu6HT+Rr5aU5I8c/XL+Yrr1tLUnxM5Jil+SmkxMfw+KGmYeueqNICYEF2UmR7yInmnhFbQwCKMhIwBqqHVEg0d3tZkueEGeNNEGnoGqClx8vqojQW5CTzzTsv4nBDFx/97Z5Rt9k0d3vZUJrBwtxk3vmzHbzme1v5y/56TjT3sqW8edzvxRcIUtHSGwlZhkpPjONNm8t4ZF89x5unrslqtOsa8PHVR4/yzNHmMYOi8YQnh6wqTKOha2DYFiGZPgotRERERERkGGstB+u6WFGYSlF6Aklx7kgzTl8gyLt/vhOXy/DDN2/kI69Ygj8Q5IfPnJjwvLUd/fiDdkRokeqJpTDNw8LcZGLczi1KSaZTjTH0N9qNoaqLcDXFvIxEXrNh3rBzeWLdvGJlPn890IDXH+BIaIzq4ryRN++nW5CTTEuPl/ZeZ+rG0HGnYfExbvJSPFS3ndoS09zjZWmeE+4M7aVxunDzy9WhEaTXLM3lYzcs4+G99Xz/6ZHvX3OPl2X5KTzw7s38yyuW8IVXr+bFT11PiidmwrGlla29+IN2zO/7HVfOJz7GxdcePTqlk0R2VbXzhh9s5XXff57Xff95frW9asrOfa5+vrWS7lBPirPZ3hGutFgzLx1g3K09MnUUWoiIiIiIyDC1Hf10DfhZUZCKy2VYnJcS6X/w2MFGjjR289+vXk1xZiKlWUncvq6IX7xQRVvv2FUG4DThBCjLHlnB8L5rF/Guq+ZHPi9M9xDjMqNWWhSkJYz7dW5dW0D3gJ+njjRztLGbksxEEuNixn0NwPzQup451owvYCOfn25eRkLkhjUQtLT2eClK95DqiaFlnNBiX00nbpeJVK8AvOfqBdy6tpAv/e0wz5e3RB73BYK09Q6SkxKPJ9bN+69dzBsvKSHFE8umsky2nRg/tDgW2s6zKGf0CpPs5Hjec/VCHt5bzy+2TV2w8POtleyr7STW7aKtd5B//+P+s+7JMZV6vX5+9OwJitKdn52zGTsbrrRYW5wWOodCi5mg0EJERERERIY5VO/cZK4odG6ul+WncKShG2st922roig9gVeEel0AvO+ahQz4A/x4y/jVFpFxp6f1tAC465JSXn3RqaqJGLeLooyEYVMawv0t8oc03hzN5YuyyUyK46E9dRxu6JrU1hA4NfY0vLVk4SjbQwCKMxOpaXcqLdp6BwlayEmJJzs5npZxgpu9tZ0syUvBE+uOPGaM4UuvWUNyXAx/2d8QeTy8zWTolJWwTfMzOdHSO+6WnPImJ7RYmDv69wDwwWsXc+2yXD7z4AG2nRh/kklYXUc/9zxzHH8gOOI5fyDIE4ebuGlVAb9856X85j2XkeyJ4d//tH9KqznOxi+3VdHe5+Ozr1oJjF1pcbihi4f21I36XEeo0mJdcfq455CppdBCRERERESGOVjXhTFEmjguyUuhvc/Hzsp2tpS3cMfFxcMaVC7KTeGGFfnct61q3H3+kXGnySNvxEdTkplI1ZDfiDd2DZDqiSEhzj3OqyDW7eLm1fk8dqiRita+CcedRr5eViIuA08ecUKL8BjU0xVnJFDf2Y8vEIw0xAyHFmNtD7HWsr+2kzVDxo+GJcS5KcpIoL7zVAgROe8o79Wm+ZkAvHiyfczv5VhTD0XpCeNWmLhchq/fsY6SrET+6b5dk5oC88ttVXzhz4f5778cHvHcjsp2Ovt9vHyF0yA1MymOj9+4jO0n2/jD7toJzz1dBnwBfvDMCS5flMU1S3NJ8cSMGTjc8/QJPvzAS6P+HLf3DRLjMpRkJpIU51alxQxRaCEiIiIiIsMcrO9kflZS5IY3HF585qGDuF2GN1xcPOI1b9pcSkefj7/srx/zvKONOx1PSWbiiO0h+WnjV1mE3ba2iAFfkEDQTjq0iI9xU5yZSPeAn4zEWDKS4kY9bl5mIkHrVB0095wKLbKS48ZsxFnb0U9b72Ckn8XpCtI8NHQN7ZMxEDnv6VYVpZEY52b7ybGrI8qbekZtwnm6VE8s97xpA229gzy8d/QKg6F2VbVjDPx4y0l+t7Nm2HOPHWwkzu3iysU5kcfesLGYdcXpfOHPh+jsGzk2dybsqmynpcfL2y6bjzGG0qzEMUOL6vY+fAHLgbqR42Db+3ykJ8ZhjKE4M5FqVVrMCIUWIiIiIiIyzMH6LpYXnuq7EJ7usa+2k5cvzyN3lO0ZmxdkMT87iV+O0x+horVvzD4Ro5mfnUR7ny/SgLOxayDShHMiG0szKAgFHJPdHgLOBBFg1CacYfMynL4INe39QyoiPGQlx43Z02JfqAnnmjFCi/y0BOo7Rqm0GCW0iHW72FCawbYxmnEGgpbjzT0snkRoAbAwJ5n4GNe441rD591T3cEdF5eweUEWn/zDPvZUdwBOJcljhxrZvDBr2DQXl8vwX7evpKVnkAcnEYpMh9pQBUk4xHEqeMYILUINVndXjaxi6egbJD0xFoDSrMRhW5dk+ii0EBERERGRiJr2Pqrb+llVeOrmOjs5nuxkp+rgrktLRn2dy2W4c1MxL1a0RyaNDBUed1qaNbKfxVguXZAFwJZjToPKhq6BCftZDF3Pa9bPIy0hdtTGn2MJhxULxnlNcYbzPVS39UXCheyUOLKS4mnv843a72FvbSexbjNm1UdhmofW3sHItoRwgJA9xlaaTWWZHGnsjjSHHKq2vR+vPzipSgtw+mpkJsVN2Ej1aGM3vYMBNs3P4Dt3rSc3JZ53/3wnTd0DHG/upaK1j+tX5I143eqiNDKT4thX0zGp9Uy1+sioXOdnpyQzier2PgLB4X02vP4AjaE+IburOkacp71vkIxIaJFEdVsfweDs9uqYCxRaiIiIiIhIxP3bq3EZuG1d4bDHVxWlMT87icsXZo/52tduKCbO7Rq12iIy7vQMAoQVBalkJcWxpbwFf6h/xGS3hwD88/WLefwjVxPrnvxtz4KciSstCtI8uF2G6nYntEiKc5MYFxMJdtpGCRL21XSyND+F+JjR+3GEv6+mLicEae72kuKJGda0c6hN8zOxFl6sGFkRcKzJCY0mM+Y1bDKhRfhGfn1JBplJcdzzpo109vv4p1/s4s/7nG1B1y/PHfE6Ywyri9IiI19nWl1HP9nJ8ZH3siQzEV/ARhq7htW292MtxMe42DVqpYWzPQScZqxef5Cm7rGnxcjUUGghIiIiIiKAM2bz1zuquWZpbmQ0ZNj/vnYtv3znJbhcY/ejyEyK4+bV+fxuVw19g/5hz4XHnZ7J9hCXy3DZomy2lLfQ3OMlaJn09hBwtlGMVakwliV54eajY9/wx7hdFKZ7qG5zelqEt3CEv9bpfS2q2/rYVdXOmnnpY54zPMa1vtPZntDc7R11a0jY2uJ04tyuUftahCeHjDXudDSZSXG0ThBa7KpqJzMpjpJMp9JkRWEqX37dWnZWtvONx4+xqih1zHG0a+alcayph/7BsRu1Tpe6zgEK00/93ISrfU4fexqeCHPd8lzqOwcifxdhwyotQu+BJohMP4UWIiIiIiICOI0Um7u9o24ByUmJH/OGdKi7Li2le8DPX/Y1DHs8PGnhTLaHAFy5OJvmbi/PHG0GJh53eq42lmZw79su5pqlIysGhpqXnkhNex8tQ8KFrFFCi75BP+/6+U5iXIZ3XrlgzPOFKy3CWxmau73jTlnxxLpZV5zOlvKRocWxph5yUuJJC91gT0ZWUhztE1ZatLO+JH1YI9VXringfdcsJBC0XLds5NaQsFVFaQSCloP1Ixtcnolfv1jFK7/57BmNUK3r6KdwyM9uOHQ5vZFmdbvz+W1rnSqj07eIdPT5yAhVWoTPcXrwIVNPoYWIiIiIiABw37YqitITuHrJ+Dfs49lYmkFuSjxPhUKGsDMddxp25WJnO8pvQ5MqzmR7yNkwxvCypbnjVpQAFGcmUN0+vNIiK7Q9JNyM01rLR3+zlyMNXXzzzovGrTIpOD206Bm/0gLg5tX5HKrvYn/t8G0X5U09LBpne8toMibYHtLRN8jx5l4uKskY8dxHXr6UL712DW+7vGzM14cbkJ6+1vF84nd7+f7Tx4c99rtdtRyo66Jr4FQlT2uPl1u/tYXyppG9VKy11HX0UzCk0qIgzUOMy4wYWVrd1k+s2/n7j4txDWvG2T8YwOsPRraHFGUk4B7lHJPVN+jn7h9t44+zOAr2fKHQQkREREREqGjpZUt5C3dcXIx7ghv28RhjuGJRNs+VtwxrUniy5czGnYYVpCWwMCcp0rvhTLaHTKfijESau73UdfRHgpjsJOe/4dDiZ1sreWRfPR+/cRkvm6ByIyk+hlRPDA2T3B4C8Or18/DEurhvSA8Ray3lTT1n1M8CnEqLHq8fr3/07Ru7Q1NCLipJH/Gcy2V4/cbiyA39aPJTPWQnx0+6r0XXgI/f7Kzh/547Gfk56vX6I0FC85BeEgfquthX28mDe0aO2+3q99M3GBi23SnG7aIoI2HE1o6a9j6K0hPwxLpZXZTGriGVFu2hPiXh6SGxbheLcpLZdwYhzFDfeqKcLeUt/Psf99PUPTDxC+YwhRYiIiIiIsKvXqzC7TK84eLicz7XFYuzaesdjGwF6PX62XaylfWl6Wd1visX5wAQ6zZkJY19YzyTikPbA/oGA5FwITUhhhiXifSGuP/Fai4qSeddV429LWSogrQE6jsH6Bv00+P1TxhapCXEcuuaQh58qZYer1N50Njlpcfrn/TkkLDMUOAyVrXF7qoOXAbWjtOXYzzGGNbMS2Nfbcekjt96vJVA0NLY5WV/nRMMbDvZii/gBBhDb/TDI3G3HGsecZ7wuNPC03q0lGQmjggtqtv7I3+vFxWns6+2k0G/MwkmHFpkDNlys740nZeqO854gsixxm5++MwJrlqSg9cf5AuPHDqj1881Ci1EREREROaQHq+fT/5+H48dbBz2+PPlrVwyP5PcKahkuGKRs6VjS7kzqvSxQ40M+ILctrbonM6Xm+KZcNvGTJmXceomOBwuGGPISo6jtcdLbUc/h+q7uHlVwaSrS/LTPNR3DtDS7dwgT2YrzRsvKaF3MBDZZrA3NFb0TLeHZCY5N+NjhxbtLM1PJSk+5ozOO9TqojTKm3ro9fonPHbLsRY8sS5cBh471ATAs6HRtzC80iI8weOl6g46+33DzhNupllw2raikszEEVs7atr6mBcaZ7u+NINBfzASvHX0OecdWk1yUXEGnf0+TrRMvq+FtZZ//9N+EuPcfPX1a3nP1Qv440t1bD0+sjfJaP5+oIEPP/ASH37gJT76mz2jbom50Ci0EBERERGZQxJj3Ty0p46nh/Sc8AeCHGnsZlVR2pR8jdxUD0vzUng29JvvB1+qoyDNw8bSkf0QJuPShVnEuMy097M4E+HfyAPDKiKyk+Np6Rnk8UNOKHTdKCNAx1KY7oQWzT0DI847lnXF6awoSOW+bVU8erCRD/36JfJS41k978z+LsertAgGLS9VdbB+lK0hZ2J1URpBy6SacT57rJnLFmazsTQzErBtOdbCumJnDeHRsM7HzvsVtIy4+a8LVVqcPg2nNCuRzn4fnaEwotfrp7V3MBJGrQ/17thV6WxHOVVpcSq0CFcO7R5lPOpYHtxTxwsn2vjYjcvITo7nvdcsojgzgX//0/4Jw5wXTrTy3vt28dSRZrafbOP3u2u59/mKSX/t85VCCxERERGROcTlMqwsTGXvkL34J1p6GfQHWVGQOmVf54rF2bxY0U5D5wDPHGvmljUFZ10lkRwfw6suKopUXESDnOR44mJcoY9PhSlZyfG09nh59GAjC3KSWHAGFQ/5qQm09Hip7Zh8aGGM4Y2XlHCovot3/mwHC3OT+dP7riDFM/nJIeCMPIXRQ4vf7Kym2+s/5/c/HKTsm6CvRXVbHxWtfVyxKJvrludysL6LXVXtHGvq4ebV+cTHuE7bHuJlfnYSiXFutpQP3yJS2zFArNuMGH1bctrI0vA2knAYlZ/moSDNE+nl0R4KN4ZuD1mQnUyqJ2ZY74uJ/PrFahbmJHHnJmdCjyfWzWdvX8WJ5h5e873nR0w0Catp7+O99+2iNCuRpz76MrZ8/FquXpLDliHVJ5Oxv7bzvKvOUGghIiIiIjLHrJmXxqH6LnwBZ7/+wTrnN9/Lpzi0GPQH+ezDB/EF7FlvDQn78uvW8qGXL5mi1Z07l8tEfis/rNIiKY7q9n5eONHKy5ePPQJ0NOEtDAdCgdJkQguAV11URFF6Aq9aV8gD7958VhUpWWOEFu29g/zPXw5zcVkGN67KP+PzDpWX6iEvNX7C5pXhbUVXLs7m+hXOe/iZhw4CcMWiHHJT4yNbQgAauwcoSk/g0gVZI27i6zv7yU8bua2oJNOZ5BIOLcJhQfGQbT/rSzIilRadoUqLoWNkXS7DupKMSVdaBIKWPdUdXL4oe1iz25ctzeXet22itqOf27/zHNtPtg17Xd+gn3f/fCe+QJAfvnkjqaFA6srF2VS09o0ZdAxlreX/njvJ7d95jn/9/f5JrTdaKLQQEREREZljVs9LZ9Af5Gij8xvXg/VdxMW4WJAz9kjOM3XJ/Ezi3C4e2VfP/OwkVhVNXSASLcL9D8KjTsMft/UO4gvYyA33ZIXDhr01nbgMZCVNLrRIjo9hy8ev4et3XIQn1n1GXzMsLSEWlxkZWnzpb4fpGvDz2VetOuPJL6NZXZQe6bsxli3HWshLjWdRbjILc5JZkJ3EnuoOspPjWJafQk5y/PCeFl1eclPjuWLRyJv4uo5+CtMSRnyNkizn766yzelHEQkthmz7uagkndqOfpq6Bmjv85EY5yY+Zvj7e1FxOkcbuyONUHu9/khj0NMdbeymdzAw6gSWq5bk8Kf3XU56Qix3/egF7t9eFVn/63+wlYP1XXzzjouGVe6ExwGHQ56xDPqDfOJ3+/jMQwdxu0ykquR8odBCRERERGSOWVM0vEz/YF0XS/NSiHVP3e1BYlxMZM//rWsLp+SGN9osy09hXkbCsPctK7QNISMxNtIXYbIK053QYn9tJ5lJ8Wc0evZc31+Xy5CRGBeZfAKwq6qd+1+s5m2XlbEsf2pCp3XFaZxo6aWhc/Qb+0DQ8tzxFq5YlBP5nsJ9QS5flI3LZchN8UQqLYJBS1P3AHmpnlFv4us6BkZMDgEn6MlNiY9UUlS395MQ6x42neaicF+Lqg7a+waH9bMIW1+aQdDCnuoOrLW87d4Xufp/n+ShPXUjjt0VqsgY6+diQU4yf3jv5WxemM0nfr+PDz/wErd9+zkqWvr40Zs3cs2y4f1RFuYkk5/qmXCLyO931fDrHdW892ULedtlZTR1D2DtmU08mU0KLURERERE5pjSrERSPDHsre3EWsvB+q4p7WcRdvUS5ybrtrWFU37uaPCh65fw+/deNuyxcO+Ea5blnlHoAJAfqgjo9vrJTp750a6ZSXG09ZwKLb75+DFykuP5f1O4Lee2tUVY6/R2GM2Buk46+nxcteRU/4xXrHS2pVy9xBl9m5saH2m+2d7nVLXkpTiVGUNv4gNBS0PXQCQMOt0dm0p47FAThxu6qGnvY15GwrDwZ2VhKrFuw+7qdjr6fKQnjuwTsi40AnZ3VTu/21XL9pNtZCXF84Ff7ebLfzsybBzq7qoOMpPiIv00RpOWGMtP3rKRd1wxn9/vqiUp3s0f3nsZ142y1cgYwxWLs3nueAuBccau7q3tJC0hlo/esJT8NA++gI306DgfnP28GhEREREROS8ZY1gzL419NZ00dXtp6x1kReHUhxZvu7yMzQuzWJR7ZuM3zxcJcW4S4oZvF8hLdUKLM+1nAc5v/1PiY+j2+ifdz2IqZSbF0dZ3KrQ4VN/FFYuzST6HMaenK8lK5MrF2dz/YhXvu2YhMaEqlV6vnz++VMu9z1VgDFy28FRocXFZJr99z+ZI5UNuSjxdA34GfAEaQ1NE8lI9kZv4Rw824vUHaOsdJBC0o1ZaALz98jJ+/OwJvvPkcarb+odtDQGnSebKwjR2V3bgCwZHrbRIS4xlUW4yTx9t5kRzL+tL0vnlOy/lP/60n28/WY4n1sX7r10MOJUW60vSJ6yKiXG7+LdbVnDT6gIW5SaTljB2U9UrF2fz25017K/tZG1ossrpjjZ0szQvBWMMeaGRxo1dA5Hmq9FOlRYiIiIiInPQqqI0Djd0sTs0+WA6QgtPrDsyonKuuGxhNt+7az03rDy7ppXhvhazFlqEtoc4vRm8LDyD6SeTddclpdR3DvDUEWfSx4G6Ti77nyf41B/2E+t28e0714/4/jeWZUYqV3JTnPeoudtLY2iKSG7oZvy2tYV09vv46/4G6kJTWEbraQGQnhjHmzaX8fDeOsqbeyKNVYe6qCSdvbUdNHd7R620AKevxYsV7bT3DfLZV63CE+vmi69Zw9VLcvjZ1kp8gSAdfYOcaO6NBC+TsaE0Y9zAApwtMzB2XwtrLUcau1manwKcCtXG6rsRjRRaiIiIiIjMQWuK0vEFLH/YXQM4/Rnk3LldhptWn/1414L0kRNJZsrQ0OJki9OgckH21DVnDbtueS65KfHct62S1h4v7/rZThJi3fzuny7jkQ9ewSvXFIz7+pzQjXdT90Bkm0j4ZvyKRdmUZCbyy21V1IUaTo5VaQHwjivnEx/jYtAfpDhj5LaN9SUZDPiC1LT3j1ppAU5fC4A3by5jZaHTL8YYw5suLaWp28vjh5oio1NHa8J5LrKT41lekMqzx5pHfb6+c4DuAT9LQv9/hwOfpi7vqMdHI4UWIiIiIiJz0Jp5zs3V44eaKMlMJMUz/m90ZWYUhCoGcpJnPrTISoqjo8/ZUnG8uQdg2LSKqRLrdnHHxcU8dbSZt9/7Ii09Xu558wY2lGZMqqFobijQaeryRraHhEMel8vwxktK2HayLXIjP1ZPC3Bu+t+4qRSA4syR4UY4kADGrLS4eVUB733ZQj7yiuG9P65Zlkthmof7tlWyu7Idl4G1oR4YU+nKxdnsrGyns39kn4ojDc6EoHAomatKCxEREREROR/My0ggPTEWf9BOSxNOOTuzvT0kaKGz38eJ5l6McZq2Toc3bCrBAHtqOvmf16xmzRnczEe2h/R4I70Zho4ifd2GecS6Db/bVUtKfMyEgdx7r1nI6zfO49IFWSOeK0zzREKS9DEqLdISY/nYjctGfB23y/CGi0t49lgLj+yrZ2l+KklT2B8k7PZ1hfiDlq89enTEc0dCY42X5DqhRXyMm/TE2Mi2mvPBtIcWxhi3MWa3Mebh0OeZxphHjTHHQv/NGHLsJ40x5caYI8aYG6Z7bSIic4GuwyIisy8ar8XGGFaHRp9ORz8LOTsFsxhaZIQaM7b1ejnR0ktRegKeWPcErzo7RekJfODaxXzq5uW8+qJ5Z/TazKQ4XOZUpUXuae9VVnI8N64qGLcJ51DZyfF86bVrRw0ljDGREaUZY1RajOcNFxfjdhmOh5p0ToeVhWncfUkpP9tawYG6zmHPHW3opiDNQ9qQteeleLQ95DT/DBwa8vkngMettYuBx0OfY4xZAdwBrARuBL5rjJme/0NEROYWXYdFRGZfVF6Lw1tEVGkRPS5ZkMXa4nSW58/830lWknPz39ozyInmnmnZGjLUh16+hHdeteCMX+d2GbKT452eFt0DkYkYQ911SQkABeNsDZmscB+KsbaHjCc/zcP1y3ND55l8E84z9S+vWEpGYhz/9sf9w8asHm7oZkne8H41uanxNHYrtADAGDMPeCXwoyEP3w78NPTxT4FXDXn8fmut11p7EigHNk3n+kRELnS6DouIzL5ovhZfuyyXovSEKW8OKGdvfnYSf3rf5ZGqh5mUGam0GORkS++0NOGcKrmp8TR1e2nq8kaacA51yfxMLl2QySXzR275OFPXLsulIM0z4uZ/st555QLyUuO5fNG5r2UsaYmx/OvNy9ld1cEDO6oB8AeClDf3jGiym5fqiTQwHc9TR5qoae+blvWeianfUDPc14GPAUPfpTxrbT2AtbbeGJMberwIeGHIcTWhx4YxxrwLeBdASUnJNCxZROSC8nWm+DoMuhaLiJyhrxOl/ybeUJrJc5+49qxfLxeWcGhxqL6LvsEAC3OiOLRI8VDX0U9zjzfS42IoYwz3v2vzlHytxXkpbP3kdWf9+o1lmWz71+unZC3j+Yf1Rdz/YhVfefQor7qoiJr2fgb9wRFhS14o8AkG7ZhTbvZUd/DW/3sRl4FrluZy96WlXLUkJzJ2diZNW6WFMeYWoMlau3OyLxnlMTviAWvvsdZutNZuzMnJOac1iohcyKbrOgy6FouITJb+TSznk4wkZ/vDixXtwPRMDpkquSnxHG/uIRC0o1ZazEXGGD788qU0d3t5YEc1R0NNOJeOUmkRCFpaQ+NtR/Onl+qIc7t499UL2VPTyTt+toOWntnZUjKdlRaXA7cZY24GPECqMeYXQKMxpiCUKBcATaHja4DiIa+fB9RN4/pERC50ug6LiMw+XYvlvBEf4yYlPoaXqjsAWBDVlRbx+AJOnpc7Sk+LuerSBZlsLM3g+08d5/aLinAZWJQ7PHwKV6Y0dg2M2vA1ELQ8vLeOly3N4eM3LuND1y9hT03HqL1DZsK0VVpYaz9prZ1nrS3DaSb0hLX2buBB4C2hw94C/Cn08YPAHcaYeGPMfGAxsH261icicqHTdVhEZPbpWiznm8zkOPp9ARLj3ORHcRiQM2Rts3UzHY2MMXzgusXUdQ7ws+crKMtKGjEBJlyZ0jTG2NNtJ1tp6vZy27pCAOJiXFxcljm9Cx/HdPe0GM3/AA8YY/4RqAJeB2CtPWCMeQA4CPiB91lrA7OwPhGRC52uwyIis0/XYolKGYlxVLb2MT87CWNmvn/BZA0dc6rtIcNdtTibNfPS2FvTOWJrCJwKeRrHGHv60J56EuPcXLcsb1rXOVkzElpYa58Cngp93AqM2sXEWvt54PMzsSYRkblE12ERkdmna7GcD7JCzTjnR/HkECCyrcEYyE5WaDGUMYYPXLuYd/5sx6gTT8LvV+MoE0QG/UH+sr+el6/IIyFu2qYtn5HZqLQQERERERGRKBSeIBLNTTjhVKVFVlI8se5p63pw3rp+eS7/eesKblyVP+K5uBgXWUlxNHWPrLTYUt5MR5+P29YWzsQyJ0WhhYiIiIiIiABOTwsgqsedwqlKC20NGZ0xhrddPn/M53NTPTSdVmmxv7aT7zx5nLSEWK5cHD1TiRRaiIiIiIiICACZiaFKi+zorrSIj3GTnhirJpxnKS81PtLT4nhzDx9+YA97qjtIiHXzyZuXERcTPdUrCi1EREREREQEgMsXZXPtslwW50V3aAHw+o3FLM6N/nVGo7wUDwfrugD43MMHOdncw3/euoJ/WD+PtITYWV7dcAotREREREREBIBVRWn85K0Xz/YyJuVfb14+20s4b+WlxtPS4+Wl6g6ePNLMR29YOu52ktkUPTUfIiIiIiIiIjLtclM9BC185qEDpHpieNPm0tle0pgUWoiIiIiIiIjMIeFeILurOnjr5fNJ9UTXlpChFFqIiIiIiIiIzCHhqStJcW7efnnZ7C5mAgotREREREREROaQwvQEXAbetLmM9NDEmGilRpwiIiIiIiIic0h2cjx/fN/lLMtPne2lTEihhYiIiIiIiMgcs2Ze+mwvYVK0PUREREREREREopJCCxERERERERGJSgotRERERERERCQqKbQQERERERERkaik0EJEREREREREopJCCxERERERERGJSgotRERERERERCQqKbQQERERERERkaik0EJEREREREREopJCCxERERERERGJSgotRERERERERCQqKbQQERERERERkaik0EJEREREREREopJCCxERERERERGJSgotRERERERERCQqKbQQERERERERkaik0EJEREREREREopJCCxERERERERGJSgotRERERERERCQqKbQQERERERERkaik0EJEREREREREopJCCxERERERERGJSgotRERERERERCQqKbQQERERERERkaik0EJEREREREREopJCCxERERERERGJSgotRERERERERCQqKbQQERERERERkaik0EJEREREREREopJCCxERERERERGJSgotRERERERERCQqKbQQERERERERkaik0EJEREREREREopJCCxERERERERGJSgotRERERERERCQqTVtoYYzxGGO2G2P2GGMOGGM+E3r808aYWmPMS6E/Nw95zSeNMeXGmCPGmBuma20iInOBrsMiIrNP12IRkXMTM43n9gLXWmt7jDGxwBZjzF9Cz33NWvvloQcbY1YAdwArgULgMWPMEmttYBrXKCJyIdN1WERk9ulaLCJyDqat0sI6ekKfxob+2HFecjtwv7XWa609CZQDm6ZrfSIiFzpdh0VEZp+uxSIi52Zae1oYY9zGmJeAJuBRa+220FPvN8bsNcb8xBiTEXqsCKge8vKa0GOnn/Ndxpgdxpgdzc3N07l8EZHz3nRch0Pn1bVYRGSS9G9iEZGzN62hhbU2YK1dB8wDNhljVgHfAxYC64B64Cuhw81opxjlnPdYazdaazfm5ORMy7pFRC4U03EdDp1X12IRkUnSv4lFRM7ejEwPsdZ2AE8BN1prG0MX7iDwQ06Vu9UAxUNeNg+om4n1iYhc6HQdFhGZfboWi4icuemcHpJjjEkPfZwAXA8cNsYUDDns1cD+0McPAncYY+KNMfOBxcD26VqfiMiFTtdhEZHZp2uxiMi5mc7pIQXAT40xbpxw5AFr7cPGmJ8bY9bhlLlVAO8GsNYeMMY8ABwE/MD71CVZROSc6DosIjL7dC0WETkHxtrxmhdHt40bN9odO3bM9jJEREYwxuy01m6c7XXMBF2LRSQa6TosIjL7puJaPCM9LUREREREREREzpRCCxERERERERGJSgotRERERERERCQqKbQQERERERERkaik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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "plot_cell(1)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 11,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAABC0AAAGeCAYAAACw6vt3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAACMCUlEQVR4nOzdd3zdZd3/8dd1crL3TprZJuneC9oCZU8BZYkDFZUhOFAcuH56e9+ot4PbCYqKIArIlFU2bYEWuke60qZNmybN3nucc/3+OCenCUnatM1q8n4+Hn00+c7rJPTifD/nc30+xlqLiIiIiIiIiMho4xjpAYiIiIiIiIiI9EVBCxEREREREREZlRS0EBEREREREZFRSUELERERERERERmVFLQQERERERERkVFJQQsRERERERERGZUUtBARERnnjDGZxhhrjHF6v19ljPniSI9LREREREELERGRMcIY80ljzEZjTKMxpsQY84ox5qxTvOYVxpj3jDG1xphSY8xfjDHhwz2OAY7VGmOyh/o+IiIiMnwUtBARERkDjDHfAH4D/BRIBNKB+4GrT/HSkcD/ABOAaUAq8MsRGIeIiIiMQwpaiIiInOaMMZHAT4A7rbXPWmubrLUd1toXrbXf8h7jMMbcY4zZb4ypMsY8aYyJOd61rbWPWWtftdY2W2trgL8Ay05hHIHGmN8YY454//zGGBPo3fc5Y8x7H7qmL3vCGPOwMeaPxpiXjTENxph1xpgs7753vKds82Z4fPwkfpQiIiIyyihoISIicvpbAgQBzx3jmK8CHwWW48maqAH+eBL3OgfYeQrj+D5wJjAXmAMsBn5wAvf/BPBfQDSQD9wLYK09x7t/jrU2zFr77xO4poiIiIxSClqIiIic/mKBSmtt5zGOuQ34vrW2yFrbBvwYuK6r+OZAGGMuAj4L/L9TGMengJ9Ya8uttRV4AhA3DXQMwLPW2vXee/wLT/BDRERExqgBv1ERERGRUasKiDPGOI8RMMgAnjPGuLttc+GpO3FcxpgzgceA66y1e09hHBOAQ92+P+TdNlCl3b5uBsJO4FwRERE5zSjTQkRE5PT3PtCKZ/lHfw4Dl1lro7r9CbLWFh/v4saYecALwOettW+d4jiO4AmgdEn3bgNoAkK63TfpeGMTERGRsU1BCxERkdOctbYOz5KNPxpjPmqMCTHG+BtjLjPG/MJ72J+Ae40xGQDGmHhjzHE7ehhjZgKvAl+x1r44CON4HPiB9/5x3uP/6d23DZhhjJlrjAnCs4TlRJQBk07wHBERERnFFLQQEREZA6y19wHfwFPUsgJPZsWXgf94D/ktnmyJ140xDcAHwBkDuPTdQDzwN29XjkZjTH+FOAcyjv8BNgLbgVxgs3cb3mUnPwHeBPYBPTqJDMCPgUeMMbXGmBtO8FwREREZhYy1dqTHICIiIiIiIiLSizItRERERERERGRUUtBCREREREREREYlBS1EREREREREZFRS0EJERERERERERiUFLURERERERERkVFLQQkRERERERERGJQUtRERERERERGRUUtBCREREREREREYlBS1EREREREREZFRS0EJERERERERERiUFLURERERERERkVFLQQkRERERERERGJQUtRERERERERGRUUtBCREREREREREYlBS1EREREREREZFRS0EJERERERERERiUFLURERERERERkVFLQQsYUY8xBY0yLMabBGFNrjFlrjLndGHPK/60bY/7bGJNrjOk0xvx4EIYrIjImDdVcbIxJMMY8bow5YoypM8asMcacMVjjFhEZK4b4PfFKY0yFMabeGLPNGHP1YIxZpD8KWshYdKW1NhzIAH4OfAf42yBcNx/4NvDyIFxLRGSsG4q5OAzYACwAYoBHgJeNMWGneF0RkbFoqN4Tfw1IttZGALcC/zTGJA/CdUX6pKCFjFnW2jpr7QvAx4HPGmNmGmOuMMZs8UaGD3fPmDDGvGyM+Ur3axhjthtjPuq93iPW2leAhmF8GSIip7XBnIuttQestfdZa0ustS5r7YNAADBlWF+UiMhpZAjeE2+31nZ2XR7wB9KG5cXIuKSghYx51tr1QBFwNtAEfAaIAq4AvtQ1AeP5xO7TXecZY+YAKcCKYRyuiMiYNBRzsTFmLp6gRf7QjVxEZGwYzHnYGPOSMaYVWAesAjYO+QuQcUtBCxkvjgAx1tpV1tpca63bWrsdeBxY7j3meSDHGJPj/f4m4N/W2vYRGK+IyFg0aHOxMSYCeBT4L2tt3TCNX0TkdDco87C19iNAOHA58Jq11j18L0HGGwUtZLxIAaqNMWd0Kx5UB9wOxAFYa9uAJ4FPe4sUfQLPG2IRERkcgzIXG2OCgReBD6y1PxvWVyAicnobtPfE1toO79LpS4wx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RERkTMpJCOP9/VW43JYdR+qYGBdKeFDvFssD9akzMvjUGRnHPCY1OhjwtC6dmRLJBm9nkO1FdZ6gRUMbDkOvGh1+DsP3Lp824LE4HIYLpyXy3JZiWjtcBDod/GtdITGhASzNij3BVzZ6aXmIiIiIiIiIjEk5CeG0dbopqmlmR3E9M04yy+JEpHXLtLDWsr6gBoDtRbWAZ3lIfHggfoPQzvniGUk0t7tYk1/JX98t4J29Fdxxbhb+/RQJPR0p00JERERERETGpGxvB5H1BdUU17Zw05JjZ0kMhohgJ2GBTopqWiiobKKysY1gfz+2FdVhraWsvu2Yy0tOxJJJsYQHOvnd2/nsKK7jsplJfOGsiYNy7dFi7IRfRERERERERLrJTvAELZ7fegRgWDItjDGkRgdTVNPsWxpy/cJUKhraKK1vpay+tUc9i1MR4HSwfEo82w7XkhEbwi+um33MVqmnIwUtREREREREZEyKCPInKSKItfsrAU6q3enJ8AQtWlhfUENsaABXz00BYNvhWioa2kgYpEwLgOsXpjEhMog/f3rBKdXrGK20PERERERERETGrJzEMErrW0mJCiYmNGBY7pkaHcIHB6ppau9kYWY0MyZE4HQYNh6soaqpncTwwQtaLJ8cz9rvXjBo1xttlGkhIiIiIiIiY1bXEpHhWBrSJTU6mMa2Tg5Xt7B4YixB/n5MSQrnrT3lACRGDM7ykPFAQQsREREREREZs3ISwgGYmTI8S0PgaNtTgMWZMQDMSYuioLIJgAQFLQZMQQsREREREREZs2Z5gxULMqKH7Z6p3ranoQF+TEv2BE3mpB4NmiQM4vKQsU41LURERERERGTMmpUayVt3LycrPmzY7tmVaTE/IxqnnydXYHZqlG//YLU8HQ+UaSEiIiIiIiJj2nAGLAAig/1ZnBnj6xoCkJMQRpC/Az+HIXaYCoKOBcq0EBERERERERlExhievH1Jj21OPwczJ0RSVNOCw2FGaGSnHwUtRERERERERIbBl8/Ppqy+daSHcVpR0EJERERERERkGJw7JWGkh3DaUU0LERERERERERmVFLQQERERERERkVFJQQsRERERERERGZUUtBARERERERGRUUlBCxEREREREREZlRS0EBEREREREZFRSUELERERERERERmVFLQQERERERERkVFJQQsRERERERERGZWGLGhhjAkyxqw3xmwzxuw0xvyXd3uMMeYNY8w+79/R3c75rjEm3xiTZ4y5ZKjGJiIyHmgeFhEZeZqLRUROzVBmWrQB51tr5wBzgUuNMWcC9wBvWWtzgLe832OMmQ7cCMwALgXuN8b4DeH4RETGOs3DIiIjT3OxiMgpGLKghfVo9H7r7/1jgauBR7zbHwE+6v36auAJa22btbYAyAcWD9X4RETGOs3DIiIjT3OxiMipGdKaFsYYP2PMVqAceMNauw5ItNaWAHj/TvAengIc7nZ6kXfbh695qzFmozFmY0VFxVAOX0TktDcU87D3upqLRUQGSO+JRURO3pAGLay1LmvtXCAVWGyMmXmMw01fl+jjmg9aaxdaaxfGx8cP0khFRMamoZiHvdfVXCwiMkB6TywicvKGpXuItbYWWIVnXV6ZMSYZwPt3ufewIiCt22mpwJHhGJ+IyFineVhEZORpLhYROXFD2T0k3hgT5f06GLgQ2AO8AHzWe9hngee9X78A3GiMCTTGTARygPVDNT4RkbFO87CIyMjTXCwicmqcQ3jtZOARb7VjB/CktfYlY8z7wJPGmC8AhcD1ANbancaYJ4FdQCdwp7XWNYTjExEZ6zQPi4iMPM3FIiKnwFjb53Ll08LChQvtxo0bR3oYIiK9GGM2WWsXjvQ4hoPmYhEZjTQPi4iMvMGYi4elpoWIiIiIiIiIyIlS0EJERERERERERiUFLURERERERERkVFLQQkRERERERERGJQUtRERERERERGRUUtBCREREREREREYlBS1EREREREREZFRS0EJERERERERERiUFLURERERERERkVFLQQkRERERERERGJQUtRERERERERGRUUtBCREREREREREYlBS1EREREREREZFRS0EJERERERERERiUFLURERERERERkVFLQQkRERERERERGJQUtRERERERERGRUUtBCREREREREREYlBS1EREREREREZFRS0EJERERERERERiUFLURERERERERkVBpQ0MIYs2wg20REREREREREBstAMy1+P8BtIiIiIiIiIiKDwnmsncaYJcBSIN4Y841uuyIAv6EcmIiIiIiIiIiMb8cMWgABQJj3uPBu2+uB64ZqUCIiIiIiIiIixwxaWGtXA6uNMQ9baw8N05hERERERERERI6badEl0BjzIJDZ/Rxr7flDMSgRERERERERkYEGLZ4C/gT8FXAN3XBERERERERERDwGGrTotNY+MKQjERERERERERHpZqAtT180xtxhjEk2xsR0/RnSkYmIiIiIiIjIuDbQTIvPev/+VrdtFpg0uMMREREREREREfEYUNDCWjtxqAciIiIiIiIiItLdgIIWxpjP9LXdWvuPwR2OiIiIiIiIiIjHQJeHLOr2dRBwAbAZUNBCRERERERERIbEgApxWmu/0u3PLcA8IOBY5xhj0owxK40xu40xO40xX/Nu/7ExptgYs9X75/Ju53zXGJNvjMkzxlxyKi9MRGS80zwsIjLyNBeLiJyagWZafFgzkHOcYzqBu621m40x4cAmY8wb3n3/Z639VfeDjTHTgRuBGcAE4E1jzGRrreskxygiMt5pHhYRGXmai0VETsFAa1q8iKdbCIAfMA148ljnWGtLgBLv1w3GmN1AyjFOuRp4wlrbBhQYY/KBxcD7AxmjiIj0pHlYRGTkaS4WETk1A1oeAvwK+LX3z0+Bc6y19wz0JsaYTDxLStZ5N33ZGLPdGPOQMSbauy0FONzttCL6mNCNMbcaYzYaYzZWVFQMdAgiIuPaYM7D3utpLhYROUF6TywicuIGWtNiNbAHCAeigfaB3sAYEwY8A9xlra0HHgCygLl4os6/7jq0r1v3MZYHrbULrbUL4+PjBzoMEZFxa7DnYdBcLCJyovSeWETk5AwoaGGMuQFYD1wP3ACsM8ZcN4Dz/PFMzv+y1j4LYK0ts9a6rLVu4C940t3AE0VO63Z6KnBkoC9ERER60zwsIjLyNBeLiJy8gS4P+T6wyFr7WWvtZ/BMqj881gnGGAP8Ddhtrb2v2/bkbod9DNjh/foF4EZjTKAxZiKeQp/rBzg+ERH5EM3DIiIjT3OxiMipGWj3EIe1trzb91UcP+CxDLgJyDXGbPVu+x7wCWPMXDxpbgeB2wCstTuNMU8Cu/BUWb5TVZJFRE6J5mERkZGnuVhE5BQMNGjxqjHmNeBx7/cfB1Yc6wRr7Xv0vSav3/OstfcC9w5wTCIicgyah0VERp7mYhGRU3PMoIUxJhtItNZ+yxhzDXAWnkn3feBfwzA+ERERERERERmnjrfE4zdAA4C19llr7TestV/HExn+zdAOTURERERERETGs+MFLTKttds/vNFauxHIHJIRiYiIiIiIiIhw/KBF0DH2BQ/mQEREREREREREujte0GKDMeaWD280xnwB2DQ0QxIREREREREROX73kLuA54wxn+JokGIhEICnn7SIiIiIiIiIyJA4ZtDCWlsGLDXGnAfM9G5+2Vr79pCPTERERERERETGteNlWgBgrV0JrBzisYiIiIiIiIiI+ByvpoWIiIiIiIiIyIhQ0EJERERERERERiUFLURERERERERkVFLQQkRERERERERGJQUtRERERERERGRUUtBCREREREREREYlBS1EREREREREZFRS0EJERERERERERiUFLURERERERERkVFLQQkRERERERERGJQUtRERERERERGRUUtBCREREREREREYlBS1EREREREREZFRS0EJERERERERERiUFLURERERERERkVFLQQkRERERERERGJQUtRERERERERGRUUtBCREREREREREYlBS1EREREREREZFRS0EJERERERERERiUFLURERERERERkVFLQQkRERERERERGJQUtRERERERERGRUUtBCREREREREREYlBS1EREREREREZFQaV0GLDpeb+1fl88GBqpEeioiIiIiIiIgcx5AFLYwxacaYlcaY3caYncaYr3m3xxhj3jDG7PP+Hd3tnO8aY/KNMXnGmEsGe0xOh+G+1/fyzt6Kwb60iMioMxrnYRGR8UZzsYjIqRnKTItO4G5r7TTgTOBOY8x04B7gLWttDvCW93u8+24EZgCXAvcbY/wGc0DGGGLDAqhsbBvMy4qIjFajbh4WERmHNBeLiJyCIQtaWGtLrLWbvV83ALuBFOBq4BHvYY8AH/V+fTXwhLW2zVpbAOQDiwd7XHFhgVQ1tg/2ZUVERp3ROg+LiIwnmotFRE7NsNS0MMZkAvOAdUCitbYEPJM4kOA9LAU43O20Iu+2D1/rVmPMRmPMxoqKE1/mERsWSGWTghYiMr4M5jzsvd4pzcUiIuPRaHpPLCJyuhjyoIUxJgx4BrjLWlt/rEP72GZ7bbD2QWvtQmvtwvj4+BMeT1xoAJUNWh4iIuPHYM/DcOpzsYjIeDPa3hOLiJwuhjRoYYzxxzM5/8ta+6x3c5kxJtm7Pxko924vAtK6nZ4KHBnsMcWFB1LV1Ia1fb4PFxEZU0bjPCwiMt5oLhYROXlD2T3EAH8Ddltr7+u26wXgs96vPws83237jcaYQGPMRCAHWD/Y44oNDaC1w01Tu2uwLy0i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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "plot_cell(2)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 12,
- "metadata": {
- "jupyter": {
- "source_hidden": true
- }
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Text(0.5, 0.98, 'Count Distribution')"
- ]
- },
- "execution_count": 12,
- "metadata": {},
- "output_type": "execute_result"
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "fig, ax = plt.subplots(1,3, figsize = (18,6))\n",
- "sns.boxplot(y = day1.loc[:, 'count'], ax = ax[0])\n",
- "sns.boxplot(y = day2.loc[:, 'count'], ax = ax[1])\n",
- "sns.boxplot(y = day3.loc[:, 'count'], ax = ax[2])\n",
- "\n",
- "ylower = min(min(day1.loc[:, 'count']),\n",
- " min(day2.loc[:, 'count']),\n",
- " min(day3.loc[:, 'count'])) - 20\n",
- "yupper = max(max(day1.loc[:, 'count']),\n",
- " max(day2.loc[:, 'count']),\n",
- " max(day3.loc[:, 'count'])) + 20\n",
- "\n",
- "ax[0].set_ylim(ylower,yupper)\n",
- "ax[1].set_ylim(ylower,yupper)\n",
- "ax[2].set_ylim(ylower,yupper)\n",
- "\n",
- "ax[0].set_title('Day1')\n",
- "ax[1].set_title('Day2')\n",
- "ax[2].set_title('Day3')\n",
- "\n",
- "ax[0].set_ylabel('Count')\n",
- "plt.suptitle('Count Distribution')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "#### Between cell variability"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 13,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Text(0.5, 1.0, 'Between Cell Dist')"
- ]
- },
- "execution_count": 13,
- "metadata": {},
- "output_type": "execute_result"
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "fig, ax = plt.subplots(figsize = (18,6))\n",
- "all_days = pd.concat([day1, day2, day3], keys=['day1', 'day2', 'day3']).reset_index().iloc[:,[0,2,3,4]]\n",
- "sns.boxplot(x = all_days['Cell'], y = all_days['count'], ax = ax)\n",
- "ax.set_title('Between Cell Dist')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "#### Normailize between day variability"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 14,
- "metadata": {},
- "outputs": [],
- "source": [
- "## Calculate median of each day\n",
- "all_days = pd.concat([day1, day2, day3], keys=['day1', 'day2', 'day3']).reset_index().iloc[:,[0,2,3,4]]\n",
- "day_diff = all_days.groupby('level_0')['count'].median() - all_days.loc[:, 'count'].median()\n",
- "day1.loc[:, 'count'] = day1.loc[:, 'count'] - day_diff['day1']\n",
- "day2.loc[:, 'count'] = day2.loc[:, 'count'] - day_diff['day2']\n",
- "day3.loc[:, 'count'] = day3.loc[:, 'count'] - day_diff['day3']"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 15,
- "metadata": {
- "jupyter": {
- "source_hidden": true
- }
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Text(0.5, 0.98, 'Count Distribution')"
- ]
- },
- "execution_count": 15,
- "metadata": {},
- "output_type": "execute_result"
- },
- {
- "data": {
- "image/png": "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Z9773vemu/Pe977XrAgAAIAZEkSw8LZv354HH3wwSbJ7926zIgAAAGZIEMHCu/baa7Nr164kya5du7Jjx46RKwIAAJhfgggW3jnnnLPmMgAAANMjiGDhdffYJQAAACwMQQQL70Mf+tBeyx/84AdHqgQAAGD+CSJYeM973vOybt26JMm6devy/Oc/f+SKAAAA5pcggoV38cUX7xVEvOxlLxu5IgAAgPkliGDhbdiwIaeffnqS5PTTT8+GDRtGrggAAGB+CSJYeDt37sytt96aJLntttuyc+fOkSsCAACYX4IIFt727duze/fuJMmuXbvypje9aeSKAAAA5pcggoW3Y8eOhx7h2d255pprRq4IAABgfgkiWHibNm1acxkAAIDpEUSw8O688841lwEAAJgeQQQL7/nPf/5ey+eee+5IlQAAAMw/QQQL7/zzz99r+UUvetFIlQAAAMw/QQQL7+qrr05VJUmqKu9617tGrggAAGB+CSJYeNdee+1eT83YsWPHyBUBAADML0EEC++cc85ZcxkAAIDpEUSw8O666669lu++++6RKgEAAJh/gggW3kc/+tG9lm+88caRKgEAAJh/gggAAABgMIIIAAAAYDCCCAAAAGAwgggAAABgMIIIAAAAYDCCCAAAAGAwgggAAABgMIIIAAAAYDCCCAAAAGAwgggA4Kiwc+fOvOpVr8rOnTvHLgUAmCFBBABwVHjDG96Qj3/847niiivGLgUAmCFBBAAwup07d+aaa65JklxzzTVmRQDAHBNEAACje8Mb3vDQ++42KwIA5pggAgAY3bXXXrvX8o4dO0aqBACYNUEEADC6Bx98cM1lAGB+zDSIqKrPV9VNVfWxqrphMnZKVe2oqs9MXk9etf2lVbVcVZ+uqvNmWRvAotCLAcalDwPsbYgZET/c3c/s7rMny69Ocl13n5XkuslyquppSS5K8vQkL0jyuqpaN0B9AItALwYYlz4MMDHGpRkXJNk+eb89yYWrxt/W3fd39+eSLCd51vDlASwEvZijynHHHbfmMswhfRhYWLP+f/lOck1V3VhVl0zGNnX3HUkyeX3iZHxzki+t2vfWyRgAj45ezFFv06ZNay7DMU4fBljl+Bkf/9ndfXtVPTHJjqq6ZY1t6wBjvd9GK837kiQ544wzplMlwHzTiznq3XnnnWsuwzFOHwZYZaYzIrr79snr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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "fig, ax = plt.subplots(1,3, figsize = (18,6))\n",
- "sns.boxplot(y = day1.loc[:, 'count'], ax = ax[0])\n",
- "sns.boxplot(y = day2.loc[:, 'count'], ax = ax[1])\n",
- "sns.boxplot(y = day3.loc[:, 'count'], ax = ax[2])\n",
- "\n",
- "ylower = min(min(day1.loc[:, 'count']),\n",
- " min(day2.loc[:, 'count']),\n",
- " min(day3.loc[:, 'count'])) - 20\n",
- "yupper = max(max(day1.loc[:, 'count']),\n",
- " max(day2.loc[:, 'count']),\n",
- " max(day3.loc[:, 'count'])) + 20\n",
- "\n",
- "ax[0].set_ylim(ylower,yupper)\n",
- "ax[1].set_ylim(ylower,yupper)\n",
- "ax[2].set_ylim(ylower,yupper)\n",
- "\n",
- "ax[0].set_title('Day1')\n",
- "ax[1].set_title('Day2')\n",
- "ax[2].set_title('Day3')\n",
- "\n",
- "ax[0].set_ylabel('Count')\n",
- "plt.suptitle('Count Distribution')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 16,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Text(0.5, 1.0, 'Between Cell Dist')"
- ]
- },
- "execution_count": 16,
- "metadata": {},
- "output_type": "execute_result"
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "fig, ax = plt.subplots(figsize = (18,6))\n",
- "all_days = pd.concat([day1, day2, day3], keys=['day1', 'day2', 'day3']).reset_index().iloc[:,[0,2,3,4]]\n",
- "sns.boxplot(x = all_days['Cell'], y = all_days['count'], ax = ax)\n",
- "ax.set_title('Between Cell Dist')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "#### Normailize between cell variability"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 17,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "array([ 1, 10, 11, 12, 13, 2, 3, 4, 5, 6, 7, 8, 9, 14, 15, 16, 17,\n",
- " 18, 19, 20], dtype=int64)"
- ]
- },
- "execution_count": 17,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "all_days['Cell'].unique()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 18,
- "metadata": {
- "collapsed": true,
- "jupyter": {
- "outputs_hidden": true
- }
- },
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "C:\\Users\\Devon Kohler\\.conda\\envs\\pyro\\lib\\site-packages\\pandas\\core\\indexing.py:1745: SettingWithCopyWarning: \n",
- "A value is trying to be set on a copy of a slice from a DataFrame.\n",
- "Try using .loc[row_indexer,col_indexer] = value instead\n",
- "\n",
- "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
- " isetter(ilocs[0], value)\n",
- "C:\\Users\\Devon Kohler\\.conda\\envs\\pyro\\lib\\site-packages\\pandas\\core\\indexing.py:1745: SettingWithCopyWarning: \n",
- "A value is trying to be set on a copy of a slice from a DataFrame.\n",
- "Try using .loc[row_indexer,col_indexer] = value instead\n",
- "\n",
- "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
- " isetter(ilocs[0], value)\n",
- "C:\\Users\\Devon Kohler\\.conda\\envs\\pyro\\lib\\site-packages\\pandas\\core\\indexing.py:1745: SettingWithCopyWarning: \n",
- "A value is trying to be set on a copy of a slice from a DataFrame.\n",
- "Try using .loc[row_indexer,col_indexer] = value instead\n",
- "\n",
- "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
- " isetter(ilocs[0], value)\n",
- "C:\\Users\\Devon Kohler\\.conda\\envs\\pyro\\lib\\site-packages\\pandas\\core\\indexing.py:1745: SettingWithCopyWarning: \n",
- "A value is trying to be set on a copy of a slice from a DataFrame.\n",
- "Try using .loc[row_indexer,col_indexer] = value instead\n",
- "\n",
- "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
- " isetter(ilocs[0], value)\n",
- "C:\\Users\\Devon Kohler\\.conda\\envs\\pyro\\lib\\site-packages\\pandas\\core\\indexing.py:1745: SettingWithCopyWarning: \n",
- "A value is trying to be set on a copy of a slice from a DataFrame.\n",
- "Try using .loc[row_indexer,col_indexer] = value instead\n",
- "\n",
- "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
- " isetter(ilocs[0], value)\n",
- "C:\\Users\\Devon Kohler\\.conda\\envs\\pyro\\lib\\site-packages\\pandas\\core\\indexing.py:1745: SettingWithCopyWarning: \n",
- "A value is trying to be set on a copy of a slice from a DataFrame.\n",
- "Try using .loc[row_indexer,col_indexer] = value instead\n",
- "\n",
- "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
- " isetter(ilocs[0], value)\n",
- "C:\\Users\\Devon Kohler\\.conda\\envs\\pyro\\lib\\site-packages\\pandas\\core\\indexing.py:1745: SettingWithCopyWarning: \n",
- "A value is trying to be set on a copy of a slice from a DataFrame.\n",
- "Try using .loc[row_indexer,col_indexer] = value instead\n",
- "\n",
- "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
- " isetter(ilocs[0], value)\n",
- "C:\\Users\\Devon Kohler\\.conda\\envs\\pyro\\lib\\site-packages\\pandas\\core\\indexing.py:1745: SettingWithCopyWarning: \n",
- "A value is trying to be set on a copy of a slice from a DataFrame.\n",
- "Try using .loc[row_indexer,col_indexer] = value instead\n",
- "\n",
- "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
- " isetter(ilocs[0], value)\n",
- "C:\\Users\\Devon Kohler\\.conda\\envs\\pyro\\lib\\site-packages\\pandas\\core\\indexing.py:1745: SettingWithCopyWarning: \n",
- "A value is trying to be set on a copy of a slice from a DataFrame.\n",
- "Try using .loc[row_indexer,col_indexer] = value instead\n",
- "\n",
- "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
- " isetter(ilocs[0], value)\n",
- "C:\\Users\\Devon Kohler\\.conda\\envs\\pyro\\lib\\site-packages\\pandas\\core\\indexing.py:1745: SettingWithCopyWarning: \n",
- "A value is trying to be set on a copy of a slice from a DataFrame.\n",
- "Try using .loc[row_indexer,col_indexer] = value instead\n",
- "\n",
- "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
- " isetter(ilocs[0], value)\n",
- "C:\\Users\\Devon Kohler\\.conda\\envs\\pyro\\lib\\site-packages\\pandas\\core\\indexing.py:1745: SettingWithCopyWarning: \n",
- "A value is trying to be set on a copy of a slice from a DataFrame.\n",
- "Try using .loc[row_indexer,col_indexer] = value instead\n",
- "\n",
- "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
- " isetter(ilocs[0], value)\n",
- "C:\\Users\\Devon Kohler\\.conda\\envs\\pyro\\lib\\site-packages\\pandas\\core\\indexing.py:1745: SettingWithCopyWarning: \n",
- "A value is trying to be set on a copy of a slice from a DataFrame.\n",
- "Try using .loc[row_indexer,col_indexer] = value instead\n",
- "\n",
- "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
- " isetter(ilocs[0], value)\n",
- "C:\\Users\\Devon Kohler\\.conda\\envs\\pyro\\lib\\site-packages\\pandas\\core\\indexing.py:1745: SettingWithCopyWarning: \n",
- "A value is trying to be set on a copy of a slice from a DataFrame.\n",
- "Try using .loc[row_indexer,col_indexer] = value instead\n",
- "\n",
- "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
- " isetter(ilocs[0], value)\n",
- "C:\\Users\\Devon Kohler\\.conda\\envs\\pyro\\lib\\site-packages\\pandas\\core\\indexing.py:1745: SettingWithCopyWarning: \n",
- "A value is trying to be set on a copy of a slice from a DataFrame.\n",
- "Try using .loc[row_indexer,col_indexer] = value instead\n",
- "\n",
- "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
- " isetter(ilocs[0], value)\n",
- "C:\\Users\\Devon Kohler\\.conda\\envs\\pyro\\lib\\site-packages\\pandas\\core\\indexing.py:1745: SettingWithCopyWarning: \n",
- "A value is trying to be set on a copy of a slice from a DataFrame.\n",
- "Try using .loc[row_indexer,col_indexer] = value instead\n",
- "\n",
- "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
- " isetter(ilocs[0], value)\n",
- "C:\\Users\\Devon Kohler\\.conda\\envs\\pyro\\lib\\site-packages\\pandas\\core\\indexing.py:1745: SettingWithCopyWarning: \n",
- "A value is trying to be set on a copy of a slice from a DataFrame.\n",
- "Try using .loc[row_indexer,col_indexer] = value instead\n",
- "\n",
- "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
- " isetter(ilocs[0], value)\n",
- "C:\\Users\\Devon Kohler\\.conda\\envs\\pyro\\lib\\site-packages\\pandas\\core\\indexing.py:1745: SettingWithCopyWarning: \n",
- "A value is trying to be set on a copy of a slice from a DataFrame.\n",
- "Try using .loc[row_indexer,col_indexer] = value instead\n",
- "\n",
- "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
- " isetter(ilocs[0], value)\n",
- "C:\\Users\\Devon Kohler\\.conda\\envs\\pyro\\lib\\site-packages\\pandas\\core\\indexing.py:1745: SettingWithCopyWarning: \n",
- "A value is trying to be set on a copy of a slice from a DataFrame.\n",
- "Try using .loc[row_indexer,col_indexer] = value instead\n",
- "\n",
- "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
- " isetter(ilocs[0], value)\n",
- "C:\\Users\\Devon Kohler\\.conda\\envs\\pyro\\lib\\site-packages\\pandas\\core\\indexing.py:1745: SettingWithCopyWarning: \n",
- "A value is trying to be set on a copy of a slice from a DataFrame.\n",
- "Try using .loc[row_indexer,col_indexer] = value instead\n",
- "\n",
- "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
- " isetter(ilocs[0], value)\n",
- "C:\\Users\\Devon Kohler\\.conda\\envs\\pyro\\lib\\site-packages\\pandas\\core\\indexing.py:1745: SettingWithCopyWarning: \n",
- "A value is trying to be set on a copy of a slice from a DataFrame.\n",
- "Try using .loc[row_indexer,col_indexer] = value instead\n",
- "\n",
- "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
- " isetter(ilocs[0], value)\n"
- ]
- }
- ],
- "source": [
- "## Calculate median of each day\n",
- "all_days = pd.concat([day1, day2, day3], keys=['day1', 'day2', 'day3']).reset_index().iloc[:,[0,2,3,4]]\n",
- "cell_diff = all_days.groupby('Cell')['count'].median() - all_days.loc[:, 'count'].median()\n",
- "con_list = list()\n",
- "for cell in all_days['Cell'].unique():\n",
- " temp_df = all_days.loc[all_days['Cell'] == cell]\n",
- " temp_df.loc[:, 'count'] = temp_df.loc[:, 'count'] - cell_diff[cell]\n",
- " con_list.append(temp_df)\n",
- "all_days = pd.concat(con_list)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 19,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Text(0.5, 1.0, 'Between Cell Dist')"
- ]
- },
- "execution_count": 19,
- "metadata": {},
- "output_type": "execute_result"
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "fig, ax = plt.subplots(figsize = (18,6))\n",
- "sns.boxplot(x = all_days['Cell'], y = all_days['count'], ax = ax)\n",
- "ax.set_title('Between Cell Dist')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 20,
- "metadata": {},
- "outputs": [],
- "source": [
- "import statsmodels.formula.api as smf"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 21,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " level_0 \n",
- " time \n",
- " count \n",
- " Cell \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " day1 \n",
- " 0 \n",
- " 188.0 \n",
- " 1 \n",
- " \n",
- " \n",
- " 1 \n",
- " day1 \n",
- " 336 \n",
- " 217.0 \n",
- " 1 \n",
- " \n",
- " \n",
- " 2 \n",
- " day1 \n",
- " 672 \n",
- " 206.0 \n",
- " 1 \n",
- " \n",
- " \n",
- " 3 \n",
- " day1 \n",
- " 1008 \n",
- " 212.0 \n",
- " 1 \n",
- " \n",
- " \n",
- " 4 \n",
- " day1 \n",
- " 1344 \n",
- " 211.0 \n",
- " 1 \n",
- " \n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " level_0 time count Cell\n",
- "0 day1 0 188.0 1\n",
- "1 day1 336 217.0 1\n",
- "2 day1 672 206.0 1\n",
- "3 day1 1008 212.0 1\n",
- "4 day1 1344 211.0 1"
- ]
- },
- "execution_count": 21,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "all_days.head()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 23,
- "metadata": {},
- "outputs": [
- {
- "ename": "AttributeError",
- "evalue": "'groups' is a required keyword argument in MixedLM.from_formula",
- "output_type": "error",
- "traceback": [
- "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
- "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)",
- "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mmd\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msmf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmixedlm\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"count ~ time + Cell + level_0\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mall_days\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
- "\u001b[1;32m~\\.conda\\envs\\pyro\\lib\\site-packages\\statsmodels\\regression\\mixed_linear_model.py\u001b[0m in \u001b[0;36mfrom_formula\u001b[1;34m(cls, formula, data, re_formula, vc_formula, subset, use_sparse, missing, *args, **kwargs)\u001b[0m\n\u001b[0;32m 952\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 953\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;34m\"groups\"\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mkeys\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 954\u001b[1;33m raise AttributeError(\"'groups' is a required keyword argument \" +\n\u001b[0m\u001b[0;32m 955\u001b[0m \"in MixedLM.from_formula\")\n\u001b[0;32m 956\u001b[0m \u001b[0mgroups\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"groups\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
- "\u001b[1;31mAttributeError\u001b[0m: 'groups' is a required keyword argument in MixedLM.from_formula"
- ]
- }
- ],
- "source": [
- "md = smf.mixedlm(\"count ~ time + Cell + level_0\", all_days)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 24,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "\u001b[1;31mSignature:\u001b[0m\n",
- "\u001b[0msmf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmixedlm\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m\n",
- "\u001b[0m \u001b[0mformula\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
- "\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
- "\u001b[0m \u001b[0mre_formula\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
- "\u001b[0m \u001b[0mvc_formula\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
- "\u001b[0m \u001b[0msubset\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
- "\u001b[0m \u001b[0muse_sparse\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
- "\u001b[0m \u001b[0mmissing\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'none'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
- "\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
- "\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
- "\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
- "\u001b[1;31mDocstring:\u001b[0m\n",
- "Create a Model from a formula and dataframe.\n",
- "\n",
- "Parameters\n",
- "----------\n",
- "formula : str or generic Formula object\n",
- " The formula specifying the model\n",
- "data : array_like\n",
- " The data for the model. See Notes.\n",
- "re_formula : str\n",
- " A one-sided formula defining the variance structure of the\n",
- " model. The default gives a random intercept for each\n",
- " group.\n",
- "vc_formula : dict-like\n",
- " Formulas describing variance components. `vc_formula[vc]` is\n",
- " the formula for the component with variance parameter named\n",
- " `vc`. The formula is processed into a matrix, and the columns\n",
- " of this matrix are linearly combined with independent random\n",
- " coefficients having mean zero and a common variance.\n",
- "subset : array_like\n",
- " An array-like object of booleans, integers, or index\n",
- " values that indicate the subset of df to use in the\n",
- " model. Assumes df is a `pandas.DataFrame`\n",
- "missing : str\n",
- " Either 'none' or 'drop'\n",
- "args : extra arguments\n",
- " These are passed to the model\n",
- "kwargs : extra keyword arguments\n",
- " These are passed to the model with one exception. The\n",
- " ``eval_env`` keyword is passed to patsy. It can be either a\n",
- " :class:`patsy:patsy.EvalEnvironment` object or an integer\n",
- " indicating the depth of the namespace to use. For example, the\n",
- " default ``eval_env=0`` uses the calling namespace. If you wish\n",
- " to use a \"clean\" environment set ``eval_env=-1``.\n",
- "\n",
- "Returns\n",
- "-------\n",
- "model : Model instance\n",
- "\n",
- "Notes\n",
- "-----\n",
- "`data` must define __getitem__ with the keys in the formula\n",
- "terms args and kwargs are passed on to the model\n",
- "instantiation. E.g., a numpy structured or rec array, a\n",
- "dictionary, or a pandas DataFrame.\n",
- "\n",
- "If the variance component is intended to produce random\n",
- "intercepts for disjoint subsets of a group, specified by\n",
- "string labels or a categorical data value, always use '0 +' in\n",
- "the formula so that no overall intercept is included.\n",
- "\n",
- "If the variance components specify random slopes and you do\n",
- "not also want a random group-level intercept in the model,\n",
- "then use '0 +' in the formula to exclude the intercept.\n",
- "\n",
- "The variance components formulas are processed separately for\n",
- "each group. If a variable is categorical the results will not\n",
- "be affected by whether the group labels are distinct or\n",
- "re-used over the top-level groups.\n",
- "\n",
- "Examples\n",
- "--------\n",
- "Suppose we have data from an educational study with students\n",
- "nested in classrooms nested in schools. The students take a\n",
- "test, and we want to relate the test scores to the students'\n",
- "ages, while accounting for the effects of classrooms and\n",
- "schools. The school will be the top-level group, and the\n",
- "classroom is a nested group that is specified as a variance\n",
- "component. Note that the schools may have different number of\n",
- "classrooms, and the classroom labels may (but need not be)\n",
- "different across the schools.\n",
- "\n",
- ">>> vc = {'classroom': '0 + C(classroom)'}\n",
- ">>> MixedLM.from_formula('test_score ~ age', vc_formula=vc, re_formula='1', groups='school', data=data)\n",
- "\n",
- "Now suppose we also have a previous test score called\n",
- "'pretest'. If we want the relationship between pretest\n",
- "scores and the current test to vary by classroom, we can\n",
- "specify a random slope for the pretest score\n",
- "\n",
- ">>> vc = {'classroom': '0 + C(classroom)', 'pretest': '0 + pretest'}\n",
- ">>> MixedLM.from_formula('test_score ~ age + pretest', vc_formula=vc, re_formula='1', groups='school', data=data)\n",
- "\n",
- "The following model is almost equivalent to the previous one,\n",
- "but here the classroom random intercept and pretest slope may\n",
- "be correlated.\n",
- "\n",
- ">>> vc = {'classroom': '0 + C(classroom)'}\n",
- ">>> MixedLM.from_formula('test_score ~ age + pretest', vc_formula=vc, re_formula='1 + pretest', groups='school', data=data)\n",
- "\u001b[1;31mFile:\u001b[0m c:\\users\\devon kohler\\.conda\\envs\\pyro\\lib\\site-packages\\statsmodels\\regression\\mixed_linear_model.py\n",
- "\u001b[1;31mType:\u001b[0m method\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "?smf.mixedlm"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- }
- ],
- "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.8.5"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}