Giter Club home page Giter Club logo

epiverse-trace / epidemics Goto Github PK

View Code? Open in Web Editor NEW
8.0 8.0 2.0 19.24 MB

[Under active development] - A library of published compartmental epidemic models, and classes to represent demographic structure, non-pharmaceutical interventions, and vaccination regimes, to compose epidemic scenarios.

Home Page: https://epiverse-trace.github.io/epidemics/

License: Other

R 82.71% C++ 17.12% C 0.17%
epidemiology r-package r rcpp rcppeigen epidemic-modelling epidemic-simulations vaccination infectious-disease-dynamics non-pharmaceutical-interventions

epidemics's Introduction

epidemics: Composable epidemic scenario modelling

License: MIT R-CMD-check Codecov test coverage Project Status: WIP – Initial development is in progress, but there has not yet been a stable, usable release suitable for the public. CRAN status

epidemics is an R package that provides modular representations of populations and public health response measures, allowing them to be combined with epidemiological model structures curated from the published literature, to conveniently compose and compare epidemic scenario models.

The models in epidemics focus on directly transmitted infections, and implement methods outlined in Bjørnstad et al. (2020a) and Bjørnstad et al. (2020b). The models in epidemics can help provide rough estimates of the course of epidemics, and the effectiveness of pharmaceutical and non-pharmaceutical interventions.

epidemics relies on Eigen via {RcppEigen}, and on Boost Odeint via {BH}, and is developed at the Centre for the Mathematical Modelling of Infectious Diseases at the London School of Hygiene and Tropical Medicine as part of the Epiverse-TRACE initiative.

Installation

The current development version of epidemics can be installed from GitHub using the pak package.

if(!require("pak")) install.packages("pak")
pak::pkg_install("epiverse-trace/epidemics")

Installation Notes

  1. Some users who are also using or developing packages that use Stan might face issues if they have modified their toolchain to accommodate packages such as cmdstanr; see this resolved issue for a starting point if you face similar problems.

  2. Users on Windows systems will need to have packages from the RTools family installed and on their system path; see this link for guidance on using RTools for your version of R.

Quick start

Here we show an example of using the default model in epidemics to model an epidemic in the U.K. population with an $R_0$ similar to that of pandemic influenza, with heterogeneity in social contacts among different age groups, and with the implementation of school closures to dampen the spread of the infection.

# load epidemics
library(epidemics)
library(ggplot2)
library(dplyr)

Prepare the social contact pattern for a population (here, the U.K population), divided into three age groups: 0 – 19, 20 – 39, and 40+.

# load contact and population data from socialmixr::polymod
polymod <- socialmixr::polymod
contact_data <- socialmixr::contact_matrix(
  polymod,
  countries = "United Kingdom",
  age.limits = c(0, 20, 40),
  symmetric = TRUE
)

# prepare contact matrix
contact_matrix <- t(contact_data[["matrix"]])

# prepare the demography vector
demography_vector <- contact_data[["demography"]][["population"]]
names(demography_vector) <- rownames(contact_matrix)

Prepare the initial conditions for the population by age group — here, one in every million individuals is infected at the start of the epidemic (for a total of about 60 infections).

# initial conditions: one in every 1 million is infected
initial_i <- 1e-6
initial_conditions <- c(
  S = 1 - initial_i, E = 0, I = initial_i, R = 0, V = 0
)

# build for all age groups
initial_conditions <- rbind(
  initial_conditions,
  initial_conditions,
  initial_conditions
)
rownames(initial_conditions) <- rownames(contact_matrix)

Prepare an object of the class <population>, using the function population().

# prepare the population to model as affected by the epidemic
uk_population <- population(
  name = "UK",
  contact_matrix = contact_matrix,
  demography_vector = demography_vector,
  initial_conditions = initial_conditions
)

Define an intervention to close schools for two months. This intervention mostly only affects individuals in the age range 0 – 19, and reduces their contacts by 50%, reducing the contacts of other age groups by 1%. This is an object of the class <contacts_intervention>, created using the function intervention(), while setting type = "contacts".

# an intervention to close schools
close_schools <- intervention(
  type = "contacts",
  time_begin = 200,
  time_end = 260,
  reduction = matrix(c(0.5, 0.01, 0.01))
)

# view the intervention
close_schools
#> 
#>  Intervention name: 
#>  Begins at: 
#> [1] 200
#> 
#>  Ends at: 
#> [1] 260
#> 
#>  Reduction: 
#>              Interv. 1
#> Demo. grp. 1      0.50
#> Demo. grp. 2      0.01
#> Demo. grp. 3      0.01

Run the default epidemic model, using the function model_default(). We assume an $R_0$ of 1.5 which is similar to pandemic influenza, an infectious period of 7 days, and a pre-infectious period of 3 days. From these values we can calculate transmission rate $\beta$ 1.5 / 7.0, infectiousness_rate $\alpha$ 1.0 / 3.0 and recovery_rate $\gamma$ 1.0 / 7.0.

# run an epidemic model using `epidemic()`
output <- model_default(
  population = uk_population,
  transmission_rate = 1.5 / 7.0,
  infectiousness_rate = 1.0 / 3.0,
  recovery_rate = 1.0 / 7.0,
  intervention = list(contacts = close_schools),
  time_end = 600, increment = 1.0
)

Visualise the development of individuals in the “infectious” compartment over model time. Note that these curves represent the number of individuals that are infectious, and not the number of newly infectious individuals.

Package vignettes

More details on how to use epidemics can be found in the online documentation as package vignettes, under “Articles”.

Package models

epidemics provides a convenient interface to a library of compartmental models that can help to model epidemic scenarios for directly transmitted respiratory infections such as influenza or Covid-19 as well haemorrhagic fevers such as Ebola virus disease:

  1. A deterministic SEIR-V model with susceptible, exposed, infectious, recovered, and vaccinated compartments (SEIR-V), allowing for heterogeneity in social contacts, the implementation of a group-specific non-pharmaceutical intervention that reduces social contacts, and a vaccination regime with group-specific start and end dates;

  2. The deterministic Vacamole model developed at RIVM, the Dutch Public Health Institute for the Covid-19 pandemic, with a focus on scenario modelling for hospitalisation and vaccination (Ainslie et al. 2022);

  3. A stochastic, discrete-time, compartmental SEIR model suitable for modelling haemorrhagic fevers such as Ebola Virus Disease, including hospitalisation and hospital and funeral transmissions, adapted from Li et al. (2019) and Getz and Dougherty (2018);

  4. An initial implementation of a compartmental model for diphtheria in the context of internally displaced persons camps, including a reporting rate, hospitalisation rate, and delays in entering and leaving hospital, taken from Finger et al. (2019).

More models are planned to be added in the near future. Please get in touch if you would like to see your model added to the epidemics model library — we are happy to help with translating it into our framework, with a special focus on making the model applicable to LMIC settings.

Related projects

epidemics aims to be a library of published epidemiological models, and the following projects may be useful for building your own models:

  • The R package finalsize is also developed by Epiverse-TRACE and helps to calculate the final size of an epidemic in a heterogeneous population, and is a quicker option for estimates of total infections when the temporal dynamics are less important;
  • The Epirecipes project is a cookbook-style guide that focuses on different ways to implement epidemic models in R and other languages;
  • The R package odin generates systems of ordinary differential equations (ODE) and integrate them, using a domain specific language (DSL), and is widely used to translate compartmental models from R to C code for performance gains;
  • Many R packages provide modelling options, and these can be found on the CRAN Epidemiology Task View under the section “Infectious disease modelling”.

Help

To report a bug please open an issue.

Contribute

Contributions to epidemics are welcomed via pull requests.

Code of conduct

Please note that the epidemics project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.

References

