diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..6727c55 Binary files /dev/null and b/.DS_Store differ diff --git a/.Rbuildignore b/.Rbuildignore new file mode 100644 index 0000000..0107785 --- /dev/null +++ b/.Rbuildignore @@ -0,0 +1,12 @@ +^.*\.Rproj$ +^\.Rproj\.user$ +^\.travis\.yml$ +^codecov\.yml$ +^CRAN-RELEASE$ +^cran-comments\.md$ +^\.github$ +^doc$ +^Meta$ +^windows\\i386\* +^i386\.*$ +.lintr \ No newline at end of file diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 3943132..1d81280 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -40,9 +40,6 @@ jobs: remotes::install_cran("lintr") shell: Rscript {0} - - name: Install package - run: R CMD INSTALL . - - name: Lint run: lintr::lint_package() shell: Rscript {0} diff --git a/.github/workflows/pkgdown.yaml b/.github/workflows/pkgdown.yaml index 41633c1..63d525f 100644 --- a/.github/workflows/pkgdown.yaml +++ b/.github/workflows/pkgdown.yaml @@ -2,7 +2,11 @@ # Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help on: push: - branches: [main, master] + branches: + - '**' + pull_request: + branches: + - '**' release: types: [published] workflow_dispatch: @@ -28,9 +32,16 @@ jobs: extra-packages: any::pkgdown, local::., any::XML needs: website - - name: Build site - run: pkgdown::build_site_github_pages(new_process = FALSE, install = FALSE) + - uses: actions/setup-python@v2 + with: + python-version: '3.9' + + - name: Setup r-reticulate env + run: reticulate::virtualenv_create("r-reticulate", Sys.which("python")) shell: Rscript {0} + + - name: Build site + run: Rscript -e "pkgdown::build_site_github_pages(new_process = FALSE, install = FALSE)" - name: Deploy to GitHub pages if: github.event_name != 'pull_request' diff --git a/.github/workflows/test_macos.yml b/.github/workflows/test_macos.yml index 40cab78..3816760 100644 --- a/.github/workflows/test_macos.yml +++ b/.github/workflows/test_macos.yml @@ -3,7 +3,7 @@ name: "Unit tests: macOS" on: push: branches: - - main + - '**' pull_request: branches: - '**' @@ -22,6 +22,10 @@ jobs: - name: Checkout repository uses: actions/checkout@v2 + + - name: Install build dependencies + run: | + brew install curl - name: Setup R uses: r-lib/actions/setup-r@v2 @@ -49,6 +53,7 @@ jobs: install.packages(c("devtools")) remotes::install_deps(dependencies = TRUE) remotes::install_cran("rcmdcheck") + reticulate::install_python(version = "3.9:latest") shell: Rscript {0} - name: Check @@ -62,4 +67,4 @@ jobs: - name: Show testthat output if: always() run: find check -name 'testthat.Rout*' -exec cat '{}' \; || true - shell: bash + shell: bash \ No newline at end of file diff --git a/.github/workflows/test_ubuntu.yml b/.github/workflows/test_ubuntu.yml index cc6209c..b8d90be 100644 --- a/.github/workflows/test_ubuntu.yml +++ b/.github/workflows/test_ubuntu.yml @@ -3,7 +3,7 @@ name: "Unit tests: Ubuntu" on: push: branches: - - main + - '**' pull_request: branches: - '**' diff --git a/.github/workflows/test_windows.yml b/.github/workflows/test_windows.yml index 3656a2c..c2ad3d6 100644 --- a/.github/workflows/test_windows.yml +++ b/.github/workflows/test_windows.yml @@ -3,13 +3,12 @@ name: "Unit tests: Windows" on: push: branches: - - main + - '**' pull_request: branches: - '**' jobs: - test: name: tests on Windows with R ${{ matrix.R }} runs-on: windows-latest @@ -19,6 +18,13 @@ jobs: R: [ '4.1.0' ] steps: + - name: Check Windows architecture + run: | + if (-not [Environment]::Is64BitOperatingSystem) { throw "Not 64-bit Windows" } + Write-Host "OS Architecture: $([Environment]::Is64BitOperatingSystem)" + Write-Host "Process Architecture: $([Environment]::Is64BitProcess)" + systeminfo | findstr /B /C:"OS Name" /C:"OS Version" /C:"System Type" + shell: pwsh - name: Checkout repository uses: actions/checkout@v2 @@ -28,14 +34,23 @@ jobs: with: r-version: ${{ matrix.R }} Ncpus: 2 - + r-arch: 'x64' + + - name: Verify R architecture + run: | + Rscript -e "if(R.version$arch != 'x64') stop('R architecture is not 64-bit!')" + Rscript -e "cat('R Architecture:', R.version$arch, '\n')" + Rscript -e "cat('.Machine$sizeof.pointer:', .Machine$sizeof.pointer, '\n')" + Rscript -e "cat('Using R at:', R.home(), '\n')" + shell: cmd + - name: Query dependencies run: | install.packages('remotes') saveRDS(remotes::dev_package_deps(dependencies = TRUE), ".github/depends.Rds", version = 2) shell: Rscript {0} - - name: cache R installed packages + - name: Cache R packages uses: actions/cache@v2.1.7 id: cache with: @@ -43,7 +58,7 @@ jobs: ${{ env.R_LIBS_USER }} key: ${{ runner.os }}-R${{ matrix.R }}-2-${{ hashFiles('.github/depends.Rds') }} restore-keys: ${{ runner.os }}-R${{ matrix.R }}-2- - + - name: Install packages run: | install.packages(c("devtools")) @@ -56,10 +71,10 @@ jobs: _R_CHECK_CRAN_INCOMING_REMOTE_: false run: | options(crayon.enabled = TRUE) - rcmdcheck::rcmdcheck(args = c("--no-manual", "--as-cran"), error_on = "error", check_dir = "check") + rcmdcheck::rcmdcheck(args = c("--no-manual", "--as-cran" ,'--no-multiarch'), error_on = "error", check_dir = "check") shell: Rscript {0} - name: Show testthat output if: always() run: find check -name 'testthat.Rout*' -exec cat '{}' \; || true - shell: bash + shell: bash \ No newline at end of file diff --git a/.gitignore b/.gitignore index e75435c..0cb361a 100644 --- a/.gitignore +++ b/.gitignore @@ -12,12 +12,18 @@ # Example code in package build process *-Ex.R +# Input parameters to simulation +*.json + # Output files from R CMD build /*.tar.gz # Output files from R CMD check /*.Rcheck/ +# Output from simulation +*.csv + # RStudio files .Rproj.user/ diff --git a/DESCRIPTION b/DESCRIPTION index 19446b1..a84cef2 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,25 +1,34 @@ Package: rEpiabm Type: Package -Title: R-wrapper of Epiabm +Title: R-Wrapper of Epiabm Version: 0.0.2 Authors@R: c( - person('Anita', 'Applegarth', role = c('aut', 'cre', 'cph'), email = 'anita.applegarth@ox.ac.uk'), - person('Kingley', 'Oguma', role = 'aut', email = "kemukperuo@gmail.com")) -Description: Wraps the epiabm Python module. R users can... + person('Anita', 'Applegarth', role = c('aut', 'cre', 'cph'), email = 'anita.applegarth@reuben.ox.ac.uk'), + person('Kingsley', 'Oguma', role = 'aut', email = "kemukperuo@gmail.com") + ) +Description: Wraps the epiabm Python module in R. License: BSD_3_clause Encoding: UTF-8 Archs: x64 SystemRequirements: Python (>= 2.7.0) -Suggests: - tinytest -Depends: - reticulate (>= 1.14), - R (>= 3.3.0) +Suggests: tinytest +Imports: + ggplot2, + here, + tidyr, + reticulate (>= 1.14) +Depends: R (>= 3.3.0) Config/reticulate: - list( - packages = list( - list(package = "numpy", pip = TRUE), - list(package = "matplotlib", pip = TRUE) + list( + packages = list( + list(package = "numpy", pip = TRUE), + list(package = "pandas", pip = TRUE), + list(package = "matplotlib", pip = TRUE), + list( + package = "pyEpiabm", + pip = TRUE, + pip_options = "--extra-index-url https://github.com/SABS-R3-Epidemiology/epiabm.git@main#egg=pyEpiabm&subdirectory=pyEpiabm" + ) + ) ) - ) - +RoxygenNote: 7.3.2 diff --git a/NAMESPACE b/NAMESPACE index c950c17..d9e4281 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -1 +1,4 @@ -import(reticulate) +# Generated by roxygen2: do not edit by hand + +export(check_python_env) +export(initialize_python_env) diff --git a/R/.DS_Store b/R/.DS_Store new file mode 100644 index 0000000..c1bb6e3 Binary files /dev/null and b/R/.DS_Store differ diff --git a/R/blank.R b/R/blank.R deleted file mode 100644 index 8b13789..0000000 --- a/R/blank.R +++ /dev/null @@ -1 +0,0 @@ - diff --git a/R/simulation_flow_check.R b/R/simulation_flow_check.R new file mode 100644 index 0000000..3a61840 --- /dev/null +++ b/R/simulation_flow_check.R @@ -0,0 +1,157 @@ +# +# Example simulation script with data output +# + +# Import dependencies +source("R/zzz.R") +initialize_python_env() +check_python_env() + +library(reticulate) +library(here) +library(tidyr) + +os <- import("os", delay_load = TRUE) +logging <- import("logging", delay_load = TRUE) +pd <- import("pandas", delay_load = TRUE) +plt <- import("matplotlib.pyplot", delay_load = TRUE) +pe <- import("pyEpiabm", delay_load = TRUE) + +# Set working directory for relative directory references +base_dir <- here() + +# Set config file for Parameters +pe$Parameters$set_file(here("data", "simple_parameters.json")) + +# Method to set the seed at the start of the simulation, for reproducibility +pe$routine$Simulation$set_random_seed(seed = as.integer(42)) + +# Pop_params are used to configure the population structure being used in this +# simulation. +pop_params <- list( + population_size = as.integer(100), + cell_number = as.integer(2), + microcell_number = as.integer(2), + household_number = as.integer(5), + place_number = as.integer(2) +) + +# Create a population based on the parameters given. +population <- pe$routine$ToyPopulationFactory()$make_pop(pop_params) + +# sim_params +sim_params <- list( + simulation_start_time = as.integer(0), + simulation_end_time = as.integer(60), + initial_infected_number = as.integer(10), + include_waning = TRUE +) + +# file_params +file_params <- list( + output_file = "output.csv", + output_dir = here("simulation_outputs"), + spatial_output = FALSE, + age_stratified = FALSE +) + +# dem_file_params +dem_file_params <- list( + output_dir = here("simulation_outputs"), + spatial_output = FALSE, + age_output = FALSE +) + +# inf_history_params +inf_history_params <- list( + output_dir = here("simulation_outputs"), + status_output = TRUE, + infectiousness_output = TRUE, + compress = FALSE # Set to TRUE if compression desired +) + +# Create a simulation object +sim <- pe$routine$Simulation() + +# Configure the simulation with parameters +sim$configure( + population, + list( + pe$sweep$InitialInfectedSweep(), + pe$sweep$InitialDemographicsSweep(dem_file_params) + ), + list( + pe$sweep$HouseholdSweep(), + pe$sweep$QueueSweep(), + pe$sweep$HostProgressionSweep() + ), + sim_params, + file_params, + inf_history_params +) + +# Run the simulation +sim$run_sweeps() +sim$compress_csv() + +# Create dataframe for plots +filename <- here("simulation_outputs", "output.csv") +df <- read.csv(filename) + +library(ggplot2) + +# Reshape the data from wide to long format using base R +status_columns <- c( + "InfectionStatus.Susceptible", + "InfectionStatus.InfectMild", + "InfectionStatus.Recovered", + "InfectionStatus.Dead" +) + +df_long <- pivot_longer( + df, + cols = all_of(status_columns), + names_to = "Status", + values_to = "Count" +) + +df_long$Status <- factor( + df_long$Status, + levels = status_columns, + labels = c("Susceptible", "Infected", "Recovered", "Dead") +) + +# Create the plot +p <- ggplot(df_long, aes(x = time, y = Count, color = Status)) + + geom_line() + + scale_color_manual( + values = c( + "Susceptible" = "blue", + "Infected" = "red", + "Recovered" = "green", + "Dead" = "black" + ) + ) + + theme_minimal() + + labs( + title = "SIR Model Flow", + x = "Time", + y = "Count" + ) + + theme( + legend.position = "right", + plot.title = element_text(hjust = 0.5), + panel.grid.minor = element_blank() + ) + +# Display the plot +print(p) + +# Save the plot +ggsave( + filename = here("simulation_outputs", "simulation_flow_SIR_plot.png"), + plot = p, + width = 10, + height = 6, + dpi = 300 +) diff --git a/R/zzz.R b/R/zzz.R new file mode 100644 index 0000000..69a1b5d --- /dev/null +++ b/R/zzz.R @@ -0,0 +1,183 @@ +# Environment setup and management functions for R package +local <- new.env() + +#' Create and configure Python environment +#' @param env_name Character. Name of the virtual environment to create +#' @param python_version Character. Python version to use (e.g., "3.8") +#' @return Logical indicating success +#' @keywords internal +create_python_env <- function( + env_name = "r-reticulate", + python_version = "3.9") { + tryCatch({ + # Check if virtualenv package is available + if (!reticulate::virtualenv_exists(env_name)) { + message(sprintf("Creating new Python virtual environment: %s", env_name)) + # Create virtual environment with system site packages to help with SSL + reticulate::virtualenv_create( + envname = env_name, + version = python_version, + packages = "pip", + system_site_packages = TRUE + ) + } + # Activate the environment + reticulate::use_virtualenv(env_name, required = TRUE) + return(TRUE) + }, error = function(e) { + warning(sprintf("Failed to create/activate Python environment: %s", + e$message)) + return(FALSE) + }) +} + +.onLoad <- function(libname, pkgname) { + # Create and activate Python environment + env_success <- create_python_env() + if (!env_success) { + warning("Failed to set up Python environment. + Some functionality may be limited.") + return() + } + # Configure reticulate to use the package's environment + reticulate::configure_environment(pkgname) + # Install required packages if not present + ensure_python_dependencies() + # Import dependencies with error handling + tryCatch({ + load_python_modules() + }, error = function(e) { + warning(sprintf( + "Error loading Python dependencies: %s\nPlease + run check_python_env() to diagnose issues.", + e$message + )) + }) +} + +#' Ensure all required Python dependencies are installed +#' @keywords internal +ensure_python_dependencies <- function() { + # Upgrade pip + reticulate::py_run_string(" +import sys +import subprocess +subprocess.check_call([sys.executable +, '-m', 'pip', 'install', '--upgrade', 'pip']) + ") + # Install required packages + reticulate::py_run_string(" +import sys +import subprocess + +# Install basic packages +packages = ['numpy', 'pandas', 'matplotlib'] +for package in packages: + subprocess.check_call([sys.executable, '-m', 'pip', + 'install', '--upgrade', package]) +# Install pyEpiabm from GitHub +subprocess.check_call([ + sys.executable, '-m', 'pip', 'install', '--upgrade', + 'git+https://github.com/SABS-R3-Epidemiology/epiabm.git@main#egg=pyEpiabm&subdirectory=pyEpiabm' +]) + ") + # Verify installations + result <- reticulate::py_run_string(" +import importlib.util + +packages = ['numpy', 'pandas', 'matplotlib', 'pyEpiabm'] +missing = [] + +for package in packages: + if importlib.util.find_spec(package) is None: + missing.append(package) + +print('Missing packages:', missing if missing else 'None') + ") + if (length(result$missing) > 0) { + stop("Failed to install required packages: ", + paste(result$missing, collapse = ", ")) + } + message("All required packages installed successfully") +} + +#' Load Python modules into package environment +#' @keywords internal +load_python_modules <- function() { + # Define modules to load + modules <- list( + os = "os", + logging = "logging", + pd = "pandas", + plt = "matplotlib.pyplot", + pe = "pyEpiabm" + ) + # Import each module + for (var_name in names(modules)) { + module_name <- modules[[var_name]] + tryCatch({ + module <- reticulate::import(module_name, delay_load = TRUE) + assign(var_name, module, envir = parent.env(local)) + }, error = function(e) { + warning(sprintf("Failed to load module %s: %s", module_name, e$message)) + }) + } +} + +#' Check Python environment and package availability +#' @export +check_python_env <- function() { + # Get Python configuration + python_config <- reticulate::py_config() + # Print Python information + cat(sprintf("Python version: %s\n", reticulate::py_version())) + cat(sprintf("Python path: %s\n", python_config$python)) + cat(sprintf("virtualenv: %s\n", + if (is.null(python_config$virtualenv)) "None" + else python_config$virtualenv)) + # Check required packages + required_packages <- c("numpy", "pandas", "matplotlib", "pyEpiabm") + cat("\nPackage Status:\n") + pkg_status <- list() + for (pkg in required_packages) { + if (reticulate::py_module_available(pkg)) { + # Try to get version information + tryCatch({ + version <- reticulate::py_eval( + sprintf("__import__('%s').__version__", pkg) + ) + cat(sprintf("✓ %s (version %s)\n", pkg, version)) + pkg_status[[pkg]] <- TRUE + }, error = function(e) { + cat(sprintf("✓ %s (version unknown)\n", pkg)) + pkg_status[[pkg]] <- TRUE + }) + } else { + cat(sprintf("✗ %s is not available\n", pkg)) + pkg_status[[pkg]] <- FALSE + } + } + # Return invisibly whether all packages are available + invisible(all(unlist(pkg_status))) +} + +#' Initialize or repair Python environment +#' @param force Logical. If TRUE, recreates the environment even if it exists +#' @export +initialize_python_env <- function(force = FALSE) { + env_name <- "r-py-env" + if (force && reticulate::virtualenv_exists(env_name)) { + message("Removing existing Python environment...") + reticulate::virtualenv_remove(env_name) + } + # Create and activate environment + if (create_python_env(env_name)) { + message("Python environment successfully created/activated") + # Install dependencies + ensure_python_dependencies() + # Check environment + check_python_env() + } else { + stop("Failed to initialize Python environment") + } +} diff --git a/data/simple_parameters.json b/data/simple_parameters.json new file mode 100644 index 0000000..9a2c6eb --- /dev/null +++ b/data/simple_parameters.json @@ -0,0 +1,429 @@ +{ + "basic_reproduction_num": 2.8, + "latent_period": 4.59, + "asympt_infect_period": 14, + "mean_mild_to_recov": 7, + "mean_gp_to_recov": 7, + "mean_gp_to_hosp": 5, + "mean_gp_to_death": 7, + "mean_hosp_to_recov": 1, + "mean_hosp_to_icu": 1, + "mean_hosp_to_death": 1, + "mean_icu_to_icurecov": 1, + "mean_icu_to_death": 1, + "mean_icurecov_to_recov": 1, + "mean_recov_to_susc": 0, + "time_steps_per_day": 1, + "prob_symptomatic": 0.66, + "sympt_infectiousness": 1.5, + "asympt_infectiousness": 1.0, + "latent_to_sympt_delay": 0.5, + "household_transmission": 0.1, + "false_positive_rate": 0, + "place_transmission": 0.1, + "use_ages": 0, + "use_waning_immunity": 1, + "note1": "Mainly change values above this", + "age_contact": [0.6, 0.7, 0.75, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0.75, 0.5], + "household_size_distribution": [0.283708848, 0.345103011, 0.150677793, + 0.12764915, 0.057777709, 0.022624223, + 0.007151747, 0.002988208, 0.001179132, + 0.001140178], + "max_household_size": 10, + "household_age_params": { + "mean_child_age_gap": 2, + "min_adult_age": 19, + "max_MF_partner_age_gap": 5, + "min_parent_age_gap": 19, + "max_FM_partner_age_gap": 5, + "max_parent_age_gap": 44, + "max_child_age": 20, + "one_child_two_pers_prob": 0.08, + "two_child_three_pers_prob": 0.11, + "one_pers_house_prob_old": 0.5, + "two_pers_house_prob_old": 0.5, + "one_pers_house_prob_young": 0.23, + "two_pers_house_prob_young": 0.23, + "one_child_prob_youngest_child_under_five": 0.5, + "two_children_prob_youngest_under_five": 0.0, + "prob_youngest_child_under_five": 0.0, + "zero_child_three_pers_prob": 0.25, + "one_child_four_pers_prob": 0.2, + "young_and_single_slope": 0.7, + "young_and_single": 36, + "no_child_pers_age": 44, + "old_pers_age": 60, + "three_child_five_pers_prob": 0.5, + "older_gen_gap": 19, + "prop_other_parent_away": 0.0 + }, + "note2": "Don't change parameters below this", + "CDF_RES": 20, +"latent_period_iCDF": [ + 0, + 0.098616903, + 0.171170649, + 0.239705594, + 0.307516598, + 0.376194441, + 0.446827262, + 0.520343677, + 0.597665592, + 0.679808341, + 0.767974922, + 0.863671993, + 0.968878064, + 1.086313899, + 1.219915022, + 1.37573215, + 1.563841395, + 1.803041398, + 2.135346254, + 2.694118208, + 3.964172493 +], +"asympt_infect_icdf": [ + 0, + 0.171566836, + 0.424943468, + 0.464725594, + 0.50866631, + 0.55773764, + 0.613298069, + 0.67732916, + 0.752886568, + 0.843151261, + 0.895791527, + 0.955973422, + 1.026225109, + 1.110607115, + 1.216272375, + 1.336349102, + 1.487791911, + 1.701882384, + 1.865779085, + 2.126940581, + 2.524164972 +], +"mild_to_recov_icdf": [ + 0, + 0.341579599, + 0.436192391, + 0.509774887, + 0.574196702, + 0.633830053, + 0.690927761, + 0.74691114, + 0.802830695, + 0.859578883, + 0.918015187, + 0.97906363, + 1.043815683, + 1.113669859, + 1.190557274, + 1.277356871, + 1.378761429, + 1.50338422, + 1.670195767, + 1.938414132, + 2.511279379 +], +"gp_to_recov_icdf": [ + 0, + 0.341579599, + 0.436192391, + 0.509774887, + 0.574196702, + 0.633830053, + 0.690927761, + 0.74691114, + 0.802830695, + 0.859578883, + 0.918015187, + 0.97906363, + 1.043815683, + 1.113669859, + 1.190557274, + 1.277356871, + 1.378761429, + 1.50338422, + 1.670195767, + 1.938414132, + 2.511279379 +], +"gp_to_hosp_icdf": [ + 0, + 0.341579599, + 0.436192391, + 0.509774887, + 0.574196702, + 0.633830053, + 0.690927761, + 0.74691114, + 0.802830695, + 0.859578883, + 0.918015187, + 0.97906363, + 1.043815683, + 1.113669859, + 1.190557274, + 1.277356871, + 1.378761429, + 1.50338422, + 1.670195767, + 1.938414132, + 2.511279379 +], +"gp_to_death_icdf": [ + 0, + 2.257735908, + 3.171065856, + 3.924183798, + 4.608738224, + 5.260437017, + 5.898728066, + 6.53669783, + 7.184755068, + 7.852438367, + 8.549591424, + 9.287408763, + 10.07967529, + 10.94457146, + 11.90769274, + 13.00769447, + 14.3081531, + 15.92655201, + 18.12320384, + 21.71626849, + 29.58154704 +], +"hosp_to_recov_icdf": [ + 0, + 0.634736097, + 1.217461548, + 1.805695261, + 2.41206761, + 3.044551205, + 3.71010552, + 4.415905623, + 5.170067405, + 5.982314035, + 6.864787504, + 7.833196704, + 8.908589322, + 10.12027655, + 11.51100029, + 13.14682956, + 15.13821107, + 17.69183155, + 21.27093904, + 27.35083955, + 41.35442157 +], +"hosp_to_icu_icdf": [ + 0, + 0.108407687, + 0.220267228, + 0.337653773, + 0.46159365, + 0.593106462, + 0.733343356, + 0.88367093, + 1.045760001, + 1.221701998, + 1.414175806, + 1.62669998, + 1.864032461, + 2.132837436, + 2.442868902, + 2.809242289, + 3.257272257, + 3.834402667, + 4.647120033, + 6.035113821, + 9.253953212 +], +"hosp_to_death_icdf": [ + 0, + 1.703470233, + 2.39742257, + 2.970367222, + 3.491567676, + 3.988046604, + 4.474541783, + 4.960985883, + 5.455292802, + 5.964726999, + 6.496796075, + 7.06004732, + 7.665014091, + 8.325595834, + 9.061367792, + 9.901900127, + 10.8958347, + 12.133068, + 13.81280888, + 16.56124574, + 22.5803431 +], +"icu_to_icurecov_icdf": [ + 0, + 1.308310071, + 1.87022015, + 2.338694632, + 2.76749788, + 3.177830401, + 3.581381361, + 3.986127838, + 4.398512135, + 4.824525291, + 5.270427517, + 5.743406075, + 6.252370864, + 6.809125902, + 7.430338867, + 8.141231404, + 8.983341913, + 10.03350866, + 11.46214198, + 13.80540164, + 18.95469153 +], +"icu_to_death_icdf": [ + 0, + 1.60649128, + 2.291051747, + 2.860938008, + 3.382077741, + 3.880425012, + 4.37026577, + 4.861330415, + 5.361460943, + 5.877935626, + 6.4183471, + 6.991401405, + 7.607881726, + 8.282065409, + 9.034104744, + 9.894486491, + 10.91341144, + 12.18372915, + 13.9113346, + 16.74394356, + 22.96541429 +], +"icurecov_to_recov": [ + 0, + 0.133993315, + 0.265922775, + 0.402188416, + 0.544657341, + 0.694774487, + 0.853984373, + 1.023901078, + 1.206436504, + 1.403942719, + 1.619402771, + 1.856711876, + 2.121118605, + 2.419957988, + 2.763950408, + 3.169692564, + 3.664959893, + 4.301777536, + 5.196849239, + 6.7222126, + 10.24997697 +], +"recov_to_susc_icdf": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0], +"infectiousness_prof": [0.487464241, 1, 1.229764827, 1.312453175, + 1.307955665, 1.251658756, 1.166040358, 1.065716869, + 0.960199498, 0.855580145, 0.755628835, 0.662534099, + 0.577412896, 0.500665739, 0.432225141, 0.371729322, + 0.318643018, 0.272340645, 0.232162632, 0.19745264, + 0.167581252, 0.141960133, 0.120049578, 0.101361532, + 0.085459603, 0.071957123, 0.060514046, 0.050833195, + 0.04265624, 0.035759641, 0.029950735, 0.025064045, + 0.02095788, 0.017511251, 0.014621091, 0.012199802, + 0.010173075, 0.008477992, 0.007061366, 0.005878301, + 0.00489096, 0.004067488, 0.003381102, 0.00280931, + 0.002333237, 0.001937064, 0.001607543, 0.001333589, + 0.001105933, 0.00091683, 0.000759816, 0.000629496, + 0.000521372, 0.000431695, 0.000357344, 0.000295719, + 0.000244659], +"age_proportions": [6.2, 5.6, 5.8, 6.3, 6.8, 6.8, 6.5, 6.6, + 7.3, 7.3, 6.5, 5.7, 6, 4.8, 3.9, 3.2, 4.7], +"host_progression_lists": { + "prob_gp_to_hosp": [0.001896, 0.001616, 0.002981, 0.006083, + 0.013513, 0.025793, 0.040294, 0.057278, + 0.070361, 0.092402, 0.13409, 0.164461, + 0.220964, 0.248858, 0.298479, 0.346454, + 0.351508], + "prob_gp_to_recov": [0.998104, 0.998384, 0.997019, 0.993917, + 0.986487, 0.974207, 0.959706, 0.942722, + 0.929639, 0.907598, 0.86591, 0.835539, + 0.779036, 0.751142, 0.701521, 0.653546, + 0.648492], + + "prob_exposed_to_asympt": [0.34, 0.34, 0.34, 0.34, 0.34, 0.34, + 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, + 0.34, 0.34, 0.34, 0.34, 0.34], + "prob_exposed_to_gp": [0.220278, 0.220237, 0.220438, 0.220896, + 0.222, 0.223849, 0.226073, 0.228734, + 0.230827, 0.234442, 0.241597, 0.247091, + 0.258007, 0.263759, 0.274652, 0.286074, + 0.287333], + "prob_exposed_to_mild": [0.439722, 0.439763, 0.439562, 0.43910, + 0.438, 0.436151, 0.433927, 0.431266, + 0.429173, 0.425558, 0.418403, 0.41291, + 0.401993, 0.396241, 0.385348, + 0.373926, 0.372667], + + "prob_hosp_to_death": [0.110981, 0.108089, 0.119602, 0.134584, + 0.153656, 0.171186, 0.184562, 0.196264, + 0.203616, 0.212462, 0.219792, 0.207716, + 0.171205, 0.107889, 0.344512, 0.423204, + 0.473935], + "prob_hosp_to_recov": [0.770565, 0.773457, 0.761945, 0.746962, + 0.72789, 0.710361, 0.696984, 0.678225, + 0.655474, 0.611583, 0.535832, 0.43985, + 0.301002, 0.168066, 0.473511, 0.522406, + 0.509332], + "prob_hosp_to_icu": [0.118454, 0.118454, 0.118453, 0.118454, + 0.118454, 0.118454, 0.118454, 0.125511, + 0.14091, 0.175955, 0.244376, 0.352435, + 0.527792, 0.724045, 0.181977, 0.054391, + 0.016733], + + "prob_icu_to_death": [0.52349, 0.52349, 0.52349, 0.52349, + 0.52349, 0.52349, 0.52349, 0.52349, + 0.52349, 0.52349, 0.52349, 0.52349, + 0.52349, 0.52349, 0.52349, 0.52349, + 0.52349], + "prob_icu_to_icurecov": [0.47651, 0.47651, 0.47651, 0.47651, + 0.47651, 0.47651, 0.47651, 0.47651, + 0.47651, 0.47651, 0.47651, 0.47651, + 0.47651, 0.47651, 0.47651, 0.47651, + 0.47651] + }, +"rate_multiplier_params": { + "gp_to_hosp": [0.25, 0.421052632], + "gp_to_death": [0.25, 0.421052632], + + "exposed_to_infect": [0.75, 0.842105263], + + "hosp_to_death": [0.9, 1], + "hosp_to_icu": [0.9, 1], + + "icu_to_death": [0.9, 1] + }, +"antibody_level_params": { + "igg_peak_at_age_41": 4.26, + "igg_half_life_at_age_41": 85.38, + "peak_change_per_10_yrs_age": 0.21, + "half_life_diff_per_10_yrs_age": 4.07, + "days_positive_pcr_to_max_igg": 24 + } +} \ No newline at end of file diff --git a/man/check_python_env.Rd b/man/check_python_env.Rd new file mode 100644 index 0000000..abb0efc --- /dev/null +++ b/man/check_python_env.Rd @@ -0,0 +1,11 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/zzz.R +\name{check_python_env} +\alias{check_python_env} +\title{Check Python environment and package availability} +\usage{ +check_python_env() +} +\description{ +Check Python environment and package availability +} diff --git a/man/create_python_env.Rd b/man/create_python_env.Rd new file mode 100644 index 0000000..d8c0399 --- /dev/null +++ b/man/create_python_env.Rd @@ -0,0 +1,20 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/zzz.R +\name{create_python_env} +\alias{create_python_env} +\title{Create and configure Python environment} +\usage{ +create_python_env(env_name = "r-py-env", python_version = "3.9") +} +\arguments{ +\item{env_name}{Character. Name of the virtual environment to create} + +\item{python_version}{Character. Python version to use (e.g., "3.8")} +} +\value{ +Logical indicating success +} +\description{ +Create and configure Python environment +} +\keyword{internal} diff --git a/man/ensure_python_dependencies.Rd b/man/ensure_python_dependencies.Rd new file mode 100644 index 0000000..20f0563 --- /dev/null +++ b/man/ensure_python_dependencies.Rd @@ -0,0 +1,12 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/zzz.R +\name{ensure_python_dependencies} +\alias{ensure_python_dependencies} +\title{Ensure all required Python dependencies are installed} +\usage{ +ensure_python_dependencies() +} +\description{ +Ensure all required Python dependencies are installed +} +\keyword{internal} diff --git a/man/initialize_python_env.Rd b/man/initialize_python_env.Rd new file mode 100644 index 0000000..55918ab --- /dev/null +++ b/man/initialize_python_env.Rd @@ -0,0 +1,14 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/zzz.R +\name{initialize_python_env} +\alias{initialize_python_env} +\title{Initialize or repair Python environment} +\usage{ +initialize_python_env(force = FALSE) +} +\arguments{ +\item{force}{Logical. If TRUE, recreates the environment even if it exists} +} +\description{ +Initialize or repair Python environment +} diff --git a/man/load_python_modules.Rd b/man/load_python_modules.Rd new file mode 100644 index 0000000..ec34d09 --- /dev/null +++ b/man/load_python_modules.Rd @@ -0,0 +1,12 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/zzz.R +\name{load_python_modules} +\alias{load_python_modules} +\title{Load Python modules into package environment} +\usage{ +load_python_modules() +} +\description{ +Load Python modules into package environment +} +\keyword{internal} diff --git a/rEpiabm.Rproj b/rEpiabm.Rproj new file mode 100644 index 0000000..21a4da0 --- /dev/null +++ b/rEpiabm.Rproj @@ -0,0 +1,17 @@ +Version: 1.0 + +RestoreWorkspace: Default +SaveWorkspace: Default +AlwaysSaveHistory: Default + +EnableCodeIndexing: Yes +UseSpacesForTab: Yes +NumSpacesForTab: 2 +Encoding: UTF-8 + +RnwWeave: Sweave +LaTeX: pdfLaTeX + +BuildType: Package +PackageUseDevtools: Yes +PackageInstallArgs: --no-multiarch --with-keep.source diff --git a/simulation_outputs/counts.csv b/simulation_outputs/counts.csv new file mode 100644 index 0000000..319bb8a --- /dev/null +++ b/simulation_outputs/counts.csv @@ -0,0 +1,3 @@ +Cell,Age group 0 +0,56 +1,44 diff --git a/simulation_outputs/demographics.csv b/simulation_outputs/demographics.csv new file mode 100644 index 0000000..4b9f31d --- /dev/null +++ b/simulation_outputs/demographics.csv @@ -0,0 +1,101 @@ +id,kw_or_chr +0.0.0.0,X +0.0.0.1,X +0.0.0.2,X +0.0.0.3,X +0.0.0.4,X +0.0.1.0,X +0.0.1.1,X +0.0.1.2,X +0.0.2.0,X +0.0.2.1,X +0.0.2.2,X +0.0.3.0,X +0.0.3.1,X +0.0.3.2,X +0.0.3.3,X +0.0.4.0,X +0.0.4.1,X +0.0.4.2,X +0.0.4.3,X +0.0.4.4,X +0.0.4.5,X +0.0.4.6,X +0.0.4.7,X +0.0.4.8,X +0.1.0.0,X +0.1.0.1,X +0.1.0.2,X +0.1.0.3,X +0.1.0.4,X +0.1.0.5,X +0.1.0.6,X +0.1.0.7,X +0.1.0.8,X +0.1.1.0,X +0.1.1.1,X +0.1.1.2,X +0.1.1.3,X +0.1.1.4,X +0.1.1.5,X +0.1.2.0,X +0.1.2.1,X +0.1.2.2,X +0.1.2.3,X +0.1.2.4,X +0.1.2.5,X +0.1.2.6,X +0.1.3.0,X +0.1.3.1,X +0.1.4.0,X +0.1.4.1,X +0.1.4.2,X +0.1.4.3,X +0.1.4.4,X +0.1.4.5,X +0.1.4.6,X +0.1.4.7,X +1.0.0.0,X +1.0.0.1,X +1.0.0.2,X +1.0.0.3,X +1.0.0.4,X +1.0.0.5,X +1.0.0.6,X +1.0.0.7,X +1.0.0.8,X +1.0.1.0,X +1.0.1.1,X +1.0.1.2,X +1.0.1.3,X +1.0.1.4,X +1.0.2.0,X +1.0.2.1,X +1.0.3.0,X +1.0.3.1,X +1.0.3.2,X +1.0.4.0,X +1.0.4.1,X +1.0.4.2,X +1.0.4.3,X +1.0.4.4,X +1.1.0.0,X +1.1.0.1,X +1.1.1.0,X +1.1.1.1,X +1.1.1.2,X +1.1.2.0,X +1.1.2.1,X +1.1.2.2,X +1.1.2.3,X +1.1.2.4,X +1.1.3.0,X +1.1.3.1,X +1.1.3.2,X +1.1.3.3,X +1.1.3.4,X +1.1.4.0,X +1.1.4.1,X +1.1.4.2,X +1.1.4.3,X +1.1.4.4,X diff --git a/simulation_outputs/inf_status_history.csv b/simulation_outputs/inf_status_history.csv new file mode 100644 index 0000000..564b8ca --- /dev/null +++ b/simulation_outputs/inf_status_history.csv @@ -0,0 +1,62 @@ +time,0.0.0.0,0.0.0.1,0.0.0.2,0.0.0.3,0.0.0.4,0.0.1.0,0.0.1.1,0.0.1.2,0.0.2.0,0.0.2.1,0.0.2.2,0.0.3.0,0.0.3.1,0.0.3.2,0.0.3.3,0.0.4.0,0.0.4.1,0.0.4.2,0.0.4.3,0.0.4.4,0.0.4.5,0.0.4.6,0.0.4.7,0.0.4.8,0.1.0.0,0.1.0.1,0.1.0.2,0.1.0.3,0.1.0.4,0.1.0.5,0.1.0.6,0.1.0.7,0.1.0.8,0.1.1.0,0.1.1.1,0.1.1.2,0.1.1.3,0.1.1.4,0.1.1.5,0.1.2.0,0.1.2.1,0.1.2.2,0.1.2.3,0.1.2.4,0.1.2.5,0.1.2.6,0.1.3.0,0.1.3.1,0.1.4.0,0.1.4.1,0.1.4.2,0.1.4.3,0.1.4.4,0.1.4.5,0.1.4.6,0.1.4.7,1.0.0.0,1.0.0.1,1.0.0.2,1.0.0.3,1.0.0.4,1.0.0.5,1.0.0.6,1.0.0.7,1.0.0.8,1.0.1.0,1.0.1.1,1.0.1.2,1.0.1.3,1.0.1.4,1.0.2.0,1.0.2.1,1.0.3.0,1.0.3.1,1.0.3.2,1.0.4.0,1.0.4.1,1.0.4.2,1.0.4.3,1.0.4.4,1.1.0.0,1.1.0.1,1.1.1.0,1.1.1.1,1.1.1.2,1.1.2.0,1.1.2.1,1.1.2.2,1.1.2.3,1.1.2.4,1.1.3.0,1.1.3.1,1.1.3.2,1.1.3.3,1.1.3.4,1.1.4.0,1.1.4.1,1.1.4.2,1.1.4.3,1.1.4.4 +0,1,1,1,4,4,1,1,1,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,1,1,1,1,1,1,1,1,4,1,1,1,1,4,1,1,1,1,1,4,1,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +1.0,1,1,1,4,4,1,1,1,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,9,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,1,1,1,1,1,1,1,1,1,4,1,1,1,1,9,1,1,1,1,1,4,1,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +2.0,1,2,1,4,4,1,1,1,1,1,1,4,2,2,2,1,1,1,1,1,1,1,1,1,2,2,2,4,4,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,4,2,2,1,1,1,1,2,1,1,4,1,1,1,1,1,1,1,1,1,1,4,2,4,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +3.0,2,2,2,4,4,1,1,1,1,1,1,4,2,2,2,1,1,1,1,1,1,1,1,1,2,2,2,4,9,1,2,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,5,1,2,1,4,2,2,2,1,1,2,4,2,1,4,1,1,1,1,1,1,1,1,1,1,4,4,4,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +4.0,3,2,2,4,9,1,1,1,1,1,1,9,2,2,5,1,1,1,1,1,1,1,1,1,2,2,2,4,1,1,2,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,5,1,2,1,4,2,2,2,1,1,2,4,2,1,4,1,1,1,1,1,1,1,1,1,1,4,4,4,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +5.0,3,2,2,4,1,1,1,1,1,1,1,1,2,2,5,1,1,1,1,1,1,1,1,1,2,2,2,4,1,1,2,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,2,5,1,2,1,4,2,2,2,1,1,2,4,2,1,4,1,1,1,1,1,1,1,1,1,1,4,4,4,2,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +6.0,3,2,2,4,1,1,1,1,1,1,1,1,3,2,5,1,1,1,1,1,1,1,1,1,2,2,2,4,1,1,2,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,2,9,1,4,1,4,4,2,2,1,1,2,4,2,1,4,1,1,1,1,1,1,1,1,1,1,4,4,4,2,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +7.0,3,2,5,9,1,1,1,1,1,1,1,1,3,2,5,1,1,1,1,1,1,1,1,1,4,2,2,4,1,1,2,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,2,1,1,4,2,9,4,2,2,1,1,2,4,2,1,4,1,1,1,1,1,1,1,1,1,1,4,9,4,2,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +8.0,3,2,5,1,1,1,1,1,1,1,1,1,3,2,5,1,1,1,1,1,1,1,1,1,4,2,2,4,1,1,2,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,2,4,2,1,4,2,2,1,1,2,4,2,1,4,1,1,1,1,1,1,1,1,1,1,9,1,9,2,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +9.0,3,2,5,1,1,1,1,1,1,1,1,1,3,2,5,1,1,1,1,1,1,1,1,1,4,3,4,4,1,1,2,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,2,4,4,1,4,2,4,1,1,2,9,2,1,4,1,1,1,1,1,1,1,1,1,1,1,1,1,2,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +10.0,3,2,5,1,1,1,1,1,1,1,1,1,3,2,9,1,1,1,1,1,1,1,1,1,4,3,4,9,1,1,5,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,3,4,4,1,4,2,4,1,1,2,1,2,1,9,1,1,1,1,1,1,1,1,1,1,1,1,1,2,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +11.0,3,5,5,1,1,1,1,1,1,1,1,1,3,2,1,1,1,1,1,1,1,1,1,1,4,3,4,1,1,1,5,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,3,4,4,1,4,3,4,2,1,2,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +12.0,3,5,5,1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,1,1,1,1,1,1,4,3,4,1,1,1,5,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,3,4,4,1,9,3,4,2,2,2,1,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +13.0,3,5,5,1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,1,1,1,1,1,1,4,3,4,1,1,1,5,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,3,4,4,1,1,3,4,2,2,2,1,9,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +14.0,3,5,9,1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,1,1,1,1,1,1,4,3,9,1,1,1,5,3,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,3,4,4,1,1,3,4,2,3,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +15.0,3,5,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,1,1,1,1,1,1,4,3,1,1,1,1,5,3,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,3,9,9,1,1,3,4,2,3,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +16.0,3,5,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,1,1,1,1,1,1,9,3,1,1,1,1,5,3,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,3,1,1,1,1,3,9,2,3,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,9,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +17.0,3,5,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,9,3,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,3,1,1,1,1,3,1,2,3,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +18.0,3,5,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,3,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,1,9,1,1,1,1,3,1,4,3,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +19.0,3,5,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,3,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,3,1,1,1,1,1,1,3,1,4,3,4,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +20.0,3,5,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,3,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,3,1,4,3,4,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +21.0,3,5,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,3,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,3,1,4,9,4,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +22.0,3,5,1,1,1,1,1,1,1,1,1,1,9,3,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,3,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,3,1,4,1,4,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +23.0,3,5,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,3,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,3,1,4,1,4,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +24.0,3,5,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,9,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,3,1,4,1,4,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +25.0,3,9,1,1,1,1,1,1,1,1,1,1,1,9,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,3,1,9,1,4,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +26.0,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,3,1,1,1,4,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +27.0,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,3,1,1,1,4,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +28.0,9,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,3,1,1,1,4,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +29.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,3,1,1,1,4,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +30.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,3,1,1,1,9,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +31.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,3,1,1,1,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +32.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,3,1,1,1,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +33.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,3,1,1,1,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +34.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,1,1,1,1,1,1,3,1,1,1,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +35.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,1,1,1,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +36.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +37.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +38.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +39.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +40.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +41.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +42.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +43.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +44.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +45.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +46.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +47.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +48.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +49.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +50.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +51.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +52.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +53.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +54.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +55.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +56.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +57.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +58.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +59.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +60.0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 diff --git a/simulation_outputs/infectiousness_history.csv b/simulation_outputs/infectiousness_history.csv new file mode 100644 index 0000000..66edf4f --- /dev/null +++ b/simulation_outputs/infectiousness_history.csv @@ -0,0 +1,62 @@ +time,0.0.0.0,0.0.0.1,0.0.0.2,0.0.0.3,0.0.0.4,0.0.1.0,0.0.1.1,0.0.1.2,0.0.2.0,0.0.2.1,0.0.2.2,0.0.3.0,0.0.3.1,0.0.3.2,0.0.3.3,0.0.4.0,0.0.4.1,0.0.4.2,0.0.4.3,0.0.4.4,0.0.4.5,0.0.4.6,0.0.4.7,0.0.4.8,0.1.0.0,0.1.0.1,0.1.0.2,0.1.0.3,0.1.0.4,0.1.0.5,0.1.0.6,0.1.0.7,0.1.0.8,0.1.1.0,0.1.1.1,0.1.1.2,0.1.1.3,0.1.1.4,0.1.1.5,0.1.2.0,0.1.2.1,0.1.2.2,0.1.2.3,0.1.2.4,0.1.2.5,0.1.2.6,0.1.3.0,0.1.3.1,0.1.4.0,0.1.4.1,0.1.4.2,0.1.4.3,0.1.4.4,0.1.4.5,0.1.4.6,0.1.4.7,1.0.0.0,1.0.0.1,1.0.0.2,1.0.0.3,1.0.0.4,1.0.0.5,1.0.0.6,1.0.0.7,1.0.0.8,1.0.1.0,1.0.1.1,1.0.1.2,1.0.1.3,1.0.1.4,1.0.2.0,1.0.2.1,1.0.3.0,1.0.3.1,1.0.3.2,1.0.4.0,1.0.4.1,1.0.4.2,1.0.4.3,1.0.4.4,1.1.0.0,1.1.0.1,1.1.1.0,1.1.1.1,1.1.1.2,1.1.2.0,1.1.2.1,1.1.2.2,1.1.2.3,1.1.2.4,1.1.3.0,1.1.3.1,1.1.3.2,1.1.3.3,1.1.3.4,1.1.4.0,1.1.4.1,1.1.4.2,1.1.4.3,1.1.4.4 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1.0,0,0,0,4.2520202949048596,3.1860559607741377,0,0,0,0,0,0,6.608242628568127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10.738976217880257,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2.412638002939603,0,0,0,0,0,0,0,0,0,5.041727268821385,0,0,0,0,0,0,0,0,0,0,1.0490456166806736,0,6.2670239778832,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +2.0,0,0,0,3.1215031685752574,2.3389549172029733,0,0,0,0,0,0,4.8512586660292625,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7.883722552203299,0.12378024912891653,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.7711715016566172,0,0,0,0,0,0,0,0,0,3.7012447150303105,0,0,0,0,0,0,0,0,0,0,0.7701278426099276,0,4.600762425320748,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3.0,0,0,0,1.8771059432903552,1.406523056061428,0,0,0,0,0,0,2.917288877396448,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4.740851333092675,0,0,0,1.6227415695945517,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.4865483022450401,0,0,0,1.065088315724381,0,0,0,0,0,0,0.17504777607932584,0,0,2.2257316673897556,0,0,0,0,0,0,0,0,0,0,0.4631139141583164,7.73873052322288,2.7666537644997153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +4.0,5.847823023129943,0,0,1.035873474630147,0,0,0,0,0,0,0,0,0,0,4.3000306908251344,0,0,0,0,0,0,0,0,0,0,0,0,2.6162200171330663,0,0,0,4.354112261502656,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.3054980338907205,0,0,0,0.5877647654044664,0,0,0,0,0,0,0.46968518121230907,0,0,1.2282611986470837,0,0,0,0,0,0,0,0,0,0,0.2555675779108315,20.764428600943837,1.5267669139160525,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +5.0,15.690778128318616,0,0,0.5447882551505029,0,0,0,0,0,0,0,0,0,0,11.537768370867225,0,0,0,0,0,0,0,0,0,0,0,0,1.375926667813009,0,0,0,3.1964511639089044,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.6302806584235761,0,0.9583952960529873,0,0,0,0.3091181971794115,0,0,0,0,0,0,0.34480639312655775,0,0,0.6459691184957927,0,0,0,0,0,0,0,0,0,0,0.13440851441127355,15.243631303728568,0.802959727635483,0,0.2674678715235255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6.0,11.518951051021226,0,0,0.27781978860155954,0,0,0,0,0,0,0,0,1.9999471218955296,0,8.470133731747694,0,0,0,0,0,0,0,0,0,0,0,0,0.7016664775151138,0,0,0,1.9221756804909422,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.691158219183192,0,0,0,1.5096294639806607,0,0.1576376718502391,0.3387084104014531,0,0,0,0,0,0.20734822131152603,0,0,0.32941790181225283,0,0,0,0,0,0,0,0,0,0,0.0685428599221064,9.166708913070238,0.40947670893827964,0,0.7176651912907953,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +7.0,6.926884360079523,0,1.7788645499290248,0,0,0,0,0,0,0,0,0,5.366223709902248,0,5.093487819711111,0,0,0,0,0,0,0,0,0,0.09106772434117652,0,0,0.35022926171139945,0,0,0,1.0607450304640191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.241517060976432,0,0,0,4.050611805727137,0,0,0.9088165795688088,0,0,0,0,0,0.11442429407679279,0,0,0.16442539617226973,0,0,0,0,0,0,0,0,0,0,0.03421242997260065,0,0.20438588710599795,0,0.5268540630614538,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +8.0,3.822573678424976,0,4.773018756359081,0,0,0,0,0,0,0,0,0,3.939464807779885,0,2.8108210645489087,0,0,0,0,0,0,0,0,0,0.2443513512013699,0,0,0.17207477357207543,0,0,0,0.5578687440687575,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.7465823124308801,4.164576592488406,0,0,2.9736446934170897,0,0,0.6671825711126435,0,0,0,0,0,0.060178210026259296,0,0,0.08078554795103575,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.31682200517218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +9.0,2.010374138788451,0,3.503979788030945,0,0,0,0,0,0,0,0,0,2.368984557988455,0,1.47827156578425,0,0,0,0,0,0,0,0,0,0.17938379032073468,0.5195396421268778,2.826874066180635,0.08352608074656125,0,0,0,0.2844903044060359,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.41199848993049604,11.174320264594767,0,0,1.7881917223216397,0.9721183036199873,0,0.4012081045129617,0,1.9104515309266614,0,0,0,0,0,0,0.03921376771992124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.17483696778548405,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +10.0,1.02520880905179,0,2.1071070346804266,0,0,0,0,0,0,0,0,0,1.307314738520903,0,0,0,0,0,0,0,0,0,0,0,0.10787186837766101,1.3940198294707782,7.585019860159437,0,0,0,2.0590822511737223,0.14200027002719548,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.216678912966679,8.203318350668349,0,0.35460084210684545,0.9868065142126393,2.60837110771773,0,0.2214051022304662,0,5.126090679918097,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.09195054120839102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +11.0,0.511721930290588,9.089687635957075,1.1627986652719335,0,0,0,0,0,0,0,0,0,0.687545084196339,0,0,0,0,0,0,0,0,0,0,0,0.05952866299881994,1.023381125429727,5.568332671310478,0,0,0,5.52489407140661,0.06976762647616293,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.11049740743435868,4.933039243964856,0,0.9514588789035276,0.5189828798743988,1.9148635502322382,0,0.11644172988271632,2.5889480559935256,3.7631777813813256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.046891025419145554,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +12.0,0.2514194126908164,24.389293483643478,0.6115409569407215,0,0,0,0,0,0,0,0,0,0.35061994846548045,4.866655212985758,0,0,0,0,0,0,0,0,0,0,0.0313074108381321,0.6154069655076178,3.348499036220907,0,0,0,4.055948267839647,0.033865605524699596,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.05515359029807087,2.7222781539839387,0,0.6984872364850456,0.2646600997936381,1.1514970693980076,0,0,6.946620882961278,2.262974918687414,0,0,0,0,3.9073363034974453,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.023405150081555765,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +13.0,0.12204042306567396,17.904725661759446,0.3118609437193735,0,0,0,0,0,0,0,0,0,0.1750081693046382,13.058125540385028,0,0,0,0,0,0,0,0,0,0,0.015965502520441044,0.3396098946629159,1.8478559208894447,0,0,0,2.4390315140109293,0.016281736052971667,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.027098082883914142,1.4317049348838307,0,0.4200330648765524,0.13210223706774504,0.6354490936259529,0,0,5.0996697083121205,1.2488137392568077,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01149942720669323,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +14.0,0.058673982802376734,10.76694949120046,0,0,0,0,0,0,0,0,0,0,0.08598508005642999,9.586261923257684,0,0,0,0,0,0,0,0,0,0,0.007969008552877762,0.17860818572588202,0,0,0,0,1.3459698735608976,0.007767217270848148,2.370929660074587,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01315356465130418,0.7301111185654169,0,0.2317935819917234,0.06490452117198686,0.33419641629211033,0,0,3.066670062891427,0.6567781439336524,0,4.423103512439049,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.005581887835541129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +15.0,0.027990477863623724,5.941698400393328,0,0,0,0,0,0,0,0,0,0,0.04173765038711294,5.764667936665333,0,0,0,0,0,0,0,0,0,0,0.003915336301797482,0.09108288941942111,0,0,0,0,0.7078746554102024,0.0036815899533570325,6.3616376738721225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.006323904873103038,0.3644270977972467,0,0.1219052559806525,0,0,0,0,1.6923297190265285,0.33493006389310653,0,11.867995248447468,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.002683632051087625,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +16.0,0.013267230527867924,3.124867644030133,0,0,0,0,0,0,0,0,0,0,0.02006641831868475,3.181209151772867,0,0,0,0,0,0,0,0,0,0,0,0.04546304282466989,0,0,0,0,0.3609872005558098,0.0017356186289419547,4.670220454995239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.003016824679491207,0.17905045977758383,0,0.06216670812150238,0,0,0,0,0.8900327861923336,0,0,8.712560666057167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +17.0,0.006254594550280673,1.593555037328164,0,0,0,0,0,0,0,0,0,0,0.00957270345262138,1.6730666683804605,0,0,0,0,0,0,0,0,0,0,0,0.022336919427363797,0,0,0,0,0,0.0,2.808422128416108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0014299473085090577,0.08691211878786612,0,0.031029842505127886,0,0,0,0,0.4538804171541856,0,0,5.239270481022223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +18.0,0.0,0.7954058261361117,0,0,0,0,0,0,0,0,0,0,0.004537373891922646,0.853195757675368,0,0,0,0,0,0,0,0,0,0,0,0.010842468637263358,0,0,0,0,0,0.0,1.5498166199885017,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0006741226531191171,0.04178517277290314,0,0,0,0,0,0,0.2265495196066972,0,0.2411267349280423,2.8912706483632693,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +19.0,0.0,0.39079909189045947,0,0,0,0,0,0,0,0,0,0,0.002139062403219267,0.42586346915726186,0,0,0,0,0,0,0,0,0,0,0,0.005212787717195595,0,0,0,0,0,0.0,0.8150820663771184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01993365538976606,0,0,0,0,0,0,0.11130839581676227,0,0.6469871067569986,1.520581741174597,0.5676741261146644,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +20.0,0.0,0.1896961177243851,0,0,0,0,0,0,0,0,0,0,0.0,0.20923540103350874,0,0,0,0,0,0,0,0,0,0,0,0.0024867652106961213,0,0,0,0,0,0.0,0.4156586072349441,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.009448370356791936,0,0,0,0,0,0,0.054029732910657415,0,0.4749677009278005,0.7754346645520336,1.5231734487896513,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.08029618112959346,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +21.0,0.0,0.09120114851657522,0,0,0,0,0,0,0,0,0,0,0.0,0.10156406217465516,0,0,0,0,0,0,0,0,0,0,0,0.0011787039678184397,0,0,0,0,0,0.0,0.20747151503008399,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.004454262373635044,0,0,0,0,0,0,0.025976144133087485,0,0.2856203073115782,0,1.1181956850920876,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.2154493317722517,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +22.0,0.0,0.04350759240749637,0,0,0,0,0,0,0,0,0,0,0.0,0.04882946066295111,0,0,0,0,0,0,0,0,0,0,0,0.0005556785493419906,0,0,0,0,0,0.0,0.101934983379189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.012391943628378203,0,0.15761843449344914,0,0.6724233976049488,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.15816617164325025,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +23.0,0.0,0.020622200914009025,0,0,0,0,0,0,0,0,0,0,0.0,0.02329413945500312,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0.04947982482198787,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.005873667952618267,0,0.08289494229775402,0,0.3710741867231432,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.09511272127093136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +24.0,0.0,0.009721961578991417,0,0,0,0,0,0,0,0,0,0,0.0,0.011041209071298784,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0.023788662131297544,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.002769033935864552,0,0.04227303934615529,0,0.1951559371558115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.05248757824065357,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +25.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0.01134840331248718,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0.0995215676776815,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.027604352140603573,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +26.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0.005379039386307041,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0.04967511814951241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01407709362983027,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +27.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0.02440639787199489,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.007026429602961193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +28.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0.011847005328384569,0,0,1.0241286185659375,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0034522280549647215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +29.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0.005695743831724016,0,0,2.7479242899828256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.001675731272450278,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +30.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,2.017312661575204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0008056496805836398,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +31.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,1.2131045147220088,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.00038433592664342586,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +32.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.6694469181381884,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.00018217171438672704,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +33.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.35207660721170775,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8.588154171476632e-05,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +34.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.17954470872373884,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +35.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.08961780674373011,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +36.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +37.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +38.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +39.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +40.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +41.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +42.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +43.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +44.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +45.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +46.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +47.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +48.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +49.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +50.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +51.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +52.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +53.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +54.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +55.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +56.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +57.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +58.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +59.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +60.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/simulation_outputs/output.csv b/simulation_outputs/output.csv new file mode 100644 index 0000000..6fdc45f --- /dev/null +++ b/simulation_outputs/output.csv @@ -0,0 +1,62 @@ +time,InfectionStatus.Susceptible,InfectionStatus.Exposed,InfectionStatus.InfectASympt,InfectionStatus.InfectMild,InfectionStatus.InfectGP,InfectionStatus.InfectHosp,InfectionStatus.InfectICU,InfectionStatus.InfectICURecov,InfectionStatus.Recovered,InfectionStatus.Dead,InfectionStatus.Vaccinated +0,90,0,0,10,0,0,0,0,0,0,0 +1.0,90,0,0,8,0,0,0,0,2,0,0 +2.0,72,19,0,9,0,0,0,0,0,0,0 +3.0,66,21,1,10,1,0,0,0,1,0,0 +4.0,67,19,2,8,2,0,0,0,2,0,0 +5.0,69,17,3,9,2,0,0,0,0,0,0 +6.0,69,14,4,11,1,0,0,0,1,0,0 +7.0,69,13,4,9,2,0,0,0,3,0,0 +8.0,71,13,5,7,2,0,0,0,2,0,0 +9.0,73,9,6,9,2,0,0,0,1,0,0 +10.0,74,7,7,7,2,0,0,0,3,0,0 +11.0,75,7,8,7,3,0,0,0,0,0,0 +12.0,74,6,10,6,3,0,0,0,1,0,0 +13.0,75,6,9,6,3,0,0,0,1,0,0 +14.0,76,4,10,5,3,0,0,0,2,0,0 +15.0,78,4,10,3,3,0,0,0,2,0,0 +16.0,80,4,10,0,3,0,0,0,3,0,0 +17.0,83,4,10,0,2,0,0,0,1,0,0 +18.0,84,3,9,1,2,0,0,0,1,0,0 +19.0,85,2,8,2,2,0,0,0,1,0,0 +20.0,86,1,9,2,2,0,0,0,0,0,0 +21.0,86,1,8,2,2,0,0,0,1,0,0 +22.0,87,1,7,2,1,1,0,0,1,0,0 +23.0,88,1,7,2,1,1,0,0,0,0,0 +24.0,88,1,6,2,1,1,0,0,1,0,0 +25.0,89,1,5,1,0,1,0,0,3,0,0 +26.0,92,1,5,1,0,1,0,0,0,0,0 +27.0,92,1,5,1,0,0,0,0,0,1,0 +28.0,92,0,4,2,0,0,0,0,1,1,0 +29.0,93,0,4,2,0,0,0,0,0,1,0 +30.0,93,0,4,1,0,0,0,0,1,1,0 +31.0,94,0,4,1,0,0,0,0,0,1,0 +32.0,94,0,4,1,0,0,0,0,0,1,0 +33.0,94,0,3,1,0,0,0,0,1,1,0 +34.0,95,0,2,1,0,0,0,0,1,1,0 +35.0,96,0,1,1,0,0,0,0,1,1,0 +36.0,97,0,1,0,0,0,0,0,1,1,0 +37.0,98,0,1,0,0,0,0,0,0,1,0 +38.0,98,0,1,0,0,0,0,0,0,1,0 +39.0,98,0,1,0,0,0,0,0,0,1,0 +40.0,98,0,1,0,0,0,0,0,0,1,0 +41.0,98,0,0,0,0,0,0,0,1,1,0 +42.0,99,0,0,0,0,0,0,0,0,1,0 +43.0,99,0,0,0,0,0,0,0,0,1,0 +44.0,99,0,0,0,0,0,0,0,0,1,0 +45.0,99,0,0,0,0,0,0,0,0,1,0 +46.0,99,0,0,0,0,0,0,0,0,1,0 +47.0,99,0,0,0,0,0,0,0,0,1,0 +48.0,99,0,0,0,0,0,0,0,0,1,0 +49.0,99,0,0,0,0,0,0,0,0,1,0 +50.0,99,0,0,0,0,0,0,0,0,1,0 +51.0,99,0,0,0,0,0,0,0,0,1,0 +52.0,99,0,0,0,0,0,0,0,0,1,0 +53.0,99,0,0,0,0,0,0,0,0,1,0 +54.0,99,0,0,0,0,0,0,0,0,1,0 +55.0,99,0,0,0,0,0,0,0,0,1,0 +56.0,99,0,0,0,0,0,0,0,0,1,0 +57.0,99,0,0,0,0,0,0,0,0,1,0 +58.0,99,0,0,0,0,0,0,0,0,1,0 +59.0,99,0,0,0,0,0,0,0,0,1,0 +60.0,99,0,0,0,0,0,0,0,0,1,0 diff --git a/simulation_outputs/simulation_flow_SIR_plot.png b/simulation_outputs/simulation_flow_SIR_plot.png new file mode 100644 index 0000000..5f43b63 Binary files /dev/null and b/simulation_outputs/simulation_flow_SIR_plot.png differ diff --git a/tests/test.R b/tests/test.R index 8b13789..e69de29 100644 --- a/tests/test.R +++ b/tests/test.R @@ -1 +0,0 @@ -