Ainslie, Kylie E. C., Jantien A. Backer, Pieter T. de Boer, Albert Jan van Hoek, Don Klinkenberg, Hester Korthals Altes, Ka Yin Leung, Hester de Melker, Fuminari Miura, and Jacco Wallinga. 2022. “A Scenario Modelling Analysis to Anticipate the Impact of COVID-19 Vaccination in Adolescents and Children on Disease Outcomes in the Netherlands, Summer 2021.” Eurosurveillance 27 (44): 2101090. https://doi.org/10.2807/1560-7917.ES.2022.27.44.2101090.

Bjørnstad, Ottar N., Katriona Shea, Martin Krzywinski, and Naomi Altman. 2020a. “Modeling Infectious Epidemics.” Nature Methods 17 (5): 455–56. https://doi.org/10.1038/s41592-020-0822-z.

———. 2020b. “The SEIRS Model for Infectious Disease Dynamics.” Nature Methods 17 (6): 557–58. https://doi.org/10.1038/s41592-020-0856-2.

Finger, Flavio, Sebastian Funk, Kate White, M. Ruby Siddiqui, W. John Edmunds, and Adam J. Kucharski. 2019. “Real-Time Analysis of the Diphtheria Outbreak in Forcibly Displaced Myanmar Nationals in Bangladesh.” BMC Medicine 17 (March): 58. https://doi.org/10.1186/s12916-019-1288-7.

Getz, Wayne M., and Eric R. Dougherty. 2018. “Discrete Stochastic Analogs of Erlang Epidemic Models.” Journal of Biological Dynamics 12 (1): 16–38. https://doi.org/10.1080/17513758.2017.1401677.

Li, Shou-Li, Matthew J. Ferrari, Ottar N. Bjørnstad, Michael C. Runge, Christopher J. Fonnesbeck, Michael J. Tildesley, David Pannell, and Katriona Shea. 2019. “Concurrent Assessment of Epidemiological and Operational Uncertainties for Optimal Outbreak Control: Ebola as a Case Study.” Proceedings of the Royal Society B: Biological Sciences 286 (1905): 20190774. https://doi.org/10.1098/rspb.2019.0774.

epidemics's People

Contributors

actions-user avatar adamkucharski avatar avallecam avatar bahadzie avatar bisaloo avatar blackedder avatar chartgerink avatar jamesmbaazam avatar pratikunterwegs avatar timtaylor avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

han-tun bahadzie

epidemics's Issues

Minor edits to `epi_demic()`

This issue is to request minor edits to epi_demic():

  1. Rename R0 argument to r0 to be consisent with finalsize::final_size(),
  2. Return data in wide format rather than long format: this helps with calculations that are currently performed outside the epi_demic() function, such as a calculation of new infections over time.

Unable to install epidemics on MacBook

I am unable to install this package on my Apple Mac with M2 chip. Here is a reprex

pak::pak("epiverse-trace/epidemics")
#> ℹ Loading metadata database
#> ✔ Loading metadata database ... done
#> 
#> 
#> → Will install 1 package.
#> → Will download 1 package with unknown size.
#> + epidemics   0.0.0.9000 👷🏾🔧 ⬇ (GitHub: e8ae6a6)
#> ℹ Getting 1 pkg with unknown size
#> ✔ Got epidemics 0.0.0.9000 (source) (221.57 kB)
#> ℹ Packaging epidemics 0.0.0.9000
#> ✔ Packaged epidemics 0.0.0.9000 (1.9s)
#> ℹ Building epidemics 0.0.0.9000
#> ✖ Failed to build epidemics 0.0.0.9000
#> Error: ! error in pak subprocess
#> Caused by error in `stop_task_build(state, worker)`:
#> ! Failed to build source package 'epidemics'
#> Full installation output:
#> * installing *source* package ‘epidemics’ ...
#> staged installation is only possible with locking
#> ** using non-staged installation
#> ** libs
#> using C++ compiler: ‘Homebrew clang version 16.0.3’
#> using SDK: ‘MacOSX13.3.sdk’
#> /opt/homebrew/bin/ccache /opt/homebrew/opt/llvm/bin/clang++ -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG  -I'/Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/Rcpp/include' -I'/Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include' -I'/Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include' -I/opt/R/arm64/include -I/opt/homebrew/opt/libomp/include -Xclang -fopenmp   -I../inst/include -fPIC  -falign-functions=64 -Wall -g -O2  -Wall -pedantic -c RcppExports.cpp -o RcppExports.o
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:15:
#> In file included from ../inst/include/ode_tools.h:11:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigen.h:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigenForward.h:30:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/Dense:1:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/Core:540:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/ReenableStupidWarnings.h:14:30: warning: pragma diagnostic pop could not pop, no matching push [-Wunknown-pragmas]
#>     #pragma clang diagnostic pop
#>                              ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:15:
#> In file included from ../inst/include/ode_tools.h:11:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigen.h:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigenForward.h:30:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/Dense:2:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/LU:47:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/ReenableStupidWarnings.h:14:30: warning: pragma diagnostic pop could not pop, no matching push [-Wunknown-pragmas]
#>     #pragma clang diagnostic pop
#>                              ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:15:
#> In file included from ../inst/include/ode_tools.h:11:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigen.h:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigenForward.h:30:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/Dense:3:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/Cholesky:12:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/Jacobi:29:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/ReenableStupidWarnings.h:14:30: warning: pragma diagnostic pop could not pop, no matching push [-Wunknown-pragmas]
#>     #pragma clang diagnostic pop
#>                              ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:15:
#> In file included from ../inst/include/ode_tools.h:11:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigen.h:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigenForward.h:30:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/Dense:3:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/Cholesky:43:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/ReenableStupidWarnings.h:14:30: warning: pragma diagnostic pop could not pop, no matching push [-Wunknown-pragmas]
#>     #pragma clang diagnostic pop
#>                              ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:15:
#> In file included from ../inst/include/ode_tools.h:11:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigen.h:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigenForward.h:30:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/Dense:4:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/QR:15:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/Householder:27:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/ReenableStupidWarnings.h:14:30: warning: pragma diagnostic pop could not pop, no matching push [-Wunknown-pragmas]
#>     #pragma clang diagnostic pop
#>                              ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:15:
#> In file included from ../inst/include/ode_tools.h:11:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigen.h:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigenForward.h:30:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/Dense:4:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/QR:48:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/ReenableStupidWarnings.h:14:30: warning: pragma diagnostic pop could not pop, no matching push [-Wunknown-pragmas]
#>     #pragma clang diagnostic pop
#>                              ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:15:
#> In file included from ../inst/include/ode_tools.h:11:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigen.h:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigenForward.h:30:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/Dense:5:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/SVD:48:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/ReenableStupidWarnings.h:14:30: warning: pragma diagnostic pop could not pop, no matching push [-Wunknown-pragmas]
#>     #pragma clang diagnostic pop
#>                              ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:15:
#> In file included from ../inst/include/ode_tools.h:11:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigen.h:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigenForward.h:30:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/Dense:6:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/Geometry:58:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/ReenableStupidWarnings.h:14:30: warning: pragma diagnostic pop could not pop, no matching push [-Wunknown-pragmas]
#>     #pragma clang diagnostic pop
#>                              ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:15:
#> In file included from ../inst/include/ode_tools.h:11:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigen.h:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigenForward.h:30:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/Dense:7:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/Eigenvalues:58:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/ReenableStupidWarnings.h:14:30: warning: pragma diagnostic pop could not pop, no matching push [-Wunknown-pragmas]
#>     #pragma clang diagnostic pop
#>                              ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:15:
#> In file included from ../inst/include/ode_tools.h:11:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigen.h:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigenForward.h:31:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/Sparse:26:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/SparseCore:61:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/SparseCore/TriangularSolver.h:273:13: warning: variable 'count' set but not used [-Wunused-but-set-variable]
#>       Index count = 0;
#>             ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:15:
#> In file included from ../inst/include/ode_tools.h:11:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigen.h:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigenForward.h:31:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/Sparse:26:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/SparseCore:66:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/ReenableStupidWarnings.h:14:30: warning: pragma diagnostic pop could not pop, no matching push [-Wunknown-pragmas]
#>     #pragma clang diagnostic pop
#>                              ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:15:
#> In file included from ../inst/include/ode_tools.h:11:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigen.h:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigenForward.h:31:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/Sparse:27:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/OrderingMethods:71:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/ReenableStupidWarnings.h:14:30: warning: pragma diagnostic pop could not pop, no matching push [-Wunknown-pragmas]
#>     #pragma clang diagnostic pop
#>                              ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:15:
#> In file included from ../inst/include/ode_tools.h:11:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigen.h:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigenForward.h:31:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/Sparse:29:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/SparseCholesky:43:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/ReenableStupidWarnings.h:14:30: warning: pragma diagnostic pop could not pop, no matching push [-Wunknown-pragmas]
#>     #pragma clang diagnostic pop
#>                              ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:15:
#> In file included from ../inst/include/ode_tools.h:11:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigen.h:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigenForward.h:31:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/Sparse:31:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/SparseLU:33:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h:78:9: warning: variable 'nsuper_et_post' set but not used [-Wunused-but-set-variable]
#>   Index nsuper_et_post = 0; // Number of relaxed snodes in postordered etree 
#>         ^
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h:79:9: warning: variable 'nsuper_et' set but not used [-Wunused-but-set-variable]
#>   Index nsuper_et = 0; // Number of relaxed snodes in the original etree 
#>         ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:15:
#> In file included from ../inst/include/ode_tools.h:11:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigen.h:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigenForward.h:31:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/Sparse:32:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/SparseQR:34:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/ReenableStupidWarnings.h:14:30: warning: pragma diagnostic pop could not pop, no matching push [-Wunknown-pragmas]
#>     #pragma clang diagnostic pop
#>                              ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:15:
#> In file included from ../inst/include/ode_tools.h:11:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigen.h:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigenForward.h:31:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/Sparse:33:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/IterativeLinearSolvers:46:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/ReenableStupidWarnings.h:14:30: warning: pragma diagnostic pop could not pop, no matching push [-Wunknown-pragmas]
#>     #pragma clang diagnostic pop
#>                              ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:15:
#> In file included from ../inst/include/ode_tools.h:11:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigen.h:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigenForward.h:32:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/CholmodSupport:45:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/ReenableStupidWarnings.h:14:30: warning: pragma diagnostic pop could not pop, no matching push [-Wunknown-pragmas]
#>     #pragma clang diagnostic pop
#>                              ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:15:
#> In file included from ../inst/include/ode_tools.h:11:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigen.h:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigenForward.h:35:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/unsupported/Eigen/KroneckerProduct:34:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/ReenableStupidWarnings.h:14:30: warning: pragma diagnostic pop could not pop, no matching push [-Wunknown-pragmas]
#>     #pragma clang diagnostic pop
#>                              ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:15:
#> In file included from ../inst/include/ode_tools.h:11:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigen.h:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigenForward.h:39:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/unsupported/Eigen/Polynomials:135:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/ReenableStupidWarnings.h:14:30: warning: pragma diagnostic pop could not pop, no matching push [-Wunknown-pragmas]
#>     #pragma clang diagnostic pop
#>                              ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:15:
#> In file included from ../inst/include/ode_tools.h:11:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigen.h:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigenForward.h:40:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/unsupported/Eigen/SparseExtra:44:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/unsupported/Eigen/src/SparseExtra/MarketIO.h:239:7: warning: variable 'count' set but not used [-Wunused-but-set-variable]
#>   int count = 0;
#>       ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:15:
#> In file included from ../inst/include/ode_tools.h:11:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigen.h:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigenForward.h:40:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/unsupported/Eigen/SparseExtra:51:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/ReenableStupidWarnings.h:14:30: warning: pragma diagnostic pop could not pop, no matching push [-Wunknown-pragmas]
#>     #pragma clang diagnostic pop
#>                              ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:15:
#> In file included from ../inst/include/ode_tools.h:11:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigen.h:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigenForward.h:30:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/Dense:1:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/Core:367:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/Meta.h:320:25: warning: 'result_of<Eigen::internal::scalar_difference_op<double> (const double &, const double &)>' is deprecated [-Wdeprecated-declarations]
#>   typedef typename std::result_of<T>::type type1;
#>                         ^
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/CwiseBinaryOp.h:33:20: note: in instantiation of template class 'Eigen::internal::result_of<Eigen::internal::scalar_difference_op<double> (const double &, const double &)>' requested here
#>   typedef typename result_of<
#>                    ^
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:497:56: note: in instantiation of template class 'Eigen::internal::traits<Eigen::CwiseBinaryOp<Eigen::internal::scalar_difference_op<double>, const Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, const Eigen::Array<double, -1, 1, 0>>, const Eigen::Array<double, -1, 1, 0>>>' requested here
#> template<typename Derived, typename XprKind = typename traits<Derived>::XprKind, typename StorageKind = typename traits<Derived>::StorageKind>
#>                                                        ^
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/CwiseBinaryOp.h:149:22: note: in instantiation of default argument for 'generic_xpr_base<CwiseBinaryOp<scalar_difference_op<double, double>, const CwiseNullaryOp<scalar_constant_op<double>, const Array<double, -1, 1, 0, -1, 1>>, const Array<double, -1, 1, 0, -1, 1>>>' required here
#>   : public internal::generic_xpr_base<CwiseBinaryOp<BinaryOp, Lhs, Rhs> >::type
#>                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/CwiseBinaryOp.h:78:10: note: in instantiation of template class 'Eigen::CwiseBinaryOpImpl<Eigen::internal::scalar_difference_op<double>, const Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, const Eigen::Array<double, -1, 1, 0>>, const Eigen::Array<double, -1, 1, 0>, Eigen::Dense>' requested here
#>   public CwiseBinaryOpImpl<
#>          ^
#> ../inst/include/intervention.h:33:35: note: in instantiation of template class 'Eigen::CwiseBinaryOp<Eigen::internal::scalar_difference_op<double>, const Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, const Eigen::Array<double, -1, 1, 0>>, const Eigen::Array<double, -1, 1, 0>>' requested here
#>       cm.array().colwise() * (1.0 - contact_reduction);
#>                                   ^
#> /opt/homebrew/opt/llvm/bin/../include/c++/v1/__type_traits/result_of.h:24:34: note: 'result_of<Eigen::internal::scalar_difference_op<double> (const double &, const double &)>' has been explicitly marked deprecated here
#> template <class _Callable> class _LIBCPP_DEPRECATED_IN_CXX17 result_of;
#>                                  ^
#> /opt/homebrew/opt/llvm/bin/../include/c++/v1/__config:808:41: note: expanded from macro '_LIBCPP_DEPRECATED_IN_CXX17'
#> #    define _LIBCPP_DEPRECATED_IN_CXX17 _LIBCPP_DEPRECATED
#>                                         ^
#> /opt/homebrew/opt/llvm/bin/../include/c++/v1/__config:781:49: note: expanded from macro '_LIBCPP_DEPRECATED'
#> #      define _LIBCPP_DEPRECATED __attribute__((deprecated))
#>                                                 ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:15:
#> In file included from ../inst/include/ode_tools.h:11:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigen.h:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigenForward.h:30:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/Dense:1:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/Core:367:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/Meta.h:320:25: warning: 'result_of<Eigen::internal::scalar_product_op<double> (const double &, const double &)>' is deprecated [-Wdeprecated-declarations]
#>   typedef typename std::result_of<T>::type type1;
#>                         ^
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/CwiseBinaryOp.h:33:20: note: in instantiation of template class 'Eigen::internal::result_of<Eigen::internal::scalar_product_op<double> (const double &, const double &)>' requested here
#>   typedef typename result_of<
#>                    ^
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:497:56: note: in instantiation of template class 'Eigen::internal::traits<Eigen::CwiseBinaryOp<Eigen::internal::scalar_product_op<double>, const Eigen::ArrayWrapper<const Eigen::Matrix<double, -1, -1, 0>>, const Eigen::Replicate<Eigen::CwiseBinaryOp<Eigen::internal::scalar_difference_op<double>, const Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, const Eigen::Array<double, -1, 1, 0>>, const Eigen::Array<double, -1, 1, 0>>, 1, -1>>>' requested here
#> template<typename Derived, typename XprKind = typename traits<Derived>::XprKind, typename StorageKind = typename traits<Derived>::StorageKind>
#>                                                        ^
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/CwiseBinaryOp.h:149:22: note: in instantiation of default argument for 'generic_xpr_base<CwiseBinaryOp<scalar_product_op<double, double>, const ArrayWrapper<const Matrix<double, -1, -1, 0, -1, -1>>, const Replicate<CwiseBinaryOp<scalar_difference_op<double, double>, const CwiseNullaryOp<scalar_constant_op<double>, const Array<double, -1, 1, 0, -1, 1>>, const Array<double, -1, 1, 0, -1, 1>>, 1, -1>>>' required here
#>   : public internal::generic_xpr_base<CwiseBinaryOp<BinaryOp, Lhs, Rhs> >::type
#>                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/CwiseBinaryOp.h:78:10: note: in instantiation of template class 'Eigen::CwiseBinaryOpImpl<Eigen::internal::scalar_product_op<double>, const Eigen::ArrayWrapper<const Eigen::Matrix<double, -1, -1, 0>>, const Eigen::Replicate<Eigen::CwiseBinaryOp<Eigen::internal::scalar_difference_op<double>, const Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, const Eigen::Array<double, -1, 1, 0>>, const Eigen::Array<double, -1, 1, 0>>, 1, -1>, Eigen::Dense>' requested here
#>   public CwiseBinaryOpImpl<
#>          ^
#> ../inst/include/intervention.h:33:28: note: in instantiation of template class 'Eigen::CwiseBinaryOp<Eigen::internal::scalar_product_op<double>, const Eigen::ArrayWrapper<const Eigen::Matrix<double, -1, -1, 0>>, const Eigen::Replicate<Eigen::CwiseBinaryOp<Eigen::internal::scalar_difference_op<double>, const Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, const Eigen::Array<double, -1, 1, 0>>, const Eigen::Array<double, -1, 1, 0>>, 1, -1>>' requested here
#>       cm.array().colwise() * (1.0 - contact_reduction);
#>                            ^
#> /opt/homebrew/opt/llvm/bin/../include/c++/v1/__type_traits/result_of.h:24:34: note: 'result_of<Eigen::internal::scalar_product_op<double> (const double &, const double &)>' has been explicitly marked deprecated here
#> template <class _Callable> class _LIBCPP_DEPRECATED_IN_CXX17 result_of;
#>                                  ^
#> /opt/homebrew/opt/llvm/bin/../include/c++/v1/__config:808:41: note: expanded from macro '_LIBCPP_DEPRECATED_IN_CXX17'
#> #    define _LIBCPP_DEPRECATED_IN_CXX17 _LIBCPP_DEPRECATED
#>                                         ^
#> /opt/homebrew/opt/llvm/bin/../include/c++/v1/__config:781:49: note: expanded from macro '_LIBCPP_DEPRECATED'
#> #      define _LIBCPP_DEPRECATED __attribute__((deprecated))
#>                                                 ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:19:
#> In file included from ../inst/include/epidemic_default.h:13:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint.hpp:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint/util/ublas_wrapper.hpp:30:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint/algebra/default_operations.hpp:26:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint/util/unit_helper.hpp:23:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/quantity.hpp:29:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/conversion.hpp:17:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/detail/conversion_impl.hpp:20:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/heterogeneous_system.hpp:34:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/static_rational.hpp:166:10: warning: extension used [-Wlanguage-extension-token]
#> #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
#>          ^
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/typeof/typeof.hpp:197:13: note: expanded from macro 'BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP'
#>      <boost/typeof/incr_registration_group.hpp>
#>             ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:19:
#> In file included from ../inst/include/epidemic_default.h:13:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint.hpp:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint/util/ublas_wrapper.hpp:30:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint/algebra/default_operations.hpp:26:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint/util/unit_helper.hpp:23:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/quantity.hpp:29:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/conversion.hpp:17:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/detail/conversion_impl.hpp:20:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/heterogeneous_system.hpp:35:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/dimension.hpp:21:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/detail/dimension_list.hpp:125:10: warning: extension used [-Wlanguage-extension-token]
#> #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
#>          ^
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/typeof/typeof.hpp:197:13: note: expanded from macro 'BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP'
#>      <boost/typeof/incr_registration_group.hpp>
#>             ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:19:
#> In file included from ../inst/include/epidemic_default.h:13:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint.hpp:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint/util/ublas_wrapper.hpp:30:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint/algebra/default_operations.hpp:26:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint/util/unit_helper.hpp:23:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/quantity.hpp:29:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/conversion.hpp:17:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/detail/conversion_impl.hpp:20:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/heterogeneous_system.hpp:35:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/dimension.hpp:21:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/detail/dimension_list.hpp:131:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/dimensionless_type.hpp:49:10: warning: extension used [-Wlanguage-extension-token]
#> #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
#>          ^
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/typeof/typeof.hpp:197:13: note: expanded from macro 'BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP'
#>      <boost/typeof/incr_registration_group.hpp>
#>             ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:19:
#> In file included from ../inst/include/epidemic_default.h:13:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint.hpp:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint/util/ublas_wrapper.hpp:30:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint/algebra/default_operations.hpp:26:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint/util/unit_helper.hpp:23:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/quantity.hpp:29:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/conversion.hpp:17:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/detail/conversion_impl.hpp:20:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/heterogeneous_system.hpp:39:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/detail/linear_algebra.hpp:20:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/dim.hpp:75:10: warning: extension used [-Wlanguage-extension-token]
#> #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
#>          ^
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/typeof/typeof.hpp:197:13: note: expanded from macro 'BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP'
#>      <boost/typeof/incr_registration_group.hpp>
#>             ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:19:
#> In file included from ../inst/include/epidemic_default.h:13:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint.hpp:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint/util/ublas_wrapper.hpp:30:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint/algebra/default_operations.hpp:26:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint/util/unit_helper.hpp:23:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/quantity.hpp:29:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/conversion.hpp:17:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/detail/conversion_impl.hpp:20:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/heterogeneous_system.hpp:40:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/detail/unscale.hpp:28:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/scale.hpp:139:10: warning: extension used [-Wlanguage-extension-token]
#> #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
#>          ^
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/typeof/typeof.hpp:197:13: note: expanded from macro 'BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP'
#>      <boost/typeof/incr_registration_group.hpp>
#>             ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:19:
#> In file included from ../inst/include/epidemic_default.h:13:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint.hpp:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint/util/ublas_wrapper.hpp:30:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint/algebra/default_operations.hpp:26:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint/util/unit_helper.hpp:23:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/quantity.hpp:29:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/conversion.hpp:17:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/detail/conversion_impl.hpp:20:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/heterogeneous_system.hpp:120:10: warning: extension used [-Wlanguage-extension-token]
#> #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
#>          ^
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/typeof/typeof.hpp:197:13: note: expanded from macro 'BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP'
#>      <boost/typeof/incr_registration_group.hpp>
#>             ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:19:
#> In file included from ../inst/include/epidemic_default.h:13:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint.hpp:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint/util/ublas_wrapper.hpp:30:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint/algebra/default_operations.hpp:26:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint/util/unit_helper.hpp:23:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/quantity.hpp:29:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/conversion.hpp:17:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/detail/conversion_impl.hpp:21:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/homogeneous_system.hpp:99:10: warning: extension used [-Wlanguage-extension-token]
#> #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
#>          ^
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/typeof/typeof.hpp:197:13: note: expanded from macro 'BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP'
#>      <boost/typeof/incr_registration_group.hpp>
#>             ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:19:
#> In file included from ../inst/include/epidemic_default.h:13:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint.hpp:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint/util/ublas_wrapper.hpp:30:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint/algebra/default_operations.hpp:26:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint/util/unit_helper.hpp:23:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/units/quantity.hpp:495:10: warning: extension used [-Wlanguage-extension-token]
#> #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
#>          ^
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/typeof/typeof.hpp:197:13: note: expanded from macro 'BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP'
#>      <boost/typeof/incr_registration_group.hpp>
#>             ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:19:
#> In file included from ../inst/include/epidemic_default.h:13:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint.hpp:63:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint/algebra/multi_array_algebra.hpp:22:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/multi_array.hpp:34:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/multi_array/multi_array_ref.hpp:32:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/functional.hpp:45:24: error: no member named 'unary_function' in namespace 'std'; did you mean '__unary_function'?
#>             using std::unary_function;
#>                   ~~~~~^~~~~~~~~~~~~~
#>                        __unary_function
#> /opt/homebrew/opt/llvm/bin/../include/c++/v1/__functional/unary_function.h:46:1: note: '__unary_function' declared here
#> using __unary_function = __unary_function_keep_layout_base<_Arg, _Result>;
#> ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:19:
#> In file included from ../inst/include/epidemic_default.h:13:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint.hpp:63:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint/algebra/multi_array_algebra.hpp:22:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/multi_array.hpp:34:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/multi_array/multi_array_ref.hpp:32:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/functional.hpp:46:24: error: no member named 'binary_function' in namespace 'std'; did you mean '__binary_function'?
#>             using std::binary_function;
#>                   ~~~~~^~~~~~~~~~~~~~~
#>                        __binary_function
#> /opt/homebrew/opt/llvm/bin/../include/c++/v1/__functional/binary_function.h:49:1: note: '__binary_function' declared here
#> using __binary_function = __binary_function_keep_layout_base<_Arg1, _Arg2, _Result>;
#> ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:19:
#> In file included from ../inst/include/epidemic_default.h:13:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint.hpp:63:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/numeric/odeint/algebra/multi_array_algebra.hpp:22:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/multi_array.hpp:34:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/multi_array/multi_array_ref.hpp:32:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/functional.hpp:180:45: error: no template named 'unary_function' in namespace 'boost::functional::detail'; did you mean '__unary_function'?
#>         : public boost::functional::detail::unary_function<typename unary_traits<Predicate>::argument_type,bool>
#>                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
#>                                             __unary_function
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/functional.hpp:45:24: note: '__unary_function' declared here
#>             using std::unary_function;
#>                        ^
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/functional.hpp:214:45: error: no template named 'binary_function' in namespace 'boost::functional::detail'; did you mean '__binary_function'?
#>         : public boost::functional::detail::binary_function<
#>                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
#>                                             __binary_function
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/functional.hpp:46:24: note: '__binary_function' declared here
#>             using std::binary_function;
#>                        ^
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/functional.hpp:252:45: error: no template named 'unary_function' in namespace 'boost::functional::detail'; did you mean '__unary_function'?
#>         : public boost::functional::detail::unary_function<
#>                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
#>                                             __unary_function
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/functional.hpp:45:24: note: '__unary_function' declared here
#>             using std::unary_function;
#>                        ^
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/functional.hpp:299:45: error: no template named 'unary_function' in namespace 'boost::functional::detail'; did you mean '__unary_function'?
#>         : public boost::functional::detail::unary_function<
#>                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
#>                                             __unary_function
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/functional.hpp:45:24: note: '__unary_function' declared here
#>             using std::unary_function;
#>                        ^
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/functional.hpp:345:57: error: no template named 'unary_function' in namespace 'boost::functional::detail'; did you mean '__unary_function'?
#>     class mem_fun_t : public boost::functional::detail::unary_function<T*, S>
#>                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
#>                                                         __unary_function
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/functional.hpp:45:24: note: '__unary_function' declared here
#>             using std::unary_function;
#>                        ^
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/functional.hpp:361:58: error: no template named 'binary_function' in namespace 'boost::functional::detail'; did you mean '__binary_function'?
#>     class mem_fun1_t : public boost::functional::detail::binary_function<T*, A, S>
#>                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
#>                                                          __binary_function
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/functional.hpp:46:24: note: '__binary_function' declared here
#>             using std::binary_function;
#>                        ^
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/functional.hpp:377:63: error: no template named 'unary_function' in namespace 'boost::functional::detail'; did you mean '__unary_function'?
#>     class const_mem_fun_t : public boost::functional::detail::unary_function<const T*, S>
#>                                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
#>                                                               __unary_function
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/functional.hpp:45:24: note: '__unary_function' declared here
#>             using std::unary_function;
#>                        ^
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/functional.hpp:393:64: error: no template named 'binary_function' in namespace 'boost::functional::detail'; did you mean '__binary_function'?
#>     class const_mem_fun1_t : public boost::functional::detail::binary_function<const T*, A, S>
#>                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
#>                                                                __binary_function
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/functional.hpp:46:24: note: '__binary_function' declared here
#>             using std::binary_function;
#>                        ^
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/functional.hpp:438:61: error: no template named 'unary_function' in namespace 'boost::functional::detail'; did you mean '__unary_function'?
#>     class mem_fun_ref_t : public boost::functional::detail::unary_function<T&, S>
#>                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
#>                                                             __unary_function
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/functional.hpp:45:24: note: '__unary_function' declared here
#>             using std::unary_function;
#>                        ^
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/functional.hpp:454:62: error: no template named 'binary_function' in namespace 'boost::functional::detail'; did you mean '__binary_function'?
#>     class mem_fun1_ref_t : public boost::functional::detail::binary_function<T&, A, S>
#>                                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
#>                                                              __binary_function
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/functional.hpp:46:24: note: '__binary_function' declared here
#>             using std::binary_function;
#>                        ^
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/functional.hpp:470:67: error: no template named 'unary_function' in namespace 'boost::functional::detail'; did you mean '__unary_function'?
#>     class const_mem_fun_ref_t : public boost::functional::detail::unary_function<const T&, S>
#>                                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
#>                                                                   __unary_function
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/functional.hpp:45:24: note: '__unary_function' declared here
#>             using std::unary_function;
#>                        ^
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/functional.hpp:487:68: error: no template named 'binary_function' in namespace 'boost::functional::detail'; did you mean '__binary_function'?
#>     class const_mem_fun1_ref_t : public boost::functional::detail::binary_function<const T&, A, S>
#>                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
#>                                                                    __binary_function
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/functional.hpp:46:24: note: '__binary_function' declared here
#>             using std::binary_function;
#>                        ^
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/functional.hpp:533:73: error: no template named 'unary_function' in namespace 'boost::functional::detail'; did you mean '__unary_function'?
#>     class pointer_to_unary_function : public boost::functional::detail::unary_function<Arg,Result>
#>                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
#>                                                                         __unary_function
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/functional.hpp:45:24: note: '__unary_function' declared here
#>             using std::unary_function;
#>                        ^
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/functional.hpp:557:74: error: no template named 'binary_function' in namespace 'boost::functional::detail'; did you mean '__binary_function'?
#>     class pointer_to_binary_function : public boost::functional::detail::binary_function<Arg1,Arg2,Result>
#>                                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
#>                                                                          __binary_function
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/BH/include/boost/functional.hpp:46:24: note: '__binary_function' declared here
#>             using std::binary_function;
#>                        ^
#> In file included from RcppExports.cpp:4:
#> In file included from ./../inst/include/epidemics.h:15:
#> In file included from ../inst/include/ode_tools.h:11:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigen.h:25:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/RcppEigenForward.h:30:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/Dense:1:
#> In file included from /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/Core:367:
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/Meta.h:320:25: warning: 'result_of<Eigen::internal::scalar_opposite_op<double> (const double &)>' is deprecated [-Wdeprecated-declarations]
#>   typedef typename std::result_of<T>::type type1;
#>                         ^
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/CwiseUnaryOp.h:21:20: note: in instantiation of template class 'Eigen::internal::result_of<Eigen::internal::scalar_opposite_op<double> (const double &)>' requested here
#>   typedef typename result_of<
#>                    ^
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:497:56: note: in instantiation of template class 'Eigen::internal::traits<Eigen::CwiseUnaryOp<Eigen::internal::scalar_opposite_op<double>, const Eigen::Array<double, -1, 1, 0>>>' requested here
#> template<typename Derived, typename XprKind = typename traits<Derived>::XprKind, typename StorageKind = typename traits<Derived>::StorageKind>
#>                                                        ^
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/CwiseUnaryOp.h:95:22: note: in instantiation of default argument for 'generic_xpr_base<CwiseUnaryOp<scalar_opposite_op<double>, const Array<double, -1, 1, 0, -1, 1>>>' required here
#>   : public internal::generic_xpr_base<CwiseUnaryOp<UnaryOp, XprType> >::type
#>                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#> /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/CwiseUnaryOp.h:55:29: note: in instantiation of template class 'Eigen::CwiseUnaryOpImpl<Eigen::internal::scalar_opposite_op<double>, const Eigen::Array<double, -1, 1, 0>, Eigen::Dense>' requested here
#> class CwiseUnaryOp : public CwiseUnaryOpImpl<UnaryOp, XprType, typename internal::traits<XprType>::StorageKind>, internal::no_assignment_operator
#>                             ^
#> ../inst/include/epidemic_default.h:67:19: note: in instantiation of template class 'Eigen::CwiseUnaryOp<Eigen::internal::scalar_opposite_op<double>, const Eigen::Array<double, -1, 1, 0>>' requested here
#>     dxdt.col(0) = -sToE - sToV;  // -β*S*contacts*I - ν*S
#>                   ^
#> /opt/homebrew/opt/llvm/bin/../include/c++/v1/__type_traits/result_of.h:24:34: note: 'result_of<Eigen::internal::scalar_opposite_op<double> (const double &)>' has been explicitly marked deprecated here
#> template <class _Callable> class _LIBCPP_DEPRECATED_IN_CXX17 result_of;
#>                                  ^
#> /opt/homebrew/opt/llvm/bin/../include/c++/v1/__config:808:41: note: expanded from macro '_LIBCPP_DEPRECATED_IN_CXX17'
#> #    define _LIBCPP_DEPRECATED_IN_CXX17 _LIBCPP_DEPRECATED
#>                                         ^
#> /opt/homebrew/opt/llvm/bin/../include/c++/v1/__config:781:49: note: expanded from macro '_LIBCPP_DEPRECATED'
#> #      define _LIBCPP_DEPRECATED __attribute__((deprecated))
#>                                                 ^
#> 33 warnings and 16 errors generated.
#> make: *** [RcppExports.o] Error 1
#> ERROR: compilation failed for package ‘epidemics’
#> * removing ‘/private/var/folders/vr/dn4r1_zj417drd1zr9301trw0000gp/T/RtmpbKwOQS/pkg-lib96a67b352889/epidemics’
Created on 2023-06-05 with [reprex v2.0.2](https://reprex.tidyverse.org/)

Better documentation for epidemic()

From @joshwlambert on #15:

epidemic_cpp(): documentation is clear. Some arguments take classes defined by {epidemics} but for other arguments it may be worth specifying which type they take (e.g. character or numeric) even if this may seem obvious.

Add a package design vignette

This issue is to request the addition of a package design document as a vignette. This will serve as a trial and potential template for additional design documents for other packages.

Implement an infection class

This issue is to request the implementation of a class that holds the infection parameters, such as the $R_0$ or infectious period. This would tie in well with #20 and could/should link nicely with {epiparameter} outputs.

Since the models that {epidemics} hopes to offer might require a wide variety of infection parameters, this class should be flexible and inherit from a list, with only a few invariants - such as the $R_0$ and infectious period, which are the minimum requirements for an SIR model. The class constructor should most likely be:

infection(r0, infectious_period, ...)

It may be worth allowing infection parameters to be passed as epidist objects, to work towards #20. In the initial implementation, the epidemic() function would access only the mean or median of any infection class-members stored as epidists. Future steps could involve drawing samples from distributions - some thought required on whether this feature should live in {epidemics} or {scenarios}.

Tagging @joshwlambert and @adamkucharski for any suggestions as {epiparameter} devs.

Separate epidemic model from `epi_demic()`

This issue is to request that the function fn() defined in epi_demic() be separated into a standalone function, tentatively named default_model() or similar, that can be passed to epi_demic().

This would make epi_demic() essentially a wrapper around deSolve::lsoda(), but potentially with some input checking. The level at which input checking is performed may require an intermediate function that accepts the default_model() function, identifies it, and checks the parameters list for the parameters expected by this function.

Add function for new infections

This issue is to request functions that take the output of epidemics::epidemic() and return the number of new infections in each model timestep; optionally, per demographic group. This is different from the total numbers of individuals in exposed and infectious compartments.

This functionality may require importing {data.table} for convenient data handling.

Rename epidemic_cpp()

This issue is to request that epidemic_cpp() should renamed to epidemic() once the current R implementation is removed in #21.

Add vignette to compare with {finalsize}

This PR is to request a vignette that compares the final size calculations from {epidemics} against those from {finalsize}, to show the effect of implementing interventions and vaccination regimes.

Typo in readme/vignette?

Should "The current development version of finalsize can be installed from epidemics from GitHub using the pak package" in the README and vignette instead read something like "The current development version of epidemics can be installed from GitHub using the pak package." ?

Add function for final epidemic size

This issue is to request the addition of a function to obtain the final epidemic size, either for the full population or for each demographic group, as the number of individuals in the recovered compartment(s) at the end of the simulation.

Update Readme

This issue is to request that the repo Readme be updated with installation and minimal usage examples; a convenient template to follow is the Readme of {finalsize},

Describe Vacamole model adapted for {epidemics}

This issue is a model description and a discussion location for the addition of the Vacamole model to {epidemics}.

Vacamole is a deterministic, compartmental epidemic model built by Kylie Ainslie and others at RIVM, the Dutch Public Health Institute for the Covid-19 pandemic, with a focus on scenario modelling for hospitalisation and vaccination.

Vacamole was implemented as an R package, but is not actively maintained and cannot be installed from its source code. Some versions have been used to generate scenarios for the ECDC Covid-19 Scenario Hub.

Model code: https://github.com/kylieainslie/vacamole
Manuscript describing the model and its application: https://doi.org/10.2807/1560-7917.ES.2022.27.44.2101090

The original model has 8 conceptual compartments - four epidemiological compartments: susceptible, exposed, infectious, and recovered (S, E, I, R respectively), three hospitalisation compartments: hospitalised, in intensive care, and returning from intensive care to regular hospital care (H, ICU, ICU2H), and death - see the manuscript describing them here. Only infected individuals can enter the hospitalisation or death compartments.

Individuals from the susceptible compartment may be vaccinated partially ($V_1$) or fully ($V_2$; assuming a two dose regimen), with each dose reducing their probability of being infected, and of being hospitalised or dying.

Modifications for epidemics

We have made some modifications to the ODE model of Vacamole in order to make it more general and thus potentially more applicable to a wider range of settings.

Specifically,

  1. We have dropped the ICU and ICU2H compartment as this is potentially less relevant to a context in which intensive care capacity is low.

  2. We have added transitions from the infectious (I) and hospitalised (H) compartments to death (D), as this may be a more general assumption when hospital capacity is low (relatively more I → D) or when treatments are poor (relatively more H → D).

  3. We assume, in a first pass implementation that vaccination primarily reduces adverse outcomes, by modification to the transition rates ($\beta_V,\eta_{V},\omega_V$):

    1. $\beta_V$: The infection rate $\beta$ for individuals in the fully vaccinated compartment $V_2$;

    2. $\eta_{V}$: The hospitalisation rate $\eta$ for fully vaccinated, infected individuals ($I_V$$H_V$);

    3. $\omega_V$: The mortality rate for all fully vaccinated individuals at any stage in or post infection (I, or H).

Vacamole ODE system for {epidemics}

The Vacamole ODE system adapted for {epidemics} is:

Susceptibles who are not vaccinated, or only partially vaccinated (considered unprotected) can transition to exposed and vaccinated:

$$dS = -\beta S(I+I_V) - \nu_1 S$$

Two sequential vaccination compartments, with a lower conversion rate from two-dose vaccinated individuals (considered to be protected) to exposed:

$$dV_1 = \nu_1S - \beta V_1(I+I_V) - \nu_2V_1$$

$$dV_2 = \nu_2V_1 - \beta_VV_2(I+I_V)$$

Two parallel exposed compartments, with similar conversion to infectious:

$$dE = \beta (S+V_1)(I+I_V) - \alpha E$$

$$dE_V = \beta_VV_2(I+I_V) - \alpha E_V$$

Two parallel infectious compartments, with lower hospitalisation and mortality rate for vaccinated:

$$dI = \alpha E - \gamma I - \eta I - \omega I$$

$$dI_V = \alpha E_V - \gamma I_V - \eta_{V} I_V - \omega_V I_V$$

Two parallel hospitalisation compartments, with a lower mortality rate for vaccinated:

$$dH = \eta I - \gamma H - \eta_2 H - \omega H$$

$$dH_V = \eta_{V} I - \gamma H_V - \omega_V H_V$$

Single recovered compartment:

$$dR = \gamma(I + H + I_V + H_V)$$

Single mortality compartment:

$$dD = \omega(I + H) + \omega_V(I_V + H_V)$$

Add example epidemic inputs and output

This issue is to request that {epidemics} should provide example inputs for the epi_demic() model, including a population, and an intervention object; furthermore, that it should also provide an example of the output of epi_demic(). This is to help users examine the objects without having to specify or run an epidemic model, and would help with development, such as with the documentation of {scenarios}.

Add treatment

The model should be able to alter the probability of hospitalisation/becoming a case

Switch functions in epidemic() using lookup table

This issue is to request that the model function, the argument check function, and the argument preparation functions in epidemic() be re-organised so that they are obtained from a lookup table (which could be a data.frame contained within the package). This avoids the need to add options to switch() statements as new models and corresponding functions are added. This should be implemented only after reorganising epidemic(), see #22.

Disallow matrix initialisation of multi-dose vaccination

This issue is to suggest that the initialisation of multi-dose vaccination objects using matrices for the start and end times, and the vaccination rate $\nu$ should be disallowed (in all cases, value $M_{ij}$ is for dose $j$ to group $i$).

There are now two ways of initialising a multi-dose vaccination:

vaccination("vax", matrix(...), matrix(...), matrix(...))

and

c(
    vaccination(...), vaccination(...)
)

This issue is to discuss whether the first method should be disallowed, and multi-dose vaccination objects should only be created using c().

Comment on PR #54 for reference.

Added a method to concatenate vaccination objects, but I am keeping the matrix type for now - definitely worth discussing whether we want to disallow that and move to using vectors as previously.

Originally posted by @pratikunterwegs in #54 (comment)

Incorporating time-varying transmission dependent on climate (or other) data

One of the things that came up in the discussions with HARMONIZE was incorporation of climate data into transmission dynamic models – the process of implementing this could also help identify best ways to integrate other sources of time varying data that would influence transmission.

A potential motivating question here could be: for a given climatology, introduction time, and assumptions about transmission (perhaps linking with #20 ) and immunity (e.g. from serology), what could a future vector-borne epidemic look like?

Examples of such applications include analysis of Zika in Brazil (see Fig 4) and Fiji (see Fig 4). There was also a real-time analysis in Martinique, where climate effects were assumed to be negligible (which, of course, requires knowledge of climate to motivate this).

HARMONIZE data outputs will likely come in a range of spatial and temporal resolutions (e.g. using their data cube format), with functionality to specify. There are also a number of other public products available (see discussion page) But thinking more about integration, an ODE model with seasonally varying tranmission will require a function seasonal_function(time) where time is continuous, which means the main data processing step will be convert discrete data at some time scale (e.g. days/weeks) into a continuous function. Here is an example with the process equations in a simple SIR model:

    beta <- beta_0 * seasonal_function(time)

    dS <- -beta * S * I / N
    dI <- beta * S * I / N - gamma * I
    dR <- gamma * I

This could be expanded relatively easily to include a vector population and time-varying parameters influencing biological parameters like incubation, biting rate, vector lifespan in a Ross-MacDonald type model, linking up with upcoming work in epiparameter to incorporate temperature dependency, e.g. from Mordecai et al (2017).

But this still leaves the central questions:

  • how to convert the discrete data to continuous functions for the ODE
  • how to ensure alignment with input dataset and input simulation window (perhaps with a check for min/max date, or user warning?)

For conversion function, the odin package has the option of various interpolating functions, including step-wise, linear and splines for incorporation of data-driven parameter changes over time. From past experience, we'd probably want a smooth-ish function as default, as having high variability on short timescales (e.g. using the raw daily temperature values, rather some multi-year or moving average, to scale transmission) would lead to numerical instability in the ODE solver and/or heavily slow down simulations.

Add class accessor functions

This issue is to request accessor functions for all classes in {epidemics}, with class members appropriately protected to prevent accidental modification. In practice this will mean converting most class and struct members to private.

Consider using {deSolve} in {epidemics}

This issue stems from a discussion with @TimTaylor and general discussions we've been having in P3 regarding the implementation of {epidemics}.

The proposal here is to shift the ODE solving to {deSolve}'s lsoda() rather than using Boost ODEint within C++. This reduces the amount of more complex C++ code around setting up the stepper and integrator, while keeping simpler C++ code related to matrix algebra that still confers a speed boost.

The answer to this Rcpp question clarifies that the compiled ODE system in Rcpp would still be a C++ function that can presumably be handled by {deSolve}, hopefully avoiding overheads of passing data between R and C++ multiple times.

Integration with input distributions and potential for fitting

There a couple of use cases that are common in early stages of an epidemic, which could be useful (and slightly more advanced) applications for epidemics:

  1. Simulating epidemic curves based on input priors. For example, early COVID scenarios (see Fig S2 and S3) used a meta-analysis of R0, then simulated a number of trajectories drawing from this distribution. Could similarly have a set-up that can simulate from a distribution vector of parameters rather than a single one (kind of like scenarios does, but with tighter integration, e.g. taking input distributions from epiparameter).

  2. Fitting early growth data then simulating forward scenarios. In early stages of epidemic, can usually only identify a couple of parameters from growth curve (i.e. R0 and initial number of infections). So if epidemics model outputs case numbers over time, could use a simple fitting package like quickfit to estimate these values, and hence plausible future trajectories, without requiring a full MCMC-type approach. Basically R0 value will move the fitted early curve up and down, and I(0) moves it left-right.

I realise that some (all?) of this functionality may be better placed within another package, like scenarios. But may influence some of the design choices in epidemics, e.g. speed of simulations; structure of simulation outputs, and hence ease of incorporation into a likelihood.

Better print methods for classes

From @joshwlambert in #15:

A print.population() method would be nice, I would make it similar to the default list printing but a bit more dense, so that all the information fits into a smaller space and would remove the attribute printing

This request is also applicable for other classes.

Describe ebola model

This issue is for a discussion and description of a stochastic model of ebolavirus disease (EVD) for {epidemics}.

The goal of adding this model to {epidemics} is to provide the capability to model EVD outbreaks and haemorrhagic fevers more generally.

This model is intended to be a stochastic, individual-based implementation because most EVD outbreaks are understood to start out small, with the initial number of infections sufficiently low that stochasticity is expected to play an important role in the outbreak dynamics.

The starting point for this general model is expected to be this paper by Li et al. describing an ensemble of 37 EVD models.

This issue is a work in progress.

Add helper functions to generate interventions

This issue is to request helper functions that allow interventions that target specific age or other demographic groups to be easily constructed without having to specify the (non)effect on all other groups. The main example is that of school closures, which may affect contacts among children of a particular age group, but may not particularly affect other individuals (although we recognise that school closures can indeed increase contacts between children and parents).

The expected functionality is:

# generate a school closure intervention that reduces children's contacts by 50%
make_school_closure_intervention(
 time_start = t1, time_end = t2, contact_reduction = 0.5
)
# output is an `intervention` class object

Other interventions with age-specific effects should be considered as well.

Allow multiple concurrent interventions

This issue is to request that epidemics::epi_demic() should be able to include multiple, stackable interventions. This would allow examining and comparing the effects of particular sequences of interventions (e.g. school closures before wider measures, or vice versa).

A template for fixes to this issue could be found in the implementation of the multiple (concurrent) vaccination regimes, including the implementation of a c() method for vaccination objects. See #53 and #52 for details.

As an example:

i1 = intervention(...)
i2 = intervention(...)
all_interventions = c(i1, i2)

epidemic(population, infection, intervention = all_interventions)

One conceptual question is whether overlapping contact reduction for a particular demographic group should be additive (in terms of percentage points), or multiplicative.

General helper function to check populations

This issue is to request one or more general helper functions to facilitate the ease of writing model-specific checking functions for the population class. A pre-existing function that would be refactored to use these helpers is .check_args_epidemic_default().

Examples include:

  1. check_pop_compartments() - to check compartments exist and have names and that proportions sum to 1.0
  2. check_compartment_state() - to check that some compartments have specific states, e.g. that some individuals are actually infected

Calculate R_eff during model run

This is to request that epi_demic() should calculate the effective reproduction number, $R_{\text{eff}}$, at each step of the epidemic model. This value should be returned along with the numbers of individuals in each compartment of the model at each timestep.

Interdependence of parameters within `epidemic()`

Currently epidemic() has the following function signature:

epidemic(
  model_name = ("default", "vacamole"),
  population,
  infection,
  time_end = 200,
  increment = 1,
  ...
)

This means that both infection and ... are dependent on model_name and, as more models get added, users will have to move between multiple layers of abstraction / sets of documentation to understand what the function inputs.

I've not thought on it too much yet but my inclination is that it would be better to have dedicated functions for each model. I think this will be much clearer for end users and think it may also simplify some of the underlying code.

Thoughts?

Add susceptibility groups to population

This issue is to request that it should be possible to specificy that the distribution of the population into various susceptibility groups, such that there is potentially both within- and between-group heterogeneity in susceptibility to infection. The effect of belonging to one or another susceptibility group should be modelled as a scaling factor on the rate $\beta$ at which individuals from each of these groups move from the susceptible compartment $S$ to either the exposed or infectious compartment, as approporate.

Future implementations could or should make it possible to modify the susceptibility groups flexibly with reference to a vaccination object, to allow for combinations of intrinsic and extrinsic sources of variation in susceptibility.

Add two-dose vaccination

This issue is to request that the vaccination class be updated to allow multiple doses of vaccination. This is to facilitate the addition of the two-dose vaccination Vacamole model to {epidemics}, see issue #44.

This involves:

  1. Updating the class member nu to be a matrix, with column $i$ representing dose $i$, and rows representing demographic groups.
  2. Updating the class members time_begin and time_end to be matrices, with column $i$ representing the start or end time of dose $i$, and each row representing demographic groups.

Allow intervention to be "none"

This issue to is to request that epi_demic() should accept and correctly process the string "none" passed to the intervention argument, and sensibly not apply any interventions on the contact matrix. This saves users having to specify a dummy intervention (with starting times = 0, or with 0% reduction) which overall saves time.

The expected call to epi_demic() would be:

epidemics::epi_demic(
 population = population,
 R0 = R0, infectious_period = infectious_period,
 intervention = "none", ...
)

Define a vaccination class

This issue is to request that {epidemics} should define a vaccination class. This class would be expected to be an analogue of the interventions class. This class should store (1) the age-specific vaccination start and end dates, (2) the age-specific number of doses available, and (3) the age-specific number of doses that can be administered per day, i.e., the rate of vaccination.

The number of doses and the rate of vaccination are intended to be age-specific since this allows:

  1. Modelling of scenarios in which specific age groups are prioritised for vaccination (hence have more doses available),
  2. Modelling scenarios in which vaccination rate varies by age; for example, due to more time required per dose for some age groups, or due to lower uptake among age groups.

It should be possible to pass a vaccination class object or a list of such objects with age-specific vaccination schedules, or a string for no vaccination ("none"), to epi_demic(). The expected functionality should be:

epidemics::epi_demic(
 population = population, R0 = R0,
 vaccination = vaccination,
 ...
)

Further modifications to the vaccination class and to {epidemics} may include the addition of functionality that allows specifying the reduction in susceptibility due to vaccination.

Partial matching

I'm seeing warnings for partial matching being flagged in the code. It does not seem to be causing any issues at the moment but it is probably still worth handling. Is it worth bringing over @Bisaloo's setup-options.r from the package template?

Add package hex logo

This issue is to request the addition of a package hex logo. The current candidate is attached.

epidemics_logo

Epidemic C++ models should accept `<infection>` objects

This issue is to request a restructuring of the internal model functions, such as epidemic_default_cpp(), to accept <infection> class objects as arguments rather than separate epidemiological parameters such as the transmission rate $\beta$. This relates to implementing a fix for issue #58 which asks for <infection> objects to hold rates rather than human-comprehensible parameters (such as $R_0$), although both could be included.

Infection should hold rates only

This issue is in reference to this comment on PR #54, and is to suggest that infection class objects should only hold conversion rates between compartments, such $\beta$ the transmission rate/force of infection, or $\gamma$ the recovery rate.

These could be created from comprehensible parameters such as $R_0$ and the infectious period using helper functions.

infection objects could be passed directly to calls to the epidemic functions, allowing fewer separate calls (e.g. .epidemic_default_cpp() and .epidemic_vacamole_cpp().

If beta, alpha, gamma were part of a parameters class, we could standardize the function signature to function(population, parameters, intervention, vaccination, time_end, increment). Then like the other classes in this package infection, intervention, population and vaccination. We can then keep all checks and functions related to parameters in one place for easier maintenance.

Originally posted by @bahadzie in #54 (comment)

Option to count deaths in epidemic_size()

This issue is to request that the epidemic size should be allowed to optionally include deaths from the appropriate compartment. Counting deaths in the epidemic size should be the defauly, with safe handling of data where such a compartment does not exist (e.g. default model).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